• This repository has been archived on 28/Feb/2023
  • Stars
    star
    474
  • Rank 89,203 (Top 2 %)
  • Language
    JavaScript
  • Created almost 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

End-to-end testing workshop with Cypress

testing-workshop-cypress

cypress version CircleCI Build status renovate-app badge

A full day testing workshop complete with application, exercise tests and speaker slides for Cypress.io

Requirements

In order to get the code and install dependencies

git clone [email protected]:cypress-io/testing-workshop-cypress.git
cd testing-workshop-cypress
npm install

If necessary, install dependencies inside TodoMVC folder

cd todomvc
npm install

Quick check βœ…

You can test the installation by starting TodoMVC in the first terminal window

cd todomvc
npm start

and you should see in the terminal

> json-server --static . data.json --middlewares ./node_modules/json-server-reset


  \{^_^}/ hi!

  Loading data.json
  Loading ./node_modules/json-server-reset
  Done

  Resources
  http://localhost:3000/todos

  Home
  http://localhost:3000

Note for Windows users: if npm start throws an error, it is probably due to cd todomvc; ... first command in the npm start script. In this case change the working folder to "todomvc" and run npm start from there.

From the second terminal window you should be able to open Cypress in the root of the project with

$ npm run cy:open

> [email protected] cy:open /git/testing-workshop-cypress
> cypress open

Tip

You can use the installed start-server-and-test utility to start the app, open Cypress and then shutdown the app when you exit Cypress.

$ npm run dev

Application πŸ’Ύ

Vue.js + Vuex + REST server application that we are going to test is in the folder todomvc. This application and its full testing is described in this blog post. The application should run fine without network access.

Slides πŸ–₯

See the presentation at https://testing-workshop-cypress.netlify.app/. Every section of the presentation has a subfolder in the slides folder with a Markdown file. The Markdown is rendered into HTML using Vite and Reveal.js combination. You can open the presentation by clicking on "link" in the table below.

Content πŸ—‚

Beginner

topic folder contents slides
πŸ”— Introduction, TodoMVC application todomvc intro.md link
πŸ”— Loading page 00-start 00-start link
πŸ”— cypress open vs cypress run 01-basic 01-basic link
πŸ”— Adding items test, cypress.json file 02-adding-items 02-adding-items link
πŸ”— Selector Playground 03-selector-playground 03-selector-playground link
πŸ”— Reset database using cy.request 04-reset-state 04-reset-state link
πŸ”— Spy and stub XHR requests, fixtures 05-xhr 05-xhr link
πŸ”— Access application code and data 06-app-data-store 06-app-data-store link

Intermediate

topic folder contents slides
πŸ”— Setting up E2E tests on CI 07-ci 07-ci link
πŸ”— Setting up Cypress Dashboard 07-ci 08-dashboard link
πŸ”— Test reporters - 09-reporters link
πŸ”— Configuration - 10-configuration link
πŸ”— Retry-ability 11-retry-ability 11-retry-ability link
πŸ”— Custom commands 12-custom-commands 12-custom-commands link

Advanced

topic folder contents slides
πŸ”— Page Objects vs App Actions 13-app-actions 13-app-actions link
πŸ”— Fixtures 14-fixtures 14-fixtures link
πŸ”— Debugging 02-adding-items/demo.js 15-debugging link
πŸ”— Preprocessors 16-preprocessors 16-preprocessors link
πŸ”— Component testing 17-component-testing 17-component-testing link
πŸ”— Backend code 18-backend 18-backend link
πŸ”— Code coverage 19-code-coverage 19-code-coverage link
πŸ”— Stubbing methods 20-stubbing 20-stubbing link
The end - end link

For speakers πŸŽ™

Netlify Status

This workshop can take all day, but you can pick the sections you are interested in teaching at will and customize it into any time duration. Everyone is coding for the most part, except for CI and the Cypress Dashboard sections, where the usage was shown via slides and actual sites.

During the workshop, keep the todomvc app running in one shell, while each section 01-basic, 02-..., 03-... etc. has its own Cypress and specs subfolders cypress/integration/.... Usually a spec has several tests with placeholder comments. The workshop attendees are expected to make the tests pass using the knowledge from the slides and hints (and Cypress documentation). Note that most folders have a prepared spec.js file and an answer.js file. The answer.js file is ignored by Cypress using a setting in cypress.json.

The only exception is the folder 00-start. This is a folder for students to see how Cypress scaffolds example specs when you open Cypress for the very first time. In this folder students should execute...

cd 00-start
npm run cy:open

...and see the list of created example specs.

The slides are generated using Reveal.js from Markdown sources in the slides folder. You can show the slides locally by running

npm run slides:dev

The slides are deployed to Netlify automatically, see https://testing-workshop-cypress.netlify.app/

Additional information πŸ—ƒ

More Repositories

1

cypress

Fast, easy and reliable testing for anything that runs in a browser.
JavaScript
46,071
star
2

cypress-realworld-app

A payment application to demonstrate real-world usage of Cypress testing methods, patterns, and workflows.
TypeScript
5,145
star
3

cypress-example-recipes

Various recipes for testing common scenarios with Cypress
JavaScript
3,113
star
4

github-action

GitHub Action for running Cypress end-to-end & component tests
JavaScript
1,294
star
5

cypress-example-kitchensink

This is an example app used to showcase Cypress.io testing.
HTML
1,130
star
6

cypress-docker-images

Docker images with Cypress dependencies and browsers
Dockerfile
906
star
7

cypress-documentation

Cypress Documentation including Guides, API, Plugins, Examples, & FAQ.
TypeScript
827
star
8

eslint-plugin-cypress

An ESLint plugin for projects that use Cypress
JavaScript
692
star
9

cypress-react-unit-test

Unit test React components using Cypress
678
star
10

code-coverage

Saves the code coverage collected during Cypress tests
JavaScript
411
star
11

cypress-vue-unit-test

A little helper to unit test Vue components in the Cypress.io E2E test runner
294
star
12

cypress-example-todomvc

The official TodoMVC tests written in Cypress.
JavaScript
237
star
13

cypress-and-jest-typescript-example

Example using Jest and Cypress with TypeScript in a single repo
TypeScript
231
star
14

cypress-chrome-recorder

Export Cypress Tests from Google Chrome DevTools' Recorder
TypeScript
223
star
15

cypress-skip-test

Simple commands to skip a test based on platform, browser or a url
JavaScript
178
star
16

circleci-orb

Install, cache and run Cypress.io tests on CircleCI with minimal configuration.
156
star
17

cypress-recorder-extension

JavaScript
147
star
18

cypress-xpath

Adds XPath command to Cypress test runner
JavaScript
146
star
19

cypress-example-docker-compose

Example running Cypress tests against Apache server via docker-compose
JavaScript
142
star
20

cypress-fiddle

Quickly generates Cypress tests from HTML and JS code
JavaScript
138
star
21

cypress-grep

Filter tests using substring
JavaScript
138
star
22

cypress-example-docker-circle

Cypress + Docker + CircleCI = ❀️
JavaScript
124
star
23

cypress-example-api-testing

[ARCHIVED] Cypress E2E runner can also test Rest and other APIs
JavaScript
120
star
24

snapshot

Adds value / object / DOM element snapshot testing support to Cypress test runner
JavaScript
115
star
25

cypress-example-conduit-app

[ARCHIVED] Conduit example blogging app.
JavaScript
108
star
26

cypress-webpack-preprocessor

Cypress preprocessor for bundling JavaScript via webpack
93
star
27

add-cypress-custom-command-in-typescript

Testing how new Cypress commands are added in TypeScript
TypeScript
88
star
28

netlify-plugin-cypress

Runs Cypress end-to-end tests after Netlify builds the site but before it is deployed
JavaScript
88
star
29

chromium-downloads

A website that helps users to find and download archived Chromium versions.
JavaScript
83
star
30

cypress-realworld-testing

Next.js project for learn.cypress.io
MDX
72
star
31

schema-tools

Validate, sanitize and document JSON schemas
TypeScript
72
star
32

cypress-realworld-testing-course-app

TypeScript
65
star
33

instrument-cra

Little module for CRA applications to instrument code without ejecting react-scripts
JavaScript
63
star
34

cypress-component-testing-apps

TypeScript
59
star
35

cypress-test-tiny

Tiny Cypress E2E test case
JavaScript
52
star
36

cypress-example-todomvc-redux

Example TodoMVC application with full code coverage
JavaScript
51
star
37

cypress-test-nested-projects

[ARCHIVED] Tests Cypress running tests in subfolders
JavaScript
48
star
38

xvfb

Easily start and stop an X Virtual Frame Buffer from your node apps
JavaScript
40
star
39

cypress-tutorial-build-todo

Step by step code for the Cypress tutorial in which we build and test a todo app
JavaScript
39
star
40

cypress-tutorial-build-todo-starter

Starter project for the Cypress tutorial in which we build and test a todo app
CSS
38
star
41

cypress-cli

CLI for Cypress.io Desktop App
CoffeeScript
38
star
42

cypress-component-testing-examples

Cypress component examples
JavaScript
33
star
43

birdboard

Example Twitter client web app shown in Cypress in a Nutshell webcast.
JavaScript
33
star
44

cypress-example-docker-circle-workflows

Cypress + Docker + CircleCI Workflows = ❀️
JavaScript
29
star
45

cypress-example-circleci-orb

Demo of using the Cypress CircleCI Orb
JavaScript
28
star
46

cypress-test-example-repos

[ARCHIVED] Tests new version of Cypress against multiple projects
JavaScript
27
star
47

cypress-workshop-ci

A workshop that teaches you how to run Cypress on major CI providers
CSS
27
star
48

angular-pizza-creator

Example Angular Pizza ordering app
TypeScript
26
star
49

cypress-realworld-testing-blog

A Next.js Blog for the Real World Testing with Cypress Curriculum
JavaScript
24
star
50

cypress-browserify-preprocessor

Cypress preprocessor for bundling JavaScript via browserify
JavaScript
23
star
51

cypress-example-docker-compose-included

Cypress example with docker-compose and cypress/included image
JavaScript
20
star
52

cypress-electron-plugin

Cypress plugin for testing Electron applications
JavaScript
18
star
53

commit-info

Collects Git commit info using git
JavaScript
17
star
54

cypress-component-examples

Cypress configured with various frameworks and dev servers
JavaScript
17
star
55

cypress-heroes

Cypress Heroes Demo App
TypeScript
17
star
56

cypress-example-reporters

[ARCHIVED] Example showing multiple test reports merged into a single Mochawesome report
JavaScript
17
star
57

cra-template-cypress

The base Cypress template for Create React App
JavaScript
17
star
58

cypress-mock-ssr

Node.js Mock SSR Middleware and Cypress Commands
JavaScript
16
star
59

react-tooltip

A tooltip component for React apps
JavaScript
16
star
60

cra-template-cypress-typescript

The base Cypress + TypeScript template for Create React App
TypeScript
15
star
61

cypress-realworld-testing-todomvc

A TodoMVC Application for the Testing Your First Application Course in the Real World Testing with Cypress Curriculum
JavaScript
12
star
62

gh-action-and-gh-integration

Example project that uses both Cypress GH Action and Cypress GH Integration
JavaScript
12
star
63

cypress-example-docker-codeship

Cypress + Docker + Codeship Pro = ❀️
Dockerfile
12
star
64

cypress-example-electron

Electron.js application tested with Cypress - WIP
JavaScript
12
star
65

todomvc

Vanilla JS TodoMVC with Cypress Tests
JavaScript
11
star
66

cypress-design

Find here all the components to build UI with the Cypress Brand
TypeScript
10
star
67

cypress-gh-action-vue-example

Testing an app scaffolded with Vue CLI using Cypress GH Action
Vue
10
star
68

cypress-watch-preprocessor

Simple preprocessor that only watches files
JavaScript
8
star
69

netlify-plugin-cypress-example

An example site built and tested on Netlify using netlify-plugin-cypress
CSS
8
star
70

cypress-workshop-ci-example

A simple example app to be used during cypress-workshop-ci session
HTML
7
star
71

cypress-example-netlify-store

πŸ› A Tested E-Commerce Site with Stripe payment
Vue
7
star
72

feature-maybe

Functional feature toggles on top of any object
JavaScript
6
star
73

cypress-icons

Cypress logos, icons, favicons, tray, iconset
JavaScript
6
star
74

cypress-parcel-preprocessor

Cypress preprocessor for bundling JavaScript via Parcel
JavaScript
6
star
75

cypress-test-module-api

[ARCHIVED] Example running specs using Cypress via its module API
JavaScript
6
star
76

full-network-proxy

Demo repo for Cypress with full network stubbing support
JavaScript
5
star
77

circleci-orb-parallel-example

Using Cypress CircleCI Orb to quickly run tests in parallel
JavaScript
5
star
78

v8-snapshot

Tool to create a snapshot for Electron applications.
TypeScript
5
star
79

cypress-heroes-app

Demo app for Cypress
TypeScript
5
star
80

cypress-repeat-retry

Stress-testing Cypress test retries
JavaScript
5
star
81

bumpercar

[ARCHIVED] Easily update settings and trigger builds across projects and CI providers
CoffeeScript
4
star
82

component-testing-quickstart-apps

Apps from the Cypress Component Testing quickstart guides
HTML
4
star
83

get-windows-proxy

Node.js module that finds a user's system proxy settings depending on their platform.
JavaScript
4
star
84

error-message

User-friendly error text with additional information
JavaScript
4
star
85

cypress-load-test

JavaScript
3
star
86

generator-node-cypress

Yeoman generator for PUBLIC Node packages from Cypress.io team
JavaScript
3
star
87

cypress-migrator

Apps and libraries related to the Cypress Migrator tool
TypeScript
3
star
88

cypress-adapter-ruby

Cypress Ruby Driver
Ruby
3
star
89

testing-workshop-cph

End-to-end testing workshop with Cypress at CopenhagenJS
JavaScript
3
star
90

jsnation-example

TodoMVC example tests for JSNation conference
JavaScript
3
star
91

eslint-plugin-dev

Common ESLint rules and configuration shared by Cypress packages
JavaScript
3
star
92

cypress-chrome-recorder-extension

JavaScript
2
star
93

mksnapshot

A rewrite of electron/mksnapshot to support multiple electron versions.
TypeScript
2
star
94

cypress-ct-definition-template

Template for authoring Component Framework Definitions
TypeScript
2
star
95

debugging-proxy

A simple, pass-through HTTP proxy that works with HTTP/HTTPS. For debugging applications to make sure they still work behind a proxy.
JavaScript
2
star
96

3rd-party-error

Example showing 3rd party JavaScript error
JavaScript
2
star
97

cypress-test-ci-environments

[ARCHIVED] Confirms that missing Xvfb or dependencies can be detected by Cypress
JavaScript
2
star
98

env-or-json-file

Loads JSON object from environment string or local file
JavaScript
2
star
99

cypress-onboarding-demo

JavaScript
1
star
100

circleci-orb-example

Cypress CircleCI Orb example
JavaScript
1
star