Files
cypress/packages/server
Lachlan Miller 721e586625 feat: use unified app for run mode (#19625)
* start graphql server in run mode

* update url logic

* use correct mobx instance

* expose util method for testing selector playground

* add __Cypress__ global

* correctly order aut lifecycle methods

* correct spec url in tests

* fix server integration tests

* add title to html

* update url encoding

* uni test

* encoding

* encode ssr data as base64

* set correct cypress.spec.name

* set arch and os options

* add version to options

* update config test

* update encoding

* temp skip

* more skips

* try to fix launchpad tests

* update test

* update runner

* feat: automation

* ignore error

* remove unused runner steps

* try remove error

* config

* Ensuring a provided testId gets rendered on a consistent element reference within HeaderBar.

* better conditionals

* automation connection

* try applying firefox cdp automation

* skip spec

* skip for now

* skips

* respond to failed visit event correctly

* chore: fix screenshot system tests (#19686)

* set fake  __CYPRESS_MODE__ on window

* vue logic for screenshot + run-mode checks

* Restore AUT wrapper div, make the name more clear

* switch to await for `before:screenshot` event send

* remove skipped tests

* add CYPRESS_INTERNAL_MODE to env

* move logic into component

Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>

* do not run runner-shared tests anymore

* dont care about runner unit test

* add reference screenshots confirmed to be good

* fix rerun spec

* do not hardcode http protocol, remove old code

* revert protocol and add missing pre-fetch gql query

* correctly pass ssr data, update request policy

* automation element updates

* do not apply CDP automation for firefox

* make assertions more debug-friendly

* up timeout, make firefox pixels slightly looser on CI

* Fix TS

* Try to fix tests

* Try to fix tests

* do not require urql for run mode

* wip: request policy changes

* use separate component for run mode and open mode

* expose selector playground function globally for testing purposes

* fix typescript

* fixing unit tests

* encode ssr data to match production

* fix test

* fix test

* readme

* fix: Run mode for unified runner resolve conflicts (#19743)

* merge in 10.0-release

* Fix merge conflict with client route

* Fail earlier when trying to run cypress in cypress in a browser other than chrome

* Fix some tests

* Set empty obj if config is not set

* Update tests

Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>

* update automation namespace, remove old code

* remove skipped test

* handle non proxied case

* clean up code

* revert png

* do not start graphql server in run mode

* Fix ts error

* revert type.cy.js to original test

* revert change in driver screenshot

* remove unused async

* remove unused env var

* remove old todo comment

* remove needless console.log

* unskip test

* use pause: true to avoid gql request

* remove unused automation element

* remove unused setAutomationStatus method

* change pane -> panel

* reimplement 1px flake fix for firefox type.cy.js

* chore: remove launchpad environment variable (#19778)

* remove LAUNCHPAD conditionals

* add timeout to test

* revert file

* correctly normalize url

Co-authored-by: Tyler Biethman <tbiethman@gmail.com>
Co-authored-by: Mark Noonan <oddlyaromatic@gmail.com>
Co-authored-by: Mark Noonan <mark@cypress.io>
Co-authored-by: Alejandro Estrada <estrada9166@gmail.com>
Co-authored-by: estrada9166 <estrada9166@hotmail.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
2022-01-20 15:02:00 +10:00
..
2021-12-07 12:22:15 -06:00
2021-10-13 23:51:38 +00:00

Server

The server is the heart of the Cypress application. All of this code represents the node process running behind the browser application. This node process is responsible for:

  • Proxying every byte coming in and out of the browser
  • Performing and normalizing automation tasks for each browser
  • Coordinating and synchronizing state with the launchpad and driver packages
  • Performing node specific tasks on behalf of the driver
  • Instantiating and orchestrating nearly every other layer and package
  • Spinning up various static file and http servers
  • Communicating with our external API's
  • Recording videos of run
  • Managing mocha reporters
  • Managing 3rd party plugins

The driver and the server are the two most complex packages of Cypress.

Developing

To run the Cypress server:

## boots the entire Cypress application
yarn start

Since the server controls nearly every aspect of Cypress, after making changes you'll need to manually restart Cypress.

Since this is slow, it's better to drive your development with tests.

Building

Note: you should not ever need to build the .js files manually. @packages/ts provides require-time transpilation when in development.

yarn workspace @packages/server build-prod

You can also use the test-watch command to rerun a test file whenever there is a change:

yarn test-watch /test/path/to/spec.js

Running individual unit tests

yarn test <path/to/test>
yarn test test/unit/api_spec.js
## or
yarn test-unit api_spec ## shorthand, uses globbing to find spec

Running individual integration tests

yarn test <path/to/test>
yarn test test/integration/cli_spec.js
## or
yarn test-integration cli_spec ## shorthand, uses globbing to find spec

Running e2e/system tests

With the addition of Component Testing, e2e tests have been renamed to system-tests and moved to the system-tests directory.

Updating snaphots

Prepend SNAPSHOT_UPDATE=1 to any test command. See snap-shot-it instructions for more info.

SNAPSHOT_UPDATE=1 yarn test test/unit/api_spec.js
SNAPSHOT_UPDATE=1 yarn test test/integration/cli_spec.js