Skip to content

Comments

CONSOLE-5094: Add pesudo CSP violation detection to Cypress#16048

Open
logonoff wants to merge 3 commits intoopenshift:mainfrom
logonoff:CONSOLE-5094-csp-tests
Open

CONSOLE-5094: Add pesudo CSP violation detection to Cypress#16048
logonoff wants to merge 3 commits intoopenshift:mainfrom
logonoff:CONSOLE-5094-csp-tests

Conversation

@logonoff
Copy link
Member

@logonoff logonoff commented Feb 19, 2026

A subset of CSP violations that occur during our e2e testing will now fail the e2e test

We cannot remove test-puppeteer-csp because we can't test the entirety of our CSP using cypress alone. Cypress
only allows a certain few CSP directives to be preserved, the others are stripped.

Cypress maintainers will always filter out some of our CSP directives such as frame-ancestors, and maintainers will probably never add support for this directive as it's fundamentally incompatible with Cypress testing in an iframe.

There may also be CSP violations that are produced prior to this hook being registered

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Feb 19, 2026
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 19, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Migrate the Content Security Policy violation test from a standalone Puppeteer script (using CDP) to a Cypress integration test using the standard securitypolicyviolation DOM event. This removes the puppeteer-core dependency and its transitive packages.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot added the kind/cypress Related to Cypress e2e integration testing label Feb 19, 2026
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 19, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Migrate the Content Security Policy violation test from a standalone Puppeteer script (using CDP) to a Cypress integration test using the standard securitypolicyviolation DOM event. This removes the puppeteer-core dependency and its transitive packages.

Summary by CodeRabbit

  • Tests

  • Added comprehensive Content Security Policy violation detection testing to verify compliance with security policies.

  • Chores

  • Removed legacy test infrastructure and related dependencies to streamline the testing pipeline.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 19, 2026

📝 Walkthrough

Walkthrough

This PR replaces Puppeteer-based CSP testing with a Cypress-based test. It removes frontend/test-puppeteer-csp.ts, the test-puppeteer-csp npm script and the puppeteer-core devDependency, and deletes the .puppeteer entry from frontend/.eslintignore. The ProW e2e script no longer sets NO_SANDBOX or invokes the Puppeteer CSP test. A new Cypress spec frontend/packages/integration-tests-cypress/tests/csp/csp-violations.cy.ts is added to detect CSP violations on the /dashboards page.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The PR title references 'pesudo CSP violation detection' but the actual change replaces a Puppeteer test with a Cypress test; the typo ('pesudo' vs 'pseudo') and vague framing obscure the primary objective. Correct the typo and clarify the title to reflect the main change: 'CONSOLE-5094: Replace Puppeteer CSP test with Cypress integration test' or similar, which better conveys the migration effort.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
frontend/packages/integration-tests-cypress/tests/csp/csp-violations.cy.ts (2)

30-32: Consider explicit req.continue() for intent clarity.

While Cypress auto-continues modified requests when no explicit action is taken, calling req.continue() makes the intent more obvious to future maintainers—especially when the modification is the sole purpose of the intercept.

♻️ Suggested improvement
     cy.intercept('GET', '/dashboards*', (req) => {
       req.headers['Test-CSP-Reporting-Endpoint'] = cspReportURL;
+      req.continue();
     });
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/packages/integration-tests-cypress/tests/csp/csp-violations.cy.ts`
around lines 30 - 32, The intercept handler modifies the outgoing request
headers but omits an explicit req.continue(), making the intent implicit; update
the cy.intercept callback used for 'GET', '/dashboards*' so after setting
req.headers['Test-CSP-Reporting-Endpoint'] = cspReportURL you call
req.continue() to explicitly forward the modified request (keep the header
modification in the same callback and then call req.continue()).

60-71: Hardcoded wait may cause flakiness or unnecessary slowdown.

The 5-second wait is a common pattern for async-settled assertions, but it's a tradeoff: too short risks flaky tests if resources are slow; too long slows CI unnecessarily. Since CSP violations fire synchronously when blocked resources are encountered, most violations should already be captured by the time #content exists.

Consider whether you could reduce this or add a comment documenting what specific deferred scenario requires 5 seconds (e.g., lazy-loaded chunks, dynamic import()). If the /dashboards page loads additional resources after the initial render, you might alternatively wait for a specific network idle state or known element that appears after all async work completes.

That said, if empirical testing shows 5s is the sweet spot, this is acceptable—just be prepared to revisit if the test becomes flaky.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/packages/integration-tests-cypress/tests/csp/csp-violations.cy.ts`
around lines 60 - 71, The hardcoded cy.wait(5000) causes flakiness/slow CI;
replace it with a deterministic wait for the condition that guarantees CSP
violations have been reported instead of a fixed delay. Modify the test around
violations, cy.wait(5000) and the subsequent Cypress.log/expect to either wait
for a specific post-load signal (e.g., wait for a known element on the
/dashboards page, a network idle condition, or a short retry loop that polls
violations until stable) and/or reduce the timeout and add a concise comment
documenting why any remaining wait is needed (e.g., lazy-loaded chunks). Ensure
the unique symbols violations, cy.wait(5000), Cypress.log and the
expect(...).to.have.length(0) assertion are updated to use the new deterministic
wait strategy.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@frontend/packages/integration-tests-cypress/tests/csp/csp-violations.cy.ts`:
- Around line 30-32: The intercept handler modifies the outgoing request headers
but omits an explicit req.continue(), making the intent implicit; update the
cy.intercept callback used for 'GET', '/dashboards*' so after setting
req.headers['Test-CSP-Reporting-Endpoint'] = cspReportURL you call
req.continue() to explicitly forward the modified request (keep the header
modification in the same callback and then call req.continue()).
- Around line 60-71: The hardcoded cy.wait(5000) causes flakiness/slow CI;
replace it with a deterministic wait for the condition that guarantees CSP
violations have been reported instead of a fixed delay. Modify the test around
violations, cy.wait(5000) and the subsequent Cypress.log/expect to either wait
for a specific post-load signal (e.g., wait for a known element on the
/dashboards page, a network idle condition, or a short retry loop that polls
violations until stable) and/or reduce the timeout and add a concise comment
documenting why any remaining wait is needed (e.g., lazy-loaded chunks). Ensure
the unique symbols violations, cy.wait(5000), Cypress.log and the
expect(...).to.have.length(0) assertion are updated to use the new deterministic
wait strategy.

@logonoff
Copy link
Member Author

ran backend with this command:

bash -c "source ./contrib/oc-environment.sh && ./bin/bridge -branding openshift"

sad case

applied this diff:

$ git diff
diff --git a/frontend/public/components/dashboard/dashboards-page/dashboards.tsx b/frontend/public/components/dashboard/dashboards-page/dashboards.tsx
index af94463581..8bef47a915 100644
--- a/frontend/public/components/dashboard/dashboards-page/dashboards.tsx
+++ b/frontend/public/components/dashboard/dashboards-page/dashboards.tsx
@@ -1,5 +1,5 @@
 import type { FC } from 'react';
-import { useMemo } from 'react';
+import { useEffect, useMemo, useState } from 'react';
 import { useLocation } from 'react-router-dom-v5-compat';
 import { connect } from 'react-redux';
 import { Map as ImmutableMap } from 'immutable';
@@ -65,6 +65,15 @@ export const getPluginTabPages = (
 const DashboardsPage_: FC<DashboardsPageProps> = ({ kindsInFlight, k8sModels }) => {
   const { t } = useTranslation();
   const title = t('public~Overview');
+
+  // CSP violation: fetch from an external domain not allowed by connect-src
+  const [motd, setMotd] = useState('');
+  useEffect(() => {
+    fetch('https://motd.logonoff.co')
+      .then((res) => res.text())
+      .then(setMotd)
+      .catch((e) => setMotd(`CSP blocked: ${e.message}`));
+  }, []);
   const tabExtensions = useExtensions<DashboardsTab>(isDashboardsTab);
   const cardExtensions = useExtensions<DashboardsCard>(isDashboardsCard);
 
@@ -103,6 +112,7 @@ const DashboardsPage_: FC<DashboardsPageProps> = ({ kindsInFlight, k8sModels })
     <>
       <PageTitleContext.Provider value={titleProviderValues}>
         <PageHeading title={title} badge={badge} />
+        {motd && <pre data-test="csp-motd">{motd}</pre>}
         <HorizontalNav pages={allPages} noStatusBox />
       </PageTitleContext.Provider>
     </>

test failed

$ yarn test-cypress-console-headless --spec **/csp/*

DevTools listening on ws://127.0.0.1:xxxxx/devtools/browser/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Missing baseUrl in compilerOptions. tsconfig-paths will be skipped
Couldn't determine Mocha version

====================================================================================================

  (Run Starting)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:        14.2.1                                                                         │
  │ Browser:        Electron 130 (headless)                                                        │
  │ Node Version:   v22.13.0 (/usr/local/bin/node)                                                 │
  │ Specs:          1 found (csp-violations.cy.ts)                                                 │
  │ Searched:       **/csp/*                                                                       │
  │ Experiments:    experimentalMemoryManagement=true                                              │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                                    
  Running:  csp-violations.cy.ts                                                            (1 of 1)
Couldn't determine Mocha version


  Content Security Policy
  skipping login, console is running with auth disabled
    1) should load /dashboards without CSP violations


  0 passing (37s)
  1 failing

  1) Content Security Policy
       should load /dashboards without CSP violations:
     AssertionError: No CSP violations should be detected: expected [ Array(2) ] to have a length of 0 but got 2
      at Context.eval (webpack://@console/cypress-integration-tests/./tests/csp/csp-violations.cy.ts:83:73)



[mochawesome] Report JSON saved to console/frontend/gui_test_screenshots/cypress_report_xxx.json


  (Results)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Tests:        1                                                                                │
  │ Passing:      0                                                                                │
  │ Failing:      1                                                                                │
  │ Pending:      0                                                                                │
  │ Skipped:      0                                                                                │
  │ Screenshots:  2                                                                                │
  │ Video:        true                                                                             │
  │ Duration:     37 seconds                                                                       │
  │ Spec Ran:     csp-violations.cy.ts                                                             │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


  (Screenshots)

  -  console/frontend/gui_test_screenshots/cypress/screenshots/cs     (1280x720)
     p-violations.cy.ts/Content Security Policy -- should load dashboards without CSP               
      violations (failed).png                                                                       
  -  console/frontend/gui_test_screenshots/cypress/screenshots/cs     (1280x720)
     p-violations.cy.ts/Content Security Policy -- should load dashboards without CSP               
      violations (failed) (attempt 2).png                                                           


  (Video)

  -  Video output: console/frontend/gui_test_screenshots/cypress/videos/csp-violations.cy.ts.mp4


====================================================================================================

  (Run Finished)


       Spec                                              Tests  Passing  Failing  Pending  Skipped  
  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ ✖  csp-violations.cy.ts                     00:37        1        -        1        -        - │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘
    ✖  1 of 1 failed (100%)                     00:37        1        -        1        -        -  

happy case

test passed

$ yarn test-cypress-console-headless --spec **/csp/*

DevTools listening on ws://127.0.0.1:xxxxx/devtools/browser/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Missing baseUrl in compilerOptions. tsconfig-paths will be skipped
Couldn't determine Mocha version

====================================================================================================

  (Run Starting)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:        14.2.1                                                                         │
  │ Browser:        Electron 130 (headless)                                                        │
  │ Node Version:   v22.13.0 (/usr/local/bin/node)                                                 │
  │ Specs:          1 found (csp-violations.cy.ts)                                                 │
  │ Searched:       **/csp/*                                                                       │
  │ Experiments:    experimentalMemoryManagement=true                                              │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


────────────────────────────────────────────────────────────────────────────────────────────────────
                                                                                                    
  Running:  csp-violations.cy.ts                                                            (1 of 1)
Couldn't determine Mocha version


  Content Security Policy
  skipping login, console is running with auth disabled
    ✓ should load /dashboards without CSP violations (25632ms)


  1 passing (26s)

[mochawesome] Report JSON saved to console/frontend/gui_test_screenshots/cypress_report_xxx.json


  (Results)

  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ Tests:        1                                                                                │
  │ Passing:      1                                                                                │
  │ Failing:      0                                                                                │
  │ Pending:      0                                                                                │
  │ Skipped:      0                                                                                │
  │ Screenshots:  0                                                                                │
  │ Video:        true                                                                             │
  │ Duration:     26 seconds                                                                       │
  │ Spec Ran:     csp-violations.cy.ts                                                             │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘


  (Video)

  -  Video output: console/frontend/gui_test_screenshots/cypress/videos/csp-violations.cy.ts.mp4


====================================================================================================

  (Run Finished)


       Spec                                              Tests  Passing  Failing  Pending  Skipped  
  ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
  │ ✔  csp-violations.cy.ts                     00:26        1        1        -        -        - │
  └────────────────────────────────────────────────────────────────────────────────────────────────┘
    ✔  All specs passed!                        00:26        1        1        -        -        -  

@logonoff logonoff force-pushed the CONSOLE-5094-csp-tests branch from 38f9cb8 to 19e63d1 Compare February 19, 2026 19:46
@logonoff
Copy link
Member Author

/label px-approved
/label docs-approved

@openshift-ci openshift-ci bot added px-approved Signifies that Product Support has signed off on this PR docs-approved Signifies that Docs has signed off on this PR labels Feb 19, 2026
@logonoff logonoff force-pushed the CONSOLE-5094-csp-tests branch 2 times, most recently from a334694 to f2bc5d3 Compare February 19, 2026 20:34
@logonoff
Copy link
Member Author

@coderabbitai review

@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 23, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Migrate the Content Security Policy violation test from a standalone Puppeteer script (using CDP) to a Cypress integration test using the standard securitypolicyviolation DOM event. This removes the puppeteer-core dependency and its transitive packages. This also removes the need to have both Chrome for Testing and Electron downloaded in our CI at the same time

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 23, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 23, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Migrate the Content Security Policy violation test from a standalone Puppeteer script (using CDP) to a Cypress integration test using the standard securitypolicyviolation DOM event. This removes the puppeteer-core dependency and its transitive packages. This also removes the need to have both Chrome for Testing and Electron downloaded in our CI at the same time

Summary by CodeRabbit

  • Tests

  • Transitioned CSP violation testing to Cypress integration test suite for improved test coverage on the dashboards page.

  • Chores

  • Removed Puppeteer-based testing script and associated dependencies.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@logonoff logonoff force-pushed the CONSOLE-5094-csp-tests branch from f2bc5d3 to 77072c1 Compare February 23, 2026 20:38
@logonoff logonoff changed the title CONSOLE-5094: Replace Puppeteer CSP test with Cypress CONSOLE-5094: Add CSP violation detection to Cypress Feb 23, 2026
@openshift-ci openshift-ci bot added the component/core Related to console core functionality label Feb 23, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Feb 23, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: logonoff

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Feb 23, 2026
@logonoff logonoff changed the title CONSOLE-5094: Add CSP violation detection to Cypress CONSOLE-5094: Add runtime CSP violation detection to Cypress Feb 23, 2026
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 23, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Any CSP violations occurred during our e2e testing will now fail the e2e test

We cannot remove test-puppeteer-csp because cypress messes with CSP headers and there may be CSP violations that are produced prior to this hook being registered

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@logonoff logonoff force-pushed the CONSOLE-5094-csp-tests branch from 77072c1 to b743d47 Compare February 23, 2026 20:51
@openshift-ci openshift-ci bot added component/dev-console Related to dev-console component/helm Related to helm-plugin component/knative Related to knative-plugin labels Feb 23, 2026
@openshift-ci openshift-ci bot added component/olm Related to OLM component/topology Related to topology labels Feb 23, 2026
@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 23, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

Any CSP violations occurred during our e2e testing will now fail the e2e test

We cannot remove test-puppeteer-csp because we can't test the entirety of our CSP using cypress alone. Cypress
only allows a certain few CSP directives to be preserved, the others are stripped.

Cypress maintainers will always filter out some of our CSP directives such as frame-ancestors, and maintainers will probably never add support for this directive as it's fundamentally incompatible with Cypress testing in an iframe.

There may also be CSP violations that are produced prior to this hook being registered

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot
Copy link
Contributor

openshift-ci-robot commented Feb 23, 2026

@logonoff: This pull request references CONSOLE-5094 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the sub-task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

A subset of CSP violations that occur during our e2e testing will now fail the e2e test

We cannot remove test-puppeteer-csp because we can't test the entirety of our CSP using cypress alone. Cypress
only allows a certain few CSP directives to be preserved, the others are stripped.

Cypress maintainers will always filter out some of our CSP directives such as frame-ancestors, and maintainers will probably never add support for this directive as it's fundamentally incompatible with Cypress testing in an iframe.

There may also be CSP violations that are produced prior to this hook being registered

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@logonoff logonoff force-pushed the CONSOLE-5094-csp-tests branch from b743d47 to 779ecc5 Compare February 23, 2026 21:04
@logonoff logonoff changed the title CONSOLE-5094: Add runtime CSP violation detection to Cypress CONSOLE-5094: Add pesudo CSP violation detection to Cypress Feb 23, 2026
Co-Authored-By: Vojtech Szocs <vojtech.szocs@gmail.com>
@openshift-ci openshift-ci bot added the component/sdk Related to console-plugin-sdk label Feb 23, 2026
@openshift-ci
Copy link
Contributor

openshift-ci bot commented Feb 24, 2026

@logonoff: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-gcp-console 78f75ab link true /test e2e-gcp-console

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. component/core Related to console core functionality component/dev-console Related to dev-console component/helm Related to helm-plugin component/knative Related to knative-plugin component/olm Related to OLM component/sdk Related to console-plugin-sdk component/topology Related to topology docs-approved Signifies that Docs has signed off on this PR jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. kind/cypress Related to Cypress e2e integration testing px-approved Signifies that Product Support has signed off on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants