🚩Looking for another real-world demonstration of Cypress in action? Check out the Cypress Real World App repository.
The tests are in cypress/integration folder
- feeds-spec.js shows how to check the favorite articles feed and the global feed
- follow-user-spec.js shows how to create two users and check if one user can follow the other
- login-spec.js checks if the user can log in via UI and via API
- new-post-spec.js verifies that a new article can be published and updated
- profile-spec.js lets the user edit their profile
- register-spec.js tests if a new user can register
- tags-spec.js checks if tags work
- pagination-spec.js creates many articles via API calls and then checks if they are displayed across two pages
- force-logout-spec.js verifies that unauthorized API calls force the user session to finish
Full code coverage
Front- and back-end coverage for this application is collected using the @cypress/code-coverage plugin. You can run the locally instrumented server and client using
npm run dev:coverage command. The backend coverage is exposed in server/server/index.js via endpoint listed in cypress.json (usually
GET /__coverage). The frontend coverage is collected by instrumenting the web application source code on the fly, see the client/.babelrc file.
The combined report is saved in
coverage/index.html after the tests finish:
Combining code coverage from parallel runs
If you do not use an external code coverage service for combining code coverage reports, you need to combine those reports yourself like this repository is showing in circle.yml file. Several E2E
cypress/run jobs run in parallel, each job saving its own coverage report folder. Then every job copies the report (using
save-partial-coverage-report command) into a unique folder to avoid overwriting via reports from other machines. When all E2E jobs are finished, and reports are copied together, then the CI calls a command to merge the reports (see the
merge-coverage-reports command that uses
nyc merge tool).
To learn more, read the Cypress code coverage guide.
Requires Python 2.7 for node-gyp to be compiled.