1. What is Cypress?
Answer:
Cypress is an open-source end-to-end testing framework designed for modern web applications. It enables developers to write and run tests directly in the browser, providing fast, reliable, and easy-to-write tests for web applications.
2. How do you install Cypress?
Answer:
To install Cypress, use npm or yarn:
npm install cypress --save-dev
# or
yarn add cypress --dev
3. How do you write a basic test in Cypress?
Answer:
describe('My First Test', () => {
it('Visits the Kitchen Sink', () => {
cy.visit('https://example.cypress.io');
cy.contains('type').click();
cy.url().should('include', '/commands/actions');
cy.get('.action-email').type('test@example.com')
.should('have.value', 'test@example.com');
});
});
4. How do you run Cypress tests from the command line?
Answer:
npx cypress run
This command runs all Cypress tests headlessly in the Electron browser.
5. How do you handle elements with dynamic IDs in Cypress?
Answer:
Answer:
cy.get('[data-cy=submit-button]').click();
Using custom data attributes like data-cy
is a recommended approach to handle dynamic elements.
6. How do you handle network requests in Cypress?
Answer:
cy.intercept('GET', '/api/resource', { fixture: 'resource.json' }).as('getResource');
cy.visit('/');
cy.wait('@getResource').its('response.statusCode').should('eq', 200);
7. How do you set up Cypress to use environment variables?
Answer:
Answer:
In cypress.json
:
{
"env": {
"apiUrl": "https://api.example.com"
}
}
In your test:
cy.visit(Cypress.env('apiUrl'));
8. How do you retry assertions in Cypress?
Answer:
Cypress automatically retries assertions until they pass or a timeout is reached. No special configuration is needed:
cy.get('.loading').should('not.exist');
cy.get('.success-message').should('be.visible');
9. How do you handle file uploads in Cypress?
Answer:
Answer:
cy.get('input[type="file"]').attachFile('path/to/file.txt');
You need to install the cypress-file-upload
plugin for this:
npm install --save-dev cypress-file-upload
In cypress/support/commands.js
:
import 'cypress-file-upload';
10. How do you run Cypress tests in different browsers?
Answer:
Answer:
By default, Cypress supports Chrome, Edge, and Firefox. Use the --browser
flag to specify a browser:
npx cypress run --browser firefox