Commit Graph

244 Commits

Author SHA1 Message Date
Ryan Manuel a2adeabc5a fix: improve the performance of resetting the browser state by not resetting file_systems (#32703)
* fix: improve the performance of resetting the browser state by removing file_systems which is not something we need to reset

* fix test

* add changelog entry

* fix electron

* Apply suggestions from code review
2025-10-15 14:10:26 -05:00
Ryan Manuel df047b0a42 feat: cy.prompt experimental command [Feature Flagged] (#31752)
* 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 <175728472+Copilot@users.noreply.github.com>

* PR comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* 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 <bglesias@gmail.com>

* Update packages/server/lib/browsers/browser-cri-client.ts

Co-authored-by: Bill Glesias <bglesias@gmail.com>

* 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 <bglesias@gmail.com>

* 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 <ryanm@cypress.io>

* 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 <estrada9166@gmail.com>

* 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 <mschile@cypress.io>

* fix test

---------

Co-authored-by: Matt Schile <mschile@cypress.io>

* 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 <175728472+Copilot@users.noreply.github.com>

* reefactor

* chore: (cy.prompt) rework the file save lifecycle

* rework types

* add unit tests

---------

Co-authored-by: estrada9166 <estrada9166@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* 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 <ryanm@cypress.io>

* 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 <ryanm@cypress.io>

---------

Co-authored-by: Ryan Manuel <ryanm@cypress.io>

* 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 <tgriesser10@gmail.com>

---------

Co-authored-by: Tim Griesser <tgriesser10@gmail.com>

* 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 <jennifer@cypress.io>

* 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: 3cbcf6c336 Bump cache version to 10-3-2025

* index on feat/cy-prompt: 3cbcf6c336 Bump cache version to 10-3-2025

* index on feat/cy-prompt: 3cbcf6c336 Bump cache version to 10-3-2025

* blank

* fix build

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Alejandro Estrada <estrada9166@gmail.com>
Co-authored-by: Matt Schile <mschile@cypress.io>
Co-authored-by: Tim Griesser <tgriesser10@gmail.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Jennifer Shehane <shehane.jennifer@gmail.com>
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
2025-10-04 09:01:00 -05:00
Bill Glesias 504b153005 chore: convert @packages/data-context from mocha to jest (#32598)
* start jest conversion and covnert authaction to jest

* chore: conver codegenaction to jest

* chore: convert cohorts action spec to vitest

* chore: convert dataEmitterActions to jest

* chore: convert event collector action to vitest

* chore: convert local settings action spec tojest

* chore: convert notification action to vitest

* chor: convert project actions to vitest and fix pretty-formnat

* chore: convert code-generator spec to jest

* chore: convert spec options spec to jest

* chore: convert project config ipc to jest

* chore: convert projectconfigmanager tests to jest

* chore: convert project lifecycle manager tests to jest

* chore: conver poller spec to jest

* chore: convert browser data source to jest

* chore: convert cloud dats source to jest

* chore: convert gitdatasource unit tests to jest

* chore: convert FileDataSource to jest

* chore: convert git data source to jest

* chore: convert graphql data source to jest

* chore: convert project data source to jest

* chore: convert revelvant runs data source to jest

* chore: convert relevant run specs data source to jest

* chore: convert remote request data source to jest

* chore: convert versions data source spec to jest

* chore: convert wizard data source spec to jest

* chore: convert document node builder to jest

* chore: convert has TypeScript to jest

* chore: convert test counts spec to jest

* chore: convert weighted choice spec to jest

* chore: convert config file updater to jest

* clean up files to allow tests to run in band but out of order, add README, cleanup unused scripts and dependencies

* fix deprecation warning from ts-jest via isolated modules

* chore: adjust expected result count

* chore: clean up types

* turn back on no implicit any and reinstall graphql package in frontend shared

* fix isFocusSupported mock

* chore: copy over the old data-context-helper into the server as the one in the data-context package is written in jest now

* chore: fix code review findings from cursor

* fix incorrect expect async throw

* chore: remove use of this in projectData source

* add docs to copied data-context helper and fix cursor detected issue
2025-09-30 17:16:17 -04:00
Jennifer Shehane e1d92bfb28 chore: Removed unused / no longer needed errors (#32595)
* chore: Removed unused / no longer needed errors

* removed unused variables
2025-09-30 14:45:24 -04:00
Cacie Prins 5719c84683 chore: migrate server and webpack-batteries-included-preprocessor to modern eslint (#32343)
* eslint migration for webpack-batteries-included

* some debug

* rm debug?

* rm debug

* update migration manifest
2025-09-05 13:46:29 -04:00
Jennifer Shehane 86becd4736 chore: convert browsers_spec from JS to TS (#32420)
* chore: convert browsers_spec from JS to TS

* Update packages/server/test/unit/browsers/browsers_spec.ts

Co-authored-by: Bill Glesias <bglesias@gmail.com>

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
2025-09-04 13:45:35 -04:00
Bill Glesias d1667d7d63 Merge branch 'release/15.0.0' into merge_develop_15 2025-08-07 15:49:56 -04:00
Bill Glesias 9ef239e68b fix: update bidi automation client to handle unspecified cookie option in firefox and keep behavior for firefox 139 and under as the 'default' sameSite value does not exist in this version 2025-08-06 16:04:55 -04:00
Bill Glesias a3924071c1 Merge branch 'develop' into merge_develop_15 2025-08-05 16:23:25 -04:00
Bill Glesias d18f66006e chore: fix AUT discovery if frame name is not present (#32154)
* chore: fix issues with AUT discovery if for any reason the name is not present

* Update packages/server/lib/browsers/cdp_automation.ts

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-08-05 13:45:36 -04:00
Jennifer Shehane 788dfd1c0b chore: bump firefox version we test against to 141 (#32078)
* chore: bump firefox version we test against to 141

* account for unspecified sameSite which is now available in firefox 140

* fix expected error string for invalid cookie

* override FORCE_FIREFOX_CDP firefox 141

* fix cdp override in ff 141+

* maybe fix cookeie system tests? seem to time out locally

* set family as well as name

* fix system tests fore ff 141

* fix ff deprecation

* rm erroneous err param

* assume firefox is modern in cookies driver e2e test

* Update system-tests/lib/system-tests.ts

* we do still run tests against firefox 134

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Co-authored-by: Cacie Prins <cacie@cypress.io>
2025-08-05 13:00:30 -04:00
Jennifer Shehane 036f22ba0b chore: add await to tests that are expecting 'to.be.rejectedWith' (#32106)
* chore: add await to tests that are expecting 'to.be.rejectedWith'

* wait for async operation to remove flake
2025-07-28 09:28:46 -04:00
Bill Glesias 9f48e243a4 fix: allow localhost hijacking and treat as secure if proxyServer is present (thanks to @mozfreddybmozfreddyb in https://github.com/cypress-io/cypress/pull/32056) (#32065) 2025-07-23 11:27:00 -04:00
Jennifer Shehane 3eaf7400ad Merge branch 'develop' into release/15.0.0 2025-06-26 12:25:20 -04:00
Bill Glesias 40c81d0ec8 fix: proxy spec flake in firefox due to improper sweeping and correlation (#31651)
* fix: don't automatically remove requests when cdpRequestWillBeSentReceivedTimestamp is set to 0. Also, do not ass hashes to prerequest url as the urls do not have hashes when coming through the middleware

* Update packages/server/lib/browsers/bidi_automation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-24 15:33:38 -04:00
Bill Glesias b75850e37b feat: rework window bound commands to use automation clients (#31862)
* spike: cut over cy.url(), cy.hash(), cy.location(), cy.reload(), cy.go(), and cy.title() all to use the automation client to subvert the cross-origin boundary

refactor backend client

* chore: add unit tests for cy url, hash, location, title, reload, and go changes to make it easier to test minor behavior changes

bump cache

* fix issues with cy in cy tests. refactor aut discovery code as the frame tree gets stale on reload

* update comments from code review

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-06-17 16:33:56 -04:00
Jennifer Shehane 74daed48b7 Merge branch 'develop' into release/15.0.0 2025-05-21 11:57:04 -04:00
Bill Glesias 713575b548 misc: throw error when chrome 137 branded is used when the @cypress/puppeteer is used in headed mode or if --load-extension is added to launch options via a user testing an extension (#31709) 2025-05-16 09:23:23 -04:00
Bill Glesias 0a51e6d209 chore: cut over web extension methods to use webdriver BiDi to automate cookie behavior similar to CDP client (#31209) 2025-04-17 20:15:01 -04:00
Bill Glesias 346e80110a chore: merge develop into cypress release 15 branch (#31464)
* dependency: upgrade mocha to 7.2.0 (#31423)

* dependency: upgrade mocha to 7.2.0

* changelog entry

* remove the it.only from the mocha patch changelog that is triggering our stop-only check from passing

* skip patches folder with stop-only check

* remove extra bracket

* Update protocol_spec to reflect new mocha line number for error stack trace

* chore: updating v8 snapshot cache (#31424)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31425)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31426)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: migrates plugin system test to a v3 extension (#31434)

* chore: Update Chrome (stable) to 135.0.7049.52 (#31428)

* chore: Update Chrome (stable) to 135.0.7049.52

* empty commit

---------

Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>

* chore: bump Firefox to 137 (#31431)

* chore: bump Firefox to 137

* use 137 version? weird.

* just kidding, major version only has 1 zero after it................

* dependency: update server to mocha 7.2.0 (#31432)

* dependency: update server to mocha 7.2.0

* Add PR to changelog

* chore: updating v8 snapshot cache (#31437)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31438)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31439)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: Update Chrome (beta) to 136.0.7103.17 (#31448)

* chore: Update Chrome (beta) to 136.0.7103.17

* empty commit

---------

Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* refactor: lifts toPosix to its own file, removes circular dependency between stack_utils and source_map_utils (#30983)

* refactor: lifts toPosix to remove circular dependency between stack_utils and source_map_utils

* camelCase to snake_case

* rm duplicated file

* internal: (studio) make the protocol database accessible to studio (#31443)

* internal: (studio) make the protocol database accessible to studio

* PR comment

* chore(deps): update dependency patch-package to v8 (#31451)

* chore(deps): update dependency patch-package to v8

* empty commit

* add types to handle json-stable-stringify dep change

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* chore: fix deprecation warnings and refactor react reporter to use functional components and hooks (#31284)

* chore: fix deprecation warnings and refactor react reporter to use functional components with hooks

* chore: update code to reflect feedback from code review

* fix issues with scrollIntoView() on updated component and refactor isOpen logic in collapsible to not attempt to sync state

* fix issues with tests after refactor

* see if event registration fixes windows flake

* chore: update snap-shot-core patch package file to match version (#31449)

* chore: update snap-shot-core patch package file to match version

* update circle cache

* experiment with removing .md from yarnclean

* add .md back to yarnclean

* bust circle cache

* remove .md files being cleaned from yarn to get around patch-package issue

* print size of cache

* try out the size of the .md

* remove md from yarnclean

* UPdate to version without removal of markdown files

* chore: updating v8 snapshot cache (#31460)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31462)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* chore: updating v8 snapshot cache (#31461)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* feat: cy.press() (#31398)

* wip - cy.press() command

* cy command for dispatching key press/down/up events

* unit tests and failure cases for cy.press()

* Cypress.Keyboard.Keys definition; fix command log message

* add keys to the internal keyboard type

* auto-focus in cdp

* ensure aut iframe is focused before dispatching key events in bidi browsers

* update tests for cdp focus

* fixed tests for bidi

* lint

* fix type ref in .d.ts

* linting

* skip press() driver test in ff below v135

* try all contexts for frame before failing due to missing/invalid context id

* ensure error is error before accessing props

* skip press driver test in webkit

* changelog

* debug automation middleware invocation for firefox flake

* debug

* cache update

* use bidi automation middleware from connectToNewSpec rather than constructor

* more comprehensive logging

* debug socket base, additional debug in automation

* install firefox automation middleware on setup as well as connectToNewSpec

* unit tests for firefox-utils

* proper calledWith

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* docs: update contributing requirements for corepack (#31463)

* chore: remove `du` check (#31465)

* chore: use different args for `du` in win

* rm du command for build

* chore: release 14.3.0 (#31467)

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
2025-04-08 14:46:30 -04:00
Cacie Prins cfdeb7af14 feat: cy.press() (#31398)
* wip - cy.press() command

* cy command for dispatching key press/down/up events

* unit tests and failure cases for cy.press()

* Cypress.Keyboard.Keys definition; fix command log message

* add keys to the internal keyboard type

* auto-focus in cdp

* ensure aut iframe is focused before dispatching key events in bidi browsers

* update tests for cdp focus

* fixed tests for bidi

* lint

* fix type ref in .d.ts

* linting

* skip press() driver test in ff below v135

* try all contexts for frame before failing due to missing/invalid context id

* ensure error is error before accessing props

* skip press driver test in webkit

* changelog

* debug automation middleware invocation for firefox flake

* debug

* cache update

* use bidi automation middleware from connectToNewSpec rather than constructor

* more comprehensive logging

* debug socket base, additional debug in automation

* install firefox automation middleware on setup as well as connectToNewSpec

* unit tests for firefox-utils

* proper calledWith

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-04-08 09:23:18 -04:00
Bill Glesias 25f0fd0a11 breaking: remove CDP from firefox with Cypress 15 (#31200)
* chore: updating v8 snapshot cache (#31422)

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>

* breaking: remove CDP from firefox with Cypress 15 [run ci]

* chore: code review updates

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
2025-04-03 13:42:04 -04:00
Ryan Manuel b6a64604ba fix: workaround for the electron animation bug (#31391)
* fix: workaround for the electron animation bug

* fix bug

* Update packages/server/test/unit/browsers/electron_spec.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* try something

* try something

* try something

* try something

* fix

* fix

* fix

* refactor and ensure still broken

* and the fix

* Update packages/server/test/unit/browsers/electron_spec.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update packages/server/lib/browsers/electron.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update CHANGELOG.md

* refactor

* Update cli/CHANGELOG.md

* Update cli/CHANGELOG.md

Co-authored-by: Matt Schile <mschile@cypress.io>

* fix build

* Update packages/server/test/unit/browsers/electron_spec.js

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2025-03-31 08:50:14 -05:00
Bill Glesias 45da70a4e2 fix: set cdpRequestWillBeSentReceivedTimestamp within firefox bidi to avoid downstream impacts (#31377)
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-03-26 14:03:23 -04:00
Cacie Prins 5d8bf8570a misc: automation implementation / prerequisite for cy.press() (#31366)
* cdp command impl for tab dispatch

* misc: add automation command to cdp for forthcoming tab key

* changelog

* skip non chromium browsers for press() driver test

* fix test

* misc: bidi automation impl for key press

* amend types

* log, but do not fail, if key:press is not supported

* rm extraneous debugs

* rm more debug

* changelog

* comments

* revert to keyDown from rawKeyDown, remove delay

* expand changelog to include bidi

* changelog

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-03-26 11:42:59 -04:00
Bill Glesias fc964b94b8 fix: remove prerequests from automation client when bidi continue request errors (#31328)
* fix: make sure to remove prerequests when bidi interceptor is removed and requests are still in flight from the previous spec/tab [run ci]

* fix changelog
2025-03-20 22:38:24 -04:00
Ryan Manuel 0daf7e639f chore: support studio lifecycle in protocol (#31239)
* update url with studio params

* updates

* spec updates

* adding tests

* updating changelog

* skip adding visit log during start

* update url support

* cy origin tests

* fix tests

* updates

* update origin test

* chore: support studio lifecycle in protocol

* merge changes

* fix types

* fix tests

* fix tests

* fix tests

* fix more tests

* fix more tests

* fix more tests

* fix test

* fix bugs

* fix tests

* attempt to fix test

* further fixes

* improve cloud studio enablement

* refactoring

* remove new dom link

* fix last test

* Update packages/app/cypress/e2e/studio/studio.cy.ts

* Update packages/server/lib/project-base.ts

* Update packages/proxy/lib/http/request-middleware.ts

Co-authored-by: Matt Schile <mschile@cypress.io>

* PR comments

* fix build

* fix build

* update

* Update packages/server/lib/project-base.ts

Co-authored-by: Matt Schile <mschile@cypress.io>

* fix unit test

* rework save logic

---------

Co-authored-by: Matthew Schile <mschile@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-03-13 20:30:29 -05:00
Bill Glesias f0df912f39 chore: add websocket url to capabilities for firefox (#31226)
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-03-10 11:35:18 -04:00
Bill Glesias 5da0995531 feat: implement webdriver BiDi for Firefox versions 135 and greater (#30870)
* feat: implement BiDi automation client base (without full extension cutover). [run ci]

* chore: implement suggestions from code review. [run ci]

* update error text to be in line with documentation

* address comments from code review

* address comments from code review

* make bidi, cdp, and both active protocols object enumerations to make the code easier to read

* address additional comments from code review

* fix errors from refactor

* update firefox warning
2025-02-24 13:17:44 -05:00
Jennifer Shehane f14fd12350 merge develop 2024-12-10 11:00:16 -05:00
Matt Schile dcd0e92ced fix: update userChrome.css to correctly hide the toolbox in firefox (#30728) 2024-12-10 07:38:09 -07:00
Matt Schile e96593bb1e fix: hang when Network.enable is not implemented for a target (#30727) 2024-12-09 09:44:05 -07:00
Ryan Manuel 9fda261dde chore: upgrade electron to 32.2.0 (#30394)
* chore: upgrade electron to 32.2.0 -- run ci

* fix node versions

* fix build

* fix evil-dns

* various fixes

* fix srcdoc

* various fixes

* update package.json

* update yarn.lock

* various fixes

* fix integrity check

* fix binary verification

* various fixes

* update yarn.lock

* fix typo

* fix lock file

* fix tests

* fix tests

* various fixes

* various fixes

* various fixes

* fix stuff

* fix things

* try to fix errors

* fix

* updates

* add yarn berry

* upgrade electron

* attempt with gcc

* blank

* update arm64 executor

* try to fix the arm64 issue

* fix arm64

* bump cache

* attempt to fix arm64 again

* attempt to fix arm64 again

* fix darwin problems

* merge release/14.0.0

* update yarn.lock

* blank -- run ci

* blank

* blank

* blank

* try something

* try something

* clean up

* blank

* try to fix sessions issue

* fixes

* get more info

* get more info

* try something

* fix

* try something

* try something

* try something

* tweak

* one more thing

* let us see if this works

* blank

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* Apply suggestions from code review

* Apply suggestions from code review

* Update cli/CHANGELOG.md

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* Update cli/CHANGELOG.md

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>

* Update CHANGELOG.md

* Update cache-version.txt

* fix nx (maybe)

* Update package.json

* try something

* Update packages/app/src/runner/aut-iframe.ts

* bump version

* try to bust cache

* try to invalidate cache

* Update cli/CHANGELOG.md

* suppress benign warnings

* Apply suggestions from code review

* PR comments

* PR comment

* Apply suggestions from code review

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* Update cli/CHANGELOG.md

Co-authored-by: Matt Schile <mschile@cypress.io>

* update debug scenario 4 regex

* Update scripts/binary/trigger-publish-binary-pipeline.js

---------

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2024-10-29 14:55:26 -05:00
Jennifer Shehane 7f6e0309a0 breaking: remove deprecated before:browser:launch signature code that allowed Arrays (#30460)
* chore: release 13.15.1 (#30454)

* chore: Update Chrome (beta) to 131.0.6778.13 (#30451)

Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>

* remove deprecated before:browser:launch signature code

* Update changelog

* Update snapshots & failing tests

BREAKING: remove deprecated before:browser:launch signature code that allowed Arrays

* Add back options

* update test spec to use non deprecated before:browser:launch signature

* removed test for deprecated before:browser:launch signature

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com>
2024-10-28 10:18:09 -04:00
Ryan Manuel 81aee0e184 Merge branch 'develop' into release/14.0.0 2024-10-22 08:22:25 -05:00
Bill Glesias aafac6a610 chore: add graphql schema update and wrap process.kill to swallow esrch error [run ci] (#30434) 2024-10-21 15:26:40 -04:00
Bill Glesias 05333076c6 chore: gracefully handle CDP address not returning from webdriver capabilities, prompting a browser relaunch (#30393)
* chore: gracefully handle CDP address not returning from webdriver capabilities, prompting a browser relaunch

Update packages/server/lib/browsers/firefox.ts

add inline comment to github comment thread [run ci]

strongly type errors more consistently [run ci]

* add test for firefox cdp error for visual snapshot [run ci]
2024-10-18 23:37:37 -04:00
Ryan Manuel 5d2950af96 fix merge 2024-10-18 14:11:26 -05:00
Ryan Manuel 23904b63d3 chore: merge develop 2024-10-18 13:13:40 -05:00
Bill Glesias 0e316966af misc: implement webdriver on top of geckodriver in order to reduce overhead maintenance and code (#30324)
* misc: implement webdriver npm package as the client for the webdriver specification

* misc: go back to xulstore to save browser preferences [run ci]

* add changelog [run ci]

* chore: fix screenshot resolution [run ci]

* fix check-ts issues [run ci]

* run windows ci [run ci]

* run ci

* add comments [run ci]

* build binaries for webdriver impl [run ci]

* fix Cypress namespace missing issue. see https://github.com/cypress-io/cypress/pull/30331/commits/6d7ba97c2562054e11983e8bfed576f0fa3ee37b

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* chore: updating v8 snapshot cache

* patch edgedriver and preserve dependency paths for webdriver so they are included in the binary [run ci]

* fix issues with firefox profile not being created in open mode when old profile exists from previous cypress versions where they are no longer compatible [run ci]

* address comments that came up in review [run ci]

* see if this fixes extension test [run ci]

* make sure process kill emits the exit event [run ci]

* update geckodriver to include contribution patch to types [run ci]

* fix misapplication of geckodriver package (accidentally deleted) [run ci]

* empty commit to trigger ci [run ci]

* address comments from code review [run ci]

---------

Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
2024-10-15 11:18:14 -04:00
Jennifer Shehane 93e53837a4 breaking: remove log:memory:pressure and firefox:force:gc APIs (#30331)
* remove foxdriver and force:gc/log:memory:pressure APIs

* Add changelog entry

* remove patched foxdriver file

* define types/spec FoundSpec without ref to Cypress namespace

* args

* chore: update unit test to still throw firefox cannot connect error if CDP fails to connect instead of the rtrying socket, which is no longer used when connecting to firefox

* Remove firefox-memory system test

---------

Co-authored-by: Cacie Prins <cacie@cypress.io>
Co-authored-by: AtofStryker <bglesias@gmail.com>
2024-10-03 15:11:36 -04:00
Bill Glesias af3839d990 misc: replace marionette-client with geckodriver as b2g marionette client is no longer supported (#30250)
* misc: replace marionette-client with geckodriver as b2g marionette client is no longer supported [run ci]

* install pump [run ci]

* refactor to have geckodriver launch the browser and split out webdriver to own class [run ci]

fix other failing tests [run ci]

fix other failing tests [run ci]

pass env variables to firefox

* fix sigkill / treekill issues on windows with firefox binary being a dangling process [run ci]

* fix issue where browser in headed mode was not starting maximized [run ci]

* stub firefox_spec added deps different to get type inference

* add comment to geckodriver patch

* move capabilities to verbose debug statement

* update changelog

* address comments from code review

* add pending for changelog

* update with suggestions from code review

* remove debug enable as the process needs to be bound to stderr and stdout

* add comment on why we need to bind

* add comments from code review

* address comments from code review

* make sure sessionId is set
2024-09-30 12:19:03 -04:00
Cacie Prins bbe53286cb fix: WebSocket Connection Closed crashing from BrowserCriClient (#30174)
* catch Fetch.enable errors on extra target in browser CRI

* changelog

* changelog

* changelog

* Update packages/server/test/unit/browsers/browser-cri-client_spec.ts

Co-authored-by: Bill Glesias <bglesias@gmail.com>

* use try/catch instead of .catch for wider unit test support

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
2024-09-03 18:25:40 -04:00
Cacie Prins 8b54d3e919 perf: cri client memory leak (#29988)
* Refactor connection logic to cri-connection

CDPConnection class instantiates a persistent event emitter, and creates
a CDP Client instance via connect(). When this client emits a disconnect
event, the CDPConnection will automatically attempt to reconnect, if the
connection was not intentionally closed and the connection is created with
the reconnect flag. It only listens to 'event' and 'disconnect' events itself,
making it easy to unsubscribe from events in the event of a disconnection,
helping ease mental load when considering potential memory leaks.

Because it uses its own persistent event emitter, event listeners added
to the CDPConnection do not need to be re-added when the client reconnects.

The CriClient itself no longer handles reconnection logic: it only reacts to
connection state changes in order to re-send failed commands and enablements
when the CDPConnection restores the CDPClient.

* changelog

* clean up event listeners before reconnecting

* changelog

* changelog

* changelog

* unit tests

* lift out of the remote-interface dir

* complete lift from /remote-interface

* further fix imports

* import

* fix disconnect behavior to make integration test pass

* Update packages/server/test/integration/cdp_spec.ts comment

* fix snapgen

* improve debug

* further debug improvements

* do not attach crash handlers on browser level cri clients, add tests

* adds bindingCalled listeners discretely, rather than relying on 'event', which does not trigger for them

* back out of main `event` listener, use discrete listeners, add integration test for service worker bindingCalled

* Revert "back out of main `event` listener, use discrete listeners, add integration test for service worker bindingCalled"

This reverts commit 4855120d42.

* changelog

* adds integration test for various ways to add cdp event listeners

* note in changelog this is a cypress server fix

* ensure enablement promises resolve after reconnect

* Update cli/CHANGELOG.md

Co-authored-by: Matt Schile <mschile@cypress.io>

---------

Co-authored-by: Matt Schile <mschile@cypress.io>
2024-08-16 10:13:54 -04:00
Cacie Prins 8a48ee7cdf fix: Unhandled "WebSocket connection closed" when CDP connection is unstable (#29830)
* unit and integration tests that reproduce websocket disconnected unhandled exception

* WIP: command queue

* complete command queue and retry refactor

* cri-client changes pass tests; modify certain tests for readability and accuracy

* removes unnecessary logic from command queue, adds unit tests for command queue

* rm unused cdp state - this should be reserved for future refactor

* small edits to cri-client: better error handling, more comprehensive comments

* comment re: queue property

* rearrange cri client member methods for readability

* further edits

* Changelog

* Update cli/CHANGELOG.md

Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>

* fix continuous retry on close

* split heavier debugs to verbose

---------

Co-authored-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2024-07-16 09:46:40 -04:00
Cacie Prins 606a43bef8 refactor: CriClient -> traditional class + async factory (#29676)
* refactor: CriClient -> traditional class + async factory

* Update packages/server/test/unit/browsers/cri-client_spec.ts

* member fns of CriClient must be bound to context

* rethrow debug-inspected ws send error

* make cri client constructor private to force factory method; ref cri connection via closure

* add todo for potential memory leak in CriClient
2024-06-26 11:31:57 -04:00
Bill Glesias af2b764815 fix: chrome missing CRI client after browser relaunch (#29663)
* reprod browser cri crash chrome

* commit with the fix

* Add integration-like test that verifies the browser is launched with the correct arguments [run ci]
2024-06-21 13:27:06 -04:00
Bill Glesias 8217fdcd14 fix: add remote.active-protocols argument and set it to 2 to enable CDP (#29720) 2024-06-21 11:37:09 -04:00
Jennifer Shehane e79089136d feat: add option to ignore chrome preferences (#29447)
* feat: add option to ignore chrome preferences

* build binary on this branch

* adds explanation comment and test

* update changelog from dev

* Update packages/server/lib/browsers/chrome.ts

Co-authored-by: Matt Schile <mschile@cypress.io>

* put disableRestorePagesPrompt back in promise list in browser open

* Update cli/CHANGELOG.md

* ensure we skip writing to chrome prefs when env is set

* changelog update

* Update packages/server/lib/browsers/chrome.ts

Co-authored-by: Matt Schile <mschile@cypress.io>

* more fully ignore chrome preferences when env var is set

---------

Co-authored-by: Cacie Prins <cacie@cypress.io>
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Co-authored-by: Matt Schile <mschile@cypress.io>
2024-06-04 10:17:06 -04:00
Bill Glesias e39e74866f fix: preserve orphaned process electron (#29515) 2024-05-20 10:20:58 -04:00