* 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>
- add needed deps in `ui-components` package
- upgrade `@cypress/webpack-preprocessor`
- refactor some eslint code, remove unused eslint scripts
- rename `build-js` scripts to `build-prod` since they'll only need to run when building for prod / checking for tsc errors
* try connecting to chrome remote interface
* linting
* print CRI targets for better debugging
* linting
* load empty tab first when connecting to CRI
* first load blank page, then navigate
* Page.navigate is working
* linting
* remove title
* add mocha banner
* more banners
* update some server unit tests
* update integration test
* document how to run single driver spec file
* set the focus back on the page before navigating from blank chrome tab
* update server unit test
* do not store Chrome remote interface reference for now
* record video of the Chrome tab using screencast API
* use dynamic port to connect to Chrome remote interface
* update unit tests
* refactoring
* wrap chrome remote interface in our interface, limit access to send
* resolved merge
* fix reference
* passing run unit spec
* stub canary search for CI to pass
* add build step to packages/server
* update chrome spec
* do not build js on install for server
* updated spec snapshots
* update 6_visit_spec snapshot
* update snapshot for 6_web_security_spec
* update snapshot for 3_plugins_spec
* update snapshot for 3_user_agent_spec
* update snapshot for 5_stdout_spec
* update snapshot for 2_browser_path_spec
* do not git ignore js files, add note why
* update several snapshots with video on Chrome
* update visit performance snapshot
* add chrome-remote-interface dependency
* cleanup coffeescript conversion to JS, fix some type errors, make parallel override clearer
* fix failing tests
* Fix snapshot - now we do record in Chrome, so warning message is no longer there.
* remove chrome warnings about not recording from snapshot
* Remove performance tests from 6_visit_spec snapshot
* Remove error from snapshot
* Add newline back to cy_visit_performance_spec snapshot
* Navigate to about:blank
* look for blank page url
* add note about avoiding Prettier
* disable prettier a little more
* call chrome remote interface close after each spec
* return promise when starting screencast
* update failing unit tests, add cri client close test
* update integration test
* Add verbose debug statements to cri-client
* Use connect.createRetryingSocket for CDP connection
* record video from chrome browsers
* add method for validating browser family
* update e2e spec snapshot
* update 4_request_spec snapshot
* update snapshot for spec 1_commands_outside_of_test_spec
* update snapshot for 3_plugins_spec
* update snapshot for spec 3_user_agent_spec
* try: Always log video capturing errors
* update snapshot for 2_browser_path_spec
* update snapshot for 2_cookies_spec
* better browser family test
* update snapshot for 5_stdout_spec
* update snapshot for 5_subdomain_spec
* Add protocol_spec tests
* do not capture video during performance test
* Add test for VIDEO_POST_PROCESSING_FAILED warning
* use client.on to register screencast callback
* cleanup prettier, extract some functions, switch to browser.family
* moar cleanup and fixes
* add logging to the cri-client so we can see every message sent + received to the cdp protocol
* bump bluebird to 3.7.0 for .tapCatch addition
* Fix unit tests
* WIP: update e2e test to ensure that duration of the video matches what we expect
* Test duration of recorded video
* Run 6_video_compression in chrome + electron
* Cleanup
* finish ffmpeg duration verification
* Update 8_reporters_spec snapshot
* Update CRI close logic to monkey-patch browser.kill
* add isBrowserFamily back
* make it possible for remote-debugging-port to get overridden
* Make CDP timeout 5s; add unit, e2e tests for CDP failure; add user-friendly CDP failure error
* Update tests
* Use CYPRESS_REMOTE_DEBUGGING_PORT to set CDP port; update CDP error message
Co-authored-by: Brian Mann <brian.mann86@gmail.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Zach Bloomquist <github@chary.us>
* Add ability to zoom in / out in Electron browser
- tested manually also 👍
* Move reload back to dev tools menu
* make sure eslint is enabled
* add globals defined in spec_helper to eslintrc
* remove unused require
* decaffeinate menu files + fix failing test
* fix decaffeinate merge issues