-
Notifications
You must be signed in to change notification settings - Fork 3.4k
chore: cy prompt infrastructure #31748
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
cypress
|
||||||||||||||||||||||||||||||||||||||||
| Project |
cypress
|
| Branch Review |
ryanm/feat/cy-prompt-infra
|
| Run status |
|
| Run duration | 18m 21s |
| Commit |
|
| Committer | Ryan Manuel |
| View all properties for this run ↗︎ | |
| Test results | |
|---|---|
|
|
0
|
|
|
11
|
|
|
1232
|
|
|
0
|
|
|
32164
|
| View all changes introduced in this branch ↗︎ | |
UI Coverage
45.71%
|
|
|---|---|
|
|
191
|
|
|
165
|
Accessibility
92.74%
|
|
|---|---|
|
|
3 critical
9 serious
2 moderate
2 minor
|
|
|
695
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR provides the foundational infrastructure for the new cy.prompt() command by pulling down, verifying, and loading a remotely hosted bundle, wiring in lifecycle managers, and enabling the experimental flag across server, driver, config, and docs.
- Adds bundle download/extract helpers and cloud API calls for cy-prompt
- Introduces
CyPromptManagerandCyPromptLifecycleManagerfor runtime orchestration - Registers the experimentalPromptCommand flag in config, driver, tests, and documentation
Reviewed Changes
Copilot reviewed 43 out of 43 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/server/lib/cloud/cy-prompt/ensure_cy_prompt_bundle.ts | Fetches or copies and extracts the cy-prompt bundle |
| packages/server/lib/cloud/cy-prompt/CyPromptManager.ts | Invokes methods on dynamically loaded cy-prompt server scripts |
| packages/server/lib/cloud/cy-prompt/CyPromptLifecycleManager.ts | Orchestrates session creation, bundle setup, and manager ready |
| packages/server/lib/cloud/api/cy-prompt/post_cy_prompt_session.ts | Implements POST to start a cy-prompt session |
| packages/server/lib/cloud/api/cy-prompt/get_cy_prompt_bundle.ts | Downloads and verifies the signed cy-prompt bundle |
| packages/data-context/src/data/coreDataShape.ts | Adds cyPromptLifecycleManager to the shared data context shape |
| packages/driver/src/cy/commands/prompt/prompt-driver-types.ts | Defines driver interface for cy.prompt |
| packages/driver/src/cy/commands/prompt/index.ts | Implements the prompt command using module federation runtime |
| packages/driver/src/cy/commands/index.ts | Registers the prompt command under driver commands |
| packages/driver/package.json | Adds @module-federation/runtime dependency |
| packages/driver/cypress/e2e/commands/prompt.cy.ts | Basic end-to-end smoke test for cy.prompt |
| packages/driver/cypress/e2e/e2e/origin/commands/misc.cy.ts | Updated command list to include prompt |
| packages/driver/cypress.config.ts | Enables experimentalPromptCommand |
| packages/config/src/options.ts | Introduces new experimental flag |
| packages/config/test/project/utils.spec.ts | Updates default and public config keys tests |
| packages/config/snapshots/index.spec.ts.js | Updates snapshots to include the new flag |
| packages/frontend-shared/src/locales/en-US.json | Adds UI copy for the new experimental flag |
| guides/cy-prompt-development.md | Documents local and remote development workflows for cy.prompt |
Comments suppressed due to low confidence (1)
packages/driver/cypress/e2e/commands/prompt.cy.ts:7
- [nitpick] This test only verifies that the command does not throw—consider adding assertions on expected side effects or backend calls to improve coverage.
cy.prompt('Hello, world!')
packages/server/lib/cloud/api/cy-prompt/get_cy_prompt_bundle.ts
Outdated
Show resolved
Hide resolved
packages/server/lib/cloud/api/cy-prompt/get_cy_prompt_bundle.ts
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <[email protected]>
* Create cy-prompt-development.md * chore: cy prompt infrastructure (#31748) * feat: cy prompt infrastructure * refactor and add tests * refactor * rename experimental config * prompt * fix test * Update cy-prompt-development.md * Update cy-prompt-development.md * PR comments * Update packages/server/lib/cloud/api/cy-prompt/get_cy_prompt_bundle.ts Co-authored-by: Copilot <[email protected]> * PR comments --------- Co-authored-by: Copilot <[email protected]> * fix test * Delete packages/server/lib/cloud/StudioLifecycleManager.ts * Delete packages/server/test/unit/cloud/StudioLifecycleManager_spec.ts * chore: add cdp connection to cy prompt (#31806) * chore: add cdp connection to cy prompt * minor fix * fix type build * try to fix build * Update packages/server/lib/browsers/browser-cri-client.ts Co-authored-by: Bill Glesias <[email protected]> * Update packages/server/lib/browsers/browser-cri-client.ts Co-authored-by: Bill Glesias <[email protected]> * do not support prompt in firefox or webkit * rework timing of lifecycle * refactor * fix tests * troubleshooting * troubleshooting * fix tests * additional troubleshooting * additional troubleshooting * additional troubleshooting * attempt to fix build * add back * debugging * debugging * debugging * debugging * clean up * fix unit tests * rework --------- Co-authored-by: Bill Glesias <[email protected]> * chore: create infrastructure to support backend function in cy.prompt (#31803) * chore: add promptBackend as an additional Cypress-attached function * Update packages/app/src/runner/event-manager.ts * update types * fix types * fix spacing * refactor * additional refactor * fix type build * fix build * refactor * reword messages * fix * debugging * undo debugging * PR comment * fix tests * fix tests * fix tests * fix test * chore: add watcher for cy-prompt development (#31810) * chore: add watcher for cy-prompt development * test caching * fix types * chore: turn on beta deployments for cy-prompt * internal: (cy.prompt) handle errors better in the command definition (#31835) * internal: (cy.prompt) handle errors better in the command definition * internal: (cy.prompt) add timeout and handle loading errors more cleanly * add process environment variable * clean up test * update JSDoc * chore: handle errors (#31854) * chore: handle errors * Fix ts, add test * Fix error title * Fix ts * Fix ts * chores: (cy.prompt) refactor routing to support both app and driver (#31891) * chore: Share error utils with the cloud (#31887) * share error utils with cloud * additional rework * Fix command, add isOpenMode * Add / fix test * fix ts --------- Co-authored-by: Ryan Manuel <[email protected]> * internal: (cy.prompt) add infrastructure to support a Get Code modal (#31904) * chore: (cy.prompt) add infrastructure to support a Get Code modal * fix tests * fix code paths * Update eject button styles * handle errors * update types * Update packages/server/lib/socket-base.ts * Fix cy test * update readme --------- Co-authored-by: estrada9166 <[email protected]> * chore: (cy.prompt) refactor getTestsState to take a runnable id (#31965) * chore: (cy.prompt) refactor getTestsState to take a runnable id * fix tests * minor tweak * chore: (cy.prompt) add manifest for all of the cloud delivered files (#31922) * chore: (cy.prompt) add manifest for all of the cloud delivered files * fix tests and remove environment variables * update strategy * fix build * rework * require manifest * clean up * refactor * refactor * Update packages/server/lib/cloud/cy-prompt/CyPromptLifecycleManager.ts Co-authored-by: Matt Schile <[email protected]> * fix test --------- Co-authored-by: Matt Schile <[email protected]> * feat: add cy prompt more info needed modal (WIP) (#31970) * feat: add cy prompt more info needed modal * Reset promptStore * additional things exposed for more info * rework * fix tests * fix build * fix types * fix types * Update packages/app/src/runner/event-manager.ts Co-authored-by: Copilot <[email protected]> * reefactor * chore: (cy.prompt) rework the file save lifecycle * rework types * add unit tests --------- Co-authored-by: estrada9166 <[email protected]> Co-authored-by: Copilot <[email protected]> * fix: (cy.prompt) ensure that we do not attach a vue ref to the react root in the cy.prompt modals (#32011) * fix: (studio) ensure that we do not attach a vue ref to the react root in the studio panel * fix test * chore: Handle cy-prompt error to the cloud (#32009) Co-authored-by: Ryan Manuel <[email protected]> * chore: display prompt error message (#32016) * add createCloudRequest to cloudApi, handle errors during createCyPromptServer * render the get code button on failure * chore: update types * chore: move CT and browser error to cloud (#32077) * feat: (cy.prompt) give cy.prompt access to recording information (#32110) * feat: (cy.prompt) give cy.prompt access to recording information * undo bad refactor * undo bad refactor * undo bad refactor * rename * fix typo * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update cy-prompt-development.md * Update cy-prompt-development.md * Update cy-prompt-development.md * chore: add CYPRESS_INTERNAL_SIMULATE_OPEN_MODE to simulate running Cypress tests in open mode (#32114) * chore: (cy.prompt) ensure to strip out paths from all data when reporting errors in prompt (#32134) * fix: (cy.prompt) ensure to strip out paths from all data when reporting errors in prompt * refactor * update tests * fix logic error with protocol * add event manager to get code * Apply suggestions from code review * fix: (cy.prompt) improve the get project options performance by running promises in parallel (#32196) * fix: (cy.prompt) improve the get project options performance by running promises in parallel * add awaits in test * bump cache * Update packages/server/lib/cloud/studio/StudioLifecycleManager.ts * fix build * chore: cleanup * blank * Update trigger-publish-binary-pipeline.js * Update packages/server/test/unit/socket_spec.js * get rid of environment variable * fix: (cy.prompt) ensure to reset the prompt state when the event manager is torn down (indicating that we're no longer on the runner page) (#32301) * fix: (cy.prompt) ensure to reset the prompt state when the event manager is torn down (indicating that we're no longer on the runner page) * move test * fix lint issue * feat: (cy.prompt) introduce the concept of log collapse state being open/closed by default (#32262) * feat: (cy.prompt) introduce the concept of logs' collapse state being open/closed by default * update tests * rename * PR comments * fix test due to bad merge of develop * chore: Only allow experimentalPromptCommand within e2e config (#32435) * chore: Only allow experimentalPromptCommand within e2e config * Fix config * Update tests * Update test, update types * Fix test and types * fix tests * Add types * Update cli/types/cypress.d.ts Co-authored-by: Ryan Manuel <[email protected]> --------- Co-authored-by: Ryan Manuel <[email protected]> * Update workflows.yml * Add optional cyPromptManagerPromise property * Implement error handling in CyPromptManager Added a new method to handle errors uniformly in CyPromptManager. * Fix indentation in socket_spec.js * fix: (cy.prompt) handle when the prompt is executed by in CT or when the experiment is not enabled (#32470) * fix: (cy.prompt) handle when the prompt is executed by in CT or when the experiment is not enabled * Update packages/driver/cypress/e2e/commands/prompt/prompt.cy.ts * Update packages/driver/cypress/e2e/commands/prompt/prompt.cy.ts * update name of errors * Bump cache version to 9-15-2025 * update yarn.lock * fixes * fix snapshot * fix snapshot * internal: fix get code button to be purple with correct margin (#32504) * feat: (cy.prompt) update the types of prompt (#32529) * fix: move currentMoreInfoNeededModalInfo.onCancel to onClose (#32559) * internal: (cy.prompt) various improvements to error messages and time outs (#32582) * internal: (cy.prompt) various improvements to error messages and timeouts * fix test * remove dead code * Update packages/driver/src/cy/commands/prompt/index.ts * update prompt experiment description * fix build * fix tests * fix tests * fix test * update error message * Update packages/server/lib/experiments.ts Co-authored-by: Tim Griesser <[email protected]> --------- Co-authored-by: Tim Griesser <[email protected]> * internal: (cy.prompt) ensure that get code can properly work with prompts in cy.origin (#32596) * internal: (cy.prompt) ensure that get code can properly work with prompts in cy.origin * additional tests * additional tests * Apply suggestions from code review * code review comment * fix merge * fix merge * Update packages/data-context/graphql/schemaTypes/index.ts * update workflow * blank * persist binaries * chore: display custom link title (#32567) * chore: display custom link title * Add test * Pass docs as second argument of the error * Revert changes * Use openExternal for links --------- Co-authored-by: Jennifer Shehane <[email protected]> * update * internal: (cy.prompt) do not retry on cert failures (#32624) * internal: (cy.prompt) do not retry on cert failures * tests and clean up * additional cleanup and add error message for prompt * fix unit tests * Update report_studio_error.ts * Update packages/network/lib/agent.ts * cursor comment * fix build * fix build * fix test * fix build * fix build * fix build * fix build * fix build * revert * Update packages/driver/src/cypress/error_messages.ts * Update packages/driver/cypress/e2e/commands/prompt/prompt-initialization-error.cy.ts * fix build * cursor comment * add changelog entry * clean up * Update packages/app/src/store/prompt-store.ts * Bump cache version to 10-3-2025 Updated cache version to trigger CI cache recreation. * Revise CHANGELOG for new features and fixes Updated changelog with new features and bug fixes. * index on feat/cy-prompt: 3cbcf6c Bump cache version to 10-3-2025 * index on feat/cy-prompt: 3cbcf6c Bump cache version to 10-3-2025 * index on feat/cy-prompt: 3cbcf6c Bump cache version to 10-3-2025 * blank * fix build --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Bill Glesias <[email protected]> Co-authored-by: Alejandro Estrada <[email protected]> Co-authored-by: Matt Schile <[email protected]> Co-authored-by: Tim Griesser <[email protected]> Co-authored-by: Jennifer Shehane <[email protected]> Co-authored-by: Jennifer Shehane <[email protected]> Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
* Create cy-prompt-development.md * chore: cy prompt infrastructure (#31748) * feat: cy prompt infrastructure * refactor and add tests * refactor * rename experimental config * prompt * fix test * Update cy-prompt-development.md * Update cy-prompt-development.md * PR comments * Update packages/server/lib/cloud/api/cy-prompt/get_cy_prompt_bundle.ts Co-authored-by: Copilot <[email protected]> * PR comments --------- Co-authored-by: Copilot <[email protected]> * fix test * Delete packages/server/lib/cloud/StudioLifecycleManager.ts * Delete packages/server/test/unit/cloud/StudioLifecycleManager_spec.ts * chore: add cdp connection to cy prompt (#31806) * chore: add cdp connection to cy prompt * minor fix * fix type build * try to fix build * Update packages/server/lib/browsers/browser-cri-client.ts Co-authored-by: Bill Glesias <[email protected]> * Update packages/server/lib/browsers/browser-cri-client.ts Co-authored-by: Bill Glesias <[email protected]> * do not support prompt in firefox or webkit * rework timing of lifecycle * refactor * fix tests * troubleshooting * troubleshooting * fix tests * additional troubleshooting * additional troubleshooting * additional troubleshooting * attempt to fix build * add back * debugging * debugging * debugging * debugging * clean up * fix unit tests * rework --------- Co-authored-by: Bill Glesias <[email protected]> * chore: create infrastructure to support backend function in cy.prompt (#31803) * chore: add promptBackend as an additional Cypress-attached function * Update packages/app/src/runner/event-manager.ts * update types * fix types * fix spacing * refactor * additional refactor * fix type build * fix build * refactor * reword messages * fix * debugging * undo debugging * PR comment * fix tests * fix tests * fix tests * fix test * chore: add watcher for cy-prompt development (#31810) * chore: add watcher for cy-prompt development * test caching * fix types * chore: turn on beta deployments for cy-prompt * internal: (cy.prompt) handle errors better in the command definition (#31835) * internal: (cy.prompt) handle errors better in the command definition * internal: (cy.prompt) add timeout and handle loading errors more cleanly * add process environment variable * clean up test * update JSDoc * chore: handle errors (#31854) * chore: handle errors * Fix ts, add test * Fix error title * Fix ts * Fix ts * chores: (cy.prompt) refactor routing to support both app and driver (#31891) * chore: Share error utils with the cloud (#31887) * share error utils with cloud * additional rework * Fix command, add isOpenMode * Add / fix test * fix ts --------- Co-authored-by: Ryan Manuel <[email protected]> * internal: (cy.prompt) add infrastructure to support a Get Code modal (#31904) * chore: (cy.prompt) add infrastructure to support a Get Code modal * fix tests * fix code paths * Update eject button styles * handle errors * update types * Update packages/server/lib/socket-base.ts * Fix cy test * update readme --------- Co-authored-by: estrada9166 <[email protected]> * chore: (cy.prompt) refactor getTestsState to take a runnable id (#31965) * chore: (cy.prompt) refactor getTestsState to take a runnable id * fix tests * minor tweak * chore: (cy.prompt) add manifest for all of the cloud delivered files (#31922) * chore: (cy.prompt) add manifest for all of the cloud delivered files * fix tests and remove environment variables * update strategy * fix build * rework * require manifest * clean up * refactor * refactor * Update packages/server/lib/cloud/cy-prompt/CyPromptLifecycleManager.ts Co-authored-by: Matt Schile <[email protected]> * fix test --------- Co-authored-by: Matt Schile <[email protected]> * feat: add cy prompt more info needed modal (WIP) (#31970) * feat: add cy prompt more info needed modal * Reset promptStore * additional things exposed for more info * rework * fix tests * fix build * fix types * fix types * Update packages/app/src/runner/event-manager.ts Co-authored-by: Copilot <[email protected]> * reefactor * chore: (cy.prompt) rework the file save lifecycle * rework types * add unit tests --------- Co-authored-by: estrada9166 <[email protected]> Co-authored-by: Copilot <[email protected]> * fix: (cy.prompt) ensure that we do not attach a vue ref to the react root in the cy.prompt modals (#32011) * fix: (studio) ensure that we do not attach a vue ref to the react root in the studio panel * fix test * chore: Handle cy-prompt error to the cloud (#32009) Co-authored-by: Ryan Manuel <[email protected]> * chore: display prompt error message (#32016) * add createCloudRequest to cloudApi, handle errors during createCyPromptServer * render the get code button on failure * chore: update types * chore: move CT and browser error to cloud (#32077) * feat: (cy.prompt) give cy.prompt access to recording information (#32110) * feat: (cy.prompt) give cy.prompt access to recording information * undo bad refactor * undo bad refactor * undo bad refactor * rename * fix typo * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update packages/server/test/unit/modes/record_spec.js * Update cy-prompt-development.md * Update cy-prompt-development.md * Update cy-prompt-development.md * chore: add CYPRESS_INTERNAL_SIMULATE_OPEN_MODE to simulate running Cypress tests in open mode (#32114) * chore: (cy.prompt) ensure to strip out paths from all data when reporting errors in prompt (#32134) * fix: (cy.prompt) ensure to strip out paths from all data when reporting errors in prompt * refactor * update tests * fix logic error with protocol * add event manager to get code * Apply suggestions from code review * fix: (cy.prompt) improve the get project options performance by running promises in parallel (#32196) * fix: (cy.prompt) improve the get project options performance by running promises in parallel * add awaits in test * bump cache * Update packages/server/lib/cloud/studio/StudioLifecycleManager.ts * fix build * chore: cleanup * blank * Update trigger-publish-binary-pipeline.js * Update packages/server/test/unit/socket_spec.js * get rid of environment variable * fix: (cy.prompt) ensure to reset the prompt state when the event manager is torn down (indicating that we're no longer on the runner page) (#32301) * fix: (cy.prompt) ensure to reset the prompt state when the event manager is torn down (indicating that we're no longer on the runner page) * move test * fix lint issue * feat: (cy.prompt) introduce the concept of log collapse state being open/closed by default (#32262) * feat: (cy.prompt) introduce the concept of logs' collapse state being open/closed by default * update tests * rename * PR comments * fix test due to bad merge of develop * chore: Only allow experimentalPromptCommand within e2e config (#32435) * chore: Only allow experimentalPromptCommand within e2e config * Fix config * Update tests * Update test, update types * Fix test and types * fix tests * Add types * Update cli/types/cypress.d.ts Co-authored-by: Ryan Manuel <[email protected]> --------- Co-authored-by: Ryan Manuel <[email protected]> * Update workflows.yml * Add optional cyPromptManagerPromise property * Implement error handling in CyPromptManager Added a new method to handle errors uniformly in CyPromptManager. * Fix indentation in socket_spec.js * fix: (cy.prompt) handle when the prompt is executed by in CT or when the experiment is not enabled (#32470) * fix: (cy.prompt) handle when the prompt is executed by in CT or when the experiment is not enabled * Update packages/driver/cypress/e2e/commands/prompt/prompt.cy.ts * Update packages/driver/cypress/e2e/commands/prompt/prompt.cy.ts * update name of errors * Bump cache version to 9-15-2025 * update yarn.lock * fixes * fix snapshot * fix snapshot * internal: fix get code button to be purple with correct margin (#32504) * feat: (cy.prompt) update the types of prompt (#32529) * fix: move currentMoreInfoNeededModalInfo.onCancel to onClose (#32559) * internal: (cy.prompt) various improvements to error messages and time outs (#32582) * internal: (cy.prompt) various improvements to error messages and timeouts * fix test * remove dead code * Update packages/driver/src/cy/commands/prompt/index.ts * update prompt experiment description * fix build * fix tests * fix tests * fix test * update error message * Update packages/server/lib/experiments.ts Co-authored-by: Tim Griesser <[email protected]> --------- Co-authored-by: Tim Griesser <[email protected]> * internal: (cy.prompt) ensure that get code can properly work with prompts in cy.origin (#32596) * internal: (cy.prompt) ensure that get code can properly work with prompts in cy.origin * additional tests * additional tests * Apply suggestions from code review * code review comment * fix merge * fix merge * Update packages/data-context/graphql/schemaTypes/index.ts * update workflow * blank * persist binaries * chore: display custom link title (#32567) * chore: display custom link title * Add test * Pass docs as second argument of the error * Revert changes * Use openExternal for links --------- Co-authored-by: Jennifer Shehane <[email protected]> * update * internal: (cy.prompt) do not retry on cert failures (#32624) * internal: (cy.prompt) do not retry on cert failures * tests and clean up * additional cleanup and add error message for prompt * fix unit tests * Update report_studio_error.ts * Update packages/network/lib/agent.ts * cursor comment * fix build * fix build * fix test * fix build * fix build * fix build * fix build * fix build * revert * Update packages/driver/src/cypress/error_messages.ts * Update packages/driver/cypress/e2e/commands/prompt/prompt-initialization-error.cy.ts * fix build * cursor comment * clean up * fix: (cy.prompt) rename exclude from AI to parameters * fix: (cy.prompt) rename exclude from AI to privateNoCache * further rename and build binary * Update packages/frontend-shared/src/locales/en-US.json * fix tests * rename to placeholders --------- Co-authored-by: Copilot <[email protected]> Co-authored-by: Bill Glesias <[email protected]> Co-authored-by: Alejandro Estrada <[email protected]> Co-authored-by: Matt Schile <[email protected]> Co-authored-by: Tim Griesser <[email protected]> Co-authored-by: Jennifer Shehane <[email protected]>
Additional details
This PR lays the ground work for consuming the cloud code that will be responsible for supporting
cy.prompt()Steps to test
How has the user experience changed?
PR Tasks
cypress-documentation?type definitions?