Commit Graph

91 Commits

Author SHA1 Message Date
Ryan Manuel ad353fcc0f internal: (studio) add network agent to the studio session call (#31617)
* internal: (studio) add network agent to the studio session call

* Update packages/server/lib/cloud/api/studio/post_studio_session.ts

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

---------

Co-authored-by: Matt Schile <mschile@cypress.io>
2025-04-30 21:25:34 -05:00
Ryan Manuel 602ff2aa77 internal: (studio) when errors occur in development, log them and do not throw and do not send to Sentry (#31614)
* chore: (studio) when errors occur in development, log them and do not throw and do not send to Sentry

* Update packages/server/lib/cloud/api/studio/report_studio_error.ts

* chore: (studio) when errors occur in development, log them and do not throw and do not send to Sentry

* chore: (studio) when errors occur in development, log them and do not throw and do not send to Sentry
2025-04-30 13:56:06 -05:00
Ryan Manuel d435ddaac3 internal: rework studio handshake to allow better caching (#31599)
* feat: (studio) Capture telemetry for studio initialization

* fixes

* revert type changes

* add studio lifecycle manager

* fix studio router

* finish lifecycle manager, add test coverage

* fix types

* fix types for real

* fix types actually

* fix lint

* fix routes spec

* fix lint, add try/catch

* remove work to capture telemetry

* didn't mean to remove this part

* fix types

* remove test for other branch

* feedback

* fix test

* encapsulate more logic into studio lifecycle manager

* feedback

* fix tests

* blank

* feedback

* Update packages/app/src/runner/event-manager.ts

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

* fix lint

* fix hiding runner ui

* update test

* re-work lifecycle manager implementation to not use EventEmitter

* fix listener registration logic

* ensure that studio still loads even when cloud bundle doesn't

* feedback

* feedback

* use getter for isProtocolEnabled, report studio manager initialization errors, remove references for isStudioProtocolEnabled

* clean up listeners when initialization errors

* Update packages/server/lib/StudioLifecycleManager.ts

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

* Update packages/server/lib/StudioLifecycleManager.ts

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

* Update packages/server/lib/StudioLifecycleManager.ts

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

* feedback

* fix: rework studio handshake to allow better caching

* merge conflict

* slight refactor

* update types

* Update packages/server/lib/cloud/api/studio/post_studio_session.ts

* Apply suggestions from code review

* fix test

* PR comment

---------

Co-authored-by: astone123 <adams@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2025-04-30 13:33:02 -05:00
Adam Stone-Lord 2a6e9fbd44 internal: (studio) capture anonymous telemetry for studio initialization (#31555) 2025-04-30 09:18:59 -04:00
Adam Stone-Lord a5ba8c497c internal: (studio) initialize cloud studio asynchronously (#31469)
Co-authored-by: Ryan Manuel <ryanm@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2025-04-29 09:37:44 -04:00
Ryan Manuel 38f980e0c4 internal: (studio) improve error reporting (#31546)
* internal: (studio) improvements to how studio can access the protocol database

* fix

* fix build

* refactor due to downstream changes

* feat: capture errors with studio

* types

* add tests

* fix types

* fix typescript

* strip path

* fix tests
2025-04-23 15:54:30 -05:00
Ryan Manuel ac3bb18dbc internal: (studio) enable studio to access the protocol database with a new connection (#31502)
* internal: (studio) improvements to how studio can access the protocol database

* fix

* fix build

* refactor due to downstream changes

* Update packages/app/src/studio/studio-app-types.ts

* Update packages/server/lib/cloud/studio.ts
2025-04-17 20:32:29 -05:00
Cacie Prins a50012b892 perf: reduce the initial timeout for proxy connections, make configurable (#31283)
* use cached preflight response on subsequent cloud requests that require a preflight

* introduce env var to skip initial proxy-api request

* rename env to CYPRESS_INTERNAL prefix

* change noproxy timeout default to 5 seconds

* fix

* rm internal

* changelog

* Update packages/server/test/unit/cloud/api/api_spec.js

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

* Update packages/server/lib/cloud/api/index.ts

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

* fix ts

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Bill Glesias <bglesias@gmail.com>
2025-04-17 10:00:46 -04:00
Cacie Prins ab98b4940e fix: Back out of axios switchover for the createInstance cloud API request (#31486)
* use old create instance method for proxy support

* changelog

* conform legacy createInstance to the newer signature

* link to proxy env issue as todo

* changelog

* system test snapshots

* fix snap
2025-04-16 14:45:19 -04:00
Matt Schile f62a65fe82 internal: (studio) add socket listeners (#31470) 2025-04-15 11:24:52 -06:00
Jennifer Shehane 6b28356878 chore: convert cache.js file within server to TypeScript (#31471)
* chore: convert cache.js file within server to TypeScript

* update cache calls and await them

* updates to imports and switching cache calls to await

* remove Partial from Allowed State

* change cache calls back to not await

* Remove dead code

* update memo.push return
2025-04-10 15:02:58 -04:00
Ryan Manuel 108eb7ea0d internal: (studio) make the protocol database accessible to studio (#31443)
* internal: (studio) make the protocol database accessible to studio

* PR comment
2025-04-06 15:04:26 -05:00
Ryan Manuel 9201d3280a chore: ensure that studio AI logic is disabled on non chromium based browsers (#31272)
* 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

* chore: ensure that studio llm logic is disabled on non chromium based browsers

* use canAccessStudioLLM in the component

* fix types

* fix types

* fix types

* PR comments

* fix types

* fix types

* revert type stuff

* refactor

* import type

* fix types

---------

Co-authored-by: Matthew Schile <mschile@cypress.io>
Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2025-03-14 14:20:40 -05: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
Cacie Prins bbd7efc0dd refactor: begin to use axios for cloud api requests (#31041)
* patch axios for v8 snapshots

* export httpsAgent and httpAgent discretely

* set up axios interceptors for logging and error response transformation

* use unified error transform fn

* create instance api reqs, timeouts, tests

* move axios middleware to its own dir & refactor

* refactor error handling, enable retries in createInstance

* fix invocation of createInstance - not caught by ts because record.js is js

* retry on 500 - according to system test, this is expected behavior

* resolve snapshots, report retries to stdout

* fix cdp connection usage of shouldRetry due to newly unknown error type

* axios doesnt fully follow RequestOptions shape when adding request to https agent

* note why uri is treated as optional

* hail mary on getting axios to work with v8 snapshots

* update lockfile, force no-rewrite on more axios files

* attempt to fix v8 snapshots

* add verbose debugging to api request logging

* enable verbose api debugging on server unit tests

* fix nock pattern for createInstance

* remove request logging unit test - sinon/mocha does not assert correctly

* fix a few unit tests

* use runAllAsync rather than waiting an arbitrary time for sinon fake timer

* move create_instance spec to ts file, remove redundant test

* rm debug on ci

* clarify comment on change inpackages/network

* correct .uri property on patched RequestOptions to be optional

* rm unused log_requests.ts, DRY error messages

* resolve types with record.ts migration

---------

Co-authored-by: Ryan Manuel <ryanm@cypress.io>
2025-03-10 10:58:09 -04:00
Jennifer Shehane 6bd522bb74 misc: convert server/lib/modes files to ts + add more cli options to Cloud terminal error outputs (#31211)
* chore: convert server/lib/modes files to ts

* update snapshots

* add back require

* fix call to errors.warning

* Add changelog entry.
2025-03-06 12:39:24 -05:00
Ryan Manuel bd4774fb57 chore: pass file preprocesor override to protocol as debug data (#31171)
* chore: set up sharing of react via module federation in studio

* chore: add ability to load types from the studio bundle

* fix build

* fix build

* fix build

* chore: pass file preprocesor override to protocol as debug data

* fix tests

* PR comments

* PR comment

* update types
2025-03-03 12:52:01 -06:00
Jennifer Shehane 43f8c82229 chore: convert some server js files to ts (#31177)
* chore: convert some server js files to ts

* Update packages/server/lib/controllers/spec.ts

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

* Update packages/server/lib/controllers/spec.ts

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

* fix type issues

---------

Co-authored-by: Matt Schile <mschile@cypress.io>
2025-03-03 09:47:03 -05:00
Ryan Manuel ffcc6387ef chore: add ability to load types from the studio bundle (#31153)
* chore: set up sharing of react via module federation in studio

* chore: add ability to load types from the studio bundle

* fix build

* fix build

* fix build

* PR comments

* Update guides/studio-development.md

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

* fix test

---------

Co-authored-by: Matt Schile <mschile@cypress.io>
2025-02-28 16:30:45 -06:00
Cacie Prins 2d80905444 fix: corrects unit calculations in the slow network error message during Test Replay uploads (#31160)
* fix: corrects unit calculations in the slow upload speed error for test replay archive uploads

* changelog
2025-02-25 09:41:12 -05:00
Ryan Manuel 2dce6d5831 chore: add logic to dynamically load studio functionality (#31033)
* chore: add logic to dynamically load new studio functionality

* fix types

* fix tests

* fix

* fix tests

* fix tests

* additional changes to lock things down

* clean up code

* Update guides/studio-development.md

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

* Update protocol-development.md

* additional headers

* PR comments

* Update packages/server/lib/cloud/api/get_app_studio.ts

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

* Update packages/app/vite.config.mjs

* update studio/protocol development guides

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
Co-authored-by: Matt Schile <mschile@cypress.io>
2025-02-14 14:54:15 -06:00
Jennifer Shehane f920dcbd0d chore: enforce 'no-implicit-dependencies' on tslint (#31022)
* chore: enforce 'no-implicit-dependencies' on tslint

* downgrade chalk version for errors package
2025-02-06 17:33:05 -05:00
Cacie Prins 46a473dfaf fix: retry instance creation when the Cloud request fails (#31019)
* fix: retry instance creation when the Cloud request fails

* cleanup defunct branches in circleci workflows.yml

* rm unintentional delta in system test snapshot
2025-02-04 13:31:17 -05:00
Jennifer Shehane a65e7b546b Merge branch 'develop' into release/14.0.0 2024-12-03 12:05:56 -05:00
Cacie Prins 32c7b72c7c fix: failing Create Instance api call no longer skips spec (#30697)
* do not retry instance creation, report that cannot proceed with failed cloud in serial

* update system tests

* changelog

* changelog

* Update cli/CHANGELOG.md

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

* update error language

* snapshots

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2024-12-03 09:52:00 -05:00
Jennifer Shehane 636bed9cf7 merge develop 2024-12-02 09:42:47 -05:00
Ryan Manuel 0975b2f07f feat: update the protocol to be able to flex logic based on project config (#30594)
* feat: update the protocol to be able to flex logic based on project config

* slight refactor

* Update cli/CHANGELOG.md

* Update packages/types/src/protocol.ts

* fix ts
2024-11-13 15:42:11 -06: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
Ryan Manuel 8cff95661a misc: pass spec to beforeSpec to support better reporting on client side protocol errors (#30316)
* feat: pass spec to beforeSpec to support better reporting on client side protocol errors

* Update packages/types/src/protocol.ts

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

* update changelog

---------

Co-authored-by: Matt Schile <mschile@cypress.io>
2024-09-30 16:55:13 -05:00
Cacie Prins 1d845323d4 feat: Improve UX when Test Replay upload fails due to slow upload (#30235)
* new error message for stream stall upload failures

* new unknown error msg, extract printProtocolUploadError for testing, consolidatd args for stream stall msg

* rename env more appropriately, add sampling interval param to putProtocolArtifact

* default to 5000, override with app capture protocol value, override that with env var

* update snapshots

* fix math in upload stall error msg

* changelog

* update gql schema w/ new error msg, fix protocol tscheck

* update test to use fn for app capture supplied interval

* increase default stream stall interval to 10 seconds

* typos

* snapshots

* rename env var

* do not use user-supplied interval if it parses to NaN

* use the more standard makeErr for unknown/uncategorized upload error in visual snapshots

* rearrange upload stall error message

* fix typo

* changelog

---------

Co-authored-by: Jennifer Shehane <jennifer@cypress.io>
2024-09-25 11:39:28 -05:00
Matt Schile 1b1a39e9c2 feat: (protocol) setup protocol with projectId and cloud api (#30066) 2024-08-22 09:45:59 -06:00
Cacie Prins eecaaf72b8 fix: Stream monitor behavior on failed and stalled upload attempts (#29959)
* fix: rethrow stalled network request error correctly

* no longer timeout from stream monitor on failure to start - allow OS to handle

* changelog

* fix system error detection

* fix test for system error throw

* Update cli/CHANGELOG.md

* Update packages/server/test/unit/cloud/network/put_fetch_spec.ts

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

* rm noop try-catch

---------

Co-authored-by: Bill Glesias <bglesias@gmail.com>
2024-08-07 10:05:56 -04:00
Cacie Prins 3c28109185 fix: non-JSON response body display for upload errors (#29801)
* 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>
2024-07-12 14:52:40 -04:00
Cacie Prins 5f2236e6cc fix: do not re-use readstreams when retry an upload of the test replay recording (#29745)
* 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>
2024-07-08 09:30:05 -04:00
Emily Rohrbough 5c3a8dc7fc fix: [protocol] throw error verifying sig (#29603)
* [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>
2024-06-11 14:18:15 -04:00
Cacie Prins cec7a1b098 misc: receive afterSpec durations from app capture code, and report them to the Cloud API (#29500)
* 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>
2024-06-11 13:31:54 -04:00
Cacie Prins b62fc3fdbc fix: no longer use capture script url as default upload url for test replay recordings (#29512)
* fix: no longer attempt to upload to capture script location

* changelog
2024-05-17 11:27:31 -04:00
Cacie Prins fc88764ad5 feat: more informative error messages when Test Replay fails to capture (#29312)
* 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>
2024-05-01 14:32:53 -04:00
Cacie Prins 79a267c7f8 refactor: extract artifact upload process from lib/modes/record.js (#29240)
* 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>
2024-04-12 09:20:54 -04:00
Ryan Manuel 1ae7c9ef42 fix: re-initialize DOM subscriptions from a full snapshot on cdp reconnect (#29210)
* 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>
2024-03-29 17:04:32 -05:00
Cacie Prins 3a739f3f4f perf: improve replay upload resiliency (#29174)
* 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>
2024-03-29 12:22:57 -04:00
Cacie Prins 006faaa3ae chore: additional context on protocol upload network errors (#28986)
* chore: add additional context to messaging when network errors occur in protocol uploads

* reduce total attempts for uploading capture artifacts from 8 to 3
2024-03-06 12:49:16 -05:00
Cacie Prins 7ba92b91e5 misc: persist upload timings to cy cloud (#28418)
* 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>
2023-11-29 15:33:35 -05:00
Ryan Manuel dbd213926c fix: issue with proxy correlations and web/shared workers (#28105) 2023-10-23 22:26:21 -05:00
Jim Hays 34c8b1f884 refactor: Spellcheck (#27964)
Co-authored-by: Matthew Schile <mschile@cypress.io>
2023-10-11 10:06:10 -04:00
Ryan Manuel 078dc0a81e fix: support proxy correlation timeout notifications and additional proxy data (#27976) 2023-10-10 16:19:37 -05:00
Ryan Manuel 311001b7d1 chore: improve logging on retried upload failures (#27847) 2023-09-20 16:23:42 -05:00
Ryan Manuel d8b48211c0 fix: ensure that fatal protocol errors are only limited to the spec they occurred on (#27720) 2023-08-31 11:01:50 -05:00
Ryan Manuel 7072f3c168 fix: make CDP errors non fatal (#27709) 2023-08-30 14:47:11 -05:00
Ryan Manuel af12aa01e0 fix merge 2023-08-25 10:19:35 -05:00