-
+
Detect and manage changes
Compare reports in detail to review only _new_ accessibility issues, use
diff --git a/docs/accessibility/guides/detect-changes.mdx b/docs/accessibility/guides/detect-changes.mdx
index b7680ed1d3..3015a7e085 100644
--- a/docs/accessibility/guides/detect-changes.mdx
+++ b/docs/accessibility/guides/detect-changes.mdx
@@ -11,7 +11,7 @@ sidebar_position: 70
Cypress Accessibility supports three main paths to observing and acting on changes in the accessibility report for your projects:
-- Run comparisons with [Branch Review](/accessibility/core-concepts/comparing-reports)
+- Run comparisons with [Branch Review](/accessibility/core-concepts/compare-reports)
- The [Results API](/accessibility/results-api) to fail builds or trigger alerts when results don't meet your standards
- [Analytics](/cloud/features/analytics/enterprise-reporting#Cypress-Accessibility) for high-level trend-spotting and analysis
@@ -33,7 +33,7 @@ Use Branch review when reviewing a pull request made by another developer or bef
Since this reduces the amount of violations to review to just what was affected by the PR code changes, you won't spend any time looking for what's relevant -- and if there is no difference, you'll know your PR does not affect the accessibility score and is safe to merge.
-See the main [Accessibility Branch Review docs](/accessibility/core-concepts/comparing-reports) for a video demo of this workflow.
+See the main [Accessibility Branch Review docs](/accessibility/core-concepts/compare-reports) for a video demo of this workflow.
#### Compare reports during local development (without waiting for CI)
diff --git a/docs/accessibility/results-api.mdx b/docs/accessibility/results-api.mdx
index af99acc664..0579af2f1c 100644
--- a/docs/accessibility/results-api.mdx
+++ b/docs/accessibility/results-api.mdx
@@ -322,7 +322,7 @@ run-cypress:
pipeline {
agent {
docker {
- image 'cypress/base:22.12.0'
+ image 'cypress/base:22.15.0'
}
}
@@ -393,7 +393,7 @@ version: 2.1
jobs:
linux-test:
docker:
- - image: cypress/base:22.12.0
+ - image: cypress/base:22.15.0
working_directory: ~/repo
steps:
diff --git a/docs/api/commands/focus.mdx b/docs/api/commands/focus.mdx
index 36024d875a..bf1f67c959 100644
--- a/docs/api/commands/focus.mdx
+++ b/docs/api/commands/focus.mdx
@@ -159,4 +159,5 @@ the following:
- [`.blur()`](/api/commands/blur)
- [`.click()`](/api/commands/click)
- [`cy.focused()`](/api/commands/focused)
+- [`cy.press()`](/api/commands/press)
- [`.type()`](/api/commands/type)
diff --git a/docs/api/commands/origin.mdx b/docs/api/commands/origin.mdx
index f22c674e74..1876ad39d2 100644
--- a/docs/api/commands/origin.mdx
+++ b/docs/api/commands/origin.mdx
@@ -40,9 +40,11 @@ doc.
Cypress no longer injects `document.domain` by default, which means `cy.origin()`
must now be used to navigate between any two origins in the same test, even if
-the two origins are in the same superdomain. This behavior can be disabled by setting
-the `injectDocumentDomain` configuration option to `true`, to allow a smooth transition
-of tests to the new behavior. This configuration option will be removed in a future version of Cypress.
+the two origins are in the same superdomain.
+This behavior can be disabled by setting the
+[injectDocumentDomain](/app/references/configuration#injectDocumentDomain) configuration option to `true`,
+to allow a smooth transition of tests to the new behavior.
+This configuration option will be removed in a future version of Cypress.
:::
@@ -191,7 +193,7 @@ will not work:
cy.origin('https://example.cypress.io', () => {
cy.visit('/')
cy.get('h1') // Yields an element, which can't be serialized...
-}).contains('CYPRESS') // ...so this will fail
+}).contains('Kitchen Sink') // ...so this will fail
```
Instead, you must explicitly yield a serializable value:
@@ -201,8 +203,8 @@ Instead, you must explicitly yield a serializable value:
```js
cy.origin('https://example.cypress.io', () => {
cy.visit('/')
- cy.get('h1').invoke('textContent') // Yields a string...
-}).should('equal', 'CYPRESS') // ๐
+ cy.get('h1').invoke('text') // Yields a string...
+}).should('equal', 'Kitchen Sink') // ๐
```
### Navigating to secondary origin with cy.visit
@@ -367,6 +369,9 @@ Cypress.Commands.add('login', (username, password) => {
In this video we walk through how to test multiple origins in a single test. We
also look at how to use the `cy.session()` command to cache session information
and reuse it across tests.
+The configuration option `experimentalSessionAndOrigin`, mentioned in the video, is not used
+since [Cypress 12.0.0](https://docs.cypress.io/app/references/changelog#12-0-0)
+and the associated functionality is enabled by default.
## Notes
diff --git a/docs/api/commands/press.mdx b/docs/api/commands/press.mdx
new file mode 100644
index 0000000000..f0bef379fe
--- /dev/null
+++ b/docs/api/commands/press.mdx
@@ -0,0 +1,134 @@
+---
+title: 'cy.press() | Cypress Documentation'
+description: Trigger native key events in your application to simulate keyboard interactions.
+sidebar_label: press
+slug: /api/commands/press
+componentSpecific: false
+---
+
+
+
+# press
+
+Trigger native key events in your application to simulate keyboard interactions.
+
+A `keydown`, `press`, and `keyup` event will be dispatched directly to the browser window.
+
+Unlike `cy.type()`, which is best for typing character keys, `cy.press()` will dispatch real keyboard events rather than simulated ones. This command is especially useful when testing focus management and keyboard navigation patterns which are critical for [accessibility testing](/app/guides/accessibility-testing) and great keyboard UX.
+
+Currently, the only key supported is `Tab`.
+
+:::caution
+
+Supported Browsers:
+This command is supported in chromium browsers and Firefox versions >= v135. WebKit
+is not supported. This command will fail if executed in a browser that does not support
+it.
+
+:::
+
+## Syntax
+
+```javascript
+cy.press(key)
+cy.press(key, options)
+```
+
+## Signature
+
+```typescript
+interface PressCommand {
+ (
+ key: KeyPressSupportedKeys,
+ options?: Partial & Partial
+ ): void
+}
+```
+
+## Usage
+
+ **Correct Usage**
+
+```javascript
+cy.get('input.first').focus()
+cy.press(Cypress.Keyboard.Keys.TAB)
+cy.get('input.second').should('have.focus')
+```
+
+ **Incorrect Usage**
+
+```javascript
+cy.get('input.first').focus()
+cy.press(Cypress.Keyboard.Keys.TAB)
+ // Errors because press yields null
+ .should('have.focus')
+```
+
+### Arguments
+
+ **key _(String)_**
+
+The key to press. The supported values are available on [`Cypress.Keyboard.Keys`](/api/cypress-api/keyboard-api), and may change from time to time. It's recomended that you reference these values from `Cypress.Keyboard.Keys` rather than passing in a string.
+
+### Supported Keys
+
+| Reference | Value |
+| --------------------------- | ------- |
+| `Cypress.Keyboard.Keys.TAB` | `"Tab"` |
+
+ **options _(Object)_**
+
+Pass in an options object to change the default behavior of `.press()`.
+
+| Option | Default | Description |
+| --------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| `log` | `true` | Displays the command in the [Command log](/app/core-concepts/open-mode#Command-Log) |
+| `timeout` | [`defaultCommandTimeout`](/app/references/configuration#Timeouts) | Time to wait for `cy.press()` to resolve before timing out |
+
+
+
+- `cy.press()` yields `null`.
+
+## Examples
+
+### Test focus order of tab
+
+```js
+it('moves focus to the next form element when pressing Tab', () => {
+ cy.visit('/my-login')
+ cy.get('input.email').type('username')
+ cy.press(Cypress.Keyboard.Keys.TAB)
+ cy.get('input.password').should('have.focus')
+})
+```
+
+### Test autocomplete of search input with tab
+
+```js
+it('autocompletes search input when pressing Tab', () => {
+ cy.get('[data-cy="search"]').type('cy')
+ cy.press(Cypress.Keyboard.Keys.TAB)
+ cy.get('[data-cy="search"]').should('have.value', 'cypress')
+})
+```
+
+## Notes
+
+### Transient activation
+
+By dispatching native keyboard events to the browser, this command will cause the browser to enter [Transient activation](https://developer.mozilla.org/en-US/docs/Glossary/Transient_activation) state.
+
+If your application prevents the default behavior of the `beforeunload` event, this may cause issues when navigating away from the current page.
+
+## History
+
+| Version | Changes |
+| ----------------------------------- | ---------------------------- |
+| [14.3.0](/app/references/changelog) | Added the `.press()` command |
+
+## See also
+
+- [`Cypress.Keyboard`](/api/cypress-api/keyboard-api)
+- [`.focus()`](/api/commands/focus)
+- [`.focused()`](/api/commands/focused)
+- [`.type()`](/api/commands/type)
diff --git a/docs/api/commands/shadow.mdx b/docs/api/commands/shadow.mdx
index 8f668a3197..0939952aa0 100644
--- a/docs/api/commands/shadow.mdx
+++ b/docs/api/commands/shadow.mdx
@@ -96,13 +96,10 @@ When working with `cy.click()`, it sometimes won't click the right element in
Chrome. It's happening because of
[the ambiguity in spec](https://bugs.chromium.org/p/chromium/issues/detail?id=1188919&q=shadowRoot%20elementFromPoint&can=2).
-In this case, pass `{ position: 'top' }` to `cy.click()` like below:
+In this case, pass `'top'` to `cy.click()` like below:
```js
-cy.get('#element')
- .shadow()
- .find('[data-test-id="my-button"]')
- .click({ position: 'top' })
+cy.get('#element').shadow().find('[data-test-id="my-button"]').click('top')
```
## Command Log
diff --git a/docs/api/commands/type.mdx b/docs/api/commands/type.mdx
index 075919fa71..97f7030c87 100644
--- a/docs/api/commands/type.mdx
+++ b/docs/api/commands/type.mdx
@@ -664,5 +664,6 @@ following:
- [`.clear()`](/api/commands/clear)
- [`.click()`](/api/commands/click)
- [`.focus()`](/api/commands/focus)
+- [`cy.press()`](/api/commands/press)
- [`.submit()`](/api/commands/submit)
- [`Cypress.Keyboard`](/api/cypress-api/keyboard-api)
diff --git a/docs/api/cypress-api/custom-commands.mdx b/docs/api/cypress-api/custom-commands.mdx
index 4ad2c75aaa..d26669bf78 100644
--- a/docs/api/cypress-api/custom-commands.mdx
+++ b/docs/api/cypress-api/custom-commands.mdx
@@ -17,7 +17,7 @@ There are two API available for adding custom commands:
- [`Cypress.Commands.add()`](#Syntax) - use to add a custom command to use when
writing tests
-- [`Cypress.Command.overwrite()`](#Overwrite-Existing-Commands) - use to
+- [`Cypress.Commands.overwrite()`](#Overwrite-Existing-Commands) - use to
override an existing built-in Cypress command or reserved internal function.
**Caution:** this overrides it for Cypress as well and could impact how
Cypress behaves.
diff --git a/docs/api/cypress-api/keyboard-api.mdx b/docs/api/cypress-api/keyboard-api.mdx
index 8a8823e0c4..e01f3ab19f 100644
--- a/docs/api/cypress-api/keyboard-api.mdx
+++ b/docs/api/cypress-api/keyboard-api.mdx
@@ -9,16 +9,29 @@ sidebar_position: 150
# Cypress.Keyboard
-The Keyboard API allows you set the default values for how the
+The Keyboard API allows you to access available `Keys` for use with [`cy.press()`](/api/commands/press) or to set the default values for how the
[.type()](/api/commands/type) command is executed.
## Syntax
```javascript
+Cypress.Keyboard.Keys(key)
Cypress.Keyboard.defaults(options)
```
-### Arguments
+### Keys Arguments
+
+ **key _(String)_**
+
+The key available for `cy.press()`.
+
+The following keys are supported:
+
+| Reference | Value |
+| --------------------------- | ------- |
+| `Cypress.Keyboard.Keys.TAB` | `"Tab"` |
+
+### defaults Arguments
**options _(Object)_**
@@ -30,6 +43,13 @@ An object containing the following:
## Examples
+### Press tab key
+
+```javascript
+cy.press(Cypress.Keyboard.Keys.TAB)
+cy.get('input.second').should('have.focus')
+```
+
### Slow down typing by increasing the keystroke delay
```javascript
@@ -59,22 +79,31 @@ The keystroke delay can also be set via
which can be useful when setting it for a single test or a subset of tests.
```javascript
-it('removes keystroke delay for all typing in this test', { keystrokeDelay: 0 }, () => {
- cy.get('input').eq(0).type('fast typing')
- cy.get('input').eq(1).type('more fast typing')
-})
-
-describe('removes keystroke delay in all tests in this suite', { keystrokeDelay: 0 }, () => {
- it('types fast in the first input', () => {
+it(
+ 'removes keystroke delay for all typing in this test',
+ { keystrokeDelay: 0 },
+ () => {
cy.get('input').eq(0).type('fast typing')
- })
-
- it('types fast in the second input', () => {
cy.get('input').eq(1).type('more fast typing')
- })
-}))
+ }
+)
+
+describe(
+ 'removes keystroke delay in all tests in this suite',
+ { keystrokeDelay: 0 },
+ () => {
+ it('types fast in the first input', () => {
+ cy.get('input').eq(0).type('fast typing')
+ })
+
+ it('types fast in the second input', () => {
+ cy.get('input').eq(1).type('more fast typing')
+ })
+ }
+)
```
## See also
+- [`cy.press()`](/api/commands/press)
- [`.type()`](/api/commands/type)
diff --git a/docs/api/table-of-contents.mdx b/docs/api/table-of-contents.mdx
index 693ea90714..01c2a7f43f 100644
--- a/docs/api/table-of-contents.mdx
+++ b/docs/api/table-of-contents.mdx
@@ -139,6 +139,7 @@ Cypress has a variety of additional commands to help write tests.
| [`.mount()`](/api/commands/mount) | Mount a component for Cypress Component Testing. |
| [`.origin()`](/api/commands/origin) | Visit multiple domains of different origin in a single test. |
| [`.pause()`](/api/commands/pause) | Pause test execution, allowing interaction with the application under test before resuming. |
+| [`.press()`](/api/commands/press) | Trigger native key events in your application to simulate real user keyboard interactions. |
| [`.readFile()`](/api/commands/readfile) | Read a file from disk. |
| [`.reload()`](/api/commands/reload) | Reload the page. |
| [`.request()`](/api/commands/request) | Make an HTTP request. |
diff --git a/docs/app/continuous-integration/aws-codebuild.mdx b/docs/app/continuous-integration/aws-codebuild.mdx
index c89110574e..d51931ff7a 100644
--- a/docs/app/continuous-integration/aws-codebuild.mdx
+++ b/docs/app/continuous-integration/aws-codebuild.mdx
@@ -138,14 +138,14 @@ version: 0.2
## https://docs.aws.amazon.com/codebuild/latest/userguide/batch-build-buildspec.html
## Define build to run using the
-## "cypress/browsers:22.12.0" image
+## "cypress/browsers:22.15.0" image
## from the Cypress Amazon ECR Public Gallery
batch:
fast-fail: false
build-list:
- identifier: cypress-e2e-tests
env:
- image: public.ecr.aws/cypress-io/cypress/browsers:22.12.0
+ image: public.ecr.aws/cypress-io/cypress/browsers:22.15.0
phases:
install:
diff --git a/docs/app/continuous-integration/bitbucket-pipelines.mdx b/docs/app/continuous-integration/bitbucket-pipelines.mdx
index d28f45f971..8368623670 100644
--- a/docs/app/continuous-integration/bitbucket-pipelines.mdx
+++ b/docs/app/continuous-integration/bitbucket-pipelines.mdx
@@ -43,7 +43,7 @@ example, this allows us to run the tests in Firefox by passing the
Read about [Cypress Docker variants](/app/continuous-integration/overview#Cypress-Docker-variants) to decide which image is best for your project.
```yaml title="bitbucket-pipelines.yml"
-image: cypress/browsers:22.12.0
+image: cypress/browsers:22.15.0
pipelines:
default:
@@ -82,7 +82,7 @@ Artifacts from a job can be defined by providing paths to the `artifacts`
attribute.
```yaml title="bitbucket-pipelines.yml"
-image: cypress/browsers:22.12.0
+image: cypress/browsers:22.15.0
pipelines:
default:
@@ -146,7 +146,7 @@ recording test results to [Cypress Cloud](/cloud/get-started/introduction).
:::
```yaml title="bitbucket-pipelines.yml"
-image: cypress/base:22.12.0
+image: cypress/base:22.15.0
## job definition for running E2E tests in parallel
e2e: &e2e
@@ -205,7 +205,7 @@ definitions:
The complete `bitbucket-pipelines.yml` is below:
```yaml title="bitbucket-pipelines.yml"
-image: cypress/base:22.12.0
+image: cypress/base:22.15.0
## job definition for running E2E tests in parallel
e2e: &e2e
diff --git a/docs/app/continuous-integration/github-actions.mdx b/docs/app/continuous-integration/github-actions.mdx
index 173af7c782..5a62c08c14 100644
--- a/docs/app/continuous-integration/github-actions.mdx
+++ b/docs/app/continuous-integration/github-actions.mdx
@@ -188,7 +188,7 @@ jobs:
cypress-run:
runs-on: ubuntu-24.04
container:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
options: --user 1001
steps:
- name: Checkout
diff --git a/docs/app/continuous-integration/gitlab-ci.mdx b/docs/app/continuous-integration/gitlab-ci.mdx
index 9f8b8ff32b..863a5e35bf 100644
--- a/docs/app/continuous-integration/gitlab-ci.mdx
+++ b/docs/app/continuous-integration/gitlab-ci.mdx
@@ -74,7 +74,7 @@ stages:
- test
test:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
stage: test
script:
# install dependencies
@@ -105,7 +105,7 @@ cache:
- .npm/
test:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
stage: test
script:
# install dependencies
@@ -172,7 +172,7 @@ cache:
## Install npm dependencies and Cypress
install:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
stage: build
script:
- npm ci
@@ -217,13 +217,13 @@ cache:
## Install npm dependencies and Cypress
install:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
stage: build
script:
- npm ci
ui-chrome-tests:
- image: cypress/browsers:22.12.0
+ image: cypress/browsers:22.15.0
stage: test
parallel: 5
script:
diff --git a/docs/app/faq.mdx b/docs/app/faq.mdx
index 7c47192281..481eac6ef2 100644
--- a/docs/app/faq.mdx
+++ b/docs/app/faq.mdx
@@ -20,7 +20,7 @@ source (MIT license) application. This is always free to use.
variety of billing plans (including a free, open source plan) for when you want
to record your test runs in CI.
-Additionally, we have add-ons like [UI Coverage](/ui-coverage/get-started/introduction) and [Cypress Accessibility](/accessibility/get-started/introduction) which have separate pricing.
+Additionally, we have premium solutions like [UI Coverage](/ui-coverage/get-started/introduction) and [Cypress Accessibility](/accessibility/get-started/introduction) which have separate pricing.
Please see our [Pricing Page](https://www.cypress.io/pricing) for more details.
diff --git a/docs/app/get-started/install-cypress.mdx b/docs/app/get-started/install-cypress.mdx
index 3367b76004..cc15004a2a 100644
--- a/docs/app/get-started/install-cypress.mdx
+++ b/docs/app/get-started/install-cypress.mdx
@@ -107,7 +107,7 @@ Cypress supports running under these operating systems:
- **Linux** Ubuntu 20.04 and above, Fedora 40 and above, and Debian 11 and above _(x64 or arm64)_
(see [Linux Prerequisites](#Linux-Prerequisites) down below)
- **Windows** 10 and above _(x64)_
-- **Windows Server** 2019 and 2022 _(x64)_
+- **Windows Server** 2019, 2022 and 2025 _(x64)_
### Node.js
@@ -117,6 +117,7 @@ Cypress requires [Node.js](https://nodejs.org/) in order to install. We support
Cypress generally aligns with
[Node's release schedule](https://github.com/nodejs/Release).
+Accordingly, use of Node.js 18 with Cypress is deprecated and support is planned for removal in a future release of Cypress.
#### Installing Node.js
@@ -157,10 +158,23 @@ is preferred. Cypress [Component Testing](/app/core-concepts/testing-types#What-
#### pnpm Configuration
+The following configuration options enable Cypress to execute its `postinstall` script so it can install the Cypress binary into the [binary cache](/app/references/advanced-installation#Binary-cache).
+If these configuration options are not set, then Cypress may skip the `postinstall` script execution and Cypress will not run.
+
+The pnpm [side effects cache](https://pnpm.io/settings#sideeffectscache) uses and caches the results of (pre/post)install hooks and is not compatible with Cypress' own caching.
+Disable the pnpm [side effects cache](https://pnpm.io/settings#sideeffectscache), for example using the following command, executed in the root of your Cypress project:
+
+```shell
+pnpm config set side-effects-cache false --location project
+```
+
[pnpm@10.0.0](https://github.com/pnpm/pnpm/releases/tag/v10.0.0) and above require allowlisting `cypress`.
-This enables Cypress to execute its `postinstall` script so it can install the Cypress binary into the [binary cache](/app/references/advanced-installation#Binary-cache).
-Refer to the [pnpm](https://pnpm.io/) configuration file documentation for additional information.
-[pnpm@10.4.0](https://github.com/pnpm/pnpm/releases/tag/v10.4.0) introduced the CLI add option [--allow-build](https://pnpm.io/cli/add#--allow-build) to add the allowed build configuration directly through the command line.
+Refer to the [pnpm settings](https://pnpm.io/settings) documentation for additional information.
+In [pnpm@10.4.0](https://github.com/pnpm/pnpm/releases/tag/v10.4.0) and above, the CLI `add` option [--allow-build](https://pnpm.io/cli/add#--allow-build) can be used, for example:
+
+```shell
+pnpm --allow-build cypress add --save-dev cypress
+```
### Hardware
diff --git a/docs/app/get-started/why-cypress.mdx b/docs/app/get-started/why-cypress.mdx
index 3058826806..b8e7c9d4d8 100644
--- a/docs/app/get-started/why-cypress.mdx
+++ b/docs/app/get-started/why-cypress.mdx
@@ -44,8 +44,8 @@ of your test suite and the quality of your application.
[open source](https://github.com/cypress-io/cypress),
locally installed app for writing and running tests.
- [Cypress Cloud](/cloud/get-started/introduction), a paid service for recording tests, surfacing test results, and providing test analytics.
-- [UI Coverage](/ui-coverage/get-started/introduction), a paid add-on providing a visual overview of test coverage across every page and component of your app, offering clear insights into uncovered areas that everyone can understand.
-- [Cypress Accessibility](/accessibility/get-started/introduction), a paid add-on providing accessibility checks, which helps detect barriers for people with disabilities using your application.
+- [UI Coverage](/ui-coverage/get-started/introduction), a premium solution providing a visual overview of test coverage across every page and component of your app, offering clear insights into uncovered areas that everyone can understand.
+- [Cypress Accessibility](/accessibility/get-started/introduction), a premium solution providing accessibility checks, which helps detect barriers for people with disabilities using your application.
Cypress is a robust solution that can improve the quality of your application.
@@ -108,12 +108,14 @@ Below are listed some of the key features of each product.
- **Visualize Coverage:** [UI Coverage](/ui-coverage/get-started/introduction) provides a visual overview of test coverage across every page and component of your app, offering clear insights into uncovered areas that everyone can understand.
- **Results API:** Use the UI Coverage [Results API](/ui-coverage/results-api) to programmatically access test coverage data and integrate it into your existing workflows.
+- **Branch Review:** Compare runs to see newly introduced elements in your application or unexpected reductions in test coverage.
### Cypress Accessibility
- **Accessibility Checks:** Maximize the value of your existing Cypress tests by instantly adding thousands of [accessibility checks](/accessibility/get-started/introduction) with no setup, code changes, or performance penalty.
- **Run-level reports:** Get a detailed report of accessibility issues found in your test runs with [Run-level reports](/accessibility/core-concepts/run-level-reports).
- **Results API:** Use the Cypress Accessibility's [Results API](/accessibility/results-api) to programmatically access Accessibility results in a CI environment.
+- **Branch Review:** Compare any report against a baseline to review only the new violations, without any noise from existing issues.
## Solutions
diff --git a/docs/app/guides/accessibility-testing.mdx b/docs/app/guides/accessibility-testing.mdx
index 827095944e..26bdf90b23 100644
--- a/docs/app/guides/accessibility-testing.mdx
+++ b/docs/app/guides/accessibility-testing.mdx
@@ -34,7 +34,7 @@ Here are the main ways to account for accessibility when testing with Cypress:
- [In-test plugins](#In-test-plugins)
- [Cypress Accessibility](#Cypress-Accessibility)
-
+
### Explicit, application-specific tests
@@ -81,7 +81,7 @@ In-test accessibility checks are the only kind available in typical testing scen
To learn more, you can read our [dedicated docs](/accessibility/get-started/introduction), or review a [public live example of an automatically-generated accessibility report](https://cloud.cypress.io/projects/7s5okt/runs/6520/accessibility?tab=views&columnHeading=Views&direction=ascending&rulesColumnHeading=Rules&rulesDirection=ascending&impact=critical%2Cserious%2Cmoderate%2Cminor&ruleset=wcag21a%2Cwcag21aa%2Cbest-practice&status=fail%2Cincomplete) in our Cypress Realworld App demo project.
-
+
deprecated, and will be removed in Cypress. 15
+This option is deprecated, and will be removed in a future version of Cypress.
Set this configuration option to `true` to instruct Cypress to
[inject document.domain](/app/guides/cross-origin-testing#What-Cypress-does-under-the-hood)
-into your test application. This can reduce the need for `cy.origin()` when [navigating
-between subdomains](/app/guides/cross-origin-testing), but comes with compatibility
-caveats for some sites.
+into your test application.
+This can reduce the need for [`cy.origin()`](/api/commands/origin)
+when [navigating between subdomains](/app/guides/cross-origin-testing),
+but comes with compatibility caveats for some sites.
-This configuration option is provided to ease the transition between `cy.origin()`'s behavior
-in Cypress 13 and the default behavior in Cypress 14. It will be removed in a future version of Cypress.
+This configuration option is provided to ease the transition between [`cy.origin()`](/api/commands/origin)'s behavior
+in Cypress 13 and the default behavior in Cypress 14.
[Read the Cypress 14 migration guide](/app/references/migration-guide#Migrating-to-Cypress-140) to understand how to update your tests to remove
the need to set this flag.
This configuration value _must_ be set to true if you are running tests with experimental
-WebKit support, as `cy.origin` is not yet supported in WebKit.
+WebKit support, as [`cy.origin()`](/api/commands/origin) is not yet supported in WebKit.
:::caution
diff --git a/docs/app/references/error-messages.mdx b/docs/app/references/error-messages.mdx
index 0f51799c1a..8413c31b1d 100644
--- a/docs/app/references/error-messages.mdx
+++ b/docs/app/references/error-messages.mdx
@@ -498,18 +498,18 @@ as-is:
```javascript
it('navigates to docs.cypress.io', () => {
cy.visit('http://localhost:3000')
- cy.visit('https://docs.cypress.io') // visit a different superdomain
+ cy.visit('https://docs.cypress.io') // visit a different domain
})
```
-However, when the newly visited URL is not considered the same superdomain, the
+However, when the newly visited URL is not considered the same domain, the
[`cy.origin()`](/api/commands/origin) command **must** be used to interact with
the newly visited domain. The following test is incorrect:
```javascript
it('navigates to docs.cypress.io and runs additional commands', () => {
cy.visit('http://localhost:3000')
- cy.visit('https://docs.cypress.io') // visit a different superdomain
+ cy.visit('https://docs.cypress.io') // visit a different domain
cy.get('h1').should('contain', 'Why Cypress?') // fails
})
```
@@ -525,10 +525,10 @@ In order to fix this, our `cy.get()` command **must** be wrapped with the
[`cy.origin()`](/api/commands/origin) command, like so:
```javascript
-it('navigates to example.cypress.io and runs additional commands', () => {
+it('navigates to docs.cypress.io and runs additional commands', () => {
cy.visit('http://localhost:3000')
- cy.visit('https://example.cypress.io') // visit a different superdomain
- cy.origin('https://example.cypress.io', () => {
+ cy.visit('https://docs.cypress.io') // visit a different domain
+ cy.origin('https://docs.cypress.io', () => {
cy.get('h1').should('contain', 'Why Cypress?') // now succeeds!
})
})
@@ -610,6 +610,9 @@ if you've exhausted all other possibilities.
## CLI Errors
+Errors in this section may occur when using the [Cypress command line (CLI)](/app/references/command-line).
+They may also apply to running Cypress programmatically through the [Cypress Module API](/app/references/module-api).
+
### You passed the `--record` flag but did not provide us your Record Key.
You may receive this error when trying to run Cypress tests in
@@ -659,12 +662,18 @@ We will automatically apply the record key environment variable.
### A Cached Cypress Binary Could not be found
-This error occurs in CI when using `cypress run` without a valid Cypress binary
-cache installed on the system (on linux that's `~/.cache/Cypress`).
+This error occurs in CI when attempting to use `cypress run` or `cypress verify` CLI commands
+without having a valid Cypress binary cache installed on the system.
+
+The Cypress binary is downloaded and installed into a [global cache folder](/app/references/advanced-installation#Binary-cache)
+with a package manager install command (such as `npm ci`, `npm install`, `yarn install` or `pnpm install`).
+The Cypress cache can also be loaded from a CI cache that was saved from a previous CI run.
+
+If you are using pnpm, ensure you are following the [pnpm configuration](/app/get-started/install-cypress#pnpm-Configuration)
+instructions, otherwise pnpm may skip the Cypress binary installation.
-To fix this error, follow instructions on
-[caching the cypress binary in CI](/app/continuous-integration/overview#Caching),
-then bump the version of your CI cache to ensure a clean build.
+If you are using CI caches, then review also the recommendations for
+[caching the Cypress binary in CI](/app/continuous-integration/overview#Caching).
### Incorrect usage of `--ci-build-id` flag
diff --git a/docs/app/references/migration-guide.mdx b/docs/app/references/migration-guide.mdx
index 950098eeb2..361990c436 100644
--- a/docs/app/references/migration-guide.mdx
+++ b/docs/app/references/migration-guide.mdx
@@ -189,8 +189,8 @@ is set to true, `cy.origin()` will not be required to navigate between origins,
If `injectDocumentDomain` is set to `true`,
Cypress will warn that this option is deprecated.
- `injectDocumentDomain` will be removed in Cypress
-15.
+ `injectDocumentDomain` will be removed in a
+future version of Cypress.
Setting `injectDocumentDomain` to `true` may
cause certain sites to stop working in Cypress. Please read the [configuration notes](/app/references/configuration#injectDocumentDomain)
diff --git a/docs/app/references/trade-offs.mdx b/docs/app/references/trade-offs.mdx
index 061bc77055..cf0e2a0d52 100644
--- a/docs/app/references/trade-offs.mdx
+++ b/docs/app/references/trade-offs.mdx
@@ -37,7 +37,6 @@ We want to highlight some _temporary_ restrictions that Cypress hopes to
eventually address.
- [Workarounds for the lack of a `cy.hover()` command.](/api/commands/hover)
-- [`cy.tab()` command.](https://github.com/cypress-io/cypress/issues/299)
- [There is not any native or mobile events support.](https://github.com/cypress-io/cypress/issues/311#issuecomment-339824191)
- [iframe support is somewhat limited, but does work.](https://github.com/cypress-io/cypress/issues/136)
diff --git a/docs/cloud/account-management/users.mdx b/docs/cloud/account-management/users.mdx
index 8abafa76b9..2dac3a45cf 100644
--- a/docs/cloud/account-management/users.mdx
+++ b/docs/cloud/account-management/users.mdx
@@ -24,8 +24,9 @@ A user is anyone who logs in to Cypress Cloud.
## Invite users
Organization [owner or admin](#User-roles) roles can invite
-[Cypress Cloud](https://on.cypress.io/cloud) users. Those invited will see all
-projects and tests run for the organization.
+[Cypress Cloud](https://on.cypress.io/cloud) users. Those invited will see
+the projects and tests the user has [team permissions](/cloud/account-management/teams#Assign-projects-to-a-team)
+to view.
_Note: only owners can give other users 'owner' access._
@@ -33,11 +34,14 @@ _Note: only owners can give other users 'owner' access._
1. Select the [organization](/cloud/account-management/organizations) you
want to invite a user to.
-2. Click **Users**, then **Invite User**.
-3. Fill in their email and select their [role](#User-roles), then click **Invite
- User**.
-4. The user will receive an invitation email with a link to accept the
- invitation.
+2. Click **Users & Teams**, then **Invite User**.
+3. Add one or more emails, pressing **Enter** after each one, and select their [role](#User-roles).
+4. Click **Invite User**.
+5. The user will receive an invitation email with a link to accept the invitation.
+
+If you prefer to send your own message to users and include a link to join the organization,
+you can click **Copy invite link** and all users who accept this invitation will be given
+the default role of **Member**.
What you'll learn
-- How Branch Review surfaces the impact of pull requests on your test suite
- How to compare test results between branches in Cypress Cloud
+- How Branch Review surfaces the impact of Pull Requests on your test suite
+- How to compare **any** two runs, if not using a Pull Request workflow
- Best practices for grouping test runs
:::
-Cypress Branch Review is designed to elevate your pull request review workflow. It allows you to quickly identify the impact a pull request might have on your test suite in a single view. Compare which tests are failing, flaky, pending, added, or modified between the source and base branches and prevent the merging of low-quality code.
+Cypress Branch Review allows you to quickly identify the different impacts a Pull Request might have on your test suite in a single view.
+Compare which tests are failing, flaky, pending, added, or modified between the source and base branches. If enabled on your account,
+UI Coverage or Cypress Accessibility changes between runs will also appear here.
-A common scenario throughout the software development lifecycle (SDLC) is an engineer's **feature** branch that will be merged into the repo's **develop** or **main** branch.
+Branch Review is useful even if you do not have a Pull Request workflow, because it allows you to compare any two runs of your choice.
+These might might represent different builds of the application, changes in test code, or results from nightly runs. This page will use
+the example of a Pull Request made using the GitHub integration, but this integration is not required in order to use Branch Review.
+
+A common scenario throughout the software development lifecycle (SDLC) is an engineer's **feature** branch that will be merged into the
+repo's **develop** or **main** branch. Here's how this scenario appears in Branch Review:
-Previously, pinpointing changes in your test suite's results required a manual side-by-side comparison between your newly-introduced branch's test runs and your base branch's test runs. This sub-optimal workflow often fails to answer the fundamental questions, _what changed_ and _why?_ You might be left wondering if the same tests are flaky between branches, when new failures were introduced, or if you added sufficient test coverage to your new branch.
-
-:::info
-
-Cypress Branch Review is currently only available for [GitHub integrated projects](/cloud/integrations/source-control/github). We are working on adding support for GitLab and Bitbucket soon.
-:::
+Without Branch Review, pinpointing changes in your test suite's results requires a manual side-by-side comparison between your newly-introduced branch's test runs and your base branch's test runs. This sub-optimal workflow often fails to answer the fundamental questions, _what changed_ and _why?_ You might be left wondering if the same tests are flaky between branches, when new failures were introduced, or if you added sufficient test coverage to your new branch.
## Getting Started
-Branch Review works by leveraging the Cypress Cloud GitHub integration to query the GitHub API for branches with pull requests. Your project will first need to be connected to a GitHub repository. If you haven't already, follow the steps in [Install the Cypress GitHub app](/cloud/integrations/source-control/github#Install-the-Cypress-GitHub-app) to connect your project to GitHub.
+The key to the Branch Review area is a comparison between a **Base** run and a **Changed** run.
+The Changed run is the main subject of the comparison, often associated with an incoming Pull Request. The Base run is the starting point for comparison.
### Accessing Branch Review
-To access Branch Review, navigate to the **Branches** tab in the left sidebar and select the branch you want to review. In order to see a comparison, the branch you select must have a pull request.
+There are a number of ways to get to Branch Review depending on where you are looking at your Cypress results. In all cases, once you've picked Changed run, you can adjust the automatically-selected Base run to any branch or run in the project to dial in the comparison you are most interested in.
+
+### From the project list
+
+The project card shows three active branches for the project. You can click through to any of these to enter Branch Review focused on that branch.
-If you do not see PR # tags associated with a branch, you may need to [pass PR numbers](/app/continuous-integration/overview#CI-Build-Information) to runs as environment variables. This helps ensure Cypress Cloud can map PR data correctly.
-
-#### Latest Runs
+### From the main navigation
-If the selected branch has a PR associated and a PR # passed via CI, there is an additional callout on the top of the overview tab of the **Latest runs** page which directs to the Branch Review.
+When a project is open, select "Branches" in the main navigation to see a full, filterable list of available branches and choose one to set as the source of the Changed run.
-## Branch Details
+### From the run overview page
+
+Click the branch name associated with the run. This will take you to Branch Review with that run pre-selected as the Changed run. This is a great way to investigate a specific run with an unexpected outcome in the tests.
+
+
-### View Options
+### From a Pull Request
-"Overview" is the default view of a branch for all projects.
+Click the "View all changes introduced in this branch" link at the bottom of the Test Results table. You will enter branch review with the current PR's branch and latest run pre-selected as the Changed run.
-:::note
+## Integrating with Pull Requests
-**Branch Overview**
+Pull Requests in Branch Review work by leveraging the Cypress Cloud GitHub integration to query the GitHub API for branches with Pull Requests. Your project will first need to be connected to a GitHub repository. If you haven't already, follow the steps in [Install the Cypress GitHub app](/cloud/integrations/source-control/github#Install-the-Cypress-GitHub-app) to connect your project to GitHub.
-1. Callouts for the latest available Branch Review or a reminder to create a pull request in order to compare test run results.
+When Pull Requests are connected, you will be able to select runs by the associated PR:
-2. Click "Review changes" for the full Branch Review.
+
-3. Click any test status to reveal those changes.
+:::info
-4. Latest runs of the current branch for contextual guidance on the state of its test runs.
+**Note:** If you do not see PR # tags associated with a branch, you may need to [pass PR numbers](/app/continuous-integration/overview#CI-Build-Information) to runs as environment variables. This helps ensure Cypress Cloud can map PR data correctly.
:::
-"Review" provides the detailed Branch Review insights for the branch's available pull requests, with the latest pull request selected by default.
+#### Latest Runs
+
+If the selected branch has a PR associated and a PR # passed via CI, there is an additional callout on the top of the overview tab of the **Latest runs** page which directs to the Branch Review.
+
+
-"Runs" provides a list of all runs that are attributed to the current branch.
+## Branch Details
### Review Header
The header includes the Git commit message, PR selector, PR status, and base and feature branch labels with the Cypress Cloud test run ID number (#).
-If there are multiple pull requests open for the same branch, you can select the pull request you want to review from the dropdown to the right of the commit message.
+If there are multiple Pull Requests open for the same branch, you can select the Pull Request you want to review from the dropdown to the right of the commit message.
Clicking the branch label will link you directly to the appropriate [run overview](/cloud/features/recorded-runs#Overview-tab) and hovering on these elements exposes additional run meta data.
### Review Test Status
-When on the review screen, you will see the Failures, Flaky, Pending, Added, and Modified tabs. Each tab will show you the specs that fall into that category. You can click on a test to view the test details.
-
:::info
-If a run is missing on either the merge base or feature commit of the PR, a banner is displayed specifying which commit is missing the run with a link to it on GitHub.
+**Note:** Recording exactly one run for every commit is the best way to ensure complete and accurate comparisons. See our [best practices](/cloud/features/branch-review#Best-Practices) on grouping multiple `cypress run` calls under one run.
:::
-:::info
-
-Recording exactly one run for every commit as the best/only way to ensure complete and accurate comparisons. See our [best practices](/cloud/features/branch-review#Best-Practices) on grouping multiple `cypress run` calls under one run.
-
-:::
+When on the review screen, you will see the Failures, Flaky, Pending, Added, and Modified tabs. Each tab will show you the specs that fall into that category. You can click on a test to view the test details.
@@ -127,9 +146,11 @@ Recording exactly one run for every commit as the best/only way to ensure comple
**Review Test Status**
-1. Review your PR information
-2. Get a glance of changes in your branch across key statuses
-3. See what has changed in a specific status, for example:
+1. Details of which branches and runs are compared. If a Pull Request is detected, Pull Request details will be here.
+1. Links to key differences in test information like new failures and flaky tests. Note that all numbers and scores refer to the Changed run.
+1. [UI Coverage](https://on.cypress.io/ui-coverage-trial?utm_medium=cloud-br&utm_source=docs.cypress.io&utm_term=&utm_content=UI+Coverage) changes.
+1. [Cypress Accessibility](http://on.cypress.io/accessibility-trial?utm_medium=cloud-br&utm_source=docs.cypress.io&utm_term=&utm_content=Cypress+Accessibility) changes.
+1. See what has changed in the specific status you have opened, for example:
-
total count, for example, _3 new and 1 existing_
-4. The test state (failed, flaky, pending) is also indicated at the spec level
+1. The test state (failed, flaky, pending) is also indicated at the spec level
- _new_ = the state was not previously captured, but now is captured
(newly pending tests can imply an `it.skip()` was not removed)
- _existing_ = the state was previously captured and now is still captured
- _resolved_ = the state was previously captured but now is no longer captured
@@ -177,19 +198,9 @@ Navigating into the test detail view reveals a side-by-side comparison of the te
:::
-## GitHub Pull Request Comments
-
-The Cypress Cloud GitHub Integration offers detailed run information via [PR comments](/cloud/integrations/source-control/github#Pull-request-comments). Follow the "View all changes introduced in this branch" link to load the Branch Review between the feature and base branches.
-
-
-
## Troubleshooting
-### Note on Available Data
+### Note on Available Data for Pull Requests
Branch Review is a powerful tool to compare two branches with recorded runs to Cypress Cloud. There are factors that can impact what is available to review between a feature and base branch. For example, whether or not a branch at a particular commit has a run recorded to Cypress Cloud will affect what is displayed.
@@ -202,6 +213,8 @@ The following captures this scenario across both branches:
| no run | has run | Non-comparison data with found feature run |
| no run | no run | Non-comparison data using last run on feature branch |
+If the required runs for comparison are not available, you can use the manual selection dropdowns to compare two suitable runs, if they exist in Cypress Cloud.
+
## Best Practices
### Grouping Test Runs
@@ -210,6 +223,10 @@ Cypress Cloud allows for [grouping recorded tests](/cloud/features/smart-orchest
Recording multiple test runs per commit without grouping will cause issues, as Branch Review relies on the _latest_ run. Therefore, recording one run per commit and utilizing grouping is essential to improving effectiveness and ensure an accurate comparison between branches.
+### Missing Runs in Pull Request Comparisons
+
+If a run is missing on either the merge base or feature commit of the PR, a banner is displayed specifying which commit is missing the run with a link to it on GitHub.
+
## See Also
-- Read about [multi-repo implementation](/cloud/account-management/projects#Multi-repo-Implementation) best practices in Cypress Cloud.
+- Read about [multi-repo implementation](/cloud/account-management/projects#Multi-repo-Implementation) best practices in Cypress Cloud. Even if your test code and application code are not colocated, you maybe be able to connect your test runs to specific commits and pull requests in your application.
diff --git a/docs/cloud/get-started/introduction.mdx b/docs/cloud/get-started/introduction.mdx
index 3d51c6c61e..ffcea8393d 100644
--- a/docs/cloud/get-started/introduction.mdx
+++ b/docs/cloud/get-started/introduction.mdx
@@ -13,11 +13,13 @@ Cypress Cloud unlocks the full potential of Cypress test automation tools in you
+
### Flexible enterprise configuration and single sign on
diff --git a/docs/cloud/integrations/source-control/bitbucket.mdx b/docs/cloud/integrations/source-control/bitbucket.mdx
index 39c82c1728..a1984e4afc 100644
--- a/docs/cloud/integrations/source-control/bitbucket.mdx
+++ b/docs/cloud/integrations/source-control/bitbucket.mdx
@@ -18,12 +18,6 @@ sidebar_label: Bitbucket
:::
-:::caution
-
- Bitbucket integration is currently in beta
-
-:::
-
[Cypress Cloud](https://on.cypress.io/cloud) can integrate your Cypress tests
with your Bitbucket workflow via [status checks](#Status-checks) and
[pull request comments](#Pull-Request-comments). A project first needs to be
diff --git a/docs/partials/_accessibility-addon.mdx b/docs/partials/_accessibility-addon.mdx
deleted file mode 100644
index 97d68f3915..0000000000
--- a/docs/partials/_accessibility-addon.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-:::tip
-
-**Cypress Accessibility** is a paid add-on. [Schedule a demo]() today and see how easy it is to enhance your accessibility testing while speeding up your development process.
-
-:::
diff --git a/docs/partials/_accessibility-premium-note.mdx b/docs/partials/_accessibility-premium-note.mdx
new file mode 100644
index 0000000000..759f5ac693
--- /dev/null
+++ b/docs/partials/_accessibility-premium-note.mdx
@@ -0,0 +1,5 @@
+:::tip
+
+**Cypress Accessibility** is a paid premium solution. [Schedule a demo]() today and see how easy it is to enhance your accessibility testing while speeding up your development process.
+
+:::
diff --git a/docs/partials/_document-domain-workaround.mdx b/docs/partials/_document-domain-workaround.mdx
index 30ee56a468..3127e782ca 100644
--- a/docs/partials/_document-domain-workaround.mdx
+++ b/docs/partials/_document-domain-workaround.mdx
@@ -9,8 +9,9 @@ This means you must now use `cy.origin()` when navigating between different _ori
in the same test. Previously, `cy.origin()` was only necessary when navigating between
different [superdomains](/app/guides/cross-origin-testing#Parts-of-a-URL) in the same test.
-By setting the `injectDocumentDomain` configuration option to `true`, Cypress will
-attempt to inject `document.domain` into `text/html` pages.
+By setting the
+[injectDocumentDomain](/app/references/configuration#injectDocumentDomain) configuration option to `true`,
+Cypress will attempt to inject `document.domain` into `text/html` pages.
A superdomain is comprised of the trailing two elements of the hostname, delimited by
a `.` (period). Given `https://www.cypress.io`, the superdomain is determined to be
diff --git a/docs/partials/_ui-coverage-addon.mdx b/docs/partials/_ui-coverage-addon.mdx
deleted file mode 100644
index 4553fe3bf8..0000000000
--- a/docs/partials/_ui-coverage-addon.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
-:::tip
-
-**UI Coverage** is a paid add-on. [Schedule a demo]() today and see how easy it is to enhance your testing while speeding up your development process.
-
-:::
diff --git a/docs/partials/_ui-coverage-premium-note.mdx b/docs/partials/_ui-coverage-premium-note.mdx
new file mode 100644
index 0000000000..cb5c12b1fe
--- /dev/null
+++ b/docs/partials/_ui-coverage-premium-note.mdx
@@ -0,0 +1,5 @@
+:::tip
+
+**UI Coverage** is a paid premium solution. [Schedule a demo]() today and see how easy it is to enhance your testing while speeding up your development process.
+
+:::
diff --git a/docs/ui-coverage/core-concepts/compare-reports.mdx b/docs/ui-coverage/core-concepts/compare-reports.mdx
new file mode 100644
index 0000000000..723003109b
--- /dev/null
+++ b/docs/ui-coverage/core-concepts/compare-reports.mdx
@@ -0,0 +1,97 @@
+---
+title: 'Comparing UI Coverage Reports | Cypress Documentation'
+description: 'Review where coverage has changed in the application between two runs.'
+sidebar_position: 40
+sidebar_label: Compare reports
+---
+
+
+
+# Compare reports
+
+UI Coverage reports from different runs can be compared in the [Branch Review](/cloud/features/branch-review#Getting-Started) area of Cypress Cloud. This allows you to understand the exact change in coverage between any two points in time, revealing the impact of application changes or test code updates on your overall coverage area.
+
+
+
+## Use cases
+
+Comparing the results from different runs is useful in multiple scenarios.
+
+**Key use cases:**
+
+- **Pre-merge checks**: Know if any net-new untested elements are introduced by UI code changes.
+- **Monitoring changes**: Compare nightly monitoring runs and track down changes in coverage caused by unexpected changes in the application.
+- **Reviewing AI-generated code changes**: The increased use of AI to generate and/or review both tests and application code increases the risk of reducing coverage, or adding redundant coverage.
+- **Tracing the introduction of issues**: With dropdowns for each run, it's easy to rapidly compare different A and B runs to find the exact commit that introduced a problem.
+- **Demonstrating the resolution of issues**: Confirm the effect of your improvements, and share the overview with your team to more quickly review changes.
+
+## Content of the report
+
+The Branch Review report is organized into three sections:
+
+### Untested links
+
+
+
+Untested links represent unopened doors in your application - pages that a user can reach through your UI, but that are not tested with Cypress. This report shows any new untested pages that appear in the Changed run that were not present in the Base run.
+
+### Untested elements
+
+
+
+Untested interactive elements can increase for two potential reasons:
+
+1. In the Changed run, the tests are no longer interacting with an element that was interacted with in the Base run. The element is still present, but the **test code** has changed.
+2. In the Changed run, new elements exist that were not present in the Base run, and they are not tested in the Changed run. This happens when the **application code** has changed but tests have not kept up.
+
+Both changes are worth reviewing, and while the causes are different, the way to increase coverage is the same. The elements can be tested with Cypress to contribute towards your coverage score, or they can be ignored with configuration if it is not important to test the elements.
+
+### Added links, elements, and views
+
+
+
+This is a summary of everything that appears to be new in the Changed run, and includes both tested and untested items. It's a useful way to compare two builds of your application and how the changes in the application itself relate to your overall coverage metrics.
+
+### Detail View
+
+
+
+Clicking on any untested link or element will take you into the Detail View, where you can see all the examples of the specific elements that have changed between the two runs. Elements that have the same status on both runs are removed here, so you can focus only on the changes.
+
+## How to compare runs
+
+The first step is to get to the [Branch Review](/cloud/features/branch-review.mdx) area of Cypress Cloud, which will let you compare one branch against another - or different runs on the same branch, if needed.
+You can access this area by clicking the branch name associated with a run, or in several other ways. [Learn more about how to compare runs](/cloud/features/branch-review.mdx).
+
+## FAQ
+
+### How do I ensure a good comparison?
+
+The best subjects to compare are passing runs that ran similar tests on the same set of content. This means that each run visited roughly the same pages and completed the same kinds of workflows. In this situation, any diff in the results is likely the result of changes present in the newer run. This is usually what happens out-of-the box when comparing a pull-request branch with your main branch.
+
+That said, it is still possible and valid to compare runs from different points in time with different sets of test results, as long as you bear in mind all the potential sources of difference between the two runs, which you can evaluate for yourself as you explore the results.
+
+In order to see unified changes for your entire test suite, you need to group all the tests together under a single Cypress run, for each report. Learn more about this in the [Branch Review Best Practices documentation](/cloud/features/branch-review#Best-Practices).
+
+### What is the purpose of the Beta label?
+
+This indicates the feature is ready for use and actively seeking feedback based on real usage of the current implementation. We have a few known issues to work through on our side before we consider this fully production-ready and remove the beta label. These issues only affect a subset of projects -- in most cases everything is working as intended. If you see anything unexpected, please use the feedback button and let us know.
+
+### Why do I see some views (pages or components) changing from run-to-run?
+
+URLs with dynamic slugs in them can appear as "new" pages in some situations. This behavior can be adjusted with [View configuration](/accessibility/configuration/views) to make sure page names will match across runs by wildcarding parts of the URL as needed.
diff --git a/docs/ui-coverage/get-started/introduction.mdx b/docs/ui-coverage/get-started/introduction.mdx
index 8c03460a97..e42be9e068 100644
--- a/docs/ui-coverage/get-started/introduction.mdx
+++ b/docs/ui-coverage/get-started/introduction.mdx
@@ -22,7 +22,7 @@ Easily track, monitor, and visualize the test coverage of your UI to prevent reg
label="See a demo"
icon="action-play-small"
className="mr-1"
- href="https://go.cypress.io/hubfs/App%20Quality%20Products/UI%20Coverage/ui_coverage__overview_and_demo%20(1080p).mp4"
+ href="https://on.cypress.io/ui-coverage-demo-video"
/>
@@ -168,7 +236,7 @@ run-cypress:
pipeline {
agent {
docker {
- image 'cypress/base:22.12.0'
+ image 'cypress/base:22.15.0'
}
}
@@ -239,7 +307,7 @@ version: 2.1
jobs:
linux-test:
docker:
- - image: cypress/base:22.12.0
+ - image: cypress/base:22.15.0
working_directory: ~/repo
steps:
@@ -258,73 +326,3 @@ workflows:
-
-#### Result Details
-
-The `getUICoverageResults` utility returns the following data:
-
-```javascript
-{
- // The run number of the identified build.
- runNumber: number
- // The run url for the identified build.
- runUrl: 'https://cloud.cypress.io/projects/:project_id/runs/:run_number'
- // The status of the identified build.
- runStatus: 'passed' | 'failed' | 'errored' | 'timedOut' | 'cancelled' | 'noTests'
- // The url that links to UI Coverage report for the identified build.
- uiCoverageReportUrl: 'https://cloud.cypress.io/[...]'
- summary: {
- // Indicates whether a complete UI Coverage report was generated.
- // For example, if a run was cancelled and the report expected to run
- // for 20 specs, but only 10 ran, this would result in a partial report.
- isPartialReport: boolean
- // The report coverage from 0-100 with 2 decimal precision (e.g 92.45).
- coverage: float
- // The number of views tested and analyzed.
- viewCount: number
- // The number of interactive elements that were tested.
- testedElementsCount:number
- // The number of interactive elements that were not tested.
- untestedElementsCount: number
- }
- // The list of tested views and the coverage of each page.
- views: [{
- // The sanatized URL pattern shown in the report.
- displayName: string
- // The view coverage from 0-100 with 2 decimal precision (e.g 92.45).
- coverage: float
- // The number of interactive elements that were tested on this view.
- testedElementsCount:number
- // The number of interactive elements that were not tested on this view.
- untestedElementsCount: number
- // The url that links the report for this view.
- uiCoverageReportUrl: 'https://cloud.cypress.io/[...]'
- }]
-}
-```
-
-### **2. Add to CI Workflow**
-
-In your CI workflow that runs your Cypress tests,
-
-1. Update your install job to install the `@cypress/extract-cloud-results` module.
-2. Pass in the necessary arguments to `getUICoverageResults`.
-3. Add a new step to the job that runs your Cypress tests to verify the UI Coverage results.
-
-:::info
-
-If you record multiple runs in a single CI build, you must record these runs using the `--tag` parameter and then call `getUICoverageResults` with the `runTags` argument for each run.
-
-This is necessary to identify each unique run and return a corresponding set of results. The tags are how each run is uniquely identified.
-
-**Example**
-
-- Let's imagine that within a single CI build you call `cypress run --record` multiple times because you're running one set of tests against a `staging` environment, followed by a `production` environment.
-- In this scenario, you pass a different `--tag` to each cypress run
- - `cypress run --record --tag staging`
- - `cypress run --record --tag production`
-- When calling `getUICoverageResults` you would then pass these same tags to get the unique set of results for each run
- - `getUICoverageResults({ runTags: ['staging']})`
- - `getUICoverageResults({ runTags: ['production']})`
-
-:::
diff --git a/src/components/product-heading/index.tsx b/src/components/product-heading/index.tsx
index e867804065..af73249d38 100644
--- a/src/components/product-heading/index.tsx
+++ b/src/components/product-heading/index.tsx
@@ -19,7 +19,7 @@ const ProductHeading: React.FC = ({
const iconName = product === 'ui-coverage' ? 'technology-ui-coverage' : product === 'accessibility' ? 'cypress-accessibility-outline' : 'technology-cypress'
const linkPath = product === 'cloud' ? 'pricing' : product
- let badgeContent = product === 'cloud' ? 'Free Trial' : '+ Add-on'
+ let badgeContent = product === 'cloud' ? 'Free Trial' : 'Premium Solution'
if (product === 'cloud' && plan) {
badgeContent = plan === 'team' ? 'Team Plan' : plan === 'business' ? 'Business Plan' : 'Enterprise Plan'
diff --git a/src/theme/MDXComponents.js b/src/theme/MDXComponents.js
index 588d27b29d..7278cf3b90 100644
--- a/src/theme/MDXComponents.js
+++ b/src/theme/MDXComponents.js
@@ -1,7 +1,7 @@
// Import the original mapper
import MDXComponents from "@theme-original/MDXComponents";
import AnatomyOfAnError from "@site/docs/partials/_anatomy-of-an-error.mdx";
-import AccessibilityAddon from "@site/docs/partials/_accessibility-addon.mdx";
+import AccessibilityPremiumNote from "@site/docs/partials/_accessibility-premium-note.mdx";
import AutoCancellationBenefits from "@site/docs/partials/_auto-cancellation-benefits.mdx";
import Badge from "@site/src/components/badge";
import Btn from "@site/src/components/button";
@@ -41,7 +41,7 @@ import Logo from "@site/src/components/logo";
import CloudFreePlan from "@site/docs/partials/_cloud_free_plan.mdx";
import CiProviderCloudSteps from "@site/docs/partials/_ci_provider_cloud_steps.mdx";
import UrlAllowList from "@site/docs/partials/_url_allowlist.mdx";
-import UICovAddon from "@site/docs/partials/_ui-coverage-addon.mdx";
+import UICovPremiumNote from "@site/docs/partials/_ui-coverage-premium-note.mdx";
// Font Awesome
import { library } from '@fortawesome/fontawesome-svg-core'
@@ -79,6 +79,7 @@ import {
faPlus,
faQuestionCircle,
faSearch,
+ faShieldHalved,
faLaptopCode,
faStar,
faSyncAlt,
@@ -136,6 +137,7 @@ library.add(
faQuestionCircle,
faSearch,
faLaptopCode,
+ faShieldHalved,
faStar,
faSyncAlt,
faTerminal,
@@ -161,7 +163,7 @@ export default {
// Re-use the default mapping
...MDXComponents,
AnatomyOfAnError,
- AccessibilityAddon,
+ AccessibilityPremiumNote,
AutoCancellationBenefits,
Badge,
Btn,
@@ -201,5 +203,5 @@ export default {
CloudFreePlan,
CiProviderCloudSteps,
UrlAllowList,
- UICovAddon,
+ UICovPremiumNote,
}
diff --git a/static/img/cloud/features/branch-review/branch-review-details.jpg b/static/img/cloud/features/branch-review/branch-review-details.jpg
deleted file mode 100644
index 54e27b44e7..0000000000
Binary files a/static/img/cloud/features/branch-review/branch-review-details.jpg and /dev/null differ
diff --git a/static/img/cloud/features/branch-review/branch-review-details.png b/static/img/cloud/features/branch-review/branch-review-details.png
new file mode 100644
index 0000000000..cc6fdf6a4d
Binary files /dev/null and b/static/img/cloud/features/branch-review/branch-review-details.png differ
diff --git a/static/img/cloud/features/branch-review/branch-review-header.jpg b/static/img/cloud/features/branch-review/branch-review-header.jpg
deleted file mode 100644
index ff73635a46..0000000000
Binary files a/static/img/cloud/features/branch-review/branch-review-header.jpg and /dev/null differ
diff --git a/static/img/cloud/features/branch-review/branch-review-header.png b/static/img/cloud/features/branch-review/branch-review-header.png
new file mode 100644
index 0000000000..fa62842bab
Binary files /dev/null and b/static/img/cloud/features/branch-review/branch-review-header.png differ
diff --git a/static/img/cloud/features/branch-review/branch-review.png b/static/img/cloud/features/branch-review/branch-review.png
new file mode 100644
index 0000000000..c1cfaaa114
Binary files /dev/null and b/static/img/cloud/features/branch-review/branch-review.png differ
diff --git a/static/img/cloud/features/branch-review/pr-in-branch-review.png b/static/img/cloud/features/branch-review/pr-in-branch-review.png
new file mode 100644
index 0000000000..2e5d8730aa
Binary files /dev/null and b/static/img/cloud/features/branch-review/pr-in-branch-review.png differ
diff --git a/static/img/cloud/users/invite-user-dialog.jpg b/static/img/cloud/users/invite-user-dialog.jpg
index 8576598ca8..4ca361ce96 100644
Binary files a/static/img/cloud/users/invite-user-dialog.jpg and b/static/img/cloud/users/invite-user-dialog.jpg differ
diff --git a/static/img/cloud/users/request-access-to-organization.png b/static/img/cloud/users/request-access-to-organization.png
index fcbd2131ec..133056fb4a 100644
Binary files a/static/img/cloud/users/request-access-to-organization.png and b/static/img/cloud/users/request-access-to-organization.png differ
diff --git a/static/img/ui-coverage/branch-review/added-links-and-elements.png b/static/img/ui-coverage/branch-review/added-links-and-elements.png
new file mode 100644
index 0000000000..f1cf328860
Binary files /dev/null and b/static/img/ui-coverage/branch-review/added-links-and-elements.png differ
diff --git a/static/img/ui-coverage/branch-review/detail-view.png b/static/img/ui-coverage/branch-review/detail-view.png
new file mode 100644
index 0000000000..bf9a4bd426
Binary files /dev/null and b/static/img/ui-coverage/branch-review/detail-view.png differ
diff --git a/static/img/ui-coverage/branch-review/new-untested-elements.png b/static/img/ui-coverage/branch-review/new-untested-elements.png
new file mode 100644
index 0000000000..3c269973da
Binary files /dev/null and b/static/img/ui-coverage/branch-review/new-untested-elements.png differ
diff --git a/static/img/ui-coverage/branch-review/new-untested-links.png b/static/img/ui-coverage/branch-review/new-untested-links.png
new file mode 100644
index 0000000000..e2d952068c
Binary files /dev/null and b/static/img/ui-coverage/branch-review/new-untested-links.png differ
diff --git a/static/img/ui-coverage/branch-review/uic-branch-review.png b/static/img/ui-coverage/branch-review/uic-branch-review.png
new file mode 100644
index 0000000000..da8e0cd593
Binary files /dev/null and b/static/img/ui-coverage/branch-review/uic-branch-review.png differ