* chore: add type linting + compilation checks to runner package
* empty commit
* A bunch of tslint fixes
* wow it is building
* Fix issue with CT not mounting correctly with comments within it
* Fix net-stubbing.ct.ts failures
* Fix tslint: disable comment
* move target into compilerOptions
* fix tslint disable comment
* update proxy-logging to undo changes
* standardize the tslint:disable comments
* fix comment
* fix the banner content not displaying and write a test for this situation
* fix ct reference
* put target to es2020
* actually set the property with replaced title
* Update packages/reporter/src/hooks/hook-model.ts
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* Fix eslint/tslint settings for system-tests with vue 3
* bump CI cache
* update types/react resolution
* add return
* lint fix
* tslint disable for empty blocks
* exclude dist files from ts linting
* update to exclude all dist folder
* exclude dist file
* change to await
* fix line numbers of stack trace with linting updating vue file
---------
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* chore: update @packages/reporter react from 16.8.6 to 17.0.2 and updates @types/react* packages from 16x to 17x [run ci]
* hoist dependencies up due to peer dep issues with react and the runner/reporter needing to locate the same react (this is dumb)
* update react-18 package to reference types delcared in root (kind of goofy but existing pattern) [run ci]
* correctly look up react instance as __reactInternalInstance no longer exists in react17 [run ci]
* fix failing test now that repo is on react 17 [run ci]
* chore: do the minimal to update mobx from 5 to 6 [run ci]
chore: update mobx-react from v7 to v9 [run ci]
bump cache [run ci]
* do not alias mobx or mobx-react. This causes an issue where webpack, in production mode, bundles the cjs production dependency of mobx (mobx.cjs.production.min.js) into cypress_runner.js (in the runner package), but @packages/app (bundled via vite), bundles mobx.esm.js, which is NOT minimized and is expecting the global store/state set by the app to also not be minimized. [run ci]
* run update on all machines [run ci]
* add changelog entry [run ci]
* chore(deps): update dependency rimraf to v5.0.10
* fix: fix clean errors caused by rimraf breaking change
* refactor: use promise instead of callback
---------
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* fix: update the monorepo to typescript 5
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* run ci to see problems [run ci]
* update vue-tsc and typings that conflict with update
* regen snapshot
* fix typescript errors ui test as stack trace behavior has changed
* fix server unit tests
* update cy.origin() spec based on stack traces and code frames
* update spec to include source map url
* run ci
* fix check-ts
* chore: fix system tests [run ci]
* add preprocessor tests to batteries included to exercise new logic
* run ci
* refactor unit tests to be a bit more dry
* pin typescript to ~5.4 and adjust config to ignroe deprecations but keep importsNotUsedAsValues
* add changelog entry
* add fixme issue to stack trace mismatches inside evaled context
* use import type webpack as webpack as a lib isn't actually invboked in the runner webpack config
* fix system test as adding 4 lines of comments impacts the stack trace line 4 lines (duh)
---------
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
* chore: (for eslint-plugin-dev only is breaking) update eslint-plugin dev minimum to eslint 7. Remove support for coffeescript and reconfigured required peer deps
* correctly configure eslint-plugin-json-format for the monorepo and run linting on all json files (previously was not running)
* properly support no duplicate imports
* chore: update ts-loader from v8 to v9
* chore: update sass-loader from v10 to v13
* chore: update postcss-loader from v4 to v7
* chore: update mini-css-extract-plugin from v1 to v2
* chore: update html-webpack-plugin from v4 to v5
* chore: update css-loader from v5 to v6
* chore: update copy-webpack-plugin from v6 to v 11
* chore: update babel and babel loader to latest
* chore: remove Url import from validation as it should be available globally
* chore: update coffee-loader to latest and coffeescript to 2.6.0. coffee
script > 2.6.0 has issues with packheard transpilation, which likely
isnt worth the squeeze here to update it further
* chore: fix react component tests with webpack 4 as babl loader 9 only works with webpack 5, so we need ot pin the dep to 8 in the system-test project
* chore: remove dependency on file-loader and opt for ubilt in assert handling where applicable. Additionally, remove react-svg-loader and move to svgr loader inside the runner to bundle svgs needed for react components. Make sure that all SVGs are being imported correctly
chore: tell webpack preprocessor to process svgs inside of e2e tests for
the reporter. We did not need this before because we were using
react-svg-loader, which was used directly in source to process the svg
and allowed the svg to work under test. Since the source code is now
bundler independent, we need to tell cypress to bundle the svgs under
test. To do this, we pass our webpack config into
@cypress/webpack-preprocessor to allow loading the svgs. This is not a
breaking change.
* chore: switch from hash to contenthash
* chore: remove use of moduleIds for chunkIds as the defaults are likely better and handle caching/debugging better
* chore: mark tests that need to be updated as node 12 and 14 are no longer supported. node 12 doesnt ship with fs/promises, which causes fatal errors with babel-loader 9
try to test against new docker images [run ci]
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* skip http/https form submittal unit tests for experimental webkit due to the clientRoute 404ing after submitting
* chore: pin webpack 5 for component tests in cy in cy to prevent using 4 from hoisted deps [run ci]
* build binaries [run ci]
* chore: bump circle cache [run ci]
* fix: turn off svgo from @svgr/webpack to preserve our scss class names within the svg. see https://react-svgr.com/docs/options/#svgo [run ci]
---------
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
* chore: [run ci] does further prerequisites for webpack 5:
https://webpack.js.org/migrate/5/#make-sure-your-build-has-no-errors-or-warningshttps://webpack.js.org/migrate/5/#make-sure-to-use-modehttps://webpack.js.org/migrate/5/#update-outdated-optionshttps://webpack.js.org/migrate/5/#test-webpack-5-compatibility
app builds and runs locally. Time to test out in CI and see if buffer or
process need to be polyfilled by the build
* chore: upgrade to webpack 5 and do the bare minimum to get it working
* chore: get @packages/extension working
* chore: add TODOs to finish after webpack 5 update
* chore: update the webpack config for npm/webpack-batteries-included-preprocessor to be webpack 5 compliant
* chore: patch whatwg-url 7.1.0. package 'source-map' uses
whatwg-url@7.1.0 which has a dependency on punycode node expected API.
since punycode is now polyfilled for us implicitly via the punycode npm
package, the API signatures are a bit different
https://github.com/mathiasbynens/punycode.js/blob/main/punycode.js#L101
vs https://nodejs.org/api/punycode.html#punycodeucs2. The patch uses the
punycode npm package expected API and is needed for source maps to work
for cy.origin() dependencies for Cypress.require()
* chore: convert whatwg patch into dev patch as source-map is not installed when building the binary / installing prod dependencies
* chore: only move production level patches into the binary dist directory for yarn install --production
* chore: remove --openssl-legacy-provider code for node versions 17 and over as webpack has been updated to v5
* chore: fix the webpack-batteries-included-preprocessor tests by shimming the correct node globals and built ins
* chore: provide the define plugin and evalDevtoolPlugin again as we need define in order to build the react-dom library correctly in the bundle to not include the development version
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: fix the webpack preprocessor not to change promise references under the hood when compiling the first bundle, as it was causing the webpack preprocessor to hang as the reference itself was different
* chore: fix issues from readFile that were caused by Webpack 5 using 'path-browserify'
* chore: update chrome component testing snapshots to match Webpack 5 changes
* chore: fix mismatched snapshots from webpack 5 update
* chore: use Cypress.Buffer instead of Buffer for selectFile system test to avoid having to polyfill Buffer from webpack
* chore: fix system test webpack path that now includes e2e workspace
* chore: patch enhanced-resolve to properly discover the pnp api for the yarn_v3.1.1_pnp_spec.ts system test. see https://github.com/webpack/enhanced-resolve/issues/263 for more details
* chore: set stats to 'none' for experimentalSingleTabMode to prevent different webpack compiled terminal formatting in the snapshot between local and CI.
* chore: fix node built in tests and configure webpack-batteries-included-preprocessor correctly
* chore: fallback to buffer correctly in config, even though there is no impact due to the provide plugin
* Update binary-cleanup.js to exclude added build dependencies for webpack
5 added by webpack-terser-plugin under the hood
* chore: add stream-browserify to webpack preprocessor batteries included as a dep as its used in the config [run ci]
* chore: make sure process and buffer are installed in the CLI for webpack provide
* chore: build cross platform binaries [run ci]
* chore: fix webpack evalDevToolPlugin instantiation [run ci]
* run all binary jobs [run ci]
* chore: updating v8 snapshot cache
* add find-up to the entry points that need to be kept
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: fix mocha build warnings
* chore: fix STRIPPED_INTEGRITY_TAG import warnings
* chore: add changelog event
---------
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* chore: upgrade webpack dependencies to latest sub 5 compat [run ci]
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: updating v8 snapshot cache
* chore: build binaries [run ci]
* chore: update snapshot for darwin
* chore: downgrade tsconfig-paths-webpack-loader from v4 to v3 [run ci]
* [run ci]
* chore: add rimraf in @packages/runner to use in prebuild command to clear out dist directory to get windows compat [run ci]
* don't pass -rf flags into rimraf as it is inherit with the command
---------
Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com>
* chore: add regression tests for duplicate cookies and bad expiry times
* avoid prepending domain with dot for cookies that are set with the server side jar. This is to avoid the cookie being duplicated if it is set or overridden in a different context (request that can actually set the cookie or via document.domain)
* feat: use cookie.toString() in the cookie patch to more accurately set cookies on the document, which should include other properties besides key=value
* fix: add logic to handle expired cookies in the document.cookie patch, as well as in CDP
* chore: build binary for cookie fixes for users to test
* chore: change name of fixture to something more accurate
* chore: comment why we are using the toughCookie toString method in the patch
* [run ci]
* chore: add changelog entry
* [run ci]
* fix: revert back to key=value when getting document.cookie as those are the only values are displayed (oversight on my end)
* [run ci]
* chore: make compatible with cypress.require
* fix: add tests for hostOnly/non hostOnly cookies to make sure property gets sent up to automation client correctly. No longer need custom cookie prop to determine destination
* [run ci]
* fix: stale unit test
* chore: adjust comments
* [run ci]
* fix: bad domain logic
* [run ci]
* chore: remove irrelevant comment
* [run ci]
* fix: adjust cookie login text to spec hostOnly cookie within the cookie patch. This should yield the same behavior as we are bound to same origin within the spec bridge
* [run ci]
* [run ci]
* fix: allow for cookies on request of same key to take precedence over cookies in the jar, regardless of how many hierachy cookies exist in the jar
* chore: fix cookie misc tests for cy.origin (dont run cy.origin)
* [run ci]
* chore: skip misc cookie tests in webkit as headless behavior doesn't clear cookies between tests correctly
* Revert "fix: allow for cookies on request of same key to take precedence over cookies in the jar, regardless of how many hierachy cookies exist in the jar"
This reverts commit 17de1883ab.
* [run ci]
* chore: split changelog entry into two parts
* chore: update logic to remove else statement and add comments
* [run ci]
* chore: readd windows snapshot branch in workflows
* [run ci]
* chore: fix workflows from bad merge
* [run ci]
* Revert "chore: split changelog entry into two parts"
This reverts commit 4352ef5f3e.
* [run ci]
* React to vue
* Goodbye dom.
* Use event modifier.
* Remove leading underscore in names
* Use modifier.
* Add flip, shift options.
* Use createPopper instead of floating-ui.
* Remove unnecessary dependencies.
* addAssertion to event.
* setPopperElement to event.
* Strong types.
* clarify test.
Co-authored-by: Blue F <blue@cypress.io>
* fix: spec bridges no-longer create their own spec bridge but instead use post message to communicate with the primary instance.
* fix test errors
* fix tests, ignore change to cookie
* Move patch code into injection
* Code cleanup
* Fix most failing tests
* Enable patching for both spec bridges and the primary cypress instance.
* clean up
* Updates from self PR review
* Remove before each limiting spec bridges.
* rename attach function
* whoops, better call the function with the correct parameters
* Apply suggestions from code review
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* Update packages/driver/src/cross-origin/communicator.ts
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* Apply suggestions from code review
* Apply suggestions from code review
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* updated test name
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* chore: enforce strict origin spec bridges
chore: refactor spec bridges to strictly enforce same origin
fix: wrap fullCrossOrigin injection around feature flag inside buffered response
* fix: do NOT set the initial cypress cookie inside the spec bridge as it is sending unecessary cookies
* chore: simplify the finding cypress in the injection code
* chore: change order in which callback fn is declared
* chore: add spec bridge performance issue to validation tests
* Initial async changes
* Small fixes and test updates.
* updating tests
* Fixes for cookie login tests
* remove the onlys
* Most tests passing
* Fix driver tests?
* fix firefox test?
* fix unit tests
* fix tests??
* a better check
* fix integration tests
* minor cleanup
* Comment out tyler fix for 10.0 origin issue
* also fix integration tests
* remove fixmes
* Adding Retries for cookie actions. May break other error tests.
* Address (some) PR comments
* update to warn about cross origin command AUT in assertions
* Fix type errors
* Move document.cookie patch to injection
* Adding iframe patching.
* forward errors prior to attaching
* Add error message when using visit to visit a cross origin site with the onLoad or onBeforeLoad options.
* Attempt to fix test errors.
* more fixes, but not all
* use the origin policy
* Fix types
* more fixes
* consider chromeWebSecurity when checking if you can communicate with the AUT
* firefox
* prevent hangs if before unload happens after on load.
* Fix some ToDos
* code cleanup
* remove quotes
* Code review changes
* more cr changes
* fix tests possibly
* for realz this time
* roll back change
* Fix some flake
* Fix flakey xhr test hopefully.
* oops, forgot communicator changes. need those.
* modify error message to not lose the original error
* read config right derp
* simpler check
* no unused vars
* don't put config on window
* Make isRunnerAbleToCommunicateWithTheAUT a util function instead of attaching it to cypress.
* fix a race condition maybe
* clear document when window is cross origin... we'll see if this breaks anything.
* Retry if querying against the wrong AUT
* use timeout
* Don't print the retrying string unless you're retrying due to command aut origin mismatch
* try handling undefined document
* Code review updates. What could go wrong??
* Apply suggestions from code review
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* minor fixes
* try aut location and move the async state collection.
* fix flake around the loading message, probably
* Fix system tests and some flake around redirect counts.
* Improve error handler prior to attaching.
* Code review suggestions
* use a generated ID when promisifying post message
* clean up promise helper
* skip xhr test until issue is resolved.
* Apply suggestions from code review
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* use state directly
* Apply suggestions from code review
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* Update packages/driver/src/cypress/error_messages.ts
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* chore: wire up Cypress Studio (#23413)
* wip
* wip
* wip - spike
* more wip [skip ci]
* update style
* fix ts
* move types around
* extract types
* lint
* fixing tests
* fix component test
* skip some tests
* do not error on experimentalStudio flag
* add studio controls placeholder
* fixing tests
* revert
* revert changes
* rename store
* rename method
* remove comment
* refactor
* correctly feature flag studio
* simplify code
* simplify code
* lift check into useEventManager
* correctly hide create studio prompt based on flag;
* remove superfulous css
* rename variables
* fix bugs
* wip
* unskip tests
* unskip more tests
* fix a bug in the assertion API
* fix bug in assertions [skip ci]
* wip - bugs [skip ci]
* feat: add experimentalStudio flag back (#23506)
Co-authored-by: astone123 <adams@cypress.io>
* chore: Add Studio UI to Cypress 10 (#23537)
* wip
* wip
* wip - spike
* more wip [skip ci]
* update style
* fix ts
* move types around
* extract types
* lint
* fixing tests
* fix component test
* skip some tests
* do not error on experimentalStudio flag
* add studio controls placeholder
* fixing tests
* revert
* revert changes
* rename store
* rename method
* remove comment
* refactor
* correctly feature flag studio
* chore: wip add barebones studio modals
* simplify code
* simplify code
* lift check into useEventManager
* correctly hide create studio prompt based on flag;
* remove superfulous css
* chore: style studio toolbar
* chore: misc feedback
* chore: remove studio store prop
* chore: studio URL prompt and other changes
* update component
* chore: UI styling and remove studio init modal
* chore: revert unnecessary changes
* chore: fix types
* chore: fix some tests, minor refactor (#23545)
* fix test
* fix test
* add noHelp link to StandardModal
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
* test: studio e2e tests (#23546)
* add basic e2e test
* add some e2e tests for studio and a note on limitations
* additional spec
* add more tests, refactor helper
* fix bug in studio
* remove test code
* chore: UI feedback
* fix race condition
* update tests
* rename test
* improve types in reporter
* remove dead code
* improve tests
* merge tests into one spec
* chore: Cap instruction modal width; exit studio mode when new spec is chosen
* chore: Only render studio error when test has failed; add test for studioEnabled
* correctly check if command is studio or not
* improve specs and hopefully reduce flake
* communicate studio state from app->reporter
* receive studio save state validity from app
* fix test
* improve test coverage
* fix external link
Co-authored-by: astone123 <adams@cypress.io>
* fix iframe performance issues in electron
* reduce 1000ms to 300ms for cross:origin:release:html
* reduce shouldWithTimeout from 3000ms to 250ms
* Update system-tests/projects/e2e/cypress/e2e/spec_bridge.cy.ts
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* add some regression tests around screenshot size when taking screenshots within cy.origin
* move screenshot e2e tests from system-tests into the driver
* move spec bridge system test into driver test
* add additional comments to spec bridge iframe scss for caution
* resolve snapshots directory correctly in open vs run mode
* revert this commit to see if assets are being tampered with or just missing in CI
* fix check:screenshot:size to always point to correct screenshot path
* remove isCypressRunMode from cypress config as internal flag as we no longer need it
* add check:screenshot:size to task.cy.js registered plugin assertion
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* chore(sessions): break out sessions manager code
* manager manages registered sessions
* some unit tests
* add more tests and some slight clean up
* .
* fix run mode issue.
* bind correctly for spies
* remove types. not sure on the return values.
* fix tests
* check in dump
* add some command tests
* more driver tests and fix session config error
* Fix parsing error argument
* test for failed validation error messges
* wait for diff pr
* update ui tests
* add more ui tests
* align with 10.0 test setup
* clean up
* will add later
* fix
* fix tests
* baseline for session flow tests
* test for logs...lots here....
* update log attrs to be able to collect session logs for tests
* refactor flows, fix grouping bugs and align validation fail text
* update UI test these changes fixed.
* fix test failures observed in run mode
* reduce flake in log updates