--- title: writefile comments: true description: '' --- Write to a file with the specified contents. # Syntax ```javascript cy.writeFile(filePath, contents) cy.writeFile(filePath, contents, encoding) cy.writeFile(filePath, contents, options) cy.writeFile(filePath, contents, encoding, options) ``` ## Usage `cy.writeFile()` cannot be chained off any other cy commands, so should be chained off of `cy` for clarity. **{% fa fa-check-circle green %} Valid Usage** ```javascript cy.writeFile('menu.json') ``` ## Arguments **{% fa fa-angle-right %} filePath** ***(String)*** A path to a file within the project root (the directory that contains `cypress.json`). **{% fa fa-angle-right %} contents** ***(String, Array, or Object)*** The contents to be written to the file. **{% fa fa-angle-right %} encoding** ***(String)*** The encoding to be used when writing to the file. The following encodings are supported: * `ascii` * `base64` * `binary` * `hex` * `latin1` * `utf8` * `utf-8` * `ucs2` * `ucs-2` * `utf16le` * `utf-16le` **{% fa fa-angle-right %} options** ***(Object)*** Pass in an options object to change the default behavior of `cy.writeFile()`. Option | Default | Notes --- | --- | --- `timeout` | [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) | Total time to wait for the command to be processed. ## Yields `cy.writeFile()` yields the contents written to the file. ## Timeout `cy.writeFile()` will wait up for the duration of [`defaultCommandTimeout`](https://on.cypress.io/guides/configuration#timeouts) for the server to write to the file. # Examples ## Text **Write some text to a `txt` file** If the path to the file does not exist, the file and it's path will be created. If the file already exists, it will be over-written. ```javascript cy .writeFile('path/to/message.txt', 'Hello World') .then(function (text) { expect(text).to.equal('Hello World') // true }) ``` `{projectRoot}/path/to/message.txt` will be created with the following contents: ```text "Hello World" ``` ## JSON **Write JSON to a file** JavaScript arrays and objects are stringified and formatted into text. ```javascript cy.writeFile('path/to/data.json', { name: 'Eliza', email: 'eliza@example.com' }) .then(function (user) { expect(user.name).to.equal('Eliza') }) ``` `{projectRoot}/path/to/data.json` will be created with the following contents: ```json { "name": "Eliza", "email": "eliza@example.com" } ``` **Write response data to a fixture file** ```javascript cy.request('https://jsonplaceholder.typicode.com/users').then(function(response){ cy.writeFile('cypress/fixtures/users.json', response.body) }) // our fixture file is now generated and can be used cy.fixture('users').then(function(users){ expect(users[0].name).to.exist }) ``` ## Encoding **Specify the encoding with the third argument.** ```javascript cy.writeFile('path/to/ascii.txt', 'Hello World', 'ascii')) ``` `{projectRoot}/path/to/message.txt` will be created with the following contents: ```text Hello World ``` # Command Log **Write an array to a file** ```javascript cy.writeFile('info.log', ['foo', 'bar', 'baz']) ``` The command above will display in the command log as: screen shot of command log When clicking on the `writeFile` command within the command log, the console outputs the following: screen shot of console output # See also - [readFile](https://on.cypress.io/api/readFile) - [Creating Fixtures](https://on.cypress.io/guides/creating-fixtures)