mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-14 07:02:34 +01:00
115 lines
3.5 KiB
JavaScript
115 lines
3.5 KiB
JavaScript
|
/// <reference types="cypress" />
|
||
|
|
||
|
/// JSON fixture file can be loaded directly using
|
||
|
// the built-in JavaScript bundler
|
||
|
// @ts-ignore
|
||
|
const requiredExample = require('../../fixtures/example')
|
||
|
|
||
|
context('Files', () => {
|
||
|
beforeEach(() => {
|
||
|
cy.visit('https://example.cypress.io/commands/files')
|
||
|
})
|
||
|
|
||
|
beforeEach(() => {
|
||
|
// load example.json fixture file and store
|
||
|
// in the test context object
|
||
|
cy.fixture('example.json').as('example')
|
||
|
})
|
||
|
|
||
|
it('cy.fixture() - load a fixture', () => {
|
||
|
// https://on.cypress.io/fixture
|
||
|
|
||
|
// Instead of writing a response inline you can
|
||
|
// use a fixture file's content.
|
||
|
|
||
|
cy.server()
|
||
|
cy.fixture('example.json').as('comment')
|
||
|
// when application makes an Ajax request matching "GET comments/*"
|
||
|
// Cypress will intercept it and reply with object
|
||
|
// from the "comment" alias
|
||
|
cy.route('GET', 'comments/*', '@comment').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('responseBody')
|
||
|
.should('have.property', 'name')
|
||
|
.and('include', 'Using fixtures to represent data')
|
||
|
|
||
|
// you can also just write the fixture in the route
|
||
|
cy.route('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('responseBody')
|
||
|
.should('have.property', 'name')
|
||
|
.and('include', 'Using fixtures to represent data')
|
||
|
|
||
|
// or write fx to represent fixture
|
||
|
// by default it assumes it's .json
|
||
|
cy.route('GET', 'comments/*', 'fx:example').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('responseBody')
|
||
|
.should('have.property', 'name')
|
||
|
.and('include', 'Using fixtures to represent data')
|
||
|
})
|
||
|
|
||
|
it('cy.fixture() or require - load a fixture', 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
|
||
|
// @ts-ignore
|
||
|
cy.wrap(this.example, 'fixture vs require')
|
||
|
.should('deep.equal', requiredExample)
|
||
|
})
|
||
|
|
||
|
it('cy.readFile() - read file contents', () => {
|
||
|
// https://on.cypress.io/readfile
|
||
|
|
||
|
// You can read a file and yield its contents
|
||
|
// The filePath is relative to your project's root.
|
||
|
cy.readFile('cypress.json').then((json) => {
|
||
|
expect(json).to.be.an('object')
|
||
|
})
|
||
|
})
|
||
|
|
||
|
it('cy.writeFile() - write to a file', () => {
|
||
|
// https://on.cypress.io/writefile
|
||
|
|
||
|
// 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')
|
||
|
})
|
||
|
})
|
||
|
})
|