
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
- 777