* WIP - system test snapshots
* bolster error output for response body potential on upload network errors
* edit error output for readability
* changelog
* Update packages/server/lib/cloud/artifacts/upload_artifacts.ts
Co-authored-by: Matt Schile <mschile@cypress.io>
* fix partial rename
* fix system test for single upload error vs aggregate
---------
Co-authored-by: Matt Schile <mschile@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
* custom async retry for any async fn
* "proxied" fetch for PUT, throwing http errors
* cleans up put_fetch return types & parsing
* move protocol upload logic to put_protocol_artifact, rm upload_stream
* changelog
* changelog
* manually fix wsp in snapshot
* reorganizes a little, properly tests retryable logic
* removes 408 as a non-retriable error in unit test
* make expectation to be resolved more clear
* rm unnecessary type coercion
* changelog
* Update cli/CHANGELOG.md
* asyncRetry only throws Aggregate errors if there is more than one attempt
* Update packages/server/test/unit/cloud/network/is_retryable_error_spec.ts
Co-authored-by: Matt Schile <mschile@cypress.io>
* Update packages/server/test/unit/cloud/network/is_retryable_error_spec.ts
---------
Co-authored-by: Matt Schile <mschile@cypress.io>
* [protocol] throw error verifying sig
Not throwing is surfacing as an upload error when it's a download error.
* adds system test snapshot for invalid signature
* changelog
* pending
* Update cli/CHANGELOG.md
---------
Co-authored-by: Cacie Prins <cacieprins@users.noreply.github.com>
Co-authored-by: Cacie Prins <cacie@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
* misc: report protocol capture afterSpec duration to cloud
* WIP: collecting afterSpec durations, TODO: system test scaffolding
* push all afterSpec timings to cloud
* push afterSpecTotal instead of afterSpec property
* changelog
* fix trailing slash in readme
* fix afterspec duration unit test
* correct return signature of afterSpec; add debug
* changelog
* Update packages/server/lib/cloud/api/index.ts
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* Update packages/server/lib/cloud/protocol.ts
* fix ts check
* fix unit tests re: expected afterSpec sig
* fix return sig of protocol afterSpec stub for system tests
* use env var directly in tests for capture error codepath, rather than override var
* rm unused param
* bump cache
* changelog
* remove pending runnables duration from afterspec report
---------
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
* new error messages
* errors for initialization and capturing test replay
* messaging the case where no protocol instance but also no fatal error
* adds suggested remedies to initialization errors
* differentiation between network and http errors, initial work on db missing error
* improve db not found error
* add new error type to schema
* rm commented dead code
* clean up network error creation in uploadStream
* make artifact confirmation error msg more general
* test display of put instance artifacts failure
* changelog
* ensure we are displaying errors even in quiet mode
* fix pending changelog
* new snapshots for protocol errors
* improve aggregate error
* resolved html error snapshots
* fix check-ts
* fix test
* sanitize temp dir in CLOUD_PROTOCOL_CAPTURE_FAILURE error msg
* changelog
* fix double entry of certain network errors, error message prop for network errors
* fix url arg for network error
* Update packages/server/lib/cloud/artifacts/upload_artifacts.ts
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* rm extra formatting from debug
* snapshot whitespace
* changelog update
* +pending
* Update cli/CHANGELOG.md
* resolve snapshots?
* does moving the stack trace fix whitespace in snapshots in ci?
* maybe fixes whitespace on electron now?
* fully normalize stack traces
* remove full normalization
* maybe debug stack normalization
* rm stack traces from error messages
---------
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* refactor record.js to extract upload logic into ts
- streamlines the main uploadArtifact fn
- extracts artifact specific logic to artifact classes
- fully defines types for upload processing and reporting
* tweak refactors so system tests produce same snapshots
* some todos, fixes exports/imports from api/index.ts
* fix api export so it can be imported by ts files
* cleans up types
* extracting artifact metadata from options logs to debug but does not throw if errors are encountered
* fix type imports in print-run
* fix debug formatting for artifacts
* fix reporting successful protocol uploads
* change inheritence to strategy
* rm empty file
* Update packages/server/lib/cloud/artifacts/upload_artifacts.ts
* makes protocolManager optional to uploadArtifacts, fixes conditional accessor in protocol fatal error report
* missed a potentially undef
* convert to frozen object / keyof instead of string composition for artifact kinds
---------
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
* fix: re-initialize DOM subscriptions from a full snapshot on cdp reconnect
* add test
* add changelog
* Update cli/CHANGELOG.md
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* Update CHANGELOG.md
---------
Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
* tbd
* workable templated filestream uploader
* clean up async assertions
* upload stream uses activity monitor to detect start timeouts and stalls
* makes uploadStream retryable
* filesize detection, enoent errors, and testable retry delays
* extract fs logic to putProtocolArtifact, impl putProtocolArtifact
* aggregate errors for retryable upload streams
* fixes imports from moving api.ts, uses new upload mechanism in protocol.ts
* use spec_helper in StreamActivityMonitor_spec due to global sinon clock changes
* fix putProtocolArtifact specs when run as a part of the unit test suite
* fix return type of ProtocolManager.uploadCaptureArtifact
* convert from whatwg streams back to node streams
* extract HttpError
* ensure system test snapshots
* changelog
* more changelog
* fix unit tests
* fix api ref in integration test
* fix refs to api in snapshotting and after-pack
* small edits
* Update packages/server/lib/cloud/api/HttpError.ts
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* Update packages/server/lib/cloud/upload/uploadStream.ts
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* camelcase -> snakeCase filenames
* improve docs for StreamActivityMonitor
* added documentation to: upload_stream, put_protocol_artifact_spec
* move stream activity monitor params to consts - no magic numbers. docs.
* Update packages/server/lib/cloud/api/http_error.ts
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* Update packages/server/test/unit/cloud/api/put_protocol_artifact_spec.ts
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* fix check-ts
* fix imports in put_protocol_artifact_spec
* Update packages/server/test/unit/cloud/upload/stream_activity_monitor_spec.ts
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* api.ts -> index.ts
* fix comment style, remove confusingly inapplicable comment about whatwg streams
---------
Co-authored-by: Bill Glesias <bglesias@gmail.com>
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* chore: add additional context to messaging when network errors occur in protocol uploads
* reduce total attempts for uploading capture artifacts from 8 to 3
* feat: report artifact upload durations to cy cloud for monitoring
* round upload durations to nearest ms
* update changelog
* revert changelog, fix typo in comment
* no longer round uploadDuration - api now accepts floats
* updates changelog
* update api spec for refactored signature on api.updateInstanceArtifacts
* Update CHANGELOG.md
* Update system-tests/test/record_spec.js
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* rm defunct comment
* rm non-null accessors, this spec is not ts
---------
Co-authored-by: Chris Breiding <chrisbreiding@users.noreply.github.com>
* ensure fatal error reports for protocol include a url entry, even if not applicable
* inconsequential debug msg change to alleviate semantic commit check warning
* split protocol errors into fatal/nonfatal
* change test stubs to implement capture protocol iface
* attach spec and project metadata to nonfatal error reports
* starting to test error reporting
* properly report fatal errors to artifact endpoint
* more meaningful error reporting
* better error reporting for protocol download + initialization errors
* refactgor protocol stubs for easier instantiation and use
* tests for beforeSpec error state
* fixes api spec tests
* code review comments
* revert import style for routes to appease tscheck
* update snapshots
* fix typedef for ArtifactLike, set error message on beforeSpec stub
* uploading initiation & legit no upload messaging
* report errors
* makes upload reporting uniform across artifact types
* retrieve capture meta from correct cloud endpoint
* moves skipped artifact insertion to more reasonable point
* rm unneccessary paren around Promise.all on upload
* improve zipped filesize determination for protocol uploads, clean up get db signature in protocol manager
* changelog
* add url onto protocol failure report
* rm unused err.cause consts
* ensure artifact PUT server mock resolves in system tests
* extract terminal output logic from upload flow, mask filepaths and filesizes in system tests
* update return shape for postRun when test replay is enabled
* pad beginning of liine for upload reports
* update upload messaging snapshots for record spec
* improve trailing whitespace for artifact upload terminal output
* since we are now waiting for artifact report, must include urls in test assertion
* respect quiet mode
* address correct index of reqs for api reordering specs test
* updates snapshots & adds missing artifacts PUT req for api skips specs not in parallel
* updates tests for skipping specs in parallel
* update snapshot for no upload when video disabled test
* update snapshot for update instance 500
* updates snapshot for postInstanceTests 500
* update instance stdout 500 snapshot update
* improve message format when error on uploading, update snapshots
* snapshot for api retry on error
* update snapshot for sendPreflight system tests
* update snapshots for api interaction private tests limit warning
* update snapshots when over tests limit
* updates snapshots for protocol retrieval, bypass stub verification in test mode
* set gzip header on stubbed capture code server endpoint so client can verify
* accept BROWSER env var to reduce screenshot dimension difference from local to ci
* adds artifacts PUT to manifest for stdout 500 system test
* fixes snapshot browser workaround; updates url manifest for record system tests
* fix whitespace between filesize and path in upload manifest
* manually update snapshots for video_compression
* adds system tests for disabled message from server, file size exceeded
* additional tests, bugfixes
* add logging to determine source of ci error with db files
* ensure protocol tmp dir is created before tests
* rm test env force return of failed sig check on protocol runtime
* code review comments
* fix priority nums on artifact readout
* rm commented code from protocol stub
* fix performance stuff -- run ci
* Update cypress.config.ts
* remove dep, add tests
* clean up
* m does not exist
* vm2 is everywhere
---------
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
* initial commit, a kinda working prototype
* Ready to test in CI
* "SyntaxError: Cannot use import statement outside a module" I blame VS code for always inserting the wrong dependency
* try using built js instead of the ts file
* typescript fixes?
* get version correctly, don't use optional chaining in child process.
* trying this, idk
* try running telemetry for driver-integration-tests-chrome
* fix missing spans, add more attributes for some spans
* fix missing spans and add suite spans
* types
* Remove un-used require
* remove spans for describe blocks in favor of the full title for tests
* migrate to sync resource discovery, start new custom exporters for spans
* encrypted
* localhost
* don't do things on child process
* latest changes
* update server start span time / add v8 snapshot span & update command span names
* prepare for sync
* don't send blank key
* make telemetry work again for sending directly to honeycomb
* web-socket exporter
* Add in IPC exporter and message the child process before disconnecting
* Use the cloud api by default
* move cloud span exporter into telemetry package
* shutdown fixes
* fix enabled
* improve types
* run in ci
* yml is the worst
* type!
* add spans for timing insights for visible areas of improvement
* type errors
* lets try sending data to staging
* types
* types again
* remove problematic attributes
* clean up exporters
* i like this better even though it doesn't seem to matter much
* some self review cleanup
* Update comment
* add debug messages
* mocha tests
* actually exit with the right code... oops
* simple mistake... have to look into how to fix with ts...
* try this i guess
* don't return undefined
* read me diagram
* color?
* no rect
* moar diagram
* docs!
* formatting
* build more binaries
* Supposedly fix cypress in cypress test failures
* test 'fixes'
* try this instead
* do not transpile cypress packages dir
* lets try escaping our regex string
* Add some diagnostics to help test the built binary....
* try a more complex solution
* fix tests probably
* just ignore the specific file
* fix unit tests
* cr updates
* Apply suggestions from code review
Co-authored-by: Matt Schile <mschile@cypress.io>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* Pr updates
* don't change the command queue
* move encoding and decoding telemetry context for ipc to the telemetry package
* build darn it
* plead for mercy from the testing gods, i merely wished to have named test reports, but clearly i have overreached.
* pr updates, send record key
* pr review
* optional chaining fails tests
* Apply suggestions from code review
Co-authored-by: Bill Glesias <bglesias@gmail.com>
* tests for cloud-span-exporter
* bad merge
* adding tests for the remaining exporters
* note
* docs
* Correctly set test under the current run span for component testing
* gate sending the message.
* pr updates
* finally, fingers crossed.
---------
Co-authored-by: Emily Rohrbough <emilyrohrbough@yahoo.com>
Co-authored-by: Matt Schile <mschile@cypress.io>
Co-authored-by: Bill Glesias <bglesias@gmail.com>