Why E2E tests and why Cypress

Advantages and Strengths of Cypress in E2E Testing

e2e tests are not a silver bullet

E2E

Integration

Unit

E2E

Integration

Unit

E2E

Integration

Unit

$$$

$

Cypress

Why Cypress?

  • Free and open source

  • Test modern apps directly in the browser

  • Write your first passing test in minutes

    • npm install --save-dev cypress
    • npx cypress open # generates cypress project
  • Debug failures directly in the browser:

    • Time Travel

    • Screenshots and Videos

    • Live Reload

How to keep project healthy

Leveraging Regular Cypress E2E Test Execution with GitHub

Test execution

For every commit on:

  • prod/main/dev branches

  • Pull Request

 - ?

Locally:

  • pre-commit - probably not

  • pre-push - well... probably nothing more than smoke tests

Cypress & Github configuration

Leveraging Regular Cypress E2E Test Execution with GitHub

GOAL: Cypress checks

Simple github Action

name: End-to-end tests
on: push
jobs:
  cypress-run:
    runs-on: ubuntu-22.04
    steps:
      - name: Checkout
        uses: actions/checkout@v3

      # build your dedicated instance here

      - name: Cypress run
        uses: cypress-io/github-action@v5

goal: videos & screenshots

Storing Artifacts

name: Artifacts
on: push
jobs:
  cypress-run:
    runs-on: ubuntu-22.04
    name: Artifacts
    steps:
      - uses: actions/checkout@v3
      - uses: cypress-io/github-action@v5
      - uses: actions/upload-artifact@v3
        if: failure()
        with:
          name: cypress-screenshots
          path: cypress/screenshots
      - uses: actions/upload-artifact@v3
        if: always()
        with:
          name: cypress-videos
          path: cypress/videos

GOAL: Inline comments

Cypress Cloud setup

cypress config file

GitHUB ACTIONs

GitHUB integration

DASHBOARD VIEW

failed test video

Cypress Dashboards

Cypress Cloud vs. Alternative Solutions

Cypress vs. Currents vs. Sorry Cypress

cypress.io/cloud

currents.dev

pricing

currents.dev

Cypress checks

inline comments

dashboard view

failed test video

installation

installation

github actions

workflow config file

Self Hosted

Sorry Cypress Setup

git clone git@github.com:sorry-cypress/sorry-cypress.git
cd sorry-cypress
docker-compose -f docker-compose.full.yml up
// currents.config.js
module.exports = {
  projectId: "kj29s",
  cloudServiceUrl: "http://localhost:1234", # ADD THIS
};

localhost:8080

Quick Summary

Cypress, GitHub & Cloud

Cypress & Github

  • Workflow files

    • Status checks

    • Test artifacts in status checks summary

  • Cypress Cloud 💰

    • Status checks + inline comments with linked artifacts

    • The official companion to the Cypress app

    • The free plan (with limited functions)

  • Currents.Dev 🤔

    • Status checks + inline comments with linked artifacts

    • Cheaper than Cypress Cloud

    • All features from the start

  • Sorry-Cypress 💪

    • Free & self-hosted
    • Takes time to set up (with limited features)

You NEED e2e Tests?

HIRE ME

Cypress & GitHub

By Marek Szumny

Cypress & GitHub

Efficient Setup for Pull Requests with Cypress Cloud and Alternatives

  • 317