Optimize Your CI/CD Pipeline
Get instant insights into your CI/CD performance and costs. Reduce build times by up to 45% and save on infrastructure costs.
name: 'Usage of github-action GitHub Action'
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cypress run
uses: cypress-io/github-action@v6
with:
build: npm run build
start: npm start
github-action
GitHub Action for running Cypress end-to-end & component tests
What is Cypress?β
The Cypress GitHub Action is designed to simplify the setup of Cypress in your GitHub Actions workflow. It manages the installation of dependencies and leverages built-in caching for Node.js dependencies, which can greatly enhance the speed of test execution. Additionally, the action provides a range of flexible configuration options to accommodate diverse testing requirements.
How to Set Up Cypress Component Testing in GitHub Actionsβ
Cypress Component Testing is of a kind unit test you would do to your UI components. This allows developers to mount individual components into an isolated test environment and lets developers interact with these components as a user would do so. In this way, it is ensured that every component behaves correctly in isolation from the rest of the application.
- name: Cypress run
uses: cypress-io/github-action@v6
with:
component: true
How to Test with Chrome in GitHub Actionsβ
For testing with Chrome, configure your workflow file as follows:
name: Chrome
on: push
jobs:
chrome:
runs-on: ubuntu-22.04
name: E2E on Chrome
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
browser: chrome
How to Test with Firefox in GitHub Actionsβ
name: Firefox
on: push
jobs:
firefox:
runs-on: ubuntu-22.04
name: E2E on Firefox
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
browser: firefox
How to Test with Edge in GitHub Actionsβ
For testing on Edge, use this workflow configuration:
name: Test with Edge
on: push
jobs:
edge:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
browser: edge
How to Run Cypress in Headed Mode in GitHub Actionsβ
Running tests in headed mode (with the browser UI visible) can be useful for debugging. Hereβs how to configure it:
name: Run Cypress in Headed Mode
on: push
jobs:
cypress-run:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: cypress-io/github-action@v6
with:
browser: chrome
headed: true
Best Practices for Setting Up Browser Tests
- Parallel Testing: To reduce the total testing time, consider setting up parallel execution across different browsers.
- Capture Artifacts: Configure workflows to save screenshots and videos of the test runs. This can be critical for diagnosing issues after test failures.
- Use Caching: Implement caching for Node dependencies and Cypress binaries to decrease the setup time of your workflows.
How to Specify Test Specs in Cypress GitHub Actionsβ
We can even go further and specify the test files that weβre going to run, or the specs, using Cypress: this will help a lot in big projects or when we want to test new features or bug fixes very fast. Here is a guide on how to set up Cypress so it only runs specific test specs when using the GitHub Actions configuration.
name: Cypress Tests
on: push
jobs:
cypress-run:
name: Cypress Run
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cypress Run
uses: cypress-io/github-action@v6
with:
spec: |
cypress/e2e/spec-a.cy.js
cypress/**/*-b.cy.js
Benefits of Specifying Specs in Cypress
- Focused Testing: By specifying test specs, you can focus on testing only the parts of your application that have changed or are critical, which is more efficient.
- Faster Feedback: Running fewer tests reduces the overall testing time, providing faster feedback to developers.
- Resource Optimization: Helps conserve CI/CD resources, which can be particularly beneficial for projects with limited testing resources or budget constraints.
How to Set Up Parallel Cypress Tests in GitHub Actionsβ
Running Cypress tests in parallel is a great way to speed up the execution of our e2e test suites as our application grows. In this blog post, I will show you how to set up parallel Cypress tests in our CI/CD pipeline using Cypress Cloud and the matrix strategy.
To utilize parallel testing, you must have a Cypress Cloud account since the parallelization feature relies on Cypress Cloud to manage and balance the test load.
name: Parallel Cypress Tests
on: push
jobs:
test:
name: Cypress Run
runs-on: ubuntu-22.04
strategy:
fail-fast: false # Continue running other tests even if one fails
matrix:
containers: [1, 2, 3] # Adjust the array size to increase or decrease parallelism
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Cypress Run
uses: cypress-io/github-action@v6
with:
record: true
parallel: true
group: 'Actions Example'
env:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}