* develop: (35 commits)
fix(deps): update dependency url-parse to v1.5.6 [security] (#20270)
chore: fix cache keys to include PLATFORM (#20279)
chore: fix server performance flake (#20271)
test(system-tests): support docker-based tests against built binary (#20250)
chore: fix system-test-firefox screenshots_spec flake (#20268)
chore(deps): update dependency fs-extra to v9 🌟 (#19939)
fix: Wait for child process to be ready (#19792)
fix: treat form-data bodies as binary (#20144)
test: replace cypress-test-example-repos coverage + remove bump (#20186)
fix(driver): update wrapErr to ignore number and boolean values (#20172)
release 9.5.0 [skip ci]
chore: Update Chrome (stable) to 98.0.4758.102 (#20192)
chore: enable volar.takeOverMode
Add span names, merge develop
fix: Update `.type(' ')` to not emit clicks when the keyup event has been prevented (#20156)
test: remove redundant "other projects" CI jobs (#20133)
chore(driver): move cy.focused and cy.root into their own files (#20054)
Move sending root event to own script
chore: release @cypress/vue-v3.1.1
chore: release @cypress/react-v5.12.3
...
* develop:
feat: gray out the path to system node in cypress run header (#20121)
feat: redesign server errors (#20072)
test: fix awesome-typescript-loader test and remove test-binary job (#20131)
fix: Fix issues with stack traces and command log in Chrome 99 (#20049)
fix: `cy.type(' ')` fires click event on button-like elements. (#20067)
fix: `change`, `input` events are not fired when the same option is selected again. (#19623)
build: publish vue3 on latest (#20099)
chore: release @cypress/webpack-preprocessor-v5.11.1
chore: release @cypress/webpack-dev-server-v1.8.1
fix: detect newly added specs in dev-server compilation (#17950)
chore: Remove pkg/driver //@ts-nocheck part 3 (#19837)
chore: set up semantic-pull-request GitHub Action (#20091)
chore: release @cypress/react-v5.12.2
fix: remove nullish coalescing in js files to support node 12 (#20094)
docs: update @cypress/webpack-preprocessor links (#19902)
refactor: use aliases instead of meta (#19566)
* chore: rename errors.js -> errors.ts
* refactor: type safety on errors
* refactor: add err_template for consistent error formatting
* fix a few system tests
* fix tests; update snapshots
* Fix types
* normalize snapshot - remove chalk ansi colors
* more unit test fixes
* more system test fixes
* circleci build
* backtick always in stdout, fix error formatting and failing snapshots
* refactor: create @packages/errors
* fix import
* fix import
* fixing build / tests
* remove extraneous file
* move warnIfExplicitCiBuildId
* fix build / tests
* Fix
* error, type fixes, documentation, standardize child process error serialization
* fix import
* build errors on install
* wrote specs generating visual images of all errors
* remove unused dep
* sanitize stack traces
* add image diffing
- if base images don't exist, create them
- if base images don't match and local, overwrite them, if in CI throw
- if base images are stale and local, delete them, if in CI throw
* remove Courier New + MesloLGS NF font
* type fixes, remove Bluebird, general cleanup
* TS Cleanup
* skip typecheck on tests for now
* yarn.lock
* fix @types/chai version
* fix yarn.lock
* Different version of mocha types so it isnt patched
* errors spec snapshot
* CI fix
* fixes
* store snapshot images in circle artifacts
* dont change artifact destination prefix
* use Courier Prime
* antialias the text
* decrease pixelmatch threshold, fail in CI only when changed pixels > 100
* increase timeout
* overflow: hidden, remove new Promise, add debug logging
Co-Authored-By: Tim Griesser <tgriesser@gmail.com>
* run unit tests w/ concurrency=1
* unique window per file
* disable app hardware acceleration + use in process gpu + single process
* do not do image diffing
- conditionally convert html to images
- store html snapshots
- do not store images in git
* store snapshot html
* Merge branch 'tgriesser/chore/refactor-errors' of https://github.com/cypress-io/cypress into tgriesser/chore/refactor-errors
* remove concurrency
* fix assertion
* fixing ci
* Link in readme
* pass the browsers to listItems
* fix: build @packages/errors in CI, defer import to prevent errors locally
* Merge branch 'develop' into tgriesser/chore/refactor-errors
* develop:
chore: fix cypress npm package artifact upload path (#20023)
chore(driver): move cy.within logic into it's own file (#20036)
chore: update automerge workflows (#19982)
fix(selectFile): use target window's File/DataTransfer classes (#20003)
chore: Update Chrome (stable) to 98.0.4758.80 and Chrome (beta) to 98.0.4758.80 (#19995)
fix: Adjust ffmpeg CLI args for performance (#19983)
build: allow unified to run cypress on Apple Silicon (arm64) (backport #19067 to 9.x) (#19968)
* fix run-if-ci.sh
* remove dead code
* Mark the .html files as generated in gitattributes
* fix running single error case, slice out more of the brittle stack
* remove additional brittle stack line
* firefox web security error
* nest inside of describe
* reformat and redesign errors
* more error cleanup and standardization
* additional formatting of errors, code cleanup, refactoring
* update ansi colors to match terminal colors
* cleanup remaining loose ends, update several errors, compact excess formatters
* fix types
* additional formatting, remove TODO's, ensure no [object Object] in output
* add test for 412 server response on invalid schema
* update unknown dashboard error on creating run
* use fs.access instead of fs.stat for perf
* added PLUGINS_FILE_NOT_FOUND error
- separated out from PLUGINS_FILE_ERROR
- add system tests for both cases
- update snapshots
- remove stack trace from PLUGINS_FILE_NOT_FOUND fka PLUGINS_FILE_ERROR
* add plugins system test around plugins synchronously throwing on require
* remove forcing process.cwd() to be packages/server, update affected code
- this was a long needed hangover from very old code that was doing unnecessary things due to respawning electron from node and handling various entrypoints into booting cypress
- this also makes the root yarn dev and dev-debug work correctly because options.cwd is set correctly now
* perf: lazy load chalk
* remove excessive line since the file exists but is invalid
* fix types
* add system test when plugins function throws a synchronous error
* create new PLUGINS_INVALID_EVENT_ERROR, wire it up correctly for error template use
- properly pass error instance from child to ensure proper user stack frames
- move error display code into the right place
* only show a single stack trace, either originalError or internal cypressError
* push error html snapshots
* fix tests, types
* fix test
* fix failing tests
* fix tests
* fixes lots of broken tests
* more test fixes
* fixes more tests
* fix type checking
* wip: consistent handling of interpolated values
* feat: fixing up errors, added simple error comparison tool
* wrapping up error formatting
* Fixes for unit tests
* fix PLUGINS_VALIDATION_ERROR
* fix fs.readdir bug, show rows even if there's only markdown formatting [SKIP CI]
* when in base-list, show full width of errors
* Fix type errors
* added searching and filtering for files based on error name
* fix: system tests
* updated NO_SPECS_FOUND error to properly join searched folder + pattern
- join patterns off of process.cwd, not projectRoot
- highlight original specPattern in yellow, baseDir in blue
- add tests
* fixes failing tests
* fix test
* preserve original spec pattern, display relative to projectRoot for terminal banner
* make the nodeVersion path display in gray, not white
* fix tests, pass right variables
* fix chrome:canary snapshots
* update snapshots
* update snapshot
* strip newlines caused by "Still waiting to connect to {browser}..."
* don't remove the snapshotHtmlFolder in CI, add additional verification snapshots match to error keys symmetrically
* update snapshot
* update snapshot
* update snapshot
* update snapshot
* update snapshot
* update snapshot
* update gitignore
* fix snapshot
* update snapshot html
* update logic for parsing the resolve pattern matching, add tests
* update snapshots
* update snapshot
* update snapshot
* update snapshot
* fix failing test
* fix: error_message_spec
* fix snapshot
* run each variant through an it(...) so multiple failures are received
* add newlines to multiline formatters, add fmt.stringify, allow format overrides
* stringify invalid return values from plugins
* move config validation errors into packages/errors, properly highlight and stringify values
* add component testing yarn commands
* fix the arrow not showing on details
* fix typescript error
* fixed lots of poorly written tests that weren't actually testing anything. created settings validation error when given a string validation result.
* fixes tests
* fixes tests, adds new error template for validating within an array list (for browser validation)
* remove dupe line
* fix copy for consistency, update snapshots
* remove redundant errors, standardize formatting and phrasing
* more formatting
* remove excess snapshots
* prune out excessive error snapshot html files when not in CI
* add missing tests, add case for when config validation fails without a fileType
* fixes test
* update snapshot
* update snapshot
* update snapshot
* sort uniqErrors + errorKeys prior to assertion - assert one by one
* add system test for binding to an event with the wrong handler
* fixes tests
* set more descriptive errors when setting invalid plugin events, or during plugin event validation
* remove duplicate PLUGINS_EVENT_ERROR, collapse into existing error
* use the same multiline formatting as @packages/errors
* standardize verbiage and highlighting for consistency
* fix incorrect error path
* fixes tests, standardized and condensed more language
* Update packages/errors/src/errors.ts
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* Update guides/error-handling.md
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* Update guides/error-handling.md
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* added some final todo's
* fix types
Co-authored-by: Tim Griesser <tgriesser10@gmail.com>
Co-authored-by: Tim Griesser <tgriesser@gmail.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* start graphql server in run mode
* update url logic
* use correct mobx instance
* expose util method for testing selector playground
* add __Cypress__ global
* correctly order aut lifecycle methods
* correct spec url in tests
* fix server integration tests
* add title to html
* update url encoding
* uni test
* encoding
* encode ssr data as base64
* set correct cypress.spec.name
* set arch and os options
* add version to options
* update config test
* update encoding
* temp skip
* more skips
* try to fix launchpad tests
* update test
* update runner
* feat: automation
* ignore error
* remove unused runner steps
* try remove error
* config
* Ensuring a provided testId gets rendered on a consistent element reference within HeaderBar.
* better conditionals
* automation connection
* try applying firefox cdp automation
* skip spec
* skip for now
* skips
* respond to failed visit event correctly
* chore: fix screenshot system tests (#19686)
* set fake __CYPRESS_MODE__ on window
* vue logic for screenshot + run-mode checks
* Restore AUT wrapper div, make the name more clear
* switch to await for `before:screenshot` event send
* remove skipped tests
* add CYPRESS_INTERNAL_MODE to env
* move logic into component
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
* do not run runner-shared tests anymore
* dont care about runner unit test
* add reference screenshots confirmed to be good
* fix rerun spec
* do not hardcode http protocol, remove old code
* revert protocol and add missing pre-fetch gql query
* correctly pass ssr data, update request policy
* automation element updates
* do not apply CDP automation for firefox
* make assertions more debug-friendly
* up timeout, make firefox pixels slightly looser on CI
* Fix TS
* Try to fix tests
* Try to fix tests
* do not require urql for run mode
* wip: request policy changes
* use separate component for run mode and open mode
* expose selector playground function globally for testing purposes
* fix typescript
* fixing unit tests
* encode ssr data to match production
* fix test
* fix test
* readme
* fix: Run mode for unified runner resolve conflicts (#19743)
* merge in 10.0-release
* Fix merge conflict with client route
* Fail earlier when trying to run cypress in cypress in a browser other than chrome
* Fix some tests
* Set empty obj if config is not set
* Update tests
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* update automation namespace, remove old code
* remove skipped test
* handle non proxied case
* clean up code
* revert png
* do not start graphql server in run mode
* Fix ts error
* revert type.cy.js to original test
* revert change in driver screenshot
* remove unused async
* remove unused env var
* remove old todo comment
* remove needless console.log
* unskip test
* use pause: true to avoid gql request
* remove unused automation element
* remove unused setAutomationStatus method
* change pane -> panel
* reimplement 1px flake fix for firefox type.cy.js
* chore: remove launchpad environment variable (#19778)
* remove LAUNCHPAD conditionals
* add timeout to test
* revert file
* correctly normalize url
Co-authored-by: Tyler Biethman <tbiethman@gmail.com>
Co-authored-by: Mark Noonan <oddlyaromatic@gmail.com>
Co-authored-by: Mark Noonan <mark@cypress.io>
Co-authored-by: Alejandro Estrada <estrada9166@gmail.com>
Co-authored-by: estrada9166 <estrada9166@hotmail.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* build: fix dev process on windows
* build: reuse "spawned" function
* Revert "build: reuse "spawned" function"
This reverts commit 67289c281a.
* use winSpawn for spawned too
* refactor: rename uSpawn function