Files
cypress/cli
mabela416 72daa51404 misc: Reporter redesign (#31914)
* misc: begin work on reporter redesign

* remove info icon on failing tests

* Add new queued icon to tests

* bump react-icon

* add some styles for the header

* add some styles and icons to describe blocks

* display chevron down on describe hover

* add css for red-400

* only display collapsible describes if there are tests in the suite

* add new test on describe hover

* add describe focus styles

* add describe focus styles scss

* fix add commands to test wand placement

* update stats icon with describe and test hover and focus

* update test status icons

* handles some of the test body styles and states

* add ellipsis to runnable title and flex shrink to icons

* fix command row stylings

* fix session alignment

* fix collapsible indicator styles

* handle attempt styling

* fix failing tests

* add back command status borders

* fix suites.cy.ts tests and make some styling fixes

* fix styles for New test button on focused/hovered suites

* fix header test

* attempt spacing fixes

* fix shortcuts test

* add open in ide on header hover

* make some styling fixes to errors

* make error styling changes

* update control icons and styles

* fix dotted line for suites

* add test dots

* fix logic for displaying test dots

* use stop circle icon

* refactor runnable and suite header icon

* only use test children to determine current suite state to display the suite icons

* fix suites test

* fix suite and test icon alignments

* clean up some comments and unused variables

* fix failing tests

* fix failing studio tests

* fix failing tests

* fix meta test

* fix suite_model test

* add more tests for suite-model

* fix more tests

* fix failing test

* fix padding for hook headers

* handle font weight, describe aligment and status border widths

* fix rounded corners on hover of commands

* round status border when test is opened

* handle chevron right/down when hovering when collapsible is open/closed

* add changelog entry

* yarn lock

* run on binary

* bust circle cache

* center align open in ide on command hover

* add padding to the bottom of the last suite/test

* fix attempt padding and connecting dots

* update progress bar color to gray-900

* no jumping when opening test

* top align describe/test text when the text wraps to the next line

* clean up new test button styles and add the linear gradient

* fix dotted line and describe/test padding

* round out error border and remove double red border on errors

* fix gap for stack trace

* only apply margin top to test and suite icons

* change opacity of add commands to test wand icon

* fix wand opacity test

* can we just remove this overflow: scroll?

* clean up TODOs

* fix error group line alignment

* align open IDE tooltip in hooks

* fix padding between suites

* remove purple border around describe in studio

* Add tailwind css so that styles work in e2e tests

* fix studio buttons padding

* fix stack trace padding

* disable clicking for skipped and queued up tests

* fix 1px jumping when opening test

* handle open in ide and new test button shadows/padding/alignment

* circle cache

* update yarn.lock

* index on mabel/issue-31677-reporter-redesign: 5e2503f339 Merge branch 'mabel/issue-31677-reporter-redesign' of https://github.com/cypress-io/cypress into mabel/issue-31677-reporter-redesign

* index on mabel/issue-31677-reporter-redesign: 5e2503f339 Merge branch 'mabel/issue-31677-reporter-redesign' of https://github.com/cypress-io/cypress into mabel/issue-31677-reporter-redesign

* index on mabel/issue-31677-reporter-redesign: 5e2503f339 Merge branch 'mabel/issue-31677-reporter-redesign' of https://github.com/cypress-io/cypress into mabel/issue-31677-reporter-redesign

* link issue to TODO

* only add pointer-events:none to tests and not suites

* fix failing tests

* Update cache-version.txt

* fix failing test

* fix clear sessions width

* remove unused style

* yarnlock update

* add caching when calculating children states in the suite-model

* Revert "add caching when calculating children states in the suite-model"

This reverts commit 3b59a94282.

* Remove * css style for reporter box-sizing - I don't see this impacting css styles at all

* have css only target languages we support showing in Cypress App

* Remove normalize.scss

* Remove more global css resets to improve rendering performance

* remove running state

* memoize components in runnable-and-suite

* fix failing test

* bump cache

* skip failing tests related to active states

---------

Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
2025-07-02 12:21:33 -04:00
..
2022-12-29 17:26:13 +00:00
2025-07-02 12:21:33 -04:00

CLI

The CLI is used to build the cypress npm module to be run within a terminal.

The CLI has the following responsibilities:

  • Allow users to print CLI commands
  • Allow users to install the Cypress executable
  • Allow users to print their current Cypress version
  • Allow users to run Cypress tests from the terminal
  • Allow users to open Cypress in the interactive Test Runner.
  • Allow users to verify that Cypress is installed correctly and executable
  • Allow users to manages the Cypress binary cache
  • Allow users to pass in options that change way tests are ran or recorded (browsers used, specfiles ran, grouping, parallelization)

Building

See scripts/build.js. Note that the built npm package will include NPM_README.md as its public README file.

Testing

Automated

From the repo's root, you can run unit tests with:

yarn test-unit --scope cypress
yarn test-watch --scope cypress
yarn test-debug --scope cypress

Updating snapshots

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

SNAPSHOT_UPDATE=1 yarn test-unit --scope cypress

Type Linting

When testing with dtslint, you may need to remove existing typescript installations before running the type linter (for instance, on OS X, you might rm -rf ~/.dts/typescript-installs) in order to reproduce issues with new versions of typescript (i.e., @next).

Manual

To build and test an npm package, execute the following from the repo's root directory:

yarn
yarn build

This creates the cli/build folder.

cd cli/build
yarn pack

This creates an archive, usually named cypress-v<version>.tgz. You can install this archive from other projects, but because there is no corresponding binary yet (probably), skip binary download. For example from inside cypress-example-kitchensink folder

yarn add ~/{your-dirs}/cypress/cli/build/cypress-v13.13.2.tgz --ignore-scripts

Sub-package API

How do deep imports from cypress/* get resolved?

The cypress npm package comes pre-assembled with mounting libraries for major front-end frameworks. These mounting libraries are the first examples of Cypress providing re-exported sub-packages. These sub-packages follow the same naming convention they do when they're published on npm, but without a leading @ sign. For example:

An example of a sub-package: @cypress/vue, @cypress/react, @cypress/mount-utils

Let's discuss the Vue mounting library that Cypress ships.

If you'd installed the @cypress/vue package from NPM, you could write the following code.

This would be necessary when trying to use a version of Vue, React, or other library that may be newer or older than the current version of cypress itself.

import { mount } from '@cypress/vue'

Now, with the sub-package API, you're able to import the latest APIs directly from Cypress without needing to install a separate dependency.

import { mount } from 'cypress/vue'

The only difference is the import name, and if you still need to use a specific version of one of our external sub-packages, you may install it and import it directly.

Adding a new sub-package

There are a few steps when adding a new sub-package.

  1. Make sure the sub-package's rollup build is self-contained or that any dependencies are also declared in the CLI's package.json.
  2. Now, in the postbuild script for the sub-package you'd like to embed, invoke node ./scripts/sync-exported-npm-with-cli.js (relative to the sub-package, see npm/vue for an example).
  3. Add the sub-package's name to the following locations:
  • cli/.gitignore
  • cli/scripts/post-build.js
  • .eslintignore (under cli/sub-package)
  1. DO NOT manually update the package.json file. Running yarn build will automate this process.
  2. Commit the changed files.

Here is an example Pull Request

Module API

The module API can be tested locally using something like:

/* @ts-ignore */
import cypress from '../../cli/lib/cypress'

const run = cypress.run as (options?: Partial<CypressCommandLine.CypressRunOptions>) => Promise<CypressCommandLine.CypressRunResult | CypressCommandLine.CypressFailedRunResult>

run({
  spec: './cypress/component/advanced/framer-motion/Motion.spec.tsx',
  testingType: 'component',
  /* @ts-ignore */
  dev: true,
}).then(results => {
  console.log(results)
})

Note that the dev flag is required for local testing, as otherwise the command will fail with a binary error.