Bird
Raised Fist0
Cypresstesting~8 mins

Cypress CLI execution - Framework Patterns

Choose your learning style10 modes available
Framework Mode - Cypress CLI execution
Folder Structure for Cypress Test Project
  cypress/
  ├── e2e/                  # Test specs (test cases)
  │   ├── login.cy.js       # Example test file
  │   └── dashboard.cy.js
  ├── fixtures/             # Test data files (JSON, etc.)
  │   └── user.json
  ├── support/              # Custom commands and reusable utilities
  │   ├── commands.js       # Custom Cypress commands
  │   └── e2e.js            # Support file loaded before tests
  ├── videos/               # Videos of test runs (auto-generated)
  ├── screenshots/          # Screenshots on test failures (auto-generated)
  cypress.config.js         # Cypress configuration file
  package.json              # Project dependencies and scripts
  
Test Framework Layers in Cypress CLI Execution
  • Test Specs (cypress/e2e): Contains the actual test scripts written in JavaScript using Cypress commands.
  • Support Layer (cypress/support): Holds reusable commands and setup code that runs before tests, like login commands or global hooks.
  • Fixtures (cypress/fixtures): Stores static test data files used by tests for consistent input.
  • Configuration (cypress.config.js): Defines environment settings, base URLs, browser options, and test behavior.
  • CLI Runner: The Cypress Command Line Interface runs tests headlessly or in headed mode, controlling browser launch and test execution.
Configuration Patterns for Cypress CLI Execution
  • Environment Variables: Use cypress.config.js to define env object for different environments (dev, staging, prod).
  • Browser Selection: Pass --browser flag in CLI to run tests in Chrome, Firefox, Edge, etc.
  • Test Files Selection: Use --spec flag to run specific test files or folders.
  • Headless Mode: Use --headless flag to run tests without opening the browser UI, ideal for CI/CD.
  • Credentials Handling: Store sensitive data in environment variables or use cypress.env.json (excluded from version control) to keep secrets safe.
  // Example CLI commands:
  npx cypress run --browser chrome --headless
  npx cypress run --spec "cypress/e2e/login.cy.js"
  
Test Reporting and CI/CD Integration
  • Built-in Reports: Cypress CLI generates video recordings and screenshots on failures automatically.
  • Custom Reporters: Integrate with Mocha reporters or use plugins like mochawesome for HTML and JSON reports.
  • CI/CD Integration: Run npx cypress run commands in pipelines (GitHub Actions, Jenkins, GitLab CI) to automate tests on code changes.
  • Artifacts Upload: Upload videos, screenshots, and reports as build artifacts for review.
  // Example GitHub Actions step
  - name: Run Cypress Tests
    run: npx cypress run --headless --browser chrome
  
Best Practices for Cypress CLI Execution Framework
  • Keep Tests Independent: Each test should run alone without relying on others to avoid flaky results.
  • Use Explicit Selectors: Use data-* attributes for element selectors to make tests stable and readable.
  • Manage Environment Configs: Separate environment variables for dev, staging, and production to avoid mistakes.
  • Run Tests Headlessly in CI: Use --headless mode in CI pipelines for faster, resource-efficient runs.
  • Use Custom Commands: Put repeated actions in cypress/support/commands.js to keep tests clean and DRY.
Self Check Question

Where in this folder structure would you add a new test file for verifying the user registration page?

Key Result
Organize Cypress tests with clear folder layers, configure environments and browsers via CLI flags, and integrate reporting for smooth CI/CD automation.

Practice

(1/5)
1. What does running cypress run from the command line do?
easy
A. Runs all tests in headless mode without opening the Cypress UI
B. Opens the Cypress Test Runner UI for manual test selection
C. Starts a web server for the application under test
D. Generates a test report without executing tests

Solution

  1. Step 1: Understand the command cypress run

    This command runs Cypress tests from the command line without opening the UI.
  2. Step 2: Identify the mode of execution

    By default, cypress run runs tests in headless mode, meaning no browser window appears.
  3. Final Answer:

    Runs all tests in headless mode without opening the Cypress UI -> Option A
  4. Quick Check:

    cypress run = headless test run [OK]
Hint: Remember: 'run' means headless test execution [OK]
Common Mistakes:
  • Confusing 'cypress run' with 'cypress open'
  • Thinking it opens the UI
  • Assuming it starts a server
2. Which of the following is the correct syntax to run Cypress tests in Chrome browser using CLI?
easy
A. cypress run --browser chrome
B. cypress open --browser chrome
C. cypress run -b firefox
D. cypress start --browser chrome

Solution

  1. Step 1: Identify the correct command to run tests in CLI

    cypress run is used to run tests from CLI, not cypress open or cypress start.
  2. Step 2: Check the correct option for specifying browser

    The option to specify browser is --browser, so cypress run --browser chrome is correct syntax.
  3. Final Answer:

    cypress run --browser chrome -> Option A
  4. Quick Check:

    Use --browser with cypress run [OK]
Hint: Use 'cypress run --browser' to specify browser [OK]
Common Mistakes:
  • Using 'cypress open' instead of 'cypress run' for CLI execution
  • Using wrong option '-b' instead of '--browser'
  • Using non-existent command 'cypress start'
3. What will be the output when running cypress run --spec "cypress/e2e/login.cy.js"?
medium
A. Runs all tests except those in login.cy.js
B. Runs only the tests inside login.cy.js and shows results in terminal
C. Opens Cypress UI and highlights login.cy.js tests
D. Throws an error because --spec is invalid

Solution

  1. Step 1: Understand the --spec option

    The --spec option tells Cypress to run only the specified test file(s).
  2. Step 2: Analyze the command behavior

    The command runs tests only in cypress/e2e/login.cy.js and outputs results in the terminal because cypress run is headless.
  3. Final Answer:

    Runs only the tests inside login.cy.js and shows results in terminal -> Option B
  4. Quick Check:

    --spec runs specified test file only [OK]
Hint: Use --spec to run specific test files [OK]
Common Mistakes:
  • Thinking it runs all tests except specified file
  • Expecting Cypress UI to open with 'run' command
  • Assuming --spec is invalid option
4. You run cypress run --browser chrome --headed but tests still run headless. What is the likely cause?
medium
A. Cypress does not support headed mode with Chrome
B. The Chrome browser is not installed on the machine
C. The command must include --headless to run headed
D. The --headed flag is misspelled or missing

Solution

  1. Step 1: Understand the --headed flag

    The --headed flag runs tests with the browser UI visible, not headless.
  2. Step 2: Identify why tests run headless despite --headed

    The likely cause is that the --headed flag was misspelled (e.g., --headless) or missing from the actual command executed. cypress run defaults to headless mode without the correct flag.
  3. Final Answer:

    The --headed flag is misspelled or missing -> Option D
  4. Quick Check:

    Missing or misspelled --headed defaults to headless [OK]
Hint: Verify --headed flag spelling and presence when headed mode fails [OK]
Common Mistakes:
  • Confusing --headed with --headless
  • Assuming Cypress doesn't support headed Chrome
  • Ignoring browser installation status
5. You want to run tests only in Firefox, headlessly, and save the results to a JSON file named results.json. Which command achieves this?
hard
A. cypress open --browser firefox --headless --output results.json
B. cypress run --browser firefox --headed --reporter json --output results.json
C. cypress run --browser firefox --headless --reporter json --reporter-options output=results.json
D. cypress run --browser firefox --headless --output results.json

Solution

  1. Step 1: Choose correct command and browser

    Use cypress run to run tests headlessly and specify --browser firefox.
  2. Step 2: Specify headless mode and JSON reporter output

    Use --headless for no UI, --reporter json to format output, and --reporter-options output=results.json to save results.
  3. Final Answer:

    cypress run --browser firefox --headless --reporter json --reporter-options output=results.json -> Option C
  4. Quick Check:

    Use reporter options to save JSON results [OK]
Hint: Use --reporter and --reporter-options to save JSON output [OK]
Common Mistakes:
  • Using 'cypress open' instead of 'cypress run'
  • Missing --reporter or reporter-options flags
  • Confusing --headed with --headless
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard