# Files

Examples of using files to represent data, read data or write data in Cypress, for a full reference of commands, go to docs.cypress.io

#### cy.fixture()

To load a fixture, use the `cy.fixture()` command.

    // Instead of writing a response inline you can
    // use a fixture file's content.

    // when application makes an Ajax request matching "GET **/comments/*"
    // Cypress will intercept it and reply with the object in `example.json` fixture
    cy.intercept('GET', '**/comments/*', { fixture: 'example.json' }).as('getComment')

    // we have code that gets a comment when
    // the button is clicked in scripts.js
    cy.get('.fixture-btn').click()

    cy.wait('@getComment').its('response.body')
      .should('have.property', 'name')
      .and('include', 'Using fixtures to represent data')

#### cy.fixture or require

You can use `require` to load JSON fixtures.

    /// JSON fixture file can be loaded directly using
    // the built-in JavaScript bundler
    const requiredExample = require('../../fixtures/example')

    beforeEach(() => {
      // load example.json fixture file and store
      // in the test context object
      cy.fixture('example.json').as('example')
    })

    it('cy.fixture or require', function () {
      // we are inside the "function () { ... }"
      // callback and can use test context object "this"
      // "this.example" was loaded in "beforeEach" function callback
      expect(this.example, 'fixture in the test context')
        .to.deep.equal(requiredExample)

      // or use "cy.wrap" and "should('deep.equal', ...)" assertion
      cy.wrap(this.example, 'fixture vs require')
        .should('deep.equal', requiredExample)
    })

#### cy.readFile()

To read a file's content, use the `cy.readFile()` command.

    // You can read a file and yield its contents
    // The filePath is relative to your project's root.
    cy.readFile('cypress.config.js').then((json) => {
      expect(json).to.be.an('object')
    })

#### cy.writeFile()

To write to a file with the specified contents, use the `cy.writeFile()` command.

    // You can write to a file

    // Use a response from a request to automatically
    // generate a fixture file for use later
    cy.request('https://jsonplaceholder.cypress.io/users')
      .then((response) => {
        cy.writeFile('cypress/fixtures/users.json', response.body)
      })
    cy.fixture('users').should((users) => {
      expect(users[0].name).to.exist
    })

    // JavaScript arrays and objects are stringified
    // and formatted into text.
    cy.writeFile('cypress/fixtures/profile.json', {
      id: 8739,
      name: 'Jane',
      email: 'jane@example.com',
    })

    cy.fixture('profile').should((profile) => {
      expect(profile.name).to.eq('Jane')
    })