Beginner Topics
1. Introduction to Cypress
o Overview of Cypress
o Features and advantages of Cypress over other testing frameworks (e.g.,
Selenium)
o Setting up Cypress with npm or Yarn
o Cypress folder structure: cypress/integration, cypress/fixtures, etc.
o Running Cypress Test Runner (npx cypress open)
2. Basic Cypress Commands
o Understanding Cypress commands: cy.visit(), cy.get(), cy.contains(),
etc.
o Working with elements using CSS selectors
o Working with text fields, buttons, links, and dropdowns
o Asserting visibility, text, value, and other properties
3. Interacting with Web Elements
o Clicking elements: cy.click()
o Typing into text fields: cy.type()
o Selecting options in dropdowns: cy.select()
o Handling checkboxes and radio buttons: cy.check(), cy.uncheck()
4. Assertions in Cypress
o Built-in assertions: should(), and(), expect()
o Common assertions: visibility, URL, value, text content
o Asserting element states: enabled, disabled, selected, etc.
5. Test Structure
o Writing basic test cases using it()
o Grouping tests with describe() and organizing them with context()
o Test lifecycle hooks: before(), beforeEach(), after(), afterEach()
6. Using Cypress Fixtures
o Understanding and using fixture files
o Loading fixture data with cy.fixture()
o Using fixtures to mock API responses
Intermediate Topics
1. Handling Timeouts and Waits
o Default timeouts in Cypress and customizing timeouts
o Implicit vs. explicit waits in Cypress
o Using cy.wait() and network request interception
o Automatic waiting in Cypress commands
2. Testing Forms
o Filling forms and submitting them
o Validating form inputs and errors
o File uploads using cy.uploadFile()
3. Network Requests & API Testing
o Using cy.request() to make API calls
o Intercepting network requests with cy.intercept()
o Stubbing API responses
o Assertions on API responses
4. Debugging in Cypress
o Debugging with Cypress commands like cy.pause() and cy.debug()
o Using browser developer tools
o Console logging and error tracking in Cypress
5. Assertions and Custom Commands
o Chai assertions: expect(), assert()
o Writing and using custom commands: Cypress.Commands.add()
o Chaining Cypress commands and understanding promises
6. Testing Mobile & Responsive Design
o Setting viewport dimensions with cy.viewport()
o Testing responsive behavior and mobile views
o Simulating touch events and mobile-specific interactions
7. Screenshots and Videos
o Taking screenshots using cy.screenshot()
o Capturing videos of tests with cypress run
o Configuring screenshot and video settings in cypress.json
Advanced Topics
1. Cypress Hooks and Test Organization
o Deep dive into test lifecycle methods (before, after, beforeEach,
afterEach)
o Organizing large test suites with multiple describe() blocks
o Reusing common setups in multiple tests
2. Working with Cypress Plugins
o Installing and configuring Cypress plugins
o Popular Cypress plugins (e.g., cypress-file-upload, cypress-axe for
accessibility)
o Customizing test behavior with plugins
3. Test Data and Environment Configuration
o Managing environment variables in Cypress (cypress.env.json)
o Passing dynamic data to tests using Cypress.env()
o Handling multiple environments (staging, production)
4. Cypress and Continuous Integration (CI)
o Integrating Cypress with CI/CD tools like Jenkins, Travis CI, CircleCI, GitLab
CI, etc.
o Running Cypress in headless mode for CI: cypress run
o Parallel execution and test flakiness management
5. Working with Authentication
o Testing login flows with cy.login()
o Using tokens and cookies to manage authentication
o Testing secured areas of the application
6. Cypress Best Practices
o Structuring tests for maintainability
o Reducing test flakiness and improving reliability
oMocking and stubbing external dependencies (e.g., APIs, third-party services)
7. Advanced Custom Commands
o Writing reusable custom commands
o Overriding existing Cypress commands
o Handling complex UI interactions with custom commands
Proficiency Topics (Optional but Useful)
1. Advanced API Testing
o Validating HTTP methods (GET, POST, PUT, DELETE)
o Using assertions on API responses, status codes, headers, etc.
o End-to-end testing combining front-end and API validation
2. Performance Testing
o Monitoring and validating network performance metrics
o Using tools like Lighthouse with Cypress for performance analysis
3. Component Testing (Experimental Feature)
o Using Cypress for isolated component testing
o Understanding the setup for React, Vue, or Angular components
4. Accessibility Testing
o Installing and configuring cypress-axe for accessibility tests
o Validating accessibility of web pages
o Writing tests for WCAG compliance
5. Working with iframes
o Handling and testing iframes in web applications
o Using cy.iframe() to interact with elements inside iframes
6. Using Cypress with Different Frameworks
o Testing React, Angular, and Vue.js applications with Cypress
o Best practices for testing single-page applications (SPAs)
Final Stage - Hands-On Projects
1. End-to-End Testing for Real-World Applications
o Create a project to test a demo application’s full flow: login, user creation,
form validation, data retrieval, and API testing.
2. Integrating Cypress with CI/CD Pipelines
o Set up a continuous integration pipeline using Jenkins, GitHub Actions, or any
other CI/CD tool to run tests automatically on commits.
3. Writing Test Reports
o Generate and share test reports after test execution.
o Use tools like Mochawesome or Allure to visualize test results.