From b81c5a0a8ee82a6c83fa7d12ad62cd4d6f5c5116 Mon Sep 17 00:00:00 2001 From: Bill Glesias Date: Mon, 29 Sep 2025 11:37:07 -0400 Subject: [PATCH] chore: convert tests in `@packages/errors` from `mocha` to `vitest` (#32572) * start vitest convertion and convert errors spec to vitest * chore: convert errTemplate to vitest * convert stripIndent to vitest * convert the visualsnapshoterrors spec to vitest * chore: clean up errors package, update guide, and move snapshots * move tests out of unit test directory as most tests are integration tests * add to esm checklist and update workflow * clean build and rebuild after test due to CI having built files * Chore: fix bad test assertion in error spec * Update guides/esm-migration.md Co-authored-by: Bill Glesias * chore: remove unused FIREFOX_CDP_FAILED_TO_CONNECT error as it is no longer used and likely missed with the CDP removal for Firefox * chore: fix missed imports * remove system test code to check for CDP error in firefox --------- Co-authored-by: Jennifer Shehane --- .circleci/workflows.yml | 2 +- guides/error-handling-accept-snapshot.png | Bin 287519 -> 0 bytes guides/error-handling-snapshot-compare.png | Bin 0 -> 93708 bytes guides/error-handling.md | 29 +- guides/esm-migration.md | 2 +- packages/data-context/schemas/schema.graphql | 1 - packages/errors/.mocharc.js | 11 - .../AUTOMATION_SERVER_DISCONNECTED.html | 38 -- .../__snapshot-html__/BAD_POLICY_WARNING.html | 45 --- .../BAD_POLICY_WARNING_TOOLTIP.html | 38 -- .../__snapshot-html__/BROWSER_CRASHED.html | 48 --- .../BROWSER_NOT_FOUND_BY_NAME - canary.html | 64 --- .../BROWSER_NOT_FOUND_BY_NAME.html | 64 --- .../BROWSER_NOT_FOUND_BY_PATH.html | 44 --- .../BROWSER_PAGE_CLOSED_UNEXPECTEDLY.html | 40 -- .../BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.html | 40 -- .../BROWSER_UNSUPPORTED_LAUNCH_OPTION.html | 40 -- .../__snapshot-html__/BUNDLE_ERROR.html | 51 --- .../CANNOT_CONNECT_BASE_URL.html | 40 -- ..._CONNECT_BASE_URL_RETRYING - retrying.html | 38 -- .../CANNOT_CONNECT_BASE_URL_RETRYING.html | 46 --- .../CANNOT_CONNECT_BASE_URL_WARNING.html | 42 -- .../CANNOT_CREATE_PROJECT_TOKEN.html | 38 -- .../CANNOT_FETCH_PROJECT_TOKEN.html | 38 -- .../CANNOT_RECORD_NO_PROJECT_ID.html | 48 --- .../CANNOT_REMOVE_OLD_BROWSER_PROFILES.html | 44 --- .../CANNOT_TRASH_ASSETS.html | 44 --- .../CDP_COULD_NOT_CONNECT.html | 46 --- .../CDP_COULD_NOT_RECONNECT.html | 42 -- .../CDP_RETRYING_CONNECTION.html | 38 -- .../CDP_VERSION_TOO_OLD - older.html | 38 -- .../CDP_VERSION_TOO_OLD.html | 38 -- ...ROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html | 38 -- .../CHROME_WEB_SECURITY_NOT_SUPPORTED.html | 40 -- .../CLOUD_ALREADY_COMPLETE.html | 47 --- ...PI_RESPONSE_FAILED_RETRYING - lastTry.html | 43 -- .../CLOUD_API_RESPONSE_FAILED_RETRYING.html | 43 -- .../CLOUD_AUTO_CANCEL_MISMATCH.html | 48 --- ...OUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.html | 42 -- .../CLOUD_CANCEL_SKIPPED_SPEC.html | 39 -- .../CLOUD_CANNOT_CONFIRM_ARTIFACTS.html | 44 --- .../CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.html | 44 --- .../CLOUD_CANNOT_PROCEED_IN_PARALLEL.html | 45 --- .../CLOUD_CANNOT_PROCEED_IN_SERIAL.html | 45 --- .../CLOUD_CANNOT_UPLOAD_ARTIFACTS.html | 44 --- .../CLOUD_GRAPHQL_ERROR.html | 41 -- .../CLOUD_INVALID_RUN_REQUEST.html | 55 --- .../CLOUD_PARALLEL_DISALLOWED.html | 47 --- ...OUP_PARAMS_MISMATCH - differentParams.html | 67 ---- .../CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.html | 64 --- .../CLOUD_PARALLEL_REQUIRED.html | 47 --- .../CLOUD_PROJECT_NOT_FOUND.html | 48 --- ...CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.html | 43 -- .../CLOUD_PROTOCOL_CAPTURE_FAILURE.html | 49 --- ...CLOUD_PROTOCOL_INITIALIZATION_FAILURE.html | 44 --- ...AD_AGGREGATE_ERROR - withNetworkError.html | 46 --- ...OAD_AGGREGATE_ERROR - withSystemError.html | 46 --- ...CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.html | 44 --- .../CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.html | 46 --- ...CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.html | 46 --- ..._PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.html | 47 --- .../CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.html | 45 --- .../CLOUD_RECORD_KEY_NOT_VALID.html | 44 --- .../CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.html | 47 --- .../__snapshot-html__/CLOUD_STALE_RUN.html | 47 --- .../CLOUD_UNKNOWN_CREATE_RUN_WARNING.html | 47 --- .../CLOUD_UNKNOWN_INVALID_REQUEST.html | 45 --- ...ONENT_TESTING_MISMATCHED_DEPENDENCIES.html | 43 -- .../CONFIG_FILES_LANGUAGE_CONFLICT.html | 46 --- ...CONFIG_FILE_DEV_SERVER_INVALID_RETURN.html | 47 --- .../CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.html | 56 --- .../CONFIG_FILE_INVALID_ROOT_CONFIG.html | 49 --- ...IG_FILE_INVALID_ROOT_CONFIG_COMPONENT.html | 46 --- .../CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.html | 46 --- ...INVALID_TESTING_TYPE_CONFIG_COMPONENT.html | 46 --- ..._FILE_INVALID_TESTING_TYPE_CONFIG_E2E.html | 46 --- .../CONFIG_FILE_NOT_FOUND.html | 40 -- .../CONFIG_FILE_REQUIRE_ERROR.html | 44 --- ...E_SETUP_NODE_EVENTS_ERROR - component.html | 44 --- .../CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.html | 44 --- .../CONFIG_FILE_UNEXPECTED_ERROR.html | 44 --- ...ONFIG_VALIDATION_ERROR - invalidArray.html | 48 --- ...NFIG_VALIDATION_ERROR - invalidObject.html | 46 --- ...NFIG_VALIDATION_ERROR - invalidString.html | 42 -- .../CONFIG_VALIDATION_ERROR - list.html | 50 --- .../CONFIG_VALIDATION_ERROR - noFileType.html | 42 -- .../CONFIG_VALIDATION_ERROR.html | 42 -- ...FIG_VALIDATION_MSG_ERROR - noFileType.html | 40 -- .../CONFIG_VALIDATION_MSG_ERROR.html | 40 -- .../COULD_NOT_PARSE_ARGUMENTS.html | 42 -- .../DEFAULT_SUPPORT_FILE_NOT_FOUND.html | 42 -- .../DEV_SERVER_CONFIG_FILE_NOT_FOUND.html | 49 --- .../__snapshot-html__/DUPLICATE_TASK_KEY.html | 44 --- .../__snapshot-html__/ERROR_READING_FILE.html | 42 -- .../__snapshot-html__/ERROR_WRITING_FILE.html | 42 -- .../EXPERIMENTAL_JIT_COMPILE_REMOVED.html | 40 -- ...RIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.html | 44 --- .../EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.html | 46 --- ...PERIMENTAL_SESSION_AND_ORIGIN_REMOVED.html | 43 -- .../EXPERIMENTAL_SINGLE_TAB_RUN_MODE.html | 40 -- ...IMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.html | 41 -- .../EXPERIMENTAL_STUDIO_E2E_ONLY.html | 40 -- .../EXTENSION_NOT_LOADED.html | 40 -- .../FIREFOX_CDP_FAILED_TO_CONNECT.html | 38 -- .../FIREFOX_COULD_NOT_CONNECT.html | 44 --- .../FIREFOX_GECKODRIVER_FAILURE.html | 46 --- .../__snapshot-html__/FIXTURE_NOT_FOUND.html | 47 --- .../FOLDER_NOT_WRITABLE.html | 44 --- .../FREE_PLAN_EXCEEDS_MONTHLY_TESTS.html | 42 -- ...IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.html | 44 --- ...PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.html | 42 -- .../INCORRECT_CI_BUILD_ID_USAGE.html | 44 --- .../INDETERMINATE_CI_BUILD_ID.html | 73 ---- .../INJECT_DOCUMENT_DOMAIN_DEPRECATION.html | 41 -- .../INJECT_DOCUMENT_DOMAIN_E2E_ONLY.html | 41 -- .../INVALID_CONFIG_OPTION - plural.html | 44 --- .../INVALID_CONFIG_OPTION.html | 43 -- .../INVALID_CYPRESS_INTERNAL_ENV.html | 40 -- .../INVALID_REPORTER_NAME.html | 49 --- .../INVOKED_BINARY_OUTSIDE_NPM_MODULE.html | 44 --- .../JIT_COMPONENT_TESTING.html | 38 -- .../MULTIPLE_SUPPORT_FILES_FOUND.html | 47 --- .../NO_DEFAULT_CONFIG_FILE_FOUND.html | 38 -- .../NO_PROJECT_FOUND_AT_PROJECT_ROOT.html | 38 -- .../__snapshot-html__/NO_PROJECT_ID.html | 38 -- .../NO_SPECS_FOUND - arrPattern.html | 43 -- .../NO_SPECS_FOUND - noPattern.html | 42 -- .../NO_SPECS_FOUND - pathCommonPattern.html | 43 -- .../NO_SPECS_FOUND - pathNoCommonPattern.html | 42 -- .../__snapshot-html__/NO_SPECS_FOUND.html | 42 -- ...ARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.html | 42 -- .../PLAN_EXCEEDS_MONTHLY_TESTS.html | 42 -- ...RACE_PERIOD_RUN_GROUPING_FEATURE_USED.html | 42 -- .../PLUGINS_RUN_EVENT_ERROR.html | 44 --- .../__snapshot-html__/PORT_IN_USE_LONG.html | 40 -- .../__snapshot-html__/PORT_IN_USE_SHORT.html | 38 -- ..._ID_AND_KEY_BUT_MISSING_RECORD_OPTION.html | 50 --- ...PROXY_ENCOUNTERED_INVALID_HEADER_NAME.html | 47 --- ...ROXY_ENCOUNTERED_INVALID_HEADER_VALUE.html | 47 --- .../RECORDING_FROM_FORK_PR.html | 44 --- .../__snapshot-html__/RECORD_KEY_MISSING.html | 46 --- .../RECORD_PARAMS_WITHOUT_RECORDING.html | 44 --- .../RENAMED_CONFIG_OPTION.html | 40 -- .../__snapshot-html__/RENDERER_CRASHED.html | 51 --- ...ROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.html | 42 -- ..._NODE_EVENTS_INVALID_EVENT_NAME_ERROR.html | 54 --- ...P_NODE_EVENTS_IS_NOT_FUNCTION - array.html | 58 --- ..._NODE_EVENTS_IS_NOT_FUNCTION - string.html | 55 --- .../SETUP_NODE_EVENTS_IS_NOT_FUNCTION.html | 57 --- .../SUPPORT_FILE_NOT_FOUND.html | 46 --- .../TESTING_TYPE_NOT_CONFIGURED.html | 43 -- .../TESTS_DID_NOT_START_FAILED.html | 38 -- ...ID_NOT_START_RETRYING - retryingAgain.html | 38 -- .../TESTS_DID_NOT_START_RETRYING.html | 38 -- ...CTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.html | 48 --- .../UNEXPECTED_INTERNAL_ERROR.html | 44 --- .../UNEXPECTED_MUTATION_ERROR.html | 44 --- .../UNSUPPORTED_BROWSER_VERSION.html | 38 -- .../VIDEO_CAPTURE_FAILED.html | 44 --- .../VIDEO_COMPRESSION_FAILED.html | 44 --- .../VIDEO_RECORDING_FAILED.html | 44 --- .../VIDEO_UPLOAD_ON_PASSES_REMOVED.html | 42 -- .../errors/__snapshots__/errors_spec.ts.js | 4 - packages/errors/eslint.config.ts | 12 +- packages/errors/package.json | 15 +- packages/errors/src/errors.ts | 4 - .../AUTOMATION_SERVER_DISCONNECTED.ansi | 1 + .../__snapshots__/BAD_POLICY_WARNING.ansi | 8 + .../BAD_POLICY_WARNING_TOOLTIP.ansi | 1 + .../test/__snapshots__/BROWSER_CRASHED.ansi | 11 + .../BROWSER_NOT_FOUND_BY_NAME - canary.ansi | 27 ++ .../BROWSER_NOT_FOUND_BY_NAME.ansi | 27 ++ .../BROWSER_NOT_FOUND_BY_PATH.ansi | 7 + .../BROWSER_PAGE_CLOSED_UNEXPECTEDLY.ansi | 3 + .../BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.ansi | 3 + .../BROWSER_UNSUPPORTED_LAUNCH_OPTION.ansi | 3 + .../test/__snapshots__/BUNDLE_ERROR.ansi | 14 + .../CANNOT_CONNECT_BASE_URL.ansi | 3 + ..._CONNECT_BASE_URL_RETRYING - retrying.ansi | 1 + .../CANNOT_CONNECT_BASE_URL_RETRYING.ansi | 9 + .../CANNOT_CONNECT_BASE_URL_WARNING.ansi | 5 + .../CANNOT_CREATE_PROJECT_TOKEN.ansi | 1 + .../CANNOT_FETCH_PROJECT_TOKEN.ansi | 1 + .../CANNOT_RECORD_NO_PROJECT_ID.ansi | 11 + .../CANNOT_REMOVE_OLD_BROWSER_PROFILES.ansi | 7 + .../__snapshots__/CANNOT_TRASH_ASSETS.ansi | 7 + .../__snapshots__/CDP_COULD_NOT_CONNECT.ansi | 9 + .../CDP_COULD_NOT_RECONNECT.ansi | 5 + .../CDP_RETRYING_CONNECTION.ansi | 1 + .../CDP_VERSION_TOO_OLD - older.ansi | 1 + .../__snapshots__/CDP_VERSION_TOO_OLD.ansi | 1 + ...ROME_137_LOAD_EXTENSION_NOT_SUPPORTED.ansi | 1 + .../CHROME_WEB_SECURITY_NOT_SUPPORTED.ansi | 3 + .../__snapshots__/CLOUD_ALREADY_COMPLETE.ansi | 10 + ...PI_RESPONSE_FAILED_RETRYING - lastTry.ansi | 6 + .../CLOUD_API_RESPONSE_FAILED_RETRYING.ansi | 6 + .../CLOUD_AUTO_CANCEL_MISMATCH.ansi | 11 + ...OUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.ansi | 5 + .../CLOUD_CANCEL_SKIPPED_SPEC.ansi | 2 + .../CLOUD_CANNOT_CONFIRM_ARTIFACTS.ansi | 7 + .../CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.ansi | 7 + .../CLOUD_CANNOT_PROCEED_IN_PARALLEL.ansi | 8 + .../CLOUD_CANNOT_PROCEED_IN_SERIAL.ansi | 8 + .../CLOUD_CANNOT_UPLOAD_ARTIFACTS.ansi | 7 + .../__snapshots__/CLOUD_GRAPHQL_ERROR.ansi | 4 + .../CLOUD_INVALID_RUN_REQUEST.ansi | 18 + .../CLOUD_PARALLEL_DISALLOWED.ansi | 10 + ...OUP_PARAMS_MISMATCH - differentParams.ansi | 30 ++ .../CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.ansi | 27 ++ .../CLOUD_PARALLEL_REQUIRED.ansi | 10 + .../CLOUD_PROJECT_NOT_FOUND.ansi | 11 + ...CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.ansi | 6 + .../CLOUD_PROTOCOL_CAPTURE_FAILURE.ansi | 12 + ...CLOUD_PROTOCOL_INITIALIZATION_FAILURE.ansi | 7 + ...OAD_AGGREGATE_ERROR - withSystemError.ansi | 9 + ...CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.ansi | 7 + .../CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.ansi | 9 + ...CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.ansi | 9 + ..._PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.ansi | 10 + .../CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.ansi | 8 + .../CLOUD_RECORD_KEY_NOT_VALID.ansi | 7 + .../CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.ansi | 10 + .../test/__snapshots__/CLOUD_STALE_RUN.ansi | 10 + .../CLOUD_UNKNOWN_CREATE_RUN_WARNING.ansi | 10 + .../CLOUD_UNKNOWN_INVALID_REQUEST.ansi | 8 + ...ONENT_TESTING_MISMATCHED_DEPENDENCIES.ansi | 6 + .../CONFIG_FILES_LANGUAGE_CONFLICT.ansi | 9 + ...CONFIG_FILE_DEV_SERVER_INVALID_RETURN.ansi | 10 + .../CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.ansi | 19 + .../CONFIG_FILE_INVALID_ROOT_CONFIG.ansi | 12 + ...IG_FILE_INVALID_ROOT_CONFIG_COMPONENT.ansi | 9 + .../CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.ansi | 9 + ...INVALID_TESTING_TYPE_CONFIG_COMPONENT.ansi | 9 + ..._FILE_INVALID_TESTING_TYPE_CONFIG_E2E.ansi | 9 + .../__snapshots__/CONFIG_FILE_NOT_FOUND.ansi | 3 + .../CONFIG_FILE_REQUIRE_ERROR.ansi | 7 + ...E_SETUP_NODE_EVENTS_ERROR - component.ansi | 7 + .../CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.ansi | 7 + .../CONFIG_FILE_UNEXPECTED_ERROR.ansi | 7 + ...ONFIG_VALIDATION_ERROR - invalidArray.ansi | 11 + ...NFIG_VALIDATION_ERROR - invalidObject.ansi | 9 + ...NFIG_VALIDATION_ERROR - invalidString.ansi | 5 + .../CONFIG_VALIDATION_ERROR - list.ansi | 13 + .../CONFIG_VALIDATION_ERROR - noFileType.ansi | 5 + .../CONFIG_VALIDATION_ERROR.ansi | 5 + ...FIG_VALIDATION_MSG_ERROR - noFileType.ansi | 3 + .../CONFIG_VALIDATION_MSG_ERROR.ansi | 3 + .../COULD_NOT_PARSE_ARGUMENTS.ansi | 5 + .../DEFAULT_SUPPORT_FILE_NOT_FOUND.ansi | 5 + .../DEV_SERVER_CONFIG_FILE_NOT_FOUND.ansi | 12 + .../__snapshots__/DUPLICATE_TASK_KEY.ansi | 7 + .../__snapshots__/ERROR_READING_FILE.ansi | 5 + .../__snapshots__/ERROR_WRITING_FILE.ansi | 5 + .../EXPERIMENTAL_JIT_COMPILE_REMOVED.ansi | 3 + ...RIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.ansi | 7 + .../EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.ansi | 9 + ...PERIMENTAL_SESSION_AND_ORIGIN_REMOVED.ansi | 6 + .../EXPERIMENTAL_SINGLE_TAB_RUN_MODE.ansi | 3 + ...IMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.ansi | 4 + .../EXPERIMENTAL_STUDIO_E2E_ONLY.ansi | 3 + .../__snapshots__/EXTENSION_NOT_LOADED.ansi | 3 + .../FIREFOX_CDP_FAILED_TO_CONNECT.ansi | 1 + .../FIREFOX_COULD_NOT_CONNECT.ansi | 7 + .../FIREFOX_GECKODRIVER_FAILURE.ansi | 9 + .../test/__snapshots__/FIXTURE_NOT_FOUND.ansi | 10 + .../__snapshots__/FOLDER_NOT_WRITABLE.ansi | 7 + .../FREE_PLAN_EXCEEDS_MONTHLY_TESTS.ansi | 5 + ...IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.ansi | 7 + ...PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.ansi | 5 + .../INCORRECT_CI_BUILD_ID_USAGE.ansi | 7 + .../INDETERMINATE_CI_BUILD_ID.ansi | 36 ++ .../INJECT_DOCUMENT_DOMAIN_DEPRECATION.ansi | 4 + .../INJECT_DOCUMENT_DOMAIN_E2E_ONLY.ansi | 4 + .../INVALID_CONFIG_OPTION - plural.ansi | 7 + .../__snapshots__/INVALID_CONFIG_OPTION.ansi | 6 + .../INVALID_CYPRESS_INTERNAL_ENV.ansi | 3 + .../__snapshots__/INVALID_REPORTER_NAME.ansi | 12 + .../INVOKED_BINARY_OUTSIDE_NPM_MODULE.ansi | 7 + .../__snapshots__/JIT_COMPONENT_TESTING.ansi | 1 + .../MULTIPLE_SUPPORT_FILES_FOUND.ansi | 10 + .../NO_DEFAULT_CONFIG_FILE_FOUND.ansi | 1 + .../NO_PROJECT_FOUND_AT_PROJECT_ROOT.ansi | 1 + .../test/__snapshots__/NO_PROJECT_ID.ansi | 1 + .../NO_SPECS_FOUND - arrPattern.ansi | 6 + .../NO_SPECS_FOUND - noPattern.ansi | 5 + .../NO_SPECS_FOUND - pathCommonPattern.ansi | 6 + .../NO_SPECS_FOUND - pathNoCommonPattern.ansi | 5 + .../test/__snapshots__/NO_SPECS_FOUND.ansi | 5 + ...ARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi | 5 + .../PLAN_EXCEEDS_MONTHLY_TESTS.ansi | 5 + ...RACE_PERIOD_RUN_GROUPING_FEATURE_USED.ansi | 5 + .../PLUGINS_RUN_EVENT_ERROR.ansi | 7 + .../test/__snapshots__/PORT_IN_USE_LONG.ansi | 3 + .../test/__snapshots__/PORT_IN_USE_SHORT.ansi | 1 + ..._ID_AND_KEY_BUT_MISSING_RECORD_OPTION.ansi | 13 + ...PROXY_ENCOUNTERED_INVALID_HEADER_NAME.ansi | 10 + ...ROXY_ENCOUNTERED_INVALID_HEADER_VALUE.ansi | 10 + .../__snapshots__/RECORDING_FROM_FORK_PR.ansi | 7 + .../__snapshots__/RECORD_KEY_MISSING.ansi | 9 + .../RECORD_PARAMS_WITHOUT_RECORDING.ansi | 7 + .../__snapshots__/RENAMED_CONFIG_OPTION.ansi | 3 + .../test/__snapshots__/RENDERER_CRASHED.ansi | 14 + ...ROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi | 5 + ..._NODE_EVENTS_INVALID_EVENT_NAME_ERROR.ansi | 17 + ...P_NODE_EVENTS_IS_NOT_FUNCTION - array.ansi | 21 + ..._NODE_EVENTS_IS_NOT_FUNCTION - string.ansi | 18 + .../SETUP_NODE_EVENTS_IS_NOT_FUNCTION.ansi | 20 + .../__snapshots__/SUPPORT_FILE_NOT_FOUND.ansi | 9 + .../TESTING_TYPE_NOT_CONFIGURED.ansi | 6 + .../TESTS_DID_NOT_START_FAILED.ansi | 1 + ...ID_NOT_START_RETRYING - retryingAgain.ansi | 1 + .../TESTS_DID_NOT_START_RETRYING.ansi | 1 + ...CTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.ansi | 11 + .../UNEXPECTED_INTERNAL_ERROR.ansi | 7 + .../UNEXPECTED_MUTATION_ERROR.ansi | 7 + .../UNSUPPORTED_BROWSER_VERSION.ansi | 1 + .../__snapshots__/VIDEO_CAPTURE_FAILED.ansi | 7 + .../VIDEO_COMPRESSION_FAILED.ansi | 7 + .../__snapshots__/VIDEO_RECORDING_FAILED.ansi | 7 + .../VIDEO_UPLOAD_ON_PASSES_REMOVED.ansi | 5 + ...rrTemplate_spec.ts => errTemplate.spec.ts} | 28 +- .../{unit/errors_spec.ts => errors.spec.ts} | 96 ++--- ...tripIndent_spec.ts => stripIndent.spec.ts} | 8 +- .../test/support/error-comparison-tool.ts | 223 ----------- packages/errors/test/support/utils.ts | 95 ----- ...s_spec.ts => visualSnapshotErrors.spec.ts} | 368 +++++------------- packages/errors/vitest.config.ts | 12 + packages/server/lib/browsers/chrome.ts | 4 +- packages/server/lib/browsers/index.ts | 3 +- packages/server/lib/project-base.ts | 3 +- system-tests/lib/normalizeStdout.ts | 2 - yarn.lock | 2 +- 332 files changed, 1376 insertions(+), 7616 deletions(-) delete mode 100644 guides/error-handling-accept-snapshot.png create mode 100644 guides/error-handling-snapshot-compare.png delete mode 100644 packages/errors/.mocharc.js delete mode 100644 packages/errors/__snapshot-html__/AUTOMATION_SERVER_DISCONNECTED.html delete mode 100644 packages/errors/__snapshot-html__/BAD_POLICY_WARNING.html delete mode 100644 packages/errors/__snapshot-html__/BAD_POLICY_WARNING_TOOLTIP.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_CRASHED.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_PATH.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.html delete mode 100644 packages/errors/__snapshot-html__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.html delete mode 100644 packages/errors/__snapshot-html__/BUNDLE_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_WARNING.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_CREATE_PROJECT_TOKEN.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_FETCH_PROJECT_TOKEN.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_RECORD_NO_PROJECT_ID.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.html delete mode 100644 packages/errors/__snapshot-html__/CANNOT_TRASH_ASSETS.html delete mode 100644 packages/errors/__snapshot-html__/CDP_COULD_NOT_CONNECT.html delete mode 100644 packages/errors/__snapshot-html__/CDP_COULD_NOT_RECONNECT.html delete mode 100644 packages/errors/__snapshot-html__/CDP_RETRYING_CONNECTION.html delete mode 100644 packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD - older.html delete mode 100644 packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD.html delete mode 100644 packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html delete mode 100644 packages/errors/__snapshot-html__/CHROME_WEB_SECURITY_NOT_SUPPORTED.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_ALREADY_COMPLETE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_MISMATCH.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANCEL_SKIPPED_SPEC.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_SERIAL.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_GRAPHQL_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_INVALID_RUN_REQUEST.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PARALLEL_DISALLOWED.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PARALLEL_REQUIRED.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROJECT_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CAPTURE_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withNetworkError.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_RECORD_KEY_NOT_VALID.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_STALE_RUN.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.html delete mode 100644 packages/errors/__snapshot-html__/CLOUD_UNKNOWN_INVALID_REQUEST.html delete mode 100644 packages/errors/__snapshot-html__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILES_LANGUAGE_CONFLICT.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_REQUIRE_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_FILE_UNEXPECTED_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidArray.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidObject.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidString.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - list.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - noFileType.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR - noFileType.html delete mode 100644 packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/COULD_NOT_PARSE_ARGUMENTS.html delete mode 100644 packages/errors/__snapshot-html__/DEFAULT_SUPPORT_FILE_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/DUPLICATE_TASK_KEY.html delete mode 100644 packages/errors/__snapshot-html__/ERROR_READING_FILE.html delete mode 100644 packages/errors/__snapshot-html__/ERROR_WRITING_FILE.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_JIT_COMPILE_REMOVED.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.html delete mode 100644 packages/errors/__snapshot-html__/EXPERIMENTAL_STUDIO_E2E_ONLY.html delete mode 100644 packages/errors/__snapshot-html__/EXTENSION_NOT_LOADED.html delete mode 100644 packages/errors/__snapshot-html__/FIREFOX_CDP_FAILED_TO_CONNECT.html delete mode 100644 packages/errors/__snapshot-html__/FIREFOX_COULD_NOT_CONNECT.html delete mode 100644 packages/errors/__snapshot-html__/FIREFOX_GECKODRIVER_FAILURE.html delete mode 100644 packages/errors/__snapshot-html__/FIXTURE_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/FOLDER_NOT_WRITABLE.html delete mode 100644 packages/errors/__snapshot-html__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.html delete mode 100644 packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.html delete mode 100644 packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.html delete mode 100644 packages/errors/__snapshot-html__/INCORRECT_CI_BUILD_ID_USAGE.html delete mode 100644 packages/errors/__snapshot-html__/INDETERMINATE_CI_BUILD_ID.html delete mode 100644 packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.html delete mode 100644 packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.html delete mode 100644 packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION - plural.html delete mode 100644 packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION.html delete mode 100644 packages/errors/__snapshot-html__/INVALID_CYPRESS_INTERNAL_ENV.html delete mode 100644 packages/errors/__snapshot-html__/INVALID_REPORTER_NAME.html delete mode 100644 packages/errors/__snapshot-html__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.html delete mode 100644 packages/errors/__snapshot-html__/JIT_COMPONENT_TESTING.html delete mode 100644 packages/errors/__snapshot-html__/MULTIPLE_SUPPORT_FILES_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/NO_DEFAULT_CONFIG_FILE_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.html delete mode 100644 packages/errors/__snapshot-html__/NO_PROJECT_ID.html delete mode 100644 packages/errors/__snapshot-html__/NO_SPECS_FOUND - arrPattern.html delete mode 100644 packages/errors/__snapshot-html__/NO_SPECS_FOUND - noPattern.html delete mode 100644 packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathCommonPattern.html delete mode 100644 packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathNoCommonPattern.html delete mode 100644 packages/errors/__snapshot-html__/NO_SPECS_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.html delete mode 100644 packages/errors/__snapshot-html__/PLAN_EXCEEDS_MONTHLY_TESTS.html delete mode 100644 packages/errors/__snapshot-html__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.html delete mode 100644 packages/errors/__snapshot-html__/PLUGINS_RUN_EVENT_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/PORT_IN_USE_LONG.html delete mode 100644 packages/errors/__snapshot-html__/PORT_IN_USE_SHORT.html delete mode 100644 packages/errors/__snapshot-html__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.html delete mode 100644 packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.html delete mode 100644 packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.html delete mode 100644 packages/errors/__snapshot-html__/RECORDING_FROM_FORK_PR.html delete mode 100644 packages/errors/__snapshot-html__/RECORD_KEY_MISSING.html delete mode 100644 packages/errors/__snapshot-html__/RECORD_PARAMS_WITHOUT_RECORDING.html delete mode 100644 packages/errors/__snapshot-html__/RENAMED_CONFIG_OPTION.html delete mode 100644 packages/errors/__snapshot-html__/RENDERER_CRASHED.html delete mode 100644 packages/errors/__snapshot-html__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.html delete mode 100644 packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.html delete mode 100644 packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.html delete mode 100644 packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.html delete mode 100644 packages/errors/__snapshot-html__/SUPPORT_FILE_NOT_FOUND.html delete mode 100644 packages/errors/__snapshot-html__/TESTING_TYPE_NOT_CONFIGURED.html delete mode 100644 packages/errors/__snapshot-html__/TESTS_DID_NOT_START_FAILED.html delete mode 100644 packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING - retryingAgain.html delete mode 100644 packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING.html delete mode 100644 packages/errors/__snapshot-html__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.html delete mode 100644 packages/errors/__snapshot-html__/UNEXPECTED_INTERNAL_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/UNEXPECTED_MUTATION_ERROR.html delete mode 100644 packages/errors/__snapshot-html__/UNSUPPORTED_BROWSER_VERSION.html delete mode 100644 packages/errors/__snapshot-html__/VIDEO_CAPTURE_FAILED.html delete mode 100644 packages/errors/__snapshot-html__/VIDEO_COMPRESSION_FAILED.html delete mode 100644 packages/errors/__snapshot-html__/VIDEO_RECORDING_FAILED.html delete mode 100644 packages/errors/__snapshot-html__/VIDEO_UPLOAD_ON_PASSES_REMOVED.html delete mode 100644 packages/errors/__snapshots__/errors_spec.ts.js create mode 100644 packages/errors/test/__snapshots__/AUTOMATION_SERVER_DISCONNECTED.ansi create mode 100644 packages/errors/test/__snapshots__/BAD_POLICY_WARNING.ansi create mode 100644 packages/errors/test/__snapshots__/BAD_POLICY_WARNING_TOOLTIP.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_CRASHED.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME - canary.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_PATH.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.ansi create mode 100644 packages/errors/test/__snapshots__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.ansi create mode 100644 packages/errors/test/__snapshots__/BUNDLE_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_WARNING.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_CREATE_PROJECT_TOKEN.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_FETCH_PROJECT_TOKEN.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_RECORD_NO_PROJECT_ID.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.ansi create mode 100644 packages/errors/test/__snapshots__/CANNOT_TRASH_ASSETS.ansi create mode 100644 packages/errors/test/__snapshots__/CDP_COULD_NOT_CONNECT.ansi create mode 100644 packages/errors/test/__snapshots__/CDP_COULD_NOT_RECONNECT.ansi create mode 100644 packages/errors/test/__snapshots__/CDP_RETRYING_CONNECTION.ansi create mode 100644 packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD - older.ansi create mode 100644 packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD.ansi create mode 100644 packages/errors/test/__snapshots__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.ansi create mode 100644 packages/errors/test/__snapshots__/CHROME_WEB_SECURITY_NOT_SUPPORTED.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_ALREADY_COMPLETE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_MISMATCH.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANCEL_SKIPPED_SPEC.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_SERIAL.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_GRAPHQL_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_INVALID_RUN_REQUEST.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PARALLEL_DISALLOWED.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PARALLEL_REQUIRED.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROJECT_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CAPTURE_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_RECORD_KEY_NOT_VALID.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_STALE_RUN.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.ansi create mode 100644 packages/errors/test/__snapshots__/CLOUD_UNKNOWN_INVALID_REQUEST.ansi create mode 100644 packages/errors/test/__snapshots__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILES_LANGUAGE_CONFLICT.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_REQUIRE_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_FILE_UNEXPECTED_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidArray.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidObject.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidString.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - list.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - noFileType.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR - noFileType.ansi create mode 100644 packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/COULD_NOT_PARSE_ARGUMENTS.ansi create mode 100644 packages/errors/test/__snapshots__/DEFAULT_SUPPORT_FILE_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/DUPLICATE_TASK_KEY.ansi create mode 100644 packages/errors/test/__snapshots__/ERROR_READING_FILE.ansi create mode 100644 packages/errors/test/__snapshots__/ERROR_WRITING_FILE.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_JIT_COMPILE_REMOVED.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.ansi create mode 100644 packages/errors/test/__snapshots__/EXPERIMENTAL_STUDIO_E2E_ONLY.ansi create mode 100644 packages/errors/test/__snapshots__/EXTENSION_NOT_LOADED.ansi create mode 100644 packages/errors/test/__snapshots__/FIREFOX_CDP_FAILED_TO_CONNECT.ansi create mode 100644 packages/errors/test/__snapshots__/FIREFOX_COULD_NOT_CONNECT.ansi create mode 100644 packages/errors/test/__snapshots__/FIREFOX_GECKODRIVER_FAILURE.ansi create mode 100644 packages/errors/test/__snapshots__/FIXTURE_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/FOLDER_NOT_WRITABLE.ansi create mode 100644 packages/errors/test/__snapshots__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.ansi create mode 100644 packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.ansi create mode 100644 packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.ansi create mode 100644 packages/errors/test/__snapshots__/INCORRECT_CI_BUILD_ID_USAGE.ansi create mode 100644 packages/errors/test/__snapshots__/INDETERMINATE_CI_BUILD_ID.ansi create mode 100644 packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.ansi create mode 100644 packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.ansi create mode 100644 packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION - plural.ansi create mode 100644 packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION.ansi create mode 100644 packages/errors/test/__snapshots__/INVALID_CYPRESS_INTERNAL_ENV.ansi create mode 100644 packages/errors/test/__snapshots__/INVALID_REPORTER_NAME.ansi create mode 100644 packages/errors/test/__snapshots__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.ansi create mode 100644 packages/errors/test/__snapshots__/JIT_COMPONENT_TESTING.ansi create mode 100644 packages/errors/test/__snapshots__/MULTIPLE_SUPPORT_FILES_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/NO_DEFAULT_CONFIG_FILE_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.ansi create mode 100644 packages/errors/test/__snapshots__/NO_PROJECT_ID.ansi create mode 100644 packages/errors/test/__snapshots__/NO_SPECS_FOUND - arrPattern.ansi create mode 100644 packages/errors/test/__snapshots__/NO_SPECS_FOUND - noPattern.ansi create mode 100644 packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathCommonPattern.ansi create mode 100644 packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathNoCommonPattern.ansi create mode 100644 packages/errors/test/__snapshots__/NO_SPECS_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi create mode 100644 packages/errors/test/__snapshots__/PLAN_EXCEEDS_MONTHLY_TESTS.ansi create mode 100644 packages/errors/test/__snapshots__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.ansi create mode 100644 packages/errors/test/__snapshots__/PLUGINS_RUN_EVENT_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/PORT_IN_USE_LONG.ansi create mode 100644 packages/errors/test/__snapshots__/PORT_IN_USE_SHORT.ansi create mode 100644 packages/errors/test/__snapshots__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.ansi create mode 100644 packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.ansi create mode 100644 packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.ansi create mode 100644 packages/errors/test/__snapshots__/RECORDING_FROM_FORK_PR.ansi create mode 100644 packages/errors/test/__snapshots__/RECORD_KEY_MISSING.ansi create mode 100644 packages/errors/test/__snapshots__/RECORD_PARAMS_WITHOUT_RECORDING.ansi create mode 100644 packages/errors/test/__snapshots__/RENAMED_CONFIG_OPTION.ansi create mode 100644 packages/errors/test/__snapshots__/RENDERER_CRASHED.ansi create mode 100644 packages/errors/test/__snapshots__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi create mode 100644 packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.ansi create mode 100644 packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.ansi create mode 100644 packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.ansi create mode 100644 packages/errors/test/__snapshots__/SUPPORT_FILE_NOT_FOUND.ansi create mode 100644 packages/errors/test/__snapshots__/TESTING_TYPE_NOT_CONFIGURED.ansi create mode 100644 packages/errors/test/__snapshots__/TESTS_DID_NOT_START_FAILED.ansi create mode 100644 packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING - retryingAgain.ansi create mode 100644 packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING.ansi create mode 100644 packages/errors/test/__snapshots__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.ansi create mode 100644 packages/errors/test/__snapshots__/UNEXPECTED_INTERNAL_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/UNEXPECTED_MUTATION_ERROR.ansi create mode 100644 packages/errors/test/__snapshots__/UNSUPPORTED_BROWSER_VERSION.ansi create mode 100644 packages/errors/test/__snapshots__/VIDEO_CAPTURE_FAILED.ansi create mode 100644 packages/errors/test/__snapshots__/VIDEO_COMPRESSION_FAILED.ansi create mode 100644 packages/errors/test/__snapshots__/VIDEO_RECORDING_FAILED.ansi create mode 100644 packages/errors/test/__snapshots__/VIDEO_UPLOAD_ON_PASSES_REMOVED.ansi rename packages/errors/test/{unit/errTemplate_spec.ts => errTemplate.spec.ts} (64%) rename packages/errors/test/{unit/errors_spec.ts => errors.spec.ts} (53%) rename packages/errors/test/{unit/stripIndent_spec.ts => stripIndent.spec.ts} (80%) delete mode 100644 packages/errors/test/support/error-comparison-tool.ts delete mode 100644 packages/errors/test/support/utils.ts rename packages/errors/test/{unit/visualSnapshotErrors_spec.ts => visualSnapshotErrors.spec.ts} (75%) create mode 100644 packages/errors/vitest.config.ts diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 2fa72864f8..8b875cf747 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -3486,7 +3486,7 @@ jobs: yarn lerna run types name: Test types - sanitize-verify-and-store-mocha-results: - expectedResultCount: 17 + expectedResultCount: 16 working_directory: ~/cypress v8-integration-tests: environment: diff --git a/guides/error-handling-accept-snapshot.png b/guides/error-handling-accept-snapshot.png deleted file mode 100644 index f3be3fa5f95a7603ef2b8b5f3f4238b9db65644d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287519 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 diff --git a/guides/error-handling-snapshot-compare.png b/guides/error-handling-snapshot-compare.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2c9457b8b8b5296d8ebe44d56e156ec00a8710 GIT binary patch literal 93708 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 + 1. Add (or update) errors in `packages/errors/src/errors.ts` -2. Add test cases to `visualSnapshotErrors_spec.ts` -3. Run `yarn test` in the `packages/errors` directory -4. Run `yarn comparison` in the `packages/errors` directory -5. Open http://localhost:5555/ -6. Search for the error you're working on by the error key. (e.g. `AUTOMATION_SERVER_DISCONNECTED`) -7. Click "Looks Good" if it looks good. -8. To make edits, re-run the `yarn test` command and do a full refresh of the webapp. -9. Run `yarn test` after updating the snapshot to validate the changes were applied. -10. Commit the files changed in `__snapshot-html__` +2. Add test cases to `visualSnapshotErrors.spec.ts`. +3. Run `yarn test` in the `packages/errors` directory. +4. See the `.ansi` file generated/edited for your added test case. The file should be named by the error key. (e.g. `AUTOMATION_SERVER_DISCONNECTED`). +5. click the "Open Preview to the Side" icon in the top right portion of your code editor. +6. Verify the changes expected. +7. To make edits, re-run the `yarn test -u` command. `-u` will update the test snapshots. +8. Run `yarn test` after updating the snapshot to validate the changes were applied. +9. Commit the files changed in `./test/__snapshots__`. ### Technical Overview diff --git a/guides/esm-migration.md b/guides/esm-migration.md index 05e948f80a..d353b2d247 100644 --- a/guides/esm-migration.md +++ b/guides/esm-migration.md @@ -90,7 +90,7 @@ - [ ] packages/data-context - [x] packages/driver ✅ **COMPLETED** - [x] packages/electron ✅ **COMPLETED** -- [ ] packages/error +- [x] packages/error ✅ **COMPLETED** - [ ] packages/extension - [ ] packages/https-proxy - [x] packages/electron ✅ **COMPLETED** diff --git a/packages/data-context/schemas/schema.graphql b/packages/data-context/schemas/schema.graphql index ecb460e3bd..ee9151e4fe 100644 --- a/packages/data-context/schemas/schema.graphql +++ b/packages/data-context/schemas/schema.graphql @@ -1188,7 +1188,6 @@ enum ErrorTypeEnum { EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED EXPERIMENTAL_STUDIO_E2E_ONLY EXTENSION_NOT_LOADED - FIREFOX_CDP_FAILED_TO_CONNECT FIREFOX_COULD_NOT_CONNECT FIREFOX_GECKODRIVER_FAILURE FIXTURE_NOT_FOUND diff --git a/packages/errors/.mocharc.js b/packages/errors/.mocharc.js deleted file mode 100644 index a1506f6625..0000000000 --- a/packages/errors/.mocharc.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - spec: 'test/unit/*.ts', - require: '@packages/ts/register', - recursive: true, - extension: ['ts'], - reporter: 'mocha-multi-reporters', - reporterOptions: { - configFile: '../../mocha-reporter-config.json', - }, - exit: true, -} diff --git a/packages/errors/__snapshot-html__/AUTOMATION_SERVER_DISCONNECTED.html b/packages/errors/__snapshot-html__/AUTOMATION_SERVER_DISCONNECTED.html deleted file mode 100644 index 170d59baca..0000000000 --- a/packages/errors/__snapshot-html__/AUTOMATION_SERVER_DISCONNECTED.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
The automation client disconnected. Cannot continue running tests.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BAD_POLICY_WARNING.html b/packages/errors/__snapshot-html__/BAD_POLICY_WARNING.html deleted file mode 100644 index 617575adb0..0000000000 --- a/packages/errors/__snapshot-html__/BAD_POLICY_WARNING.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - -
Cypress detected policy settings on your computer that may cause issues.
-
-The following policies were detected that may prevent Cypress from automating Chrome:
-
- - HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ProxyServer
- - HKEY_CURRENT_USER\Software\Policies\Google\Chromium\ExtensionSettings
-
-For more information, see https://on.cypress.io/bad-browser-policy
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BAD_POLICY_WARNING_TOOLTIP.html b/packages/errors/__snapshot-html__/BAD_POLICY_WARNING_TOOLTIP.html deleted file mode 100644 index a0c6acb190..0000000000 --- a/packages/errors/__snapshot-html__/BAD_POLICY_WARNING_TOOLTIP.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Cypress detected policy settings on your computer that may cause issues with using this browser. For more information, see https://on.cypress.io/bad-browser-policy
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_CRASHED.html b/packages/errors/__snapshot-html__/BROWSER_CRASHED.html deleted file mode 100644 index 7d1d2394d6..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_CRASHED.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
We detected that the Chrome process just crashed with code 'code' and signal 'signal'.
-
-We have failed the current spec but will continue running the next spec.
-
-This can happen for many different reasons:
-
-- You wrote an endless loop and you must fix your own code
-- You are running lots of tests on a memory intense application
-- You are running in a memory starved VM environment
-- There are problems with your GPU / GPU drivers
-- There are browser bugs
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html b/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html deleted file mode 100644 index 8fc4dce047..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - -
Can't run because you've entered an invalid browser name.
-
-Browser: canary was not found on your system or is not supported by Cypress.
-
-Cypress supports the following browsers:
- - electron
- - chrome
- - chromium
- - chrome-for-testing
- - edge
- - firefox
-
-You can also use a custom browser: https://on.cypress.io/customize-browsers
-
-Available browsers found on your system are:
- - chrome
- - chrome:beta
- - chrome:canary
- - chrome-for-testing
- - chromium
- - firefox
- - firefox:dev
- - firefox:nightly
- - edge
- - edge:beta
- - edge:canary
- - edge:dev
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html b/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html deleted file mode 100644 index 2ee1cd1ce6..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - -
Can't run because you've entered an invalid browser name.
-
-Browser: invalid-browser was not found on your system or is not supported by Cypress.
-
-Cypress supports the following browsers:
- - electron
- - chrome
- - chromium
- - chrome-for-testing
- - edge
- - firefox
-
-You can also use a custom browser: https://on.cypress.io/customize-browsers
-
-Available browsers found on your system are:
- - chrome
- - chrome:beta
- - chrome:canary
- - chrome-for-testing
- - chromium
- - firefox
- - firefox:dev
- - firefox:nightly
- - edge
- - edge:beta
- - edge:canary
- - edge:dev
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_PATH.html b/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_PATH.html deleted file mode 100644 index c6c0b962e0..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_PATH.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
We could not identify a known browser at the path you provided: /path/does/not/exist
-
-Read more about how to troubleshoot launching browsers: https://on.cypress.io/troubleshooting-launching-browsers
-
-The output from the command we ran was:
-
-fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.html b/packages/errors/__snapshot-html__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.html deleted file mode 100644 index c7f1e71af8..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
We detected that the chrome tab running Cypress tests closed unexpectedly.
-
-We have failed the current spec and aborted the run.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.html b/packages/errors/__snapshot-html__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.html deleted file mode 100644 index 5ac27b0e06..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
We detected that the chrome browser process closed unexpectedly.
-
-We have failed the current spec and aborted the run.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.html b/packages/errors/__snapshot-html__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.html deleted file mode 100644 index 99ec4e5464..0000000000 --- a/packages/errors/__snapshot-html__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Warning: The following browser launch options were provided but are not supported by electron
-
- - env
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/BUNDLE_ERROR.html b/packages/errors/__snapshot-html__/BUNDLE_ERROR.html deleted file mode 100644 index e64518f7a9..0000000000 --- a/packages/errors/__snapshot-html__/BUNDLE_ERROR.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - -
Oops...we found an error preparing this test file:
-
-  > /path/to/file
-
-The error was:
-
-fail whale
-
-This occurred while Cypress was compiling and bundling your test code. This is usually caused by:
-
-- A missing file or dependency
-- A syntax error in the file or one of its dependencies
-
-Fix the error in your code and re-run your tests.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL.html b/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL.html deleted file mode 100644 index 2708c07753..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Cypress failed to verify that your server is running.
-
-Please start this server and then run Cypress again.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.html b/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.html deleted file mode 100644 index d0d57752b8..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
We will try connecting to it 60 more times...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING.html b/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING.html deleted file mode 100644 index ce25c081ad..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_RETRYING.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Cypress could not verify that this server is running:
-
-  > http://localhost:3000
-
-We are verifying this server because it has been configured as your baseUrl.
-
-Cypress automatically waits until your server is accessible before running tests.
-
-We will try connecting to it 60 more times...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_WARNING.html b/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_WARNING.html deleted file mode 100644 index 555dfe4a14..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_CONNECT_BASE_URL_WARNING.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Cypress could not verify that this server is running:
-
-  > http://localhost:3000
-
-This server has been configured as your baseUrl, and tests will likely fail if it is not running.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_CREATE_PROJECT_TOKEN.html b/packages/errors/__snapshot-html__/CANNOT_CREATE_PROJECT_TOKEN.html deleted file mode 100644 index 59fd388581..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_CREATE_PROJECT_TOKEN.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Can't create project's secret key.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_FETCH_PROJECT_TOKEN.html b/packages/errors/__snapshot-html__/CANNOT_FETCH_PROJECT_TOKEN.html deleted file mode 100644 index c4df34380c..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_FETCH_PROJECT_TOKEN.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Can't find project's secret key.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_RECORD_NO_PROJECT_ID.html b/packages/errors/__snapshot-html__/CANNOT_RECORD_NO_PROJECT_ID.html deleted file mode 100644 index b41d0bb115..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_RECORD_NO_PROJECT_ID.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
You passed the --record flag but this project has not been setup to record.
-
-This project is missing the projectId inside of: /path/to/cypress.config.js
-
-We cannot uniquely identify this project without this id.
-
-You need to setup this project to record. This will generate a unique projectId.
-
-Alternatively if you omit the --record flag this project will run without recording.
-
-https://on.cypress.io/recording-project-runs
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.html b/packages/errors/__snapshot-html__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.html deleted file mode 100644 index 8beb31f7cf..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We failed to remove old browser profiles from previous runs.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CANNOT_REMOVE_OLD_BROWSER_PROFILES (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CANNOT_TRASH_ASSETS.html b/packages/errors/__snapshot-html__/CANNOT_TRASH_ASSETS.html deleted file mode 100644 index 6f2d58c304..0000000000 --- a/packages/errors/__snapshot-html__/CANNOT_TRASH_ASSETS.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We failed to trash the existing run results.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CANNOT_TRASH_ASSETS (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CDP_COULD_NOT_CONNECT.html b/packages/errors/__snapshot-html__/CDP_COULD_NOT_CONNECT.html deleted file mode 100644 index 8cf89fe130..0000000000 --- a/packages/errors/__snapshot-html__/CDP_COULD_NOT_CONNECT.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Cypress failed to make a connection to the Chrome DevTools Protocol after retrying for 50 seconds.
-
-This usually indicates there was a problem opening the Chrome browser.
-
-The CDP port requested was 2345.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CDP_COULD_NOT_CONNECT (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CDP_COULD_NOT_RECONNECT.html b/packages/errors/__snapshot-html__/CDP_COULD_NOT_RECONNECT.html deleted file mode 100644 index d43f466e18..0000000000 --- a/packages/errors/__snapshot-html__/CDP_COULD_NOT_RECONNECT.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
There was an error reconnecting to the Chrome DevTools protocol. Please restart the browser.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CDP_COULD_NOT_RECONNECT (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CDP_RETRYING_CONNECTION.html b/packages/errors/__snapshot-html__/CDP_RETRYING_CONNECTION.html deleted file mode 100644 index da6e47b6aa..0000000000 --- a/packages/errors/__snapshot-html__/CDP_RETRYING_CONNECTION.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Still waiting to connect to Chrome, retrying in 1 second (attempt 1/62)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD - older.html b/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD - older.html deleted file mode 100644 index 401ca5b3a6..0000000000 --- a/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD - older.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
A minimum CDP version of 1.3 is required, but the current browser has an older version.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD.html b/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD.html deleted file mode 100644 index b2f35a65c7..0000000000 --- a/packages/errors/__snapshot-html__/CDP_VERSION_TOO_OLD.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
A minimum CDP version of 1.3 is required, but the current browser has 1.2.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html b/packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html deleted file mode 100644 index daa57bd90a..0000000000 --- a/packages/errors/__snapshot-html__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Google Chrome v137 and higher does not allow loading extensions via --load-extension. If you need to load an extension to test with Cypress, please use Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CHROME_WEB_SECURITY_NOT_SUPPORTED.html b/packages/errors/__snapshot-html__/CHROME_WEB_SECURITY_NOT_SUPPORTED.html deleted file mode 100644 index 7d0a2e73f9..0000000000 --- a/packages/errors/__snapshot-html__/CHROME_WEB_SECURITY_NOT_SUPPORTED.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Your project has set the configuration option: `chromeWebSecurity` to `false`.
-
-This option will not have an effect in Firefox. Tests that rely on web security being disabled will not run as expected.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_ALREADY_COMPLETE.html b/packages/errors/__snapshot-html__/CLOUD_ALREADY_COMPLETE.html deleted file mode 100644 index 0d684dcab1..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_ALREADY_COMPLETE.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
The run you are attempting to access is already complete and will not accept new groups.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-When a run finishes all of its groups, it waits for a configurable set of time before finally completing. You must add more groups during that time period.
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-
-https://on.cypress.io/already-complete
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.html b/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.html deleted file mode 100644 index c93032f73e..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected error communicating with our servers.
-
-StatusCodeError: 500 - "Internal Server Error"
-
-We will retry 1 more time in 5 seconds...
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING.html b/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING.html deleted file mode 100644 index a8acc2a35f..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_API_RESPONSE_FAILED_RETRYING.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected error communicating with our servers.
-
-StatusCodeError: 500 - "Internal Server Error"
-
-We will retry 3 more times in 5 seconds...
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_MISMATCH.html b/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_MISMATCH.html deleted file mode 100644 index 687c1b550f..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_MISMATCH.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
You passed the --auto-cancel-after-failures flag, but this run originally started with a different value for the --auto-cancel-after-failures flag.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-The --auto-cancel-after-failures flag you passed was: 3
-
-The first setting of --auto-cancel-after-failures for any given run takes precedent.
-
-https://on.cypress.io/auto-cancellation-mismatch
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.html b/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.html deleted file mode 100644 index 8f45a1d468..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Auto Cancellation is not included under your current billing plan.
-
-To enable this service, please visit your billing and upgrade to another plan with Auto Cancellation.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANCEL_SKIPPED_SPEC.html b/packages/errors/__snapshot-html__/CLOUD_CANCEL_SKIPPED_SPEC.html deleted file mode 100644 index 6d454e3c40..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANCEL_SKIPPED_SPEC.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - -

-  This spec and its tests were skipped because the run has been canceled.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.html b/packages/errors/__snapshot-html__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.html deleted file mode 100644 index 6d2107cb9f..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error while confirming the upload of artifacts for this spec.
-
-These results will not display artifacts.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.html b/packages/errors/__snapshot-html__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.html deleted file mode 100644 index e5cabd1708..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error communicating with our servers.
-
-This run will proceed, but will not be recorded.
-
-This error will not affect or change the exit code.
-
-StatusCodeError: 500 - "Internal Server Error"
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.html b/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.html deleted file mode 100644 index b37ece750e..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected error communicating with our servers.
-
-StatusCodeError: 500 - "Internal Server Error"
-
-Because you passed the --parallel flag, this run cannot proceed since it requires a valid response from our servers.
-
-The --group flag you passed was: foo
-The --ciBuildId flag you passed was: invalid
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_SERIAL.html b/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_SERIAL.html deleted file mode 100644 index ffd39bc25e..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANNOT_PROCEED_IN_SERIAL.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected error communicating with our servers.
-
-StatusCodeError: 500 - "Internal Server Error"
-
-Because you passed the --record flag, this run cannot proceed since it requires a valid response from our servers.
-
-The --group flag you passed was: foo
-The --ciBuildId flag you passed was: invalid
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.html b/packages/errors/__snapshot-html__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.html deleted file mode 100644 index e8d2ceec9e..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error while uploading screenshots & videos from your run.
-
-These results will not be recorded.
-
-This error will not affect or change the exit code.
-
-StatusCodeError: 500 - "Internal Server Error"
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_GRAPHQL_ERROR.html b/packages/errors/__snapshot-html__/CLOUD_GRAPHQL_ERROR.html deleted file mode 100644 index 880966d79f..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_GRAPHQL_ERROR.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
We received an unexpected error response from the request to Cypress Cloud:
-
-"fail whale"
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_INVALID_RUN_REQUEST.html b/packages/errors/__snapshot-html__/CLOUD_INVALID_RUN_REQUEST.html deleted file mode 100644 index f4e85bab90..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_INVALID_RUN_REQUEST.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - -
Recording this run failed. The request was invalid.
-
-Request Validation Error
-
-Errors:
-
-[
-  "data.commit has additional properties",
-  "data.ci.buildNumber is required"
-]
-
-Request Sent:
-
-{
-  "foo": "foo",
-  "bar": "bar",
-  "baz": "baz"
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_DISALLOWED.html b/packages/errors/__snapshot-html__/CLOUD_PARALLEL_DISALLOWED.html deleted file mode 100644 index 362276da3b..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_DISALLOWED.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
You passed the --parallel flag, but this run group was originally created without the --parallel flag.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-
-You can not use the --parallel flag with this group.
-
-https://on.cypress.io/parallel-disallowed
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.html b/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.html deleted file mode 100644 index 26e6dbf56c..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - -
You passed the --parallel flag, but we do not parallelize tests across different environments.
-
-This machine is sending different environment parameters than the first machine that started this parallel run.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-In order to run in parallel mode each machine must send identical environment parameters such as:
-
- - specs
- - osName
- - osVersion
- - browserName
- - browserVersion (major)
-
-This machine sent the following parameters:
-
-{
-  "osName": "darwin",
-  "osVersion": "v1",
-  "browserName": "Electron.... (Expected: Electron)",
-  "browserVersion": "59.1.2.3.... (Expected: 64)",
-  "differentSpecs": {
-    "added": [
-      "cypress/integration/foo_spec.js"
-    ],
-    "missing": []
-  }
-}
-
-https://on.cypress.io/parallel-group-params-mismatch
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.html b/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.html deleted file mode 100644 index ccd0d1276b..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - -
You passed the --parallel flag, but we do not parallelize tests across different environments.
-
-This machine is sending different environment parameters than the first machine that started this parallel run.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-In order to run in parallel mode each machine must send identical environment parameters such as:
-
- - specs
- - osName
- - osVersion
- - browserName
- - browserVersion (major)
-
-This machine sent the following parameters:
-
-{
-  "osName": "darwin",
-  "osVersion": "v1",
-  "browserName": "Electron",
-  "browserVersion": "59.1.2.3",
-  "specs": [
-    "cypress/integration/app_spec.js"
-  ]
-}
-
-https://on.cypress.io/parallel-group-params-mismatch
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_REQUIRED.html b/packages/errors/__snapshot-html__/CLOUD_PARALLEL_REQUIRED.html deleted file mode 100644 index 0c89f5b8d4..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PARALLEL_REQUIRED.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
You did not pass the --parallel flag, but this run's group was originally created with the --parallel flag.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-
-You must use the --parallel flag with this group.
-
-https://on.cypress.io/parallel-required
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROJECT_NOT_FOUND.html b/packages/errors/__snapshot-html__/CLOUD_PROJECT_NOT_FOUND.html deleted file mode 100644 index dd4b50111f..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROJECT_NOT_FOUND.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
We could not find a Cypress Cloud project with the projectId: project-id-123
-
-This projectId came from your /path/to/cypress.config.js file or an environment variable.
-
-Please log into Cypress Cloud and find your project.
-
-We will list the correct projectId in the 'Settings' tab.
-
-Alternatively, you can create a new project directly from within the Cypress app.
-
-https://on.cypress.io/cloud
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.html deleted file mode 100644 index 361046abc4..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
Warning: We are unable to upload the Test Replay recording of this spec due to a missing or invalid upload URL.
-
-These results will not display Test Replay recordings.
-
-This error will not affect or change the exit code.
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CAPTURE_FAILURE.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CAPTURE_FAILURE.html deleted file mode 100644 index 3c72df4cb0..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_CAPTURE_FAILURE.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error while recording Test Replay data for this spec.
-
-These results will not display Test Replay recordings.
-
-This can happen for many reasons. If this problem persists:
-
-- Try increasing the available disk space.
-- Ensure that /os/tmpdir/cypress/protocol is both readable and writable.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.html deleted file mode 100644 index b7b137d78b..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error while initializing the Test Replay recording for this spec.
-
-These results will not display Test Replay recordings.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withNetworkError.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withNetworkError.html deleted file mode 100644 index 56e65f16b0..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withNetworkError.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered multiple errors while uploading the Test Replay recording for this spec.
-
-We attempted to upload the Test Replay recording 3 times.
-
-Some or all of the errors encountered are system-level network errors. Please verify your network configuration for connecting to http://some/url
-
-http://some/url: ECONNRESET
-fail whale
-fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.html deleted file mode 100644 index 56e65f16b0..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered multiple errors while uploading the Test Replay recording for this spec.
-
-We attempted to upload the Test Replay recording 3 times.
-
-Some or all of the errors encountered are system-level network errors. Please verify your network configuration for connecting to http://some/url
-
-http://some/url: ECONNRESET
-fail whale
-fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.html deleted file mode 100644 index 4f628f44af..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered multiple errors while uploading the Test Replay recording for this spec.
-
-We attempted to upload the Test Replay recording 3 times.
-
-fail whale
-fail whale
-fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.html deleted file mode 100644 index f0a94a7dfb..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an HTTP error while uploading the Test Replay recording for this spec.
-
-These results will not display Test Replay recordings.
-
-This error will not affect or change the exit code.
-
-https://some/url responded with HTTP 500: Internal Server Error
-
-{ status: 500, reason: 'unknown'}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.html deleted file mode 100644 index 25caca183d..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered a network error while uploading the Test Replay recording for this spec.
-
-Please verify your network configuration for accessing https://some/url
-
-These results will not display Test Replay recordings.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.html deleted file mode 100644 index e90fe847b7..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered slow network conditions while uploading the Test Replay recording for this spec.
-
-The upload transfer rate fell below 6.4kbps over a sampling period of 10 seconds.
-
-To prevent long CI execution durations, this Test Replay recording will not be uploaded.
-
-The results for this spec will not display Test Replay recordings.
-
-If this error occurs often, the sampling period may be configured by setting the CYPRESS_TEST_REPLAY_UPLOAD_SAMPLING_INTERVAL environment variable to a higher value than 10000.
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.html b/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.html deleted file mode 100644 index 6620d0f838..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - -
Warning: We encountered an error while uploading the Test Replay recording of this spec.
-
-These results will not display Test Replay recordings.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_RECORD_KEY_NOT_VALID.html b/packages/errors/__snapshot-html__/CLOUD_RECORD_KEY_NOT_VALID.html deleted file mode 100644 index f55be52511..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_RECORD_KEY_NOT_VALID.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Your Record Key record-key-123 is not valid with this projectId: project-id-123
-
-It may have been recently revoked by you or another user.
-
-Please log into Cypress Cloud to see the valid Record Keys.
-
-https://on.cypress.io/dashboard/projects/project-id-123
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.html b/packages/errors/__snapshot-html__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.html deleted file mode 100644 index eddadd7ac7..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
You passed the --group flag, but this group name has already been used for this run.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-
-If you are trying to parallelize this run, then also pass the --parallel flag, else pass a different group name.
-
-https://on.cypress.io/run-group-name-not-unique
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_STALE_RUN.html b/packages/errors/__snapshot-html__/CLOUD_STALE_RUN.html deleted file mode 100644 index 6899d2e18a..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_STALE_RUN.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
You are attempting to pass the --parallel flag to a run that was completed over 24 hours ago.
-
-The existing run is: https://cloud.cypress.io/project/abcd/runs/1
-
-You cannot parallelize a run that has been complete for that long.
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: true
-
-https://on.cypress.io/stale-run
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.html b/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.html deleted file mode 100644 index e1caf03e6c..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
Warning from Cypress Cloud: You are almost out of time
-
-Details:
-
-{
-  "code": "OUT_OF_TIME",
-  "name": "OutOfTime",
-  "hadTime": 1000,
-  "spentTime": 999
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_INVALID_REQUEST.html b/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_INVALID_REQUEST.html deleted file mode 100644 index 4a8f63595d..0000000000 --- a/packages/errors/__snapshot-html__/CLOUD_UNKNOWN_INVALID_REQUEST.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected error communicating with our servers.
-
-StatusCodeError: 500 - "Internal Server Error"
-
-There is likely something wrong with the request.
-
-The --group flag you passed was: foo
-The --ciBuildId flag you passed was: invalid
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.html b/packages/errors/__snapshot-html__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.html deleted file mode 100644 index 324726a465..0000000000 --- a/packages/errors/__snapshot-html__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
We detected that you have versions of dependencies that are not officially supported:
-
- - `vite`. Expected ^=2.0.0 || ^=3.0.0 || ^=4.0.0 || ^=5.0.0, found 1.0.0.
-
-If you're experiencing problems, ensure your dependencies are on a supported version and restart Cypress.
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILES_LANGUAGE_CONFLICT.html b/packages/errors/__snapshot-html__/CONFIG_FILES_LANGUAGE_CONFLICT.html deleted file mode 100644 index bdc6a273dd..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILES_LANGUAGE_CONFLICT.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Could not load a Cypress configuration file because there are multiple matches.
-
-We've found 3 Cypress configuration files named
-cypress.config.js, cypress.config.ts, cypress.config.mjs at the location below:
-
-  > /path/to/project/root
-
-Please delete the conflicting configuration files.
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.html b/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.html deleted file mode 100644 index 0852e83723..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
The returned value of the devServer function is not valid.
-
-The returned value must be an object with a port property of the dev-server that is running.
-
-Instead, we saw:
-
-{}
-
-Learn more: https://on.cypress.io/dev-server
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.html b/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.html deleted file mode 100644 index 736a2910eb..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - -
Your configFile is invalid: /path/to/config.ts
-
-The component.devServer must be an object with a supported framework and bundler.
-
-{
-  component: {
-    devServer: {
-      framework: 'react', // Your framework
-      bundler: 'webpack' // Your dev server
-    }
-  }
-}
-
-Instead, we saw:
-
-{}
-
-Learn more: https://on.cypress.io/dev-server
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG.html b/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG.html deleted file mode 100644 index e4fd80194d..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - -
The specPattern configuration option is invalid when set from the root of the config object.
-
-Set it within a testing type property: e2e.specPattern and component.specPattern
-
-{
-  e2e: {
-    specPattern: '...',
-  },
-  component: {
-    specPattern: '...',
-  },
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.html b/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.html deleted file mode 100644 index 05a70bb0cd..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
The indexHtmlFile configuration option is invalid when set from the root of the config object.
-
-Set it within a testing type property: component.indexHtmlFile
-
-{
-  component: {
-    indexHtmlFile: '...',
-  }
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.html b/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.html deleted file mode 100644 index 376eb5f580..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
The baseUrl configuration option is invalid when set from the root of the config object.
-
-Set it within a testing type property: e2e.baseUrl
-
-{
-  e2e: {
-    baseUrl: '...',
-  }
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.html b/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.html deleted file mode 100644 index 13fd6906b4..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
The component.baseUrl configuration option is not valid for component testing.
-
-Please remove this option or add this as an e2e testing type property: e2e.baseUrl
-
-{
-  e2e: {
-    baseUrl: '...',
-  }
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.html b/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.html deleted file mode 100644 index 7878f398fc..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
The e2e.indexHtmlFile configuration option is not valid for e2e testing.
-
-Please remove this option or add this as a component testing type property: component.indexHtmlFile
-
-{
-  e2e: {
-    indexHtmlFile: '...',
-  }
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_NOT_FOUND.html b/packages/errors/__snapshot-html__/CONFIG_FILE_NOT_FOUND.html deleted file mode 100644 index fae8c30497..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_NOT_FOUND.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Could not find a Cypress configuration file.
-
-We looked but did not find a cypress.config.js file in this folder: /path/to/project/root
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_REQUIRE_ERROR.html b/packages/errors/__snapshot-html__/CONFIG_FILE_REQUIRE_ERROR.html deleted file mode 100644 index b5c70d1767..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_REQUIRE_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Your configFile is invalid: /path/to/cypress.config.js
-
-It threw an error when required, check the stack trace below:
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CONFIG_FILE_REQUIRE_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.html b/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.html deleted file mode 100644 index bd9ea07ad5..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Your configFile threw an error from: /path/to/cypress.config.js
-
-The error was thrown while executing your component.setupNodeEvents() function:
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CONFIG_FILE_SETUP_NODE_EVENTS_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.html b/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.html deleted file mode 100644 index 216fefd7db..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Your configFile threw an error from: /path/to/cypress.config.js
-
-The error was thrown while executing your e2e.setupNodeEvents() function:
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CONFIG_FILE_SETUP_NODE_EVENTS_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_FILE_UNEXPECTED_ERROR.html b/packages/errors/__snapshot-html__/CONFIG_FILE_UNEXPECTED_ERROR.html deleted file mode 100644 index 3b8eb00825..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_FILE_UNEXPECTED_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Your configFile threw an error from: /path/to/cypress.config.js
-
-We stopped running your tests because your config file crashed.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at CONFIG_FILE_UNEXPECTED_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidArray.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidArray.html deleted file mode 100644 index 80078cd1b6..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidArray.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
Your configFile at cypress.config.js set an invalid value:
-
-Expected defaultCommandTimeout to be a number.
-
-Instead the value was: 
-
-[
-  1,
-  2,
-  3
-]
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidObject.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidObject.html deleted file mode 100644 index 7bc565be88..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidObject.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Your configFile at cypress.config.js set an invalid value:
-
-Expected defaultCommandTimeout to be a number.
-
-Instead the value was: 
-
-{
-  "foo": "bar"
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidString.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidString.html deleted file mode 100644 index 683e42e090..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - invalidString.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Your configFile at cypress.config.js set an invalid value:
-
-Expected defaultCommandTimeout to be a number.
-
-Instead the value was: "1234"
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - list.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - list.html deleted file mode 100644 index 5f9ae2353e..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - list.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - -
Your configFile at cypress.config.js set an invalid value:
-
-The error occurred while validating the browsers list.
-
-Expected displayName to be a non-empty string.
-
-Instead the value was: 
-
-{
-  "name": "chrome",
-  "version": "1.2.3",
-  "displayName": null
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - noFileType.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - noFileType.html deleted file mode 100644 index 534dff554f..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR - noFileType.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
An invalid configuration value was set.
-
-Expected defaultCommandTimeout to be a number.
-
-Instead the value was: false
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR.html deleted file mode 100644 index bffbd09b96..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_ERROR.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Your configFile at cypress.config.js set an invalid value:
-
-Expected defaultCommandTimeout to be a number.
-
-Instead the value was: false
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR - noFileType.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR - noFileType.html deleted file mode 100644 index 686eace28b..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR - noFileType.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
An invalid configuration value was set:
-
-`something` was not right
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR.html b/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR.html deleted file mode 100644 index 6fce3bfc58..0000000000 --- a/packages/errors/__snapshot-html__/CONFIG_VALIDATION_MSG_ERROR.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Your configFile as cypress.config.js set an invalid value:
-
-`something` was not right
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/COULD_NOT_PARSE_ARGUMENTS.html b/packages/errors/__snapshot-html__/COULD_NOT_PARSE_ARGUMENTS.html deleted file mode 100644 index 38ab9bc38c..0000000000 --- a/packages/errors/__snapshot-html__/COULD_NOT_PARSE_ARGUMENTS.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Cypress encountered an error while parsing the argument: --spec
-
-You passed: 1
-
-The error was: spec must be a string or comma-separated list
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/DEFAULT_SUPPORT_FILE_NOT_FOUND.html b/packages/errors/__snapshot-html__/DEFAULT_SUPPORT_FILE_NOT_FOUND.html deleted file mode 100644 index 0e104e36b8..0000000000 --- a/packages/errors/__snapshot-html__/DEFAULT_SUPPORT_FILE_NOT_FOUND.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Your project does not contain a default supportFile. We expect a file matching /path/to/supportFile/**/*.{js,jsx,ts,tsx} to exist.
-
-If a support file is not necessary for your project, set supportFile to false.
-
-https://on.cypress.io/support-file-missing-or-invalid
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.html b/packages/errors/__snapshot-html__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.html deleted file mode 100644 index c1be73f2b2..0000000000 --- a/packages/errors/__snapshot-html__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - -
You are using vite for your dev server, but a configuration file was not found. We traversed upwards from:
-
-/dev/project
-
-looking for a file named:
-
- - vite.config.js
- - vite.config.ts
-
-Add your vite config at one of the above paths, or import your configuration file and provide it to
-the devServer config as a viteConfig option.
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/DUPLICATE_TASK_KEY.html b/packages/errors/__snapshot-html__/DUPLICATE_TASK_KEY.html deleted file mode 100644 index b06b8fa527..0000000000 --- a/packages/errors/__snapshot-html__/DUPLICATE_TASK_KEY.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: Multiple attempts to register the following task(s):
-
- - foo
- - bar
- - baz
-
-Only the last attempt will be registered.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/ERROR_READING_FILE.html b/packages/errors/__snapshot-html__/ERROR_READING_FILE.html deleted file mode 100644 index e31d0f8c08..0000000000 --- a/packages/errors/__snapshot-html__/ERROR_READING_FILE.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Error reading from: /path/to/read/file.ts
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at ERROR_READING_FILE (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/ERROR_WRITING_FILE.html b/packages/errors/__snapshot-html__/ERROR_WRITING_FILE.html deleted file mode 100644 index 7d7a875f1c..0000000000 --- a/packages/errors/__snapshot-html__/ERROR_WRITING_FILE.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Error writing to: /path/to/write/file.ts
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at ERROR_WRITING_FILE (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_JIT_COMPILE_REMOVED.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_JIT_COMPILE_REMOVED.html deleted file mode 100644 index 0b9be6897f..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_JIT_COMPILE_REMOVED.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
The experimentalJustInTimeCompile configuration option was removed in Cypress version 14.0.0.
-A new justInTimeCompile configuration option is available and is now true by default.
-You can safely remove this option from your config.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.html deleted file mode 100644 index f364a229d2..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
The experimentalOriginDependencies experiment is currently only supported for End to End Testing and must be configured as an e2e testing type property: e2e.experimentalOriginDependencies.
-
-{
-  e2e: {
-    experimentalOriginDependencies: true
-  },
-}
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.html deleted file mode 100644 index c1d7c4806c..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
The experimentalRunAllSpecs experiment is currently only supported for End to End Testing and must be configured as an e2e testing type property: e2e.experimentalRunAllSpecs.
-
-{
-  e2e: {
-    experimentalRunAllSpecs: true
-  },
-}
-
-If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/run-all-specs
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.html deleted file mode 100644 index d05af7d3fd..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
The experimentalSessionAndOrigin configuration option was removed in Cypress version 12.0.0.
-
-You can safely remove this option from your config.
-
-https://on.cypress.io/session
-https://on.cypress.io/origin
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.html deleted file mode 100644 index 406c55199f..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
The experimentalSingleTabRunMode experiment is currently only supported for Component Testing.
-
-If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/single-tab-run-mode
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.html deleted file mode 100644 index 4dc9b65d2f..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
The experimentalSkipDomainInjection experiment is over. document.domain injection is now off by default.
-
-Read the migration guide for Cypress v14.0.0: https://on.cypress.io/migration-guide
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXPERIMENTAL_STUDIO_E2E_ONLY.html b/packages/errors/__snapshot-html__/EXPERIMENTAL_STUDIO_E2E_ONLY.html deleted file mode 100644 index 597643b3e3..0000000000 --- a/packages/errors/__snapshot-html__/EXPERIMENTAL_STUDIO_E2E_ONLY.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
The experimentalStudio experiment is currently only supported for End to End Testing.
-
-If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/studio-beta
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/EXTENSION_NOT_LOADED.html b/packages/errors/__snapshot-html__/EXTENSION_NOT_LOADED.html deleted file mode 100644 index 2ab036e3f0..0000000000 --- a/packages/errors/__snapshot-html__/EXTENSION_NOT_LOADED.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Electron could not install the extension at path: /path/to/extension
-
-Please verify that this is the path to a valid, unpacked WebExtension.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FIREFOX_CDP_FAILED_TO_CONNECT.html b/packages/errors/__snapshot-html__/FIREFOX_CDP_FAILED_TO_CONNECT.html deleted file mode 100644 index 319c7ee737..0000000000 --- a/packages/errors/__snapshot-html__/FIREFOX_CDP_FAILED_TO_CONNECT.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Failed to spawn CDP with Firefox. Retrying...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FIREFOX_COULD_NOT_CONNECT.html b/packages/errors/__snapshot-html__/FIREFOX_COULD_NOT_CONNECT.html deleted file mode 100644 index 3eea972eca..0000000000 --- a/packages/errors/__snapshot-html__/FIREFOX_COULD_NOT_CONNECT.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Cypress failed to make a connection to Firefox.
-
-This usually indicates there was a problem opening the Firefox browser.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at FIREFOX_COULD_NOT_CONNECT (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FIREFOX_GECKODRIVER_FAILURE.html b/packages/errors/__snapshot-html__/FIREFOX_GECKODRIVER_FAILURE.html deleted file mode 100644 index 737b241eee..0000000000 --- a/packages/errors/__snapshot-html__/FIREFOX_GECKODRIVER_FAILURE.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Cypress could not connect to Firefox.
-
-An unexpected error was received from GeckoDriver: connection
-
-To avoid this error, ensure that there are no other instances of Firefox launched by Cypress running.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at FIREFOX_GECKODRIVER_FAILURE (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FIXTURE_NOT_FOUND.html b/packages/errors/__snapshot-html__/FIXTURE_NOT_FOUND.html deleted file mode 100644 index 76c7820e7d..0000000000 --- a/packages/errors/__snapshot-html__/FIXTURE_NOT_FOUND.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
A fixture file could not be found at any of the following paths:
-
-    > file
-    > file.[ext]
-
-Cypress looked for these file extensions at the provided path:
-
-    > js, ts, json
-
-Provide a path to an existing fixture file.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FOLDER_NOT_WRITABLE.html b/packages/errors/__snapshot-html__/FOLDER_NOT_WRITABLE.html deleted file mode 100644 index b76f5c1849..0000000000 --- a/packages/errors/__snapshot-html__/FOLDER_NOT_WRITABLE.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
This folder is not writable: /path/to/folder
-
-Writing to this directory is required by Cypress in order to store screenshots and videos.
-
-Enable write permissions to this directory to ensure screenshots and videos are stored.
-
-If you don't require screenshots or videos to be stored you can safely ignore this warning.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.html b/packages/errors/__snapshot-html__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.html deleted file mode 100644 index d2d1d79117..0000000000 --- a/packages/errors/__snapshot-html__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
You've exceeded the limit of test results under your free plan this month. The limit is 500 test results.
-
-To continue recording tests this month you must upgrade your account. Please visit your billing to upgrade to another billing plan.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.html b/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.html deleted file mode 100644 index 4fab940d27..0000000000 --- a/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
You've exceeded the limit of test results under your free plan this month. The limit is 500 test results.
-
-Your plan is now in a grace period, which means you will have the full benefits of your current plan until Feb 1, 2022.
-
-Please visit your billing to upgrade your plan.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.html b/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.html deleted file mode 100644 index 16acdd16cf..0000000000 --- a/packages/errors/__snapshot-html__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Parallelization is not included under your free plan.
-
-Your plan is now in a grace period, which means your tests will still run in parallel until Feb 1, 2022. Please upgrade your plan to continue running your tests in parallel in the future.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INCORRECT_CI_BUILD_ID_USAGE.html b/packages/errors/__snapshot-html__/INCORRECT_CI_BUILD_ID_USAGE.html deleted file mode 100644 index 1cf399ad14..0000000000 --- a/packages/errors/__snapshot-html__/INCORRECT_CI_BUILD_ID_USAGE.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
You passed the --ci-build-id flag but did not provide either a --group or --parallel flag.
-
-The --ci-build-id flag you passed was: ciBuildId123
-
-The --ci-build-id flag is used to either group or parallelize multiple runs together.
-
-https://on.cypress.io/incorrect-ci-build-id-usage
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INDETERMINATE_CI_BUILD_ID.html b/packages/errors/__snapshot-html__/INDETERMINATE_CI_BUILD_ID.html deleted file mode 100644 index c7ebc54515..0000000000 --- a/packages/errors/__snapshot-html__/INDETERMINATE_CI_BUILD_ID.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - -
You passed the --group or --parallel flag but we could not automatically determine or generate a ciBuildId.
-
-The --group flag you passed was: foo
-The --parallel flag you passed was: false
-
-In order to use either of these features a ciBuildId must be determined.
-
-The ciBuildId is automatically detected if you are running Cypress in any of the these CI providers:
-
- - appveyor
- - azure
- - awsCodeBuild
- - bamboo
- - bitbucket
- - buildkite
- - circle
- - codeshipBasic
- - codeshipPro
- - concourse
- - codeFresh
- - drone
- - githubActions
- - gitlab
- - goCD
- - googleCloud
- - jenkins
- - semaphore
- - shippable
- - teamfoundation
- - travis
- - netlify
- - webappio
-
-Because the ciBuildId could not be auto-detected you must pass the --ci-build-id flag manually.
-
-https://on.cypress.io/indeterminate-ci-build-id
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.html b/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.html deleted file mode 100644 index 3c79bfcbd1..0000000000 --- a/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
The injectDocumentDomain option is deprecated. Interactions with intra-test navigations to differing hostnames must now be wrapped in cy.origin commands, even if the hostname is a subdomain. This configuration option will be removed in a future version of Cypress.
-
-Read the documentation for the injectDocumentDomain configuration option: https://on.cypress.io/inject-document-domain-configuration
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.html b/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.html deleted file mode 100644 index bd00e0b8ef..0000000000 --- a/packages/errors/__snapshot-html__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - -
The injectDocumentDomain option is only available for E2E testing.
-
-Read the documentation for the injectDocumentDomain configuration option: https://on.cypress.io/inject-document-domain-configuration
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION - plural.html b/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION - plural.html deleted file mode 100644 index 56233ce585..0000000000 --- a/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION - plural.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
The following configuration options are invalid:
-
- - foo
- - bar
-
-https://on.cypress.io/configuration
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION.html b/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION.html deleted file mode 100644 index ae37189fd5..0000000000 --- a/packages/errors/__snapshot-html__/INVALID_CONFIG_OPTION.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
The following configuration option is invalid:
-
- - foo
-
-https://on.cypress.io/configuration
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INVALID_CYPRESS_INTERNAL_ENV.html b/packages/errors/__snapshot-html__/INVALID_CYPRESS_INTERNAL_ENV.html deleted file mode 100644 index 10693665d8..0000000000 --- a/packages/errors/__snapshot-html__/INVALID_CYPRESS_INTERNAL_ENV.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
We have detected an unknown or unsupported CYPRESS_INTERNAL_ENV value: foo
-
-CYPRESS_INTERNAL_ENV is reserved for internal use and cannot be modified.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INVALID_REPORTER_NAME.html b/packages/errors/__snapshot-html__/INVALID_REPORTER_NAME.html deleted file mode 100644 index bfc4e59030..0000000000 --- a/packages/errors/__snapshot-html__/INVALID_REPORTER_NAME.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - -
Error loading the reporter: missing-reporter-name
-
-We searched for the reporter in these paths:
-
- - /path/to/reporter
- - /path/reporter
-
-Learn more at https://on.cypress.io/reporters
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at INVALID_REPORTER_NAME (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.html b/packages/errors/__snapshot-html__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.html deleted file mode 100644 index 5246b25817..0000000000 --- a/packages/errors/__snapshot-html__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
It looks like you are running the Cypress binary directly.
-
-This is not the recommended approach, and Cypress may not work correctly.
-
-Please install the cypress NPM package and follow the instructions here:
-
-https://on.cypress.io/installing-cypress
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/JIT_COMPONENT_TESTING.html b/packages/errors/__snapshot-html__/JIT_COMPONENT_TESTING.html deleted file mode 100644 index d503011487..0000000000 --- a/packages/errors/__snapshot-html__/JIT_COMPONENT_TESTING.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
The justInTimeCompile configuration is only supported for Component Testing.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/MULTIPLE_SUPPORT_FILES_FOUND.html b/packages/errors/__snapshot-html__/MULTIPLE_SUPPORT_FILES_FOUND.html deleted file mode 100644 index b7457c8587..0000000000 --- a/packages/errors/__snapshot-html__/MULTIPLE_SUPPORT_FILES_FOUND.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
There were multiple support files found matching your supportFile pattern.
-
-Your supportFile is set to: spec.{ts,js}
-
-We found the following files:
-
- - support.ts
- - support.js
-
-Please remove or combine the support files into a single file.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_DEFAULT_CONFIG_FILE_FOUND.html b/packages/errors/__snapshot-html__/NO_DEFAULT_CONFIG_FILE_FOUND.html deleted file mode 100644 index 227513bc98..0000000000 --- a/packages/errors/__snapshot-html__/NO_DEFAULT_CONFIG_FILE_FOUND.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Could not find a Cypress configuration file in this folder: /path/to/project/root
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.html b/packages/errors/__snapshot-html__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.html deleted file mode 100644 index 8b241e509d..0000000000 --- a/packages/errors/__snapshot-html__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Can't find a project at the path: /path/to/project
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_PROJECT_ID.html b/packages/errors/__snapshot-html__/NO_PROJECT_ID.html deleted file mode 100644 index cd58b21179..0000000000 --- a/packages/errors/__snapshot-html__/NO_PROJECT_ID.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Can't find projectId in the config file: /path/to/project/cypress.config.js
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - arrPattern.html b/packages/errors/__snapshot-html__/NO_SPECS_FOUND - arrPattern.html deleted file mode 100644 index 60f4f7f475..0000000000 --- a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - arrPattern.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
Can't run because no spec files were found.
-
-We searched for specs matching these glob patterns:
-
-  > /path/to/project/root/**_spec.js
-  > /path/to/project/root/**/*.cy.*
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - noPattern.html b/packages/errors/__snapshot-html__/NO_SPECS_FOUND - noPattern.html deleted file mode 100644 index fe44677039..0000000000 --- a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - noPattern.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Can't run because no spec files were found.
-
-We searched for specs inside of this folder:
-
-  > /path/to/project/root
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathCommonPattern.html b/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathCommonPattern.html deleted file mode 100644 index b2d4c57aaf..0000000000 --- a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathCommonPattern.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
Can't run because no spec files were found.
-
-We searched for specs matching these glob patterns:
-
-  > /path/to/project/**_spec.js
-  > /path/to/project/**/*.cy.*
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathNoCommonPattern.html b/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathNoCommonPattern.html deleted file mode 100644 index c582cafae9..0000000000 --- a/packages/errors/__snapshot-html__/NO_SPECS_FOUND - pathNoCommonPattern.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Can't run because no spec files were found.
-
-We searched for specs matching this glob pattern:
-
-  > /foo/*_spec.js
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/NO_SPECS_FOUND.html b/packages/errors/__snapshot-html__/NO_SPECS_FOUND.html deleted file mode 100644 index f343852031..0000000000 --- a/packages/errors/__snapshot-html__/NO_SPECS_FOUND.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Can't run because no spec files were found.
-
-We searched for specs matching this glob pattern:
-
-  > /path/to/project/root/**_spec.js
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.html b/packages/errors/__snapshot-html__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.html deleted file mode 100644 index 1cb817fc1d..0000000000 --- a/packages/errors/__snapshot-html__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Parallelization is not included under your current billing plan.
-
-To run your tests in parallel, please visit your billing and upgrade to another plan with parallelization.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PLAN_EXCEEDS_MONTHLY_TESTS.html b/packages/errors/__snapshot-html__/PLAN_EXCEEDS_MONTHLY_TESTS.html deleted file mode 100644 index 15297714de..0000000000 --- a/packages/errors/__snapshot-html__/PLAN_EXCEEDS_MONTHLY_TESTS.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
You've exceeded the limit of test results under your Sprout billing plan this month. The limit is 25000 test results.
-
-To continue getting the full benefits of your current plan, please visit your billing to upgrade.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.html b/packages/errors/__snapshot-html__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.html deleted file mode 100644 index 9887d81054..0000000000 --- a/packages/errors/__snapshot-html__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Grouping is not included under your free plan.
-
-Your plan is now in a grace period, which means your tests will still run with groups until Feb 1, 2022. Please upgrade your plan to continue running your tests with groups in the future.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PLUGINS_RUN_EVENT_ERROR.html b/packages/errors/__snapshot-html__/PLUGINS_RUN_EVENT_ERROR.html deleted file mode 100644 index 6d55ed6b05..0000000000 --- a/packages/errors/__snapshot-html__/PLUGINS_RUN_EVENT_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
An error was thrown in your plugins file while executing the handler for the before:spec event.
-
-The error we received was:
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at PLUGINS_RUN_EVENT_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PORT_IN_USE_LONG.html b/packages/errors/__snapshot-html__/PORT_IN_USE_LONG.html deleted file mode 100644 index 8a43571d3f..0000000000 --- a/packages/errors/__snapshot-html__/PORT_IN_USE_LONG.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
Can't run project because port is currently in use: 2020
-
-Assign a different port with the --port <port> argument or shut down the other running process.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PORT_IN_USE_SHORT.html b/packages/errors/__snapshot-html__/PORT_IN_USE_SHORT.html deleted file mode 100644 index d5bf44ec55..0000000000 --- a/packages/errors/__snapshot-html__/PORT_IN_USE_SHORT.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Port 2020 is already in use.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.html b/packages/errors/__snapshot-html__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.html deleted file mode 100644 index 69e69dfd68..0000000000 --- a/packages/errors/__snapshot-html__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - -
This project has been configured to record runs on our Cypress Cloud.
-
-It currently has the projectId: project-id-123
-
-You also provided your Record Key, but you did not pass the --record flag.
-
-This run will not be recorded.
-
-If you meant to have this run recorded please additionally pass this flag:
-
-  $ cypress run --record
-
-https://on.cypress.io/recording-project-runs
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.html b/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.html deleted file mode 100644 index ae96f6d249..0000000000 --- a/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
Warning: While proxying a GET request to http://localhost:8080, an HTTP header did not pass validation, and was removed. This header will not be present in the response received by the application under test.
-
-Invalid header name: 
-
-{
-  "invalidHeaderName": "Value"
-}
-
-Error: fail whale
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.html b/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.html deleted file mode 100644 index 5ff625dd5b..0000000000 --- a/packages/errors/__snapshot-html__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - -
Warning: While proxying a GET request to http://localhost:8080, an HTTP header value did not pass validation, and was removed. This header will not be present in the response received by the application under test.
-
-Invalid header value: 
-
-{
-  "invalidHeaderValue": "Value"
-}
-
-Error: fail whale
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RECORDING_FROM_FORK_PR.html b/packages/errors/__snapshot-html__/RECORDING_FROM_FORK_PR.html deleted file mode 100644 index 57ad8f4c20..0000000000 --- a/packages/errors/__snapshot-html__/RECORDING_FROM_FORK_PR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: It looks like you are trying to record this run from a forked PR.
-
-The Record Key is missing. Your CI provider is likely not passing private environment variables to builds from forks.
-
-These results will not be recorded.
-
-This error will not affect or change the exit code.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RECORD_KEY_MISSING.html b/packages/errors/__snapshot-html__/RECORD_KEY_MISSING.html deleted file mode 100644 index b72f6fb5c6..0000000000 --- a/packages/errors/__snapshot-html__/RECORD_KEY_MISSING.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
You passed the --record flag but did not provide us your Record Key.
-
-You can pass us your Record Key like this:
-
-  $ cypress run --record --key <record_key>
-
-You can also set the key as an environment variable with the name: CYPRESS_RECORD_KEY
-
-https://on.cypress.io/how-do-i-record-runs
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RECORD_PARAMS_WITHOUT_RECORDING.html b/packages/errors/__snapshot-html__/RECORD_PARAMS_WITHOUT_RECORDING.html deleted file mode 100644 index dfa2b68f97..0000000000 --- a/packages/errors/__snapshot-html__/RECORD_PARAMS_WITHOUT_RECORDING.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
You passed the --ci-build-id, --group, --tag, --parallel, or --auto-cancel-after-failures flag without also passing the --record flag.
-
-The --parallel flag you passed was: true
-
-These flags can only be used when recording to Cypress Cloud.
-
-https://on.cypress.io/record-params-without-recording
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RENAMED_CONFIG_OPTION.html b/packages/errors/__snapshot-html__/RENAMED_CONFIG_OPTION.html deleted file mode 100644 index 79d90cf30b..0000000000 --- a/packages/errors/__snapshot-html__/RENAMED_CONFIG_OPTION.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - -
The oldName configuration option you have supplied has been renamed.
-
-Please rename oldName to newName
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RENDERER_CRASHED.html b/packages/errors/__snapshot-html__/RENDERER_CRASHED.html deleted file mode 100644 index ad4daa2bfd..0000000000 --- a/packages/errors/__snapshot-html__/RENDERER_CRASHED.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - - - -
We detected that the Electron Renderer process just crashed.
-
-We have failed the current spec but will continue running the next spec.
-
-This can happen for a number of different reasons.
-
-If you're running lots of tests on a memory intense application.
-  - Try increasing the CPU/memory on the machine you're running on.
-  - Try enabling experimentalMemoryManagement in your config file.
-  - Try lowering numTestsKeptInMemory in your config file during 'cypress open'.
-
-You can learn more here:
-
-https://on.cypress.io/renderer-process-crashed
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.html b/packages/errors/__snapshot-html__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.html deleted file mode 100644 index 230f7a2cfa..0000000000 --- a/packages/errors/__snapshot-html__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
Grouping is not included under your current billing plan.
-
-To run your tests with groups, please visit your billing and upgrade to another plan with grouping.
-
-https://on.cypress.io/set-up-billing
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.html b/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.html deleted file mode 100644 index 26b36df02f..0000000000 --- a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - -
Your configFile threw a validation error from: /path/to/cypress.config.js
-
-You must pass a valid event name when registering a plugin.
-
-You passed: invalid:event
-
-The following are valid events:
-
- - foo
- - bar
- - baz
-
-Learn more at https://on.cypress.io/writing-a-plugin#config
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.html b/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.html deleted file mode 100644 index 3238c7d913..0000000000 --- a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - -
Your configFile is invalid: /path/to/cypress.config.js
-
-The component.setupNodeEvents() function must be defined with the following signature:
-
-{
-  component: {
-    setupNodeEvents(on, config) {
-      // configure tasks and plugins here
-    }
-  }
-}
-
-Instead we saw:
-
-[
-  "some",
-  "array"
-]
-
-https://on.cypress.io/plugins-api
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.html b/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.html deleted file mode 100644 index 3ee76bf23e..0000000000 --- a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - -
Your configFile is invalid: /path/to/cypress.config.js
-
-The component.setupNodeEvents() function must be defined with the following signature:
-
-{
-  component: {
-    setupNodeEvents(on, config) {
-      // configure tasks and plugins here
-    }
-  }
-}
-
-Instead we saw:
-
-"some string"
-
-https://on.cypress.io/plugins-api
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.html b/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.html deleted file mode 100644 index 3f66cb084e..0000000000 --- a/packages/errors/__snapshot-html__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - -
Your configFile is invalid: /path/to/cypress.config.js
-
-The e2e.setupNodeEvents() function must be defined with the following signature:
-
-{
-  e2e: {
-    setupNodeEvents(on, config) {
-      // configure tasks and plugins here
-    }
-  }
-}
-
-Instead we saw:
-
-{
-  "some": "object"
-}
-
-https://on.cypress.io/plugins-api
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/SUPPORT_FILE_NOT_FOUND.html b/packages/errors/__snapshot-html__/SUPPORT_FILE_NOT_FOUND.html deleted file mode 100644 index 02c2275606..0000000000 --- a/packages/errors/__snapshot-html__/SUPPORT_FILE_NOT_FOUND.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - -
Your supportFile is missing or invalid: /path/to/supportFile
-
-The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured).
-
-Fix your support file, or set supportFile to false if a support file is not necessary for your project.
-
-If you have just renamed the extension of your supportFile, restart Cypress.
-
-https://on.cypress.io/support-file-missing-or-invalid
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/TESTING_TYPE_NOT_CONFIGURED.html b/packages/errors/__snapshot-html__/TESTING_TYPE_NOT_CONFIGURED.html deleted file mode 100644 index 0cbe6e32cc..0000000000 --- a/packages/errors/__snapshot-html__/TESTING_TYPE_NOT_CONFIGURED.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
The testing type selected (component) is not configured in your config file.
-
-Please run ‘cypress open’ and choose your testing type to automatically update your configuration file.
-
-https://on.cypress.io/configuration
-
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_FAILED.html b/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_FAILED.html deleted file mode 100644 index a1e6589e55..0000000000 --- a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_FAILED.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
The browser never connected. Something is wrong. The tests cannot run. Aborting...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING - retryingAgain.html b/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING - retryingAgain.html deleted file mode 100644 index 8b0610392d..0000000000 --- a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING - retryingAgain.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Timed out waiting for the browser to connect. Retrying again...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING.html b/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING.html deleted file mode 100644 index 87a1d43abd..0000000000 --- a/packages/errors/__snapshot-html__/TESTS_DID_NOT_START_RETRYING.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Timed out waiting for the browser to connect. Retrying...
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.html b/packages/errors/__snapshot-html__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.html deleted file mode 100644 index 9d870a82c6..0000000000 --- a/packages/errors/__snapshot-html__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - -
The launchOptions object returned by your plugin's before:browser:launch handler contained unexpected properties:
-
- - baz
-
-launchOptions may only contain the properties:
-
- - preferences
- - extensions
- - args
-
-https://on.cypress.io/browser-launch-api
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/UNEXPECTED_INTERNAL_ERROR.html b/packages/errors/__snapshot-html__/UNEXPECTED_INTERNAL_ERROR.html deleted file mode 100644 index 58a0474b02..0000000000 --- a/packages/errors/__snapshot-html__/UNEXPECTED_INTERNAL_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
We encountered an unexpected internal error.
-
-Please check GitHub or open a new issue if you don't see one already with the details below:
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at UNEXPECTED_INTERNAL_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/UNEXPECTED_MUTATION_ERROR.html b/packages/errors/__snapshot-html__/UNEXPECTED_MUTATION_ERROR.html deleted file mode 100644 index 12352b1eb2..0000000000 --- a/packages/errors/__snapshot-html__/UNEXPECTED_MUTATION_ERROR.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
An unexpected internal error occurred while executing the wizardUpdate operation with payload:
-
-{}
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at UNEXPECTED_MUTATION_ERROR (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/UNSUPPORTED_BROWSER_VERSION.html b/packages/errors/__snapshot-html__/UNSUPPORTED_BROWSER_VERSION.html deleted file mode 100644 index fd88bc7d47..0000000000 --- a/packages/errors/__snapshot-html__/UNSUPPORTED_BROWSER_VERSION.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - -
Cypress does not support running chrome version 64. To use chrome with Cypress, install a version of chrome newer than or equal to 64.
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/VIDEO_CAPTURE_FAILED.html b/packages/errors/__snapshot-html__/VIDEO_CAPTURE_FAILED.html deleted file mode 100644 index dc8c80bf8d..0000000000 --- a/packages/errors/__snapshot-html__/VIDEO_CAPTURE_FAILED.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We failed capturing this video.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at VIDEO_CAPTURE_FAILED (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/VIDEO_COMPRESSION_FAILED.html b/packages/errors/__snapshot-html__/VIDEO_COMPRESSION_FAILED.html deleted file mode 100644 index 343b4fa4c4..0000000000 --- a/packages/errors/__snapshot-html__/VIDEO_COMPRESSION_FAILED.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We failed compressing this video.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at VIDEO_COMPRESSION_FAILED (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/VIDEO_RECORDING_FAILED.html b/packages/errors/__snapshot-html__/VIDEO_RECORDING_FAILED.html deleted file mode 100644 index 08df4fedd5..0000000000 --- a/packages/errors/__snapshot-html__/VIDEO_RECORDING_FAILED.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - -
Warning: We failed to record the video.
-
-This error will not affect or change the exit code.
-
-Error: fail whale
-    at makeErr (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-    at VIDEO_RECORDING_FAILED (cypress/packages/errors/test/unit/visualSnapshotErrors_spec.ts)
-
\ No newline at end of file diff --git a/packages/errors/__snapshot-html__/VIDEO_UPLOAD_ON_PASSES_REMOVED.html b/packages/errors/__snapshot-html__/VIDEO_UPLOAD_ON_PASSES_REMOVED.html deleted file mode 100644 index 8452a5f91d..0000000000 --- a/packages/errors/__snapshot-html__/VIDEO_UPLOAD_ON_PASSES_REMOVED.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - -
The videoUploadOnPasses configuration option was removed in Cypress version 13.0.0.
-
-You can safely remove this option from your config.
-
-https://on.cypress.io/migration-guide
-
\ No newline at end of file diff --git a/packages/errors/__snapshots__/errors_spec.ts.js b/packages/errors/__snapshots__/errors_spec.ts.js deleted file mode 100644 index c809a4d34b..0000000000 --- a/packages/errors/__snapshots__/errors_spec.ts.js +++ /dev/null @@ -1,4 +0,0 @@ -exports['tags and name only'] = ` -The --tag flag you passed was: nightly,staging -The --name flag you passed was: my tests -` diff --git a/packages/errors/eslint.config.ts b/packages/errors/eslint.config.ts index 1c22f766fc..8e2f2b2623 100644 --- a/packages/errors/eslint.config.ts +++ b/packages/errors/eslint.config.ts @@ -1,3 +1,13 @@ import { baseConfig } from '@packages/eslint-config' -export default baseConfig +export default [ + ...baseConfig, + { + files: ['**/*.spec.ts', '**/*.ts'], + languageOptions: { + parserOptions: { + tsconfigRootDir: __dirname, + }, + }, + }, +] diff --git a/packages/errors/package.json b/packages/errors/package.json index 39af2a58e5..33ba86d354 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -10,18 +10,18 @@ "check-ts": "tsc --noEmit && yarn -s tslint", "clean": "rimraf --glob './src/*.js' './src/**/*.js' './src/**/**/*.js' './test/**/*.js' || echo 'cleaned'", "clean-deps": "rimraf node_modules", - "comparison": "node -r @packages/ts/register test/support/error-comparison-tool.ts", "lint": "eslint", + "pretest": "yarn clean", "test": "yarn test-unit", - "test-electron": "HTML_IMAGE_CONVERSION=1 xvfb-maybe electron --no-sandbox ./node_modules/.bin/_mocha", - "pretest-unit": "yarn clean", - "test-unit": "mocha", + "posttest": "yarn build", + "test-unit": "vitest run", + "test-debug": "vitest --inspect-brk --no-file-parallelism --test-timeout=0", "tslint": "tslint --config ../ts/tslint.json --project ." }, "dependencies": { "ansi_up": "5.0.0", "axios": "^1.7.9", - "chalk": "^2.4.2", + "chalk": "^4.1.2", "lodash": "^4.17.21", "pluralize": "8.0.0", "strip-ansi": "6.0.1" @@ -36,16 +36,13 @@ "@types/node": "22.18.0", "@types/pngjs": "^6.0.1", "ansi-styles": "^5", - "chai": "4.2.0", "ci-info": "^4.1.0", "eslint": "^9.31.0", "globby": "^11.1.0", "jiti": "^2.4.2", - "mocha": "7.0.1", "pngjs": "^7.0.0", "rimraf": "6.0.1", - "sinon": "7.5.0", - "terminal-banner": "^1.1.0", + "vitest": "^3.2.4", "xvfb-maybe": "^0.2.1" }, "files": [ diff --git a/packages/errors/src/errors.ts b/packages/errors/src/errors.ts index 2f1094c407..524b4b99c4 100644 --- a/packages/errors/src/errors.ts +++ b/packages/errors/src/errors.ts @@ -135,9 +135,6 @@ export const AllCypressErrors = { TESTS_DID_NOT_START_RETRYING: (arg1: string) => { return errTemplate`Timed out waiting for the browser to connect. ${fmt.off(arg1)}` }, - FIREFOX_CDP_FAILED_TO_CONNECT: (arg1: string) => { - return errTemplate`Failed to spawn CDP with Firefox. ${fmt.off(arg1)}` - }, TESTS_DID_NOT_START_FAILED: () => { return errTemplate`The browser never connected. Something is wrong. The tests cannot run. Aborting...` }, @@ -1553,7 +1550,6 @@ export const AllCypressErrors = { }, } as const -// eslint-disable-next-line @typescript-eslint/no-unused-vars const _typeCheck: Record ErrTemplateResult> = AllCypressErrors export type AllCypressErrorObj = typeof AllCypressErrors diff --git a/packages/errors/test/__snapshots__/AUTOMATION_SERVER_DISCONNECTED.ansi b/packages/errors/test/__snapshots__/AUTOMATION_SERVER_DISCONNECTED.ansi new file mode 100644 index 0000000000..1ec4b9b7bc --- /dev/null +++ b/packages/errors/test/__snapshots__/AUTOMATION_SERVER_DISCONNECTED.ansi @@ -0,0 +1 @@ +The automation client disconnected. Cannot continue running tests. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BAD_POLICY_WARNING.ansi b/packages/errors/test/__snapshots__/BAD_POLICY_WARNING.ansi new file mode 100644 index 0000000000..e89ba420e4 --- /dev/null +++ b/packages/errors/test/__snapshots__/BAD_POLICY_WARNING.ansi @@ -0,0 +1,8 @@ +Cypress detected policy settings on your computer that may cause issues. + +The following policies were detected that may prevent Cypress from automating Chrome: + + - HKEY_LOCAL_MACHINE\Software\Policies\Google\Chrome\ProxyServer + - HKEY_CURRENT_USER\Software\Policies\Google\Chromium\ExtensionSettings + +For more information, see https://on.cypress.io/bad-browser-policy \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BAD_POLICY_WARNING_TOOLTIP.ansi b/packages/errors/test/__snapshots__/BAD_POLICY_WARNING_TOOLTIP.ansi new file mode 100644 index 0000000000..d82f93fd5d --- /dev/null +++ b/packages/errors/test/__snapshots__/BAD_POLICY_WARNING_TOOLTIP.ansi @@ -0,0 +1 @@ +Cypress detected policy settings on your computer that may cause issues with using this browser. For more information, see https://on.cypress.io/bad-browser-policy \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_CRASHED.ansi b/packages/errors/test/__snapshots__/BROWSER_CRASHED.ansi new file mode 100644 index 0000000000..4aee8b198b --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_CRASHED.ansi @@ -0,0 +1,11 @@ +We detected that the Chrome process just crashed with code 'code' and signal 'signal'. + +We have failed the current spec but will continue running the next spec. + +This can happen for many different reasons: + +- You wrote an endless loop and you must fix your own code +- You are running lots of tests on a memory intense application +- You are running in a memory starved VM environment +- There are problems with your GPU / GPU drivers +- There are browser bugs \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME - canary.ansi b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME - canary.ansi new file mode 100644 index 0000000000..5702dd6598 --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME - canary.ansi @@ -0,0 +1,27 @@ +Can't run because you've entered an invalid browser name. + +Browser: canary was not found on your system or is not supported by Cypress. + +Cypress supports the following browsers: + - electron + - chrome + - chromium + - chrome-for-testing + - edge + - firefox + +You can also use a custom browser: https://on.cypress.io/customize-browsers + +Available browsers found on your system are: + - chrome + - chrome:beta + - chrome:canary + - chrome-for-testing + - chromium + - firefox + - firefox:dev + - firefox:nightly + - edge + - edge:beta + - edge:canary + - edge:dev \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME.ansi b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME.ansi new file mode 100644 index 0000000000..6f0bb7387a --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_NAME.ansi @@ -0,0 +1,27 @@ +Can't run because you've entered an invalid browser name. + +Browser: invalid-browser was not found on your system or is not supported by Cypress. + +Cypress supports the following browsers: + - electron + - chrome + - chromium + - chrome-for-testing + - edge + - firefox + +You can also use a custom browser: https://on.cypress.io/customize-browsers + +Available browsers found on your system are: + - chrome + - chrome:beta + - chrome:canary + - chrome-for-testing + - chromium + - firefox + - firefox:dev + - firefox:nightly + - edge + - edge:beta + - edge:canary + - edge:dev \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_PATH.ansi b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_PATH.ansi new file mode 100644 index 0000000000..8a2f5f84d9 --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_NOT_FOUND_BY_PATH.ansi @@ -0,0 +1,7 @@ +We could not identify a known browser at the path you provided: /path/does/not/exist + +Read more about how to troubleshoot launching browsers: https://on.cypress.io/troubleshooting-launching-browsers + +The output from the command we ran was: + +fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.ansi b/packages/errors/test/__snapshots__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.ansi new file mode 100644 index 0000000000..a3028a2c2d --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_PAGE_CLOSED_UNEXPECTEDLY.ansi @@ -0,0 +1,3 @@ +We detected that the chrome tab running Cypress tests closed unexpectedly. + +We have failed the current spec and aborted the run. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.ansi b/packages/errors/test/__snapshots__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.ansi new file mode 100644 index 0000000000..36cdf9fad7 --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_PROCESS_CLOSED_UNEXPECTEDLY.ansi @@ -0,0 +1,3 @@ +We detected that the chrome browser process closed unexpectedly. + +We have failed the current spec and aborted the run. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.ansi b/packages/errors/test/__snapshots__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.ansi new file mode 100644 index 0000000000..4f99382730 --- /dev/null +++ b/packages/errors/test/__snapshots__/BROWSER_UNSUPPORTED_LAUNCH_OPTION.ansi @@ -0,0 +1,3 @@ +Warning: The following browser launch options were provided but are not supported by electron + + - env \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/BUNDLE_ERROR.ansi b/packages/errors/test/__snapshots__/BUNDLE_ERROR.ansi new file mode 100644 index 0000000000..adaa441b6f --- /dev/null +++ b/packages/errors/test/__snapshots__/BUNDLE_ERROR.ansi @@ -0,0 +1,14 @@ +Oops...we found an error preparing this test file: + + > /path/to/file + +The error was: + +fail whale + +This occurred while Cypress was compiling and bundling your test code. This is usually caused by: + +- A missing file or dependency +- A syntax error in the file or one of its dependencies + +Fix the error in your code and re-run your tests. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL.ansi b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL.ansi new file mode 100644 index 0000000000..35f53acf66 --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL.ansi @@ -0,0 +1,3 @@ +Cypress failed to verify that your server is running. + +Please start this server and then run Cypress again. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.ansi b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.ansi new file mode 100644 index 0000000000..7de2756e94 --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING - retrying.ansi @@ -0,0 +1 @@ +We will try connecting to it 60 more times... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING.ansi b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING.ansi new file mode 100644 index 0000000000..2663722d83 --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_RETRYING.ansi @@ -0,0 +1,9 @@ +Cypress could not verify that this server is running: + + > http://localhost:3000 + +We are verifying this server because it has been configured as your baseUrl. + +Cypress automatically waits until your server is accessible before running tests. + +We will try connecting to it 60 more times... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_WARNING.ansi b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_WARNING.ansi new file mode 100644 index 0000000000..591a1c5a5a --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_CONNECT_BASE_URL_WARNING.ansi @@ -0,0 +1,5 @@ +Cypress could not verify that this server is running: + + > http://localhost:3000 + +This server has been configured as your baseUrl, and tests will likely fail if it is not running. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_CREATE_PROJECT_TOKEN.ansi b/packages/errors/test/__snapshots__/CANNOT_CREATE_PROJECT_TOKEN.ansi new file mode 100644 index 0000000000..2e79b4e50b --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_CREATE_PROJECT_TOKEN.ansi @@ -0,0 +1 @@ +Can't create project's secret key. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_FETCH_PROJECT_TOKEN.ansi b/packages/errors/test/__snapshots__/CANNOT_FETCH_PROJECT_TOKEN.ansi new file mode 100644 index 0000000000..dcad4acba2 --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_FETCH_PROJECT_TOKEN.ansi @@ -0,0 +1 @@ +Can't find project's secret key. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_RECORD_NO_PROJECT_ID.ansi b/packages/errors/test/__snapshots__/CANNOT_RECORD_NO_PROJECT_ID.ansi new file mode 100644 index 0000000000..9470a74462 --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_RECORD_NO_PROJECT_ID.ansi @@ -0,0 +1,11 @@ +You passed the --record flag but this project has not been setup to record. + +This project is missing the projectId inside of: /path/to/cypress.config.js + +We cannot uniquely identify this project without this id. + +You need to setup this project to record. This will generate a unique projectId. + +Alternatively if you omit the --record flag this project will run without recording. + +https://on.cypress.io/recording-project-runs \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.ansi b/packages/errors/test/__snapshots__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.ansi new file mode 100644 index 0000000000..8e403f58aa --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_REMOVE_OLD_BROWSER_PROFILES.ansi @@ -0,0 +1,7 @@ +Warning: We failed to remove old browser profiles from previous runs. + +This error will not affect or change the exit code. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CANNOT_REMOVE_OLD_BROWSER_PROFILES (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CANNOT_TRASH_ASSETS.ansi b/packages/errors/test/__snapshots__/CANNOT_TRASH_ASSETS.ansi new file mode 100644 index 0000000000..02dd4113da --- /dev/null +++ b/packages/errors/test/__snapshots__/CANNOT_TRASH_ASSETS.ansi @@ -0,0 +1,7 @@ +Warning: We failed to trash the existing run results. + +This error will not affect or change the exit code. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CANNOT_TRASH_ASSETS (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CDP_COULD_NOT_CONNECT.ansi b/packages/errors/test/__snapshots__/CDP_COULD_NOT_CONNECT.ansi new file mode 100644 index 0000000000..fa045980c6 --- /dev/null +++ b/packages/errors/test/__snapshots__/CDP_COULD_NOT_CONNECT.ansi @@ -0,0 +1,9 @@ +Cypress failed to make a connection to the Chrome DevTools Protocol after retrying for 50 seconds. + +This usually indicates there was a problem opening the Chrome browser. + +The CDP port requested was 2345. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CDP_COULD_NOT_CONNECT (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CDP_COULD_NOT_RECONNECT.ansi b/packages/errors/test/__snapshots__/CDP_COULD_NOT_RECONNECT.ansi new file mode 100644 index 0000000000..923e982a20 --- /dev/null +++ b/packages/errors/test/__snapshots__/CDP_COULD_NOT_RECONNECT.ansi @@ -0,0 +1,5 @@ +There was an error reconnecting to the Chrome DevTools protocol. Please restart the browser. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CDP_COULD_NOT_RECONNECT (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CDP_RETRYING_CONNECTION.ansi b/packages/errors/test/__snapshots__/CDP_RETRYING_CONNECTION.ansi new file mode 100644 index 0000000000..e2e677f3c2 --- /dev/null +++ b/packages/errors/test/__snapshots__/CDP_RETRYING_CONNECTION.ansi @@ -0,0 +1 @@ +Still waiting to connect to Chrome, retrying in 1 second (attempt 1/62) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD - older.ansi b/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD - older.ansi new file mode 100644 index 0000000000..63a5475147 --- /dev/null +++ b/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD - older.ansi @@ -0,0 +1 @@ +A minimum CDP version of 1.3 is required, but the current browser has an older version. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD.ansi b/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD.ansi new file mode 100644 index 0000000000..2f424c0f9f --- /dev/null +++ b/packages/errors/test/__snapshots__/CDP_VERSION_TOO_OLD.ansi @@ -0,0 +1 @@ +A minimum CDP version of 1.3 is required, but the current browser has 1.2. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.ansi b/packages/errors/test/__snapshots__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.ansi new file mode 100644 index 0000000000..acf52ce6de --- /dev/null +++ b/packages/errors/test/__snapshots__/CHROME_137_LOAD_EXTENSION_NOT_SUPPORTED.ansi @@ -0,0 +1 @@ +Google Chrome v137 and higher does not allow loading extensions via --load-extension. If you need to load an extension to test with Cypress, please use Chrome for Testing, Chromium, or another Chrome variant that supports loading extensions. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CHROME_WEB_SECURITY_NOT_SUPPORTED.ansi b/packages/errors/test/__snapshots__/CHROME_WEB_SECURITY_NOT_SUPPORTED.ansi new file mode 100644 index 0000000000..72af8e3a94 --- /dev/null +++ b/packages/errors/test/__snapshots__/CHROME_WEB_SECURITY_NOT_SUPPORTED.ansi @@ -0,0 +1,3 @@ +Your project has set the configuration option: `chromeWebSecurity` to `false`. + +This option will not have an effect in Firefox. Tests that rely on web security being disabled will not run as expected. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_ALREADY_COMPLETE.ansi b/packages/errors/test/__snapshots__/CLOUD_ALREADY_COMPLETE.ansi new file mode 100644 index 0000000000..77455b9875 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_ALREADY_COMPLETE.ansi @@ -0,0 +1,10 @@ +The run you are attempting to access is already complete and will not accept new groups. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +When a run finishes all of its groups, it waits for a configurable set of time before finally completing. You must add more groups during that time period. + +The --group flag you passed was: foo +The --parallel flag you passed was: true + +https://on.cypress.io/already-complete \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.ansi b/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.ansi new file mode 100644 index 0000000000..2faed463fe --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING - lastTry.ansi @@ -0,0 +1,6 @@ +We encountered an unexpected error communicating with our servers. + +StatusCodeError: 500 - "Internal Server Error" + +We will retry 1 more time in 5 seconds... + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING.ansi b/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING.ansi new file mode 100644 index 0000000000..5718e43d4b --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_API_RESPONSE_FAILED_RETRYING.ansi @@ -0,0 +1,6 @@ +We encountered an unexpected error communicating with our servers. + +StatusCodeError: 500 - "Internal Server Error" + +We will retry 3 more times in 5 seconds... + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_MISMATCH.ansi b/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_MISMATCH.ansi new file mode 100644 index 0000000000..87e2cf2512 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_MISMATCH.ansi @@ -0,0 +1,11 @@ +You passed the --auto-cancel-after-failures flag, but this run originally started with a different value for the --auto-cancel-after-failures flag. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +The --group flag you passed was: foo +The --parallel flag you passed was: true +The --auto-cancel-after-failures flag you passed was: 3 + +The first setting of --auto-cancel-after-failures for any given run takes precedent. + +https://on.cypress.io/auto-cancellation-mismatch \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.ansi b/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.ansi new file mode 100644 index 0000000000..e3d88c6cdc --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_AUTO_CANCEL_NOT_AVAILABLE_IN_PLAN.ansi @@ -0,0 +1,5 @@ +Auto Cancellation is not included under your current billing plan. + +To enable this service, please visit your billing and upgrade to another plan with Auto Cancellation. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANCEL_SKIPPED_SPEC.ansi b/packages/errors/test/__snapshots__/CLOUD_CANCEL_SKIPPED_SPEC.ansi new file mode 100644 index 0000000000..64f75b20f8 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANCEL_SKIPPED_SPEC.ansi @@ -0,0 +1,2 @@ + + This spec and its tests were skipped because the run has been canceled. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.ansi b/packages/errors/test/__snapshots__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.ansi new file mode 100644 index 0000000000..d9dba536c4 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANNOT_CONFIRM_ARTIFACTS.ansi @@ -0,0 +1,7 @@ +Warning: We encountered an error while confirming the upload of artifacts for this spec. + +These results will not display artifacts. + +This error will not affect or change the exit code. + +Error: fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.ansi b/packages/errors/test/__snapshots__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.ansi new file mode 100644 index 0000000000..9f7fc8c6cb --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANNOT_CREATE_RUN_OR_INSTANCE.ansi @@ -0,0 +1,7 @@ +Warning: We encountered an error communicating with our servers. + +This run will proceed, but will not be recorded. + +This error will not affect or change the exit code. + +StatusCodeError: 500 - "Internal Server Error" \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.ansi b/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.ansi new file mode 100644 index 0000000000..de5ed4a8ef --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_PARALLEL.ansi @@ -0,0 +1,8 @@ +We encountered an unexpected error communicating with our servers. + +StatusCodeError: 500 - "Internal Server Error" + +Because you passed the --parallel flag, this run cannot proceed since it requires a valid response from our servers. + +The --group flag you passed was: foo +The --ciBuildId flag you passed was: invalid \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_SERIAL.ansi b/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_SERIAL.ansi new file mode 100644 index 0000000000..aaad2ee9b3 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANNOT_PROCEED_IN_SERIAL.ansi @@ -0,0 +1,8 @@ +We encountered an unexpected error communicating with our servers. + +StatusCodeError: 500 - "Internal Server Error" + +Because you passed the --record flag, this run cannot proceed since it requires a valid response from our servers. + +The --group flag you passed was: foo +The --ciBuildId flag you passed was: invalid \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.ansi b/packages/errors/test/__snapshots__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.ansi new file mode 100644 index 0000000000..4b8eaa3566 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_CANNOT_UPLOAD_ARTIFACTS.ansi @@ -0,0 +1,7 @@ +Warning: We encountered an error while uploading screenshots & videos from your run. + +These results will not be recorded. + +This error will not affect or change the exit code. + +StatusCodeError: 500 - "Internal Server Error" \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_GRAPHQL_ERROR.ansi b/packages/errors/test/__snapshots__/CLOUD_GRAPHQL_ERROR.ansi new file mode 100644 index 0000000000..8d7257586b --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_GRAPHQL_ERROR.ansi @@ -0,0 +1,4 @@ +We received an unexpected error response from the request to Cypress Cloud: + +"fail whale" + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_INVALID_RUN_REQUEST.ansi b/packages/errors/test/__snapshots__/CLOUD_INVALID_RUN_REQUEST.ansi new file mode 100644 index 0000000000..76893fefda --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_INVALID_RUN_REQUEST.ansi @@ -0,0 +1,18 @@ +Recording this run failed. The request was invalid. + +Request Validation Error + +Errors: + +[ + "data.commit has additional properties", + "data.ci.buildNumber is required" +] + +Request Sent: + +{ + "foo": "foo", + "bar": "bar", + "baz": "baz" +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PARALLEL_DISALLOWED.ansi b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_DISALLOWED.ansi new file mode 100644 index 0000000000..c9e9f5e4ef --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_DISALLOWED.ansi @@ -0,0 +1,10 @@ +You passed the --parallel flag, but this run group was originally created without the --parallel flag. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +The --group flag you passed was: foo +The --parallel flag you passed was: true + +You can not use the --parallel flag with this group. + +https://on.cypress.io/parallel-disallowed \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.ansi b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.ansi new file mode 100644 index 0000000000..04898077b9 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH - differentParams.ansi @@ -0,0 +1,30 @@ +You passed the --parallel flag, but we do not parallelize tests across different environments. + +This machine is sending different environment parameters than the first machine that started this parallel run. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +In order to run in parallel mode each machine must send identical environment parameters such as: + + - specs + - osName + - osVersion + - browserName + - browserVersion (major) + +This machine sent the following parameters: + +{ + "osName": "darwin", + "osVersion": "v1", + "browserName": "Electron.... (Expected: Electron)", + "browserVersion": "59.1.2.3.... (Expected: 64)", + "differentSpecs": { + "added": [ + "cypress/integration/foo_spec.js" + ], + "missing": [] + } +} + +https://on.cypress.io/parallel-group-params-mismatch \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.ansi b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.ansi new file mode 100644 index 0000000000..a8f349a9b6 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_GROUP_PARAMS_MISMATCH.ansi @@ -0,0 +1,27 @@ +You passed the --parallel flag, but we do not parallelize tests across different environments. + +This machine is sending different environment parameters than the first machine that started this parallel run. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +In order to run in parallel mode each machine must send identical environment parameters such as: + + - specs + - osName + - osVersion + - browserName + - browserVersion (major) + +This machine sent the following parameters: + +{ + "osName": "darwin", + "osVersion": "v1", + "browserName": "Electron", + "browserVersion": "59.1.2.3", + "specs": [ + "cypress/integration/app_spec.js" + ] +} + +https://on.cypress.io/parallel-group-params-mismatch \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PARALLEL_REQUIRED.ansi b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_REQUIRED.ansi new file mode 100644 index 0000000000..d123227e8e --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PARALLEL_REQUIRED.ansi @@ -0,0 +1,10 @@ +You did not pass the --parallel flag, but this run's group was originally created with the --parallel flag. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +The --group flag you passed was: foo +The --parallel flag you passed was: true + +You must use the --parallel flag with this group. + +https://on.cypress.io/parallel-required \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROJECT_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/CLOUD_PROJECT_NOT_FOUND.ansi new file mode 100644 index 0000000000..1d424bb7ad --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROJECT_NOT_FOUND.ansi @@ -0,0 +1,11 @@ +We could not find a Cypress Cloud project with the projectId: project-id-123 + +This projectId came from your /path/to/cypress.config.js file or an environment variable. + +Please log into Cypress Cloud and find your project. + +We will list the correct projectId in the 'Settings' tab. + +Alternatively, you can create a new project directly from within the Cypress app. + +https://on.cypress.io/cloud \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.ansi new file mode 100644 index 0000000000..732c6efebb --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CANNOT_UPLOAD_ARTIFACT.ansi @@ -0,0 +1,6 @@ +Warning: We are unable to upload the Test Replay recording of this spec due to a missing or invalid upload URL. + +These results will not display Test Replay recordings. + +This error will not affect or change the exit code. + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CAPTURE_FAILURE.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CAPTURE_FAILURE.ansi new file mode 100644 index 0000000000..df4c57c42f --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_CAPTURE_FAILURE.ansi @@ -0,0 +1,12 @@ +Warning: We encountered an error while recording Test Replay data for this spec. + +These results will not display Test Replay recordings. + +This can happen for many reasons. If this problem persists: + +- Try increasing the available disk space. +- Ensure that /os/tmpdir/cypress/protocol is both readable and writable. + +This error will not affect or change the exit code. + +Error: fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.ansi new file mode 100644 index 0000000000..04f0961993 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_INITIALIZATION_FAILURE.ansi @@ -0,0 +1,7 @@ +Warning: We encountered an error while initializing the Test Replay recording for this spec. + +These results will not display Test Replay recordings. + +This error will not affect or change the exit code. + +Error: fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.ansi new file mode 100644 index 0000000000..09eb784cd7 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR - withSystemError.ansi @@ -0,0 +1,9 @@ +Warning: We encountered multiple errors while uploading the Test Replay recording for this spec. + +We attempted to upload the Test Replay recording 3 times. + +Some or all of the errors encountered are system-level network errors. Please verify your network configuration for connecting to http://some/url + +http://some/url: ECONNRESET +fail whale +fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.ansi new file mode 100644 index 0000000000..6ead8f0e8f --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_AGGREGATE_ERROR.ansi @@ -0,0 +1,7 @@ +Warning: We encountered multiple errors while uploading the Test Replay recording for this spec. + +We attempted to upload the Test Replay recording 3 times. + +fail whale +fail whale +fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.ansi new file mode 100644 index 0000000000..a8e6db15ae --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_HTTP_FAILURE.ansi @@ -0,0 +1,9 @@ +Warning: We encountered an HTTP error while uploading the Test Replay recording for this spec. + +These results will not display Test Replay recordings. + +This error will not affect or change the exit code. + +https://some/url responded with HTTP 500: Internal Server Error + +{ status: 500, reason: 'unknown'} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.ansi new file mode 100644 index 0000000000..226bc04dac --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_NETWORK_FAILURE.ansi @@ -0,0 +1,9 @@ +Warning: We encountered a network error while uploading the Test Replay recording for this spec. + +Please verify your network configuration for accessing https://some/url + +These results will not display Test Replay recordings. + +This error will not affect or change the exit code. + +Error: fail whale \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.ansi new file mode 100644 index 0000000000..19dcf6e926 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_STREAM_STALL_FAILURE.ansi @@ -0,0 +1,10 @@ +Warning: We encountered slow network conditions while uploading the Test Replay recording for this spec. + +The upload transfer rate fell below 6.4kbps over a sampling period of 10 seconds. + +To prevent long CI execution durations, this Test Replay recording will not be uploaded. + +The results for this spec will not display Test Replay recordings. + +If this error occurs often, the sampling period may be configured by setting the CYPRESS_TEST_REPLAY_UPLOAD_SAMPLING_INTERVAL environment variable to a higher value than 10000. + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.ansi b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.ansi new file mode 100644 index 0000000000..b55d9e5999 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_PROTOCOL_UPLOAD_UNKNOWN_ERROR.ansi @@ -0,0 +1,8 @@ +Warning: We encountered an error while uploading the Test Replay recording of this spec. + +These results will not display Test Replay recordings. + +This error will not affect or change the exit code. + +Error: fail whale + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_RECORD_KEY_NOT_VALID.ansi b/packages/errors/test/__snapshots__/CLOUD_RECORD_KEY_NOT_VALID.ansi new file mode 100644 index 0000000000..9e587624ba --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_RECORD_KEY_NOT_VALID.ansi @@ -0,0 +1,7 @@ +Your Record Key record-key-123 is not valid with this projectId: project-id-123 + +It may have been recently revoked by you or another user. + +Please log into Cypress Cloud to see the valid Record Keys. + +https://on.cypress.io/dashboard/projects/project-id-123 \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.ansi b/packages/errors/test/__snapshots__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.ansi new file mode 100644 index 0000000000..862dc82ee1 --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_RUN_GROUP_NAME_NOT_UNIQUE.ansi @@ -0,0 +1,10 @@ +You passed the --group flag, but this group name has already been used for this run. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +The --group flag you passed was: foo +The --parallel flag you passed was: true + +If you are trying to parallelize this run, then also pass the --parallel flag, else pass a different group name. + +https://on.cypress.io/run-group-name-not-unique \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_STALE_RUN.ansi b/packages/errors/test/__snapshots__/CLOUD_STALE_RUN.ansi new file mode 100644 index 0000000000..47424d52eb --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_STALE_RUN.ansi @@ -0,0 +1,10 @@ +You are attempting to pass the --parallel flag to a run that was completed over 24 hours ago. + +The existing run is: https://cloud.cypress.io/project/abcd/runs/1 + +You cannot parallelize a run that has been complete for that long. + +The --group flag you passed was: foo +The --parallel flag you passed was: true + +https://on.cypress.io/stale-run \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.ansi b/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.ansi new file mode 100644 index 0000000000..5d30d0e65d --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_CREATE_RUN_WARNING.ansi @@ -0,0 +1,10 @@ +Warning from Cypress Cloud: You are almost out of time + +Details: + +{ + "code": "OUT_OF_TIME", + "name": "OutOfTime", + "hadTime": 1000, + "spentTime": 999 +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_INVALID_REQUEST.ansi b/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_INVALID_REQUEST.ansi new file mode 100644 index 0000000000..23ba63fc7b --- /dev/null +++ b/packages/errors/test/__snapshots__/CLOUD_UNKNOWN_INVALID_REQUEST.ansi @@ -0,0 +1,8 @@ +We encountered an unexpected error communicating with our servers. + +StatusCodeError: 500 - "Internal Server Error" + +There is likely something wrong with the request. + +The --group flag you passed was: foo +The --ciBuildId flag you passed was: invalid \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.ansi b/packages/errors/test/__snapshots__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.ansi new file mode 100644 index 0000000000..c6d7bdacec --- /dev/null +++ b/packages/errors/test/__snapshots__/COMPONENT_TESTING_MISMATCHED_DEPENDENCIES.ansi @@ -0,0 +1,6 @@ +We detected that you have versions of dependencies that are not officially supported: + + - `vite`. Expected ^=2.0.0 || ^=3.0.0 || ^=4.0.0 || ^=5.0.0, found 1.0.0. + +If you're experiencing problems, ensure your dependencies are on a supported version and restart Cypress. + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILES_LANGUAGE_CONFLICT.ansi b/packages/errors/test/__snapshots__/CONFIG_FILES_LANGUAGE_CONFLICT.ansi new file mode 100644 index 0000000000..e73c051f5f --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILES_LANGUAGE_CONFLICT.ansi @@ -0,0 +1,9 @@ +Could not load a Cypress configuration file because there are multiple matches. + +We've found 3 Cypress configuration files named +cypress.config.js, cypress.config.ts, cypress.config.mjs at the location below: + + > /path/to/project/root + +Please delete the conflicting configuration files. + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.ansi new file mode 100644 index 0000000000..d43cf4a96a --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_INVALID_RETURN.ansi @@ -0,0 +1,10 @@ +The returned value of the devServer function is not valid. + +The returned value must be an object with a port property of the dev-server that is running. + +Instead, we saw: + +{} + +Learn more: https://on.cypress.io/dev-server + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.ansi new file mode 100644 index 0000000000..62cc664734 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_DEV_SERVER_IS_NOT_VALID.ansi @@ -0,0 +1,19 @@ +Your configFile is invalid: /path/to/config.ts + +The component.devServer must be an object with a supported framework and bundler. + +{ + component: { + devServer: { + framework: 'react', // Your framework + bundler: 'webpack' // Your dev server + } + } +} + +Instead, we saw: + +{} + +Learn more: https://on.cypress.io/dev-server + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG.ansi new file mode 100644 index 0000000000..716dfd4684 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG.ansi @@ -0,0 +1,12 @@ +The specPattern configuration option is invalid when set from the root of the config object. + +Set it within a testing type property: e2e.specPattern and component.specPattern + +{ + e2e: { + specPattern: '...', + }, + component: { + specPattern: '...', + }, +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.ansi new file mode 100644 index 0000000000..cef9e696e4 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_COMPONENT.ansi @@ -0,0 +1,9 @@ +The indexHtmlFile configuration option is invalid when set from the root of the config object. + +Set it within a testing type property: component.indexHtmlFile + +{ + component: { + indexHtmlFile: '...', + } +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.ansi new file mode 100644 index 0000000000..19973e8399 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_ROOT_CONFIG_E2E.ansi @@ -0,0 +1,9 @@ +The baseUrl configuration option is invalid when set from the root of the config object. + +Set it within a testing type property: e2e.baseUrl + +{ + e2e: { + baseUrl: '...', + } +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.ansi new file mode 100644 index 0000000000..561a70fa2f --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_COMPONENT.ansi @@ -0,0 +1,9 @@ +The component.baseUrl configuration option is not valid for component testing. + +Please remove this option or add this as an e2e testing type property: e2e.baseUrl + +{ + e2e: { + baseUrl: '...', + } +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.ansi new file mode 100644 index 0000000000..15a2f5d50e --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_INVALID_TESTING_TYPE_CONFIG_E2E.ansi @@ -0,0 +1,9 @@ +The e2e.indexHtmlFile configuration option is not valid for e2e testing. + +Please remove this option or add this as a component testing type property: component.indexHtmlFile + +{ + e2e: { + indexHtmlFile: '...', + } +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_NOT_FOUND.ansi new file mode 100644 index 0000000000..7cd484af31 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_NOT_FOUND.ansi @@ -0,0 +1,3 @@ +Could not find a Cypress configuration file. + +We looked but did not find a cypress.config.js file in this folder: /path/to/project/root \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_REQUIRE_ERROR.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_REQUIRE_ERROR.ansi new file mode 100644 index 0000000000..7d392a1aea --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_REQUIRE_ERROR.ansi @@ -0,0 +1,7 @@ +Your configFile is invalid: /path/to/cypress.config.js + +It threw an error when required, check the stack trace below: + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CONFIG_FILE_REQUIRE_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.ansi new file mode 100644 index 0000000000..17bc8b18aa --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR - component.ansi @@ -0,0 +1,7 @@ +Your configFile threw an error from: /path/to/cypress.config.js + +The error was thrown while executing your component.setupNodeEvents() function: + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CONFIG_FILE_SETUP_NODE_EVENTS_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.ansi new file mode 100644 index 0000000000..2008eee96c --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_SETUP_NODE_EVENTS_ERROR.ansi @@ -0,0 +1,7 @@ +Your configFile threw an error from: /path/to/cypress.config.js + +The error was thrown while executing your e2e.setupNodeEvents() function: + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CONFIG_FILE_SETUP_NODE_EVENTS_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_FILE_UNEXPECTED_ERROR.ansi b/packages/errors/test/__snapshots__/CONFIG_FILE_UNEXPECTED_ERROR.ansi new file mode 100644 index 0000000000..8bc0928dd9 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_FILE_UNEXPECTED_ERROR.ansi @@ -0,0 +1,7 @@ +Your configFile threw an error from: /path/to/cypress.config.js + +We stopped running your tests because your config file crashed. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at CONFIG_FILE_UNEXPECTED_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidArray.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidArray.ansi new file mode 100644 index 0000000000..5aba92d85b --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidArray.ansi @@ -0,0 +1,11 @@ +Your configFile at cypress.config.js set an invalid value: + +Expected defaultCommandTimeout to be a number. + +Instead the value was:  + +[ + 1, + 2, + 3 +] \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidObject.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidObject.ansi new file mode 100644 index 0000000000..fd0d24a232 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidObject.ansi @@ -0,0 +1,9 @@ +Your configFile at cypress.config.js set an invalid value: + +Expected defaultCommandTimeout to be a number. + +Instead the value was:  + +{ + "foo": "bar" +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidString.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidString.ansi new file mode 100644 index 0000000000..34e7f8e377 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - invalidString.ansi @@ -0,0 +1,5 @@ +Your configFile at cypress.config.js set an invalid value: + +Expected defaultCommandTimeout to be a number. + +Instead the value was: "1234" \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - list.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - list.ansi new file mode 100644 index 0000000000..a30464c1b8 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - list.ansi @@ -0,0 +1,13 @@ +Your configFile at cypress.config.js set an invalid value: + +The error occurred while validating the browsers list. + +Expected displayName to be a non-empty string. + +Instead the value was:  + +{ + "name": "chrome", + "version": "1.2.3", + "displayName": null +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - noFileType.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - noFileType.ansi new file mode 100644 index 0000000000..cc4905f575 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR - noFileType.ansi @@ -0,0 +1,5 @@ +An invalid configuration value was set. + +Expected defaultCommandTimeout to be a number. + +Instead the value was: false \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR.ansi new file mode 100644 index 0000000000..4b3139a4df --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_ERROR.ansi @@ -0,0 +1,5 @@ +Your configFile at cypress.config.js set an invalid value: + +Expected defaultCommandTimeout to be a number. + +Instead the value was: false \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR - noFileType.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR - noFileType.ansi new file mode 100644 index 0000000000..a038ade3c3 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR - noFileType.ansi @@ -0,0 +1,3 @@ +An invalid configuration value was set: + +`something` was not right \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR.ansi b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR.ansi new file mode 100644 index 0000000000..6378a8cad4 --- /dev/null +++ b/packages/errors/test/__snapshots__/CONFIG_VALIDATION_MSG_ERROR.ansi @@ -0,0 +1,3 @@ +Your configFile as cypress.config.js set an invalid value: + +`something` was not right \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/COULD_NOT_PARSE_ARGUMENTS.ansi b/packages/errors/test/__snapshots__/COULD_NOT_PARSE_ARGUMENTS.ansi new file mode 100644 index 0000000000..95785aac15 --- /dev/null +++ b/packages/errors/test/__snapshots__/COULD_NOT_PARSE_ARGUMENTS.ansi @@ -0,0 +1,5 @@ +Cypress encountered an error while parsing the argument: --spec + +You passed: 1 + +The error was: spec must be a string or comma-separated list \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/DEFAULT_SUPPORT_FILE_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/DEFAULT_SUPPORT_FILE_NOT_FOUND.ansi new file mode 100644 index 0000000000..f08d9a392c --- /dev/null +++ b/packages/errors/test/__snapshots__/DEFAULT_SUPPORT_FILE_NOT_FOUND.ansi @@ -0,0 +1,5 @@ +Your project does not contain a default supportFile. We expect a file matching /path/to/supportFile/**/*.{js,jsx,ts,tsx} to exist. + +If a support file is not necessary for your project, set supportFile to false. + +https://on.cypress.io/support-file-missing-or-invalid \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.ansi new file mode 100644 index 0000000000..70d07cfee7 --- /dev/null +++ b/packages/errors/test/__snapshots__/DEV_SERVER_CONFIG_FILE_NOT_FOUND.ansi @@ -0,0 +1,12 @@ +You are using vite for your dev server, but a configuration file was not found. We traversed upwards from: + +/dev/project + +looking for a file named: + + - vite.config.js + - vite.config.ts + +Add your vite config at one of the above paths, or import your configuration file and provide it to +the devServer config as a viteConfig option. + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/DUPLICATE_TASK_KEY.ansi b/packages/errors/test/__snapshots__/DUPLICATE_TASK_KEY.ansi new file mode 100644 index 0000000000..12ca7bb035 --- /dev/null +++ b/packages/errors/test/__snapshots__/DUPLICATE_TASK_KEY.ansi @@ -0,0 +1,7 @@ +Warning: Multiple attempts to register the following task(s): + + - foo + - bar + - baz + +Only the last attempt will be registered. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/ERROR_READING_FILE.ansi b/packages/errors/test/__snapshots__/ERROR_READING_FILE.ansi new file mode 100644 index 0000000000..7dd070e6b7 --- /dev/null +++ b/packages/errors/test/__snapshots__/ERROR_READING_FILE.ansi @@ -0,0 +1,5 @@ +Error reading from: /path/to/read/file.ts + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at ERROR_READING_FILE (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/ERROR_WRITING_FILE.ansi b/packages/errors/test/__snapshots__/ERROR_WRITING_FILE.ansi new file mode 100644 index 0000000000..476f27c84a --- /dev/null +++ b/packages/errors/test/__snapshots__/ERROR_WRITING_FILE.ansi @@ -0,0 +1,5 @@ +Error writing to: /path/to/write/file.ts + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at ERROR_WRITING_FILE (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_JIT_COMPILE_REMOVED.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_JIT_COMPILE_REMOVED.ansi new file mode 100644 index 0000000000..21271cd105 --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_JIT_COMPILE_REMOVED.ansi @@ -0,0 +1,3 @@ +The experimentalJustInTimeCompile configuration option was removed in Cypress version 14.0.0. +A new justInTimeCompile configuration option is available and is now true by default. +You can safely remove this option from your config. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.ansi new file mode 100644 index 0000000000..cf2874f527 --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_ORIGIN_DEPENDENCIES_E2E_ONLY.ansi @@ -0,0 +1,7 @@ +The experimentalOriginDependencies experiment is currently only supported for End to End Testing and must be configured as an e2e testing type property: e2e.experimentalOriginDependencies. + +{ + e2e: { + experimentalOriginDependencies: true + }, +} \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.ansi new file mode 100644 index 0000000000..e06cb4b625 --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_RUN_ALL_SPECS_E2E_ONLY.ansi @@ -0,0 +1,9 @@ +The experimentalRunAllSpecs experiment is currently only supported for End to End Testing and must be configured as an e2e testing type property: e2e.experimentalRunAllSpecs. + +{ + e2e: { + experimentalRunAllSpecs: true + }, +} + +If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/run-all-specs \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.ansi new file mode 100644 index 0000000000..2ec80f3f1f --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_SESSION_AND_ORIGIN_REMOVED.ansi @@ -0,0 +1,6 @@ +The experimentalSessionAndOrigin configuration option was removed in Cypress version 12.0.0. + +You can safely remove this option from your config. + +https://on.cypress.io/session +https://on.cypress.io/origin \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.ansi new file mode 100644 index 0000000000..28f24e716d --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_SINGLE_TAB_RUN_MODE.ansi @@ -0,0 +1,3 @@ +The experimentalSingleTabRunMode experiment is currently only supported for Component Testing. + +If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/single-tab-run-mode \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.ansi new file mode 100644 index 0000000000..c43a3ae403 --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_SKIP_DOMAIN_INJECTION_REMOVED.ansi @@ -0,0 +1,4 @@ +The experimentalSkipDomainInjection experiment is over. document.domain injection is now off by default. + +Read the migration guide for Cypress v14.0.0: https://on.cypress.io/migration-guide + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXPERIMENTAL_STUDIO_E2E_ONLY.ansi b/packages/errors/test/__snapshots__/EXPERIMENTAL_STUDIO_E2E_ONLY.ansi new file mode 100644 index 0000000000..a691b37ce2 --- /dev/null +++ b/packages/errors/test/__snapshots__/EXPERIMENTAL_STUDIO_E2E_ONLY.ansi @@ -0,0 +1,3 @@ +The experimentalStudio experiment is currently only supported for End to End Testing. + +If you have feedback about the experiment, please join the discussion here: http://on.cypress.io/studio-beta \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/EXTENSION_NOT_LOADED.ansi b/packages/errors/test/__snapshots__/EXTENSION_NOT_LOADED.ansi new file mode 100644 index 0000000000..9b3108cbac --- /dev/null +++ b/packages/errors/test/__snapshots__/EXTENSION_NOT_LOADED.ansi @@ -0,0 +1,3 @@ +Electron could not install the extension at path: /path/to/extension + +Please verify that this is the path to a valid, unpacked WebExtension. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FIREFOX_CDP_FAILED_TO_CONNECT.ansi b/packages/errors/test/__snapshots__/FIREFOX_CDP_FAILED_TO_CONNECT.ansi new file mode 100644 index 0000000000..3bf466b5ca --- /dev/null +++ b/packages/errors/test/__snapshots__/FIREFOX_CDP_FAILED_TO_CONNECT.ansi @@ -0,0 +1 @@ +Failed to spawn CDP with Firefox. Retrying... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FIREFOX_COULD_NOT_CONNECT.ansi b/packages/errors/test/__snapshots__/FIREFOX_COULD_NOT_CONNECT.ansi new file mode 100644 index 0000000000..e7e2755594 --- /dev/null +++ b/packages/errors/test/__snapshots__/FIREFOX_COULD_NOT_CONNECT.ansi @@ -0,0 +1,7 @@ +Cypress failed to make a connection to Firefox. + +This usually indicates there was a problem opening the Firefox browser. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at FIREFOX_COULD_NOT_CONNECT (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FIREFOX_GECKODRIVER_FAILURE.ansi b/packages/errors/test/__snapshots__/FIREFOX_GECKODRIVER_FAILURE.ansi new file mode 100644 index 0000000000..b1e91a9a4b --- /dev/null +++ b/packages/errors/test/__snapshots__/FIREFOX_GECKODRIVER_FAILURE.ansi @@ -0,0 +1,9 @@ +Cypress could not connect to Firefox. + +An unexpected error was received from GeckoDriver: connection + +To avoid this error, ensure that there are no other instances of Firefox launched by Cypress running. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at FIREFOX_GECKODRIVER_FAILURE (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FIXTURE_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/FIXTURE_NOT_FOUND.ansi new file mode 100644 index 0000000000..5a31b7e4ec --- /dev/null +++ b/packages/errors/test/__snapshots__/FIXTURE_NOT_FOUND.ansi @@ -0,0 +1,10 @@ +A fixture file could not be found at any of the following paths: + +  > file +  > file.[ext] + +Cypress looked for these file extensions at the provided path: + +  > js, ts, json + +Provide a path to an existing fixture file. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FOLDER_NOT_WRITABLE.ansi b/packages/errors/test/__snapshots__/FOLDER_NOT_WRITABLE.ansi new file mode 100644 index 0000000000..7b44ed2baf --- /dev/null +++ b/packages/errors/test/__snapshots__/FOLDER_NOT_WRITABLE.ansi @@ -0,0 +1,7 @@ +This folder is not writable: /path/to/folder + +Writing to this directory is required by Cypress in order to store screenshots and videos. + +Enable write permissions to this directory to ensure screenshots and videos are stored. + +If you don't require screenshots or videos to be stored you can safely ignore this warning. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.ansi b/packages/errors/test/__snapshots__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.ansi new file mode 100644 index 0000000000..78137d9b49 --- /dev/null +++ b/packages/errors/test/__snapshots__/FREE_PLAN_EXCEEDS_MONTHLY_TESTS.ansi @@ -0,0 +1,5 @@ +You've exceeded the limit of test results under your free plan this month. The limit is 500 test results. + +To continue recording tests this month you must upgrade your account. Please visit your billing to upgrade to another billing plan. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.ansi b/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.ansi new file mode 100644 index 0000000000..6ed441e7b5 --- /dev/null +++ b/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_EXCEEDS_MONTHLY_TESTS.ansi @@ -0,0 +1,7 @@ +You've exceeded the limit of test results under your free plan this month. The limit is 500 test results. + +Your plan is now in a grace period, which means you will have the full benefits of your current plan until Feb 1, 2022. + +Please visit your billing to upgrade your plan. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.ansi b/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.ansi new file mode 100644 index 0000000000..4e8a8a8fe2 --- /dev/null +++ b/packages/errors/test/__snapshots__/FREE_PLAN_IN_GRACE_PERIOD_PARALLEL_FEATURE.ansi @@ -0,0 +1,5 @@ +Parallelization is not included under your free plan. + +Your plan is now in a grace period, which means your tests will still run in parallel until Feb 1, 2022. Please upgrade your plan to continue running your tests in parallel in the future. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INCORRECT_CI_BUILD_ID_USAGE.ansi b/packages/errors/test/__snapshots__/INCORRECT_CI_BUILD_ID_USAGE.ansi new file mode 100644 index 0000000000..b052767c0f --- /dev/null +++ b/packages/errors/test/__snapshots__/INCORRECT_CI_BUILD_ID_USAGE.ansi @@ -0,0 +1,7 @@ +You passed the --ci-build-id flag but did not provide either a --group or --parallel flag. + +The --ci-build-id flag you passed was: ciBuildId123 + +The --ci-build-id flag is used to either group or parallelize multiple runs together. + +https://on.cypress.io/incorrect-ci-build-id-usage \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INDETERMINATE_CI_BUILD_ID.ansi b/packages/errors/test/__snapshots__/INDETERMINATE_CI_BUILD_ID.ansi new file mode 100644 index 0000000000..f2e86f087d --- /dev/null +++ b/packages/errors/test/__snapshots__/INDETERMINATE_CI_BUILD_ID.ansi @@ -0,0 +1,36 @@ +You passed the --group or --parallel flag but we could not automatically determine or generate a ciBuildId. + +The --group flag you passed was: foo +The --parallel flag you passed was: false + +In order to use either of these features a ciBuildId must be determined. + +The ciBuildId is automatically detected if you are running Cypress in any of the these CI providers: + + - appveyor + - azure + - awsCodeBuild + - bamboo + - bitbucket + - buildkite + - circle + - codeshipBasic + - codeshipPro + - concourse + - codeFresh + - drone + - githubActions + - gitlab + - goCD + - googleCloud + - jenkins + - semaphore + - shippable + - teamfoundation + - travis + - netlify + - webappio + +Because the ciBuildId could not be auto-detected you must pass the --ci-build-id flag manually. + +https://on.cypress.io/indeterminate-ci-build-id \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.ansi b/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.ansi new file mode 100644 index 0000000000..4a4de62ecc --- /dev/null +++ b/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_DEPRECATION.ansi @@ -0,0 +1,4 @@ +The injectDocumentDomain option is deprecated. Interactions with intra-test navigations to differing hostnames must now be wrapped in cy.origin commands, even if the hostname is a subdomain. This configuration option will be removed in a future version of Cypress. + +Read the documentation for the injectDocumentDomain configuration option: https://on.cypress.io/inject-document-domain-configuration + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.ansi b/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.ansi new file mode 100644 index 0000000000..a579fb7b76 --- /dev/null +++ b/packages/errors/test/__snapshots__/INJECT_DOCUMENT_DOMAIN_E2E_ONLY.ansi @@ -0,0 +1,4 @@ +The injectDocumentDomain option is only available for E2E testing. + +Read the documentation for the injectDocumentDomain configuration option: https://on.cypress.io/inject-document-domain-configuration + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION - plural.ansi b/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION - plural.ansi new file mode 100644 index 0000000000..3ded2189d6 --- /dev/null +++ b/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION - plural.ansi @@ -0,0 +1,7 @@ +The following configuration options are invalid: + + - foo + - bar + +https://on.cypress.io/configuration + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION.ansi b/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION.ansi new file mode 100644 index 0000000000..cdc772f6fe --- /dev/null +++ b/packages/errors/test/__snapshots__/INVALID_CONFIG_OPTION.ansi @@ -0,0 +1,6 @@ +The following configuration option is invalid: + + - foo + +https://on.cypress.io/configuration + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INVALID_CYPRESS_INTERNAL_ENV.ansi b/packages/errors/test/__snapshots__/INVALID_CYPRESS_INTERNAL_ENV.ansi new file mode 100644 index 0000000000..97e4c3e17f --- /dev/null +++ b/packages/errors/test/__snapshots__/INVALID_CYPRESS_INTERNAL_ENV.ansi @@ -0,0 +1,3 @@ +We have detected an unknown or unsupported CYPRESS_INTERNAL_ENV value: foo + +CYPRESS_INTERNAL_ENV is reserved for internal use and cannot be modified. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INVALID_REPORTER_NAME.ansi b/packages/errors/test/__snapshots__/INVALID_REPORTER_NAME.ansi new file mode 100644 index 0000000000..27a328f251 --- /dev/null +++ b/packages/errors/test/__snapshots__/INVALID_REPORTER_NAME.ansi @@ -0,0 +1,12 @@ +Error loading the reporter: missing-reporter-name + +We searched for the reporter in these paths: + + - /path/to/reporter + - /path/reporter + +Learn more at https://on.cypress.io/reporters + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at INVALID_REPORTER_NAME (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.ansi b/packages/errors/test/__snapshots__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.ansi new file mode 100644 index 0000000000..e5a17b0370 --- /dev/null +++ b/packages/errors/test/__snapshots__/INVOKED_BINARY_OUTSIDE_NPM_MODULE.ansi @@ -0,0 +1,7 @@ +It looks like you are running the Cypress binary directly. + +This is not the recommended approach, and Cypress may not work correctly. + +Please install the cypress NPM package and follow the instructions here: + +https://on.cypress.io/installing-cypress \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/JIT_COMPONENT_TESTING.ansi b/packages/errors/test/__snapshots__/JIT_COMPONENT_TESTING.ansi new file mode 100644 index 0000000000..1dafc41579 --- /dev/null +++ b/packages/errors/test/__snapshots__/JIT_COMPONENT_TESTING.ansi @@ -0,0 +1 @@ +The justInTimeCompile configuration is only supported for Component Testing. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/MULTIPLE_SUPPORT_FILES_FOUND.ansi b/packages/errors/test/__snapshots__/MULTIPLE_SUPPORT_FILES_FOUND.ansi new file mode 100644 index 0000000000..e2d0f44c45 --- /dev/null +++ b/packages/errors/test/__snapshots__/MULTIPLE_SUPPORT_FILES_FOUND.ansi @@ -0,0 +1,10 @@ +There were multiple support files found matching your supportFile pattern. + +Your supportFile is set to: spec.{ts,js} + +We found the following files: + + - support.ts + - support.js + +Please remove or combine the support files into a single file. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_DEFAULT_CONFIG_FILE_FOUND.ansi b/packages/errors/test/__snapshots__/NO_DEFAULT_CONFIG_FILE_FOUND.ansi new file mode 100644 index 0000000000..c3838cf19a --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_DEFAULT_CONFIG_FILE_FOUND.ansi @@ -0,0 +1 @@ +Could not find a Cypress configuration file in this folder: /path/to/project/root \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.ansi b/packages/errors/test/__snapshots__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.ansi new file mode 100644 index 0000000000..8a3ae83c40 --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_PROJECT_FOUND_AT_PROJECT_ROOT.ansi @@ -0,0 +1 @@ +Can't find a project at the path: /path/to/project \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_PROJECT_ID.ansi b/packages/errors/test/__snapshots__/NO_PROJECT_ID.ansi new file mode 100644 index 0000000000..1e3181c187 --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_PROJECT_ID.ansi @@ -0,0 +1 @@ +Can't find projectId in the config file: /path/to/project/cypress.config.js \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_SPECS_FOUND - arrPattern.ansi b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - arrPattern.ansi new file mode 100644 index 0000000000..508aeb6a1b --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - arrPattern.ansi @@ -0,0 +1,6 @@ +Can't run because no spec files were found. + +We searched for specs matching these glob patterns: + + > /path/to/project/root/**_spec.js + > /path/to/project/root/**/*.cy.* \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_SPECS_FOUND - noPattern.ansi b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - noPattern.ansi new file mode 100644 index 0000000000..256ae843bf --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - noPattern.ansi @@ -0,0 +1,5 @@ +Can't run because no spec files were found. + +We searched for specs inside of this folder: + + > /path/to/project/root \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathCommonPattern.ansi b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathCommonPattern.ansi new file mode 100644 index 0000000000..6cf653b890 --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathCommonPattern.ansi @@ -0,0 +1,6 @@ +Can't run because no spec files were found. + +We searched for specs matching these glob patterns: + + > /path/to/project/**_spec.js + > /path/to/project/**/*.cy.* \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathNoCommonPattern.ansi b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathNoCommonPattern.ansi new file mode 100644 index 0000000000..356bfab182 --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_SPECS_FOUND - pathNoCommonPattern.ansi @@ -0,0 +1,5 @@ +Can't run because no spec files were found. + +We searched for specs matching this glob pattern: + + > /foo/*_spec.js \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/NO_SPECS_FOUND.ansi b/packages/errors/test/__snapshots__/NO_SPECS_FOUND.ansi new file mode 100644 index 0000000000..f0ee45e851 --- /dev/null +++ b/packages/errors/test/__snapshots__/NO_SPECS_FOUND.ansi @@ -0,0 +1,5 @@ +Can't run because no spec files were found. + +We searched for specs matching this glob pattern: + + > /path/to/project/root/**_spec.js \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi b/packages/errors/test/__snapshots__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi new file mode 100644 index 0000000000..ab8ccc1f15 --- /dev/null +++ b/packages/errors/test/__snapshots__/PARALLEL_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi @@ -0,0 +1,5 @@ +Parallelization is not included under your current billing plan. + +To run your tests in parallel, please visit your billing and upgrade to another plan with parallelization. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PLAN_EXCEEDS_MONTHLY_TESTS.ansi b/packages/errors/test/__snapshots__/PLAN_EXCEEDS_MONTHLY_TESTS.ansi new file mode 100644 index 0000000000..1064f604f2 --- /dev/null +++ b/packages/errors/test/__snapshots__/PLAN_EXCEEDS_MONTHLY_TESTS.ansi @@ -0,0 +1,5 @@ +You've exceeded the limit of test results under your Sprout billing plan this month. The limit is 25000 test results. + +To continue getting the full benefits of your current plan, please visit your billing to upgrade. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.ansi b/packages/errors/test/__snapshots__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.ansi new file mode 100644 index 0000000000..636edd07c5 --- /dev/null +++ b/packages/errors/test/__snapshots__/PLAN_IN_GRACE_PERIOD_RUN_GROUPING_FEATURE_USED.ansi @@ -0,0 +1,5 @@ +Grouping is not included under your free plan. + +Your plan is now in a grace period, which means your tests will still run with groups until Feb 1, 2022. Please upgrade your plan to continue running your tests with groups in the future. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PLUGINS_RUN_EVENT_ERROR.ansi b/packages/errors/test/__snapshots__/PLUGINS_RUN_EVENT_ERROR.ansi new file mode 100644 index 0000000000..c8ea8aed77 --- /dev/null +++ b/packages/errors/test/__snapshots__/PLUGINS_RUN_EVENT_ERROR.ansi @@ -0,0 +1,7 @@ +An error was thrown in your plugins file while executing the handler for the before:spec event. + +The error we received was: + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at PLUGINS_RUN_EVENT_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PORT_IN_USE_LONG.ansi b/packages/errors/test/__snapshots__/PORT_IN_USE_LONG.ansi new file mode 100644 index 0000000000..c87653fcee --- /dev/null +++ b/packages/errors/test/__snapshots__/PORT_IN_USE_LONG.ansi @@ -0,0 +1,3 @@ +Can't run project because port is currently in use: 2020 + +Assign a different port with the --port  argument or shut down the other running process. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PORT_IN_USE_SHORT.ansi b/packages/errors/test/__snapshots__/PORT_IN_USE_SHORT.ansi new file mode 100644 index 0000000000..afc4847fdc --- /dev/null +++ b/packages/errors/test/__snapshots__/PORT_IN_USE_SHORT.ansi @@ -0,0 +1 @@ +Port 2020 is already in use. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.ansi b/packages/errors/test/__snapshots__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.ansi new file mode 100644 index 0000000000..c67765ee4f --- /dev/null +++ b/packages/errors/test/__snapshots__/PROJECT_ID_AND_KEY_BUT_MISSING_RECORD_OPTION.ansi @@ -0,0 +1,13 @@ +This project has been configured to record runs on our Cypress Cloud. + +It currently has the projectId: project-id-123 + +You also provided your Record Key, but you did not pass the --record flag. + +This run will not be recorded. + +If you meant to have this run recorded please additionally pass this flag: + + $ cypress run --record + +https://on.cypress.io/recording-project-runs \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.ansi b/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.ansi new file mode 100644 index 0000000000..bdb55a5dca --- /dev/null +++ b/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_NAME.ansi @@ -0,0 +1,10 @@ +Warning: While proxying a GET request to http://localhost:8080, an HTTP header did not pass validation, and was removed. This header will not be present in the response received by the application under test. + +Invalid header name:  + +{ + "invalidHeaderName": "Value" +} + +Error: fail whale + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.ansi b/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.ansi new file mode 100644 index 0000000000..0f1a86149f --- /dev/null +++ b/packages/errors/test/__snapshots__/PROXY_ENCOUNTERED_INVALID_HEADER_VALUE.ansi @@ -0,0 +1,10 @@ +Warning: While proxying a GET request to http://localhost:8080, an HTTP header value did not pass validation, and was removed. This header will not be present in the response received by the application under test. + +Invalid header value:  + +{ + "invalidHeaderValue": "Value" +} + +Error: fail whale + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RECORDING_FROM_FORK_PR.ansi b/packages/errors/test/__snapshots__/RECORDING_FROM_FORK_PR.ansi new file mode 100644 index 0000000000..62669a909d --- /dev/null +++ b/packages/errors/test/__snapshots__/RECORDING_FROM_FORK_PR.ansi @@ -0,0 +1,7 @@ +Warning: It looks like you are trying to record this run from a forked PR. + +The Record Key is missing. Your CI provider is likely not passing private environment variables to builds from forks. + +These results will not be recorded. + +This error will not affect or change the exit code. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RECORD_KEY_MISSING.ansi b/packages/errors/test/__snapshots__/RECORD_KEY_MISSING.ansi new file mode 100644 index 0000000000..4bc4895cb0 --- /dev/null +++ b/packages/errors/test/__snapshots__/RECORD_KEY_MISSING.ansi @@ -0,0 +1,9 @@ +You passed the --record flag but did not provide us your Record Key. + +You can pass us your Record Key like this: + + $ cypress run --record --key  + +You can also set the key as an environment variable with the name: CYPRESS_RECORD_KEY + +https://on.cypress.io/how-do-i-record-runs \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RECORD_PARAMS_WITHOUT_RECORDING.ansi b/packages/errors/test/__snapshots__/RECORD_PARAMS_WITHOUT_RECORDING.ansi new file mode 100644 index 0000000000..ee8b728f57 --- /dev/null +++ b/packages/errors/test/__snapshots__/RECORD_PARAMS_WITHOUT_RECORDING.ansi @@ -0,0 +1,7 @@ +You passed the --ci-build-id, --group, --tag, --parallel, or --auto-cancel-after-failures flag without also passing the --record flag. + +The --parallel flag you passed was: true + +These flags can only be used when recording to Cypress Cloud. + +https://on.cypress.io/record-params-without-recording \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RENAMED_CONFIG_OPTION.ansi b/packages/errors/test/__snapshots__/RENAMED_CONFIG_OPTION.ansi new file mode 100644 index 0000000000..20ead61a54 --- /dev/null +++ b/packages/errors/test/__snapshots__/RENAMED_CONFIG_OPTION.ansi @@ -0,0 +1,3 @@ +The oldName configuration option you have supplied has been renamed. + +Please rename oldName to newName \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RENDERER_CRASHED.ansi b/packages/errors/test/__snapshots__/RENDERER_CRASHED.ansi new file mode 100644 index 0000000000..80ccfd1755 --- /dev/null +++ b/packages/errors/test/__snapshots__/RENDERER_CRASHED.ansi @@ -0,0 +1,14 @@ +We detected that the Electron Renderer process just crashed. + +We have failed the current spec but will continue running the next spec. + +This can happen for a number of different reasons. + +If you're running lots of tests on a memory intense application. + - Try increasing the CPU/memory on the machine you're running on. + - Try enabling experimentalMemoryManagement in your config file. + - Try lowering numTestsKeptInMemory in your config file during 'cypress open'. + +You can learn more here: + +https://on.cypress.io/renderer-process-crashed \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi b/packages/errors/test/__snapshots__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi new file mode 100644 index 0000000000..1b4de257f3 --- /dev/null +++ b/packages/errors/test/__snapshots__/RUN_GROUPING_FEATURE_NOT_AVAILABLE_IN_PLAN.ansi @@ -0,0 +1,5 @@ +Grouping is not included under your current billing plan. + +To run your tests with groups, please visit your billing and upgrade to another plan with grouping. + +https://on.cypress.io/set-up-billing \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.ansi b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.ansi new file mode 100644 index 0000000000..7eacfff422 --- /dev/null +++ b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR.ansi @@ -0,0 +1,17 @@ +Your configFile threw a validation error from: /path/to/cypress.config.js + +You must pass a valid event name when registering a plugin. + +You passed: invalid:event + +The following are valid events: + + - foo + - bar + - baz + +Learn more at https://on.cypress.io/writing-a-plugin#config + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at SETUP_NODE_EVENTS_INVALID_EVENT_NAME_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.ansi b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.ansi new file mode 100644 index 0000000000..6299572e1e --- /dev/null +++ b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - array.ansi @@ -0,0 +1,21 @@ +Your configFile is invalid: /path/to/cypress.config.js + +The component.setupNodeEvents() function must be defined with the following signature: + +{ + component: { + setupNodeEvents(on, config) { + // configure tasks and plugins here + } + } +} + +Instead we saw: + +[ + "some", + "array" +] + +https://on.cypress.io/plugins-api + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.ansi b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.ansi new file mode 100644 index 0000000000..cbec611165 --- /dev/null +++ b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION - string.ansi @@ -0,0 +1,18 @@ +Your configFile is invalid: /path/to/cypress.config.js + +The component.setupNodeEvents() function must be defined with the following signature: + +{ + component: { + setupNodeEvents(on, config) { + // configure tasks and plugins here + } + } +} + +Instead we saw: + +"some string" + +https://on.cypress.io/plugins-api + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.ansi b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.ansi new file mode 100644 index 0000000000..e2da56fd7d --- /dev/null +++ b/packages/errors/test/__snapshots__/SETUP_NODE_EVENTS_IS_NOT_FUNCTION.ansi @@ -0,0 +1,20 @@ +Your configFile is invalid: /path/to/cypress.config.js + +The e2e.setupNodeEvents() function must be defined with the following signature: + +{ + e2e: { + setupNodeEvents(on, config) { + // configure tasks and plugins here + } + } +} + +Instead we saw: + +{ + "some": "object" +} + +https://on.cypress.io/plugins-api + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/SUPPORT_FILE_NOT_FOUND.ansi b/packages/errors/test/__snapshots__/SUPPORT_FILE_NOT_FOUND.ansi new file mode 100644 index 0000000000..58b6c7b383 --- /dev/null +++ b/packages/errors/test/__snapshots__/SUPPORT_FILE_NOT_FOUND.ansi @@ -0,0 +1,9 @@ +Your supportFile is missing or invalid: /path/to/supportFile + +The supportFile must be a .js, .ts, .coffee file or be supported by your preprocessor plugin (if configured). + +Fix your support file, or set supportFile to false if a support file is not necessary for your project. + +If you have just renamed the extension of your supportFile, restart Cypress. + +https://on.cypress.io/support-file-missing-or-invalid \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/TESTING_TYPE_NOT_CONFIGURED.ansi b/packages/errors/test/__snapshots__/TESTING_TYPE_NOT_CONFIGURED.ansi new file mode 100644 index 0000000000..6074e8860a --- /dev/null +++ b/packages/errors/test/__snapshots__/TESTING_TYPE_NOT_CONFIGURED.ansi @@ -0,0 +1,6 @@ +The testing type selected (component) is not configured in your config file. + +Please run ‘cypress open’ and choose your testing type to automatically update your configuration file. + +https://on.cypress.io/configuration + \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_FAILED.ansi b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_FAILED.ansi new file mode 100644 index 0000000000..eb16504025 --- /dev/null +++ b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_FAILED.ansi @@ -0,0 +1 @@ +The browser never connected. Something is wrong. The tests cannot run. Aborting... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING - retryingAgain.ansi b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING - retryingAgain.ansi new file mode 100644 index 0000000000..bccd423a6a --- /dev/null +++ b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING - retryingAgain.ansi @@ -0,0 +1 @@ +Timed out waiting for the browser to connect. Retrying again... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING.ansi b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING.ansi new file mode 100644 index 0000000000..4425bb833d --- /dev/null +++ b/packages/errors/test/__snapshots__/TESTS_DID_NOT_START_RETRYING.ansi @@ -0,0 +1 @@ +Timed out waiting for the browser to connect. Retrying... \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.ansi b/packages/errors/test/__snapshots__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.ansi new file mode 100644 index 0000000000..b67f20d981 --- /dev/null +++ b/packages/errors/test/__snapshots__/UNEXPECTED_BEFORE_BROWSER_LAUNCH_PROPERTIES.ansi @@ -0,0 +1,11 @@ +The launchOptions object returned by your plugin's before:browser:launch handler contained unexpected properties: + + - baz + +launchOptions may only contain the properties: + + - preferences + - extensions + - args + +https://on.cypress.io/browser-launch-api \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/UNEXPECTED_INTERNAL_ERROR.ansi b/packages/errors/test/__snapshots__/UNEXPECTED_INTERNAL_ERROR.ansi new file mode 100644 index 0000000000..5dec388ed8 --- /dev/null +++ b/packages/errors/test/__snapshots__/UNEXPECTED_INTERNAL_ERROR.ansi @@ -0,0 +1,7 @@ +We encountered an unexpected internal error. + +Please check GitHub or open a new issue if you don't see one already with the details below: + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at UNEXPECTED_INTERNAL_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/UNEXPECTED_MUTATION_ERROR.ansi b/packages/errors/test/__snapshots__/UNEXPECTED_MUTATION_ERROR.ansi new file mode 100644 index 0000000000..04e310b69c --- /dev/null +++ b/packages/errors/test/__snapshots__/UNEXPECTED_MUTATION_ERROR.ansi @@ -0,0 +1,7 @@ +An unexpected internal error occurred while executing the wizardUpdate operation with payload: + +{} + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at UNEXPECTED_MUTATION_ERROR (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/UNSUPPORTED_BROWSER_VERSION.ansi b/packages/errors/test/__snapshots__/UNSUPPORTED_BROWSER_VERSION.ansi new file mode 100644 index 0000000000..35105d9af9 --- /dev/null +++ b/packages/errors/test/__snapshots__/UNSUPPORTED_BROWSER_VERSION.ansi @@ -0,0 +1 @@ +Cypress does not support running chrome version 64. To use chrome with Cypress, install a version of chrome newer than or equal to 64. \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/VIDEO_CAPTURE_FAILED.ansi b/packages/errors/test/__snapshots__/VIDEO_CAPTURE_FAILED.ansi new file mode 100644 index 0000000000..ca56be922d --- /dev/null +++ b/packages/errors/test/__snapshots__/VIDEO_CAPTURE_FAILED.ansi @@ -0,0 +1,7 @@ +Warning: We failed capturing this video. + +This error will not affect or change the exit code. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at VIDEO_CAPTURE_FAILED (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/VIDEO_COMPRESSION_FAILED.ansi b/packages/errors/test/__snapshots__/VIDEO_COMPRESSION_FAILED.ansi new file mode 100644 index 0000000000..4e4f8cceb9 --- /dev/null +++ b/packages/errors/test/__snapshots__/VIDEO_COMPRESSION_FAILED.ansi @@ -0,0 +1,7 @@ +Warning: We failed compressing this video. + +This error will not affect or change the exit code. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at VIDEO_COMPRESSION_FAILED (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/VIDEO_RECORDING_FAILED.ansi b/packages/errors/test/__snapshots__/VIDEO_RECORDING_FAILED.ansi new file mode 100644 index 0000000000..b2e59ea3be --- /dev/null +++ b/packages/errors/test/__snapshots__/VIDEO_RECORDING_FAILED.ansi @@ -0,0 +1,7 @@ +Warning: We failed to record the video. + +This error will not affect or change the exit code. + +Error: fail whale + at makeErr (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) + at VIDEO_RECORDING_FAILED (cypress/packages/errors/test/visualSnapshotErrors.spec.ts) \ No newline at end of file diff --git a/packages/errors/test/__snapshots__/VIDEO_UPLOAD_ON_PASSES_REMOVED.ansi b/packages/errors/test/__snapshots__/VIDEO_UPLOAD_ON_PASSES_REMOVED.ansi new file mode 100644 index 0000000000..c307de8173 --- /dev/null +++ b/packages/errors/test/__snapshots__/VIDEO_UPLOAD_ON_PASSES_REMOVED.ansi @@ -0,0 +1,5 @@ +The videoUploadOnPasses configuration option was removed in Cypress version 13.0.0. + +You can safely remove this option from your config. + +https://on.cypress.io/migration-guide \ No newline at end of file diff --git a/packages/errors/test/unit/errTemplate_spec.ts b/packages/errors/test/errTemplate.spec.ts similarity index 64% rename from packages/errors/test/unit/errTemplate_spec.ts rename to packages/errors/test/errTemplate.spec.ts index df39b358e4..63813bd74c 100644 --- a/packages/errors/test/unit/errTemplate_spec.ts +++ b/packages/errors/test/errTemplate.spec.ts @@ -1,28 +1,28 @@ -import { expect } from 'chai' +import { describe, it, expect } from 'vitest' import chalk from 'chalk' -import { errTemplate, fmt, theme } from '../../src/errTemplate' -import { stripIndent } from '../../src/stripIndent' +import { errTemplate, fmt, theme } from '../src/errTemplate' +import { stripIndent } from '../src/stripIndent' describe('errTemplate', () => { it('returns an object w/ basic props & forBrowser', () => { const obj = errTemplate`Hello world` - expect(obj).to.include({ message: 'Hello world' }) - expect(obj).to.include({ messageMarkdown: 'Hello world' }) + expect(obj).toMatchObject({ message: 'Hello world' }) + expect(obj).toMatchObject({ messageMarkdown: 'Hello world' }) }) it('colors yellow by default for the console, backticks passed arguments for the browser,', () => { const obj = errTemplate`Hello world ${fmt.highlight('special')}` - expect(obj).to.include({ message: `Hello world ${chalk.yellow('special')}` }) - expect(obj).to.include({ messageMarkdown: 'Hello world `special`' }) + expect(obj).toMatchObject({ message: `Hello world ${chalk.yellow('special')}` }) + expect(obj).toMatchObject({ messageMarkdown: 'Hello world `special`' }) }) it('uses fmt.off to guard passed values', () => { const obj = errTemplate`Hello world ${fmt.off('special')}` - expect(obj).to.include({ message: `Hello world special` }) - expect(obj).to.include({ messageMarkdown: `Hello world special` }) + expect(obj).toMatchObject({ message: `Hello world special` }) + expect(obj).toMatchObject({ messageMarkdown: `Hello world special` }) }) it('will stringify non scalar values', () => { @@ -32,7 +32,7 @@ describe('errTemplate', () => { ${fmt.highlightTertiary(someObj)}` - expect(obj).to.include({ + expect(obj).toMatchObject({ messageMarkdown: stripIndent` This was returned from the app: @@ -41,7 +41,7 @@ describe('errTemplate', () => { \`\`\``, }) - expect(obj).to.include({ + expect(obj).toMatchObject({ message: stripIndent` This was returned from the app: @@ -57,8 +57,8 @@ describe('errTemplate', () => { ${fmt.stackTrace(err)}` - expect(obj).to.include({ messageMarkdown: `This was an error in \`specFile.js\`` }) - expect(obj).to.include({ + expect(obj).toMatchObject({ messageMarkdown: `This was an error in \`specFile.js\`` }) + expect(obj).toMatchObject({ message: `This was an error in ${chalk.yellow(specFile)}`, details: err.stack ?? '', }) @@ -73,6 +73,6 @@ describe('errTemplate', () => { ${fmt.stackTrace(new Error())} ` - }).to.throw(/Cannot use fmt.stackTrace\(\) multiple times in the same errTemplate/) + }).toThrow(/Cannot use fmt.stackTrace\(\) multiple times in the same errTemplate/) }) }) diff --git a/packages/errors/test/unit/errors_spec.ts b/packages/errors/test/errors.spec.ts similarity index 53% rename from packages/errors/test/unit/errors_spec.ts rename to packages/errors/test/errors.spec.ts index 2fa5fc56ef..cbc251ebea 100644 --- a/packages/errors/test/unit/errors_spec.ts +++ b/packages/errors/test/errors.spec.ts @@ -1,35 +1,43 @@ -import 'sinon-chai' +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest' import style from 'ansi-styles' -import chai, { expect } from 'chai' -/* eslint-disable no-console */ import chalk from 'chalk' import sinon, { SinonSpy } from 'sinon' -import * as errors from '../../src' -import { parseResolvedPattern } from '../../src/errorUtils' - -chai.use(require('@cypress/sinon-chai')) +import * as errors from '../src' +import { parseResolvedPattern } from '../src/errorUtils' describe('lib/errors', () => { + let consoleErrorSpy: ReturnType + let previousChalkLevel: 0 | 1 | 2 | 3 + beforeEach(() => { - sinon.restore() - sinon.spy(console, 'log') + vi.resetAllMocks() + vi.unstubAllEnvs() + // turns chalk on + previousChalkLevel = chalk.level + chalk.level = 3 + // Mock console.log at the module boundary + consoleErrorSpy = vi.spyOn(console, 'log') }) - context('.log', () => { + afterEach(() => { + chalk.level = previousChalkLevel + }) + + describe('.log', () => { it('uses red by default', () => { const err = errors.get('TESTS_DID_NOT_START_FAILED') const ret = errors.log(err) - expect(ret).to.be.undefined + expect(ret).toBeUndefined() const { red, } = style - expect(console.log).to.be.calledWithMatch(red.open) + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining(red.open)) - expect(console.log).to.be.calledWithMatch(red.close) + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining(red.close)) }) it('can change the color', () => { @@ -37,15 +45,15 @@ describe('lib/errors', () => { const ret = errors.log(err, 'yellow') - expect(ret).to.be.undefined + expect(ret).toBeUndefined() const { yellow, } = style - expect(console.log).to.be.calledWithMatch(yellow.open) + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining(yellow.open)) - expect(console.log).to.be.calledWithMatch(yellow.close) + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining(yellow.close)) }) it('logs err.message', () => { @@ -53,9 +61,9 @@ describe('lib/errors', () => { const ret = errors.log(err) - expect(ret).to.be.undefined + expect(ret).toBeUndefined() - expect(console.log).to.be.calledWithMatch('/path/to/project/cypress.config.js') + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('/path/to/project/cypress.config.js')) }) it('logs err.details', () => { @@ -65,11 +73,11 @@ describe('lib/errors', () => { const ret = errors.log(err) - expect(ret).to.be.undefined + expect(ret).toBeUndefined() - expect(console.log).to.be.calledWithMatch('foo/bar/baz') + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining('foo/bar/baz')) - expect(console.log).to.be.calledWithMatch(chalk.magenta(userError.stack ?? '')) + expect(consoleErrorSpy).toHaveBeenCalledWith(expect.stringContaining(chalk.magenta(userError.stack ?? ''))) }) describe('err.stack', () => { @@ -78,9 +86,9 @@ describe('lib/errors', () => { const ret = errors.log(err) - expect(ret).to.eq(err) + expect(ret).toEqual(err) - expect(console.log).to.be.calledWith(chalk.red(err.stack ?? '')) + expect(consoleErrorSpy).toHaveBeenCalledWith(chalk.red(err.stack ?? '')) }) it('is not logged if a known Cypress error', () => { @@ -90,13 +98,13 @@ describe('lib/errors', () => { const ret = errors.log(err) - expect(ret).to.be.undefined + expect(ret).toBeUndefined() - expect(console.log).not.to.be.calledWith(chalk.red(err.stack ?? '')) + expect(consoleErrorSpy).not.toHaveBeenCalledWith(chalk.red(err.stack ?? '')) }) }) - context('err.cause', () => { + describe('err.cause', () => { let err beforeEach(() => { @@ -109,44 +117,44 @@ describe('lib/errors', () => { const ret = errors.log(err) - expect(ret).to.be.undefined + expect(ret).toBeUndefined() - expect(console.log).not.to.be.calledWith(chalk.red('Caused by:')) + expect(consoleErrorSpy).not.toHaveBeenCalledWith(chalk.red('Caused by:')) }) it('is not logged if max cause depth === 0', () => { const ret = errors.log(err, 'red', 0) - expect(ret).to.eq(ret) + expect(ret).toEqual(ret) - expect(console.log).not.to.be.calledWith(chalk.red('Caused by:')) + expect(consoleErrorSpy).not.toHaveBeenCalledWith(chalk.red('Caused by:')) }) it('is logged to a specified max depth', () => { const ret = errors.log(err, 'red', 5) - expect(ret).to.eq(err) + expect(ret).toEqual(err) - const causeLogs = (console.log as SinonSpy).getCalls().filter((call) => call.args[0] === chalk.red('Caused by:')) + const consoleErrorSpyCalls = consoleErrorSpy.mock.calls.filter((call) => call[0] === chalk.red('Caused by:')) - expect(causeLogs).to.have.length(5) + expect(consoleErrorSpyCalls).toHaveLength(5) }) }) }) - context('.clone', () => { + describe('.clone', () => { it('converts err.message from ansi to html with span classes when html true', () => { const err = new Error(`foo${chalk.blue('bar')}${chalk.yellow('baz')}`) const obj = errors.cloneErr(err, { html: true }) - expect(obj.message).to.eq('foobarbaz') + expect(obj.message).toEqual('foobarbaz') }) it('does not convert err.message from ansi to html when no html option', () => { const err = new Error(`foo${chalk.blue('bar')}${chalk.yellow('baz')}`) const obj = errors.cloneErr(err) - expect(obj.message).to.eq('foo\u001b[34mbar\u001b[39m\u001b[33mbaz\u001b[39m') + expect(obj.message).toEqual('foo\u001b[34mbar\u001b[39m\u001b[33mbaz\u001b[39m') }) }) @@ -158,8 +166,8 @@ describe('lib/errors', () => { const [resolvedBasePath, resolvedPattern] = parseResolvedPattern(folderPath, pattern) - expect(resolvedBasePath).to.eq('/dev/cypress/packages/server') - expect(resolvedPattern).to.eq('cypress/integration/**notfound**') + expect(resolvedBasePath).toEqual('/dev/cypress/packages/server') + expect(resolvedPattern).toEqual('cypress/integration/**notfound**') }) it('splits common paths factoring in ../', () => { @@ -167,8 +175,8 @@ describe('lib/errors', () => { const [resolvedBasePath, resolvedPattern] = parseResolvedPattern(folderPath, pattern) - expect(resolvedBasePath).to.eq('/dev/cypress') - expect(resolvedPattern).to.eq('integration/**notfound**') + expect(resolvedBasePath).toEqual('/dev/cypress') + expect(resolvedPattern).toEqual('integration/**notfound**') }) it('splits common paths until falsy instead of doing an intersection', () => { @@ -176,8 +184,8 @@ describe('lib/errors', () => { const [resolvedBasePath, resolvedPattern] = parseResolvedPattern(folderPath, pattern) - expect(resolvedBasePath).to.eq('') - expect(resolvedPattern).to.eq('/private/var/cypress/integration/cypress/integration/**notfound**') + expect(resolvedBasePath).toEqual('') + expect(resolvedPattern).toEqual('/private/var/cypress/integration/cypress/integration/**notfound**') }) it('splits common paths up directories until root is reached', () => { @@ -185,8 +193,8 @@ describe('lib/errors', () => { const [resolvedBasePath, resolvedPattern] = parseResolvedPattern(folderPath, pattern) - expect(resolvedBasePath).to.eq('') - expect(resolvedPattern).to.eq('/cypress/integration/**notfound**') + expect(resolvedBasePath).toEqual('') + expect(resolvedPattern).toEqual('/cypress/integration/**notfound**') }) }) }) diff --git a/packages/errors/test/unit/stripIndent_spec.ts b/packages/errors/test/stripIndent.spec.ts similarity index 80% rename from packages/errors/test/unit/stripIndent_spec.ts rename to packages/errors/test/stripIndent.spec.ts index bcc720de0c..9ba85ec479 100644 --- a/packages/errors/test/unit/stripIndent_spec.ts +++ b/packages/errors/test/stripIndent.spec.ts @@ -1,5 +1,5 @@ -import { expect } from 'chai' -import { stripIndent } from '../../src/stripIndent' +import { describe, it, expect } from 'vitest' +import { stripIndent } from '../src/stripIndent' describe('src/stripIndent', () => { it('does not trip right end', () => { @@ -9,7 +9,7 @@ describe('src/stripIndent', () => { [Stack Trace] ` - expect(str).to.eq(` + expect(str).toEqual(` There was an error reconnecting to the Chrome DevTools protocol. Please restart the browser. [Stack Trace] @@ -28,7 +28,7 @@ There was an error reconnecting to the Chrome DevTools protocol. Please restart ${arg}` - expect(str).to.eq(` + expect(str).toEqual(` Something went wrong. - a diff --git a/packages/errors/test/support/error-comparison-tool.ts b/packages/errors/test/support/error-comparison-tool.ts deleted file mode 100644 index dbd2750936..0000000000 --- a/packages/errors/test/support/error-comparison-tool.ts +++ /dev/null @@ -1,223 +0,0 @@ -/* eslint-disable no-console */ -import express from 'express' -import fs from 'fs-extra' -import globby from 'globby' -import Markdown from 'markdown-it' -import path from 'path' -import { WIDTH } from './utils' - -const ERRORS_DIR = path.join(__dirname, '..', '..') -const SNAPSHOT_HTML = path.join(ERRORS_DIR, '__snapshot-html__') -const SNAPSHOT_HTML_LOCAL = path.join(ERRORS_DIR, '__snapshot-html-local__') -const SNAPSHOT_MARKDOWN = path.join(ERRORS_DIR, '__snapshot-md__') - -const app = express() - -const LINKS = `
Ansi Compare | Ansi Base List | Markdown |
` - -const SEARCH_HANDLER = ` - -` - -const getFiles = async (baseDir: string, spec?: string) => { - const pattern = spec ? `${spec}*` : '**/*' - - return (await globby(`${baseDir}/${pattern}`)) -} - -async function getRows (offset = 0, baseList: boolean = false, spec?: string) { - const baseDir = baseList ? SNAPSHOT_HTML : SNAPSHOT_HTML_LOCAL - const toCompare = await getFiles(baseDir, spec) - - const rows = toCompare.filter((f) => f.endsWith('.html')).sort().slice(offset, offset + 10).map((f) => path.basename(f).split('.')[0]).map((name) => { - const width = baseList ? WIDTH : 550 - // const height = baseList ? HEIGHT : 600 - const height = 400 - - return ` - - ${name} - - ${baseList ? '' : ` - - - `} - ` - }) - - if (toCompare.length > offset + 10) { - rows.push(``) - } - - return rows.join('\n') -} - -app.get('/', async (req, res) => { - try { - const rows = await getRows() - - res.type('html').send(` - - - ${LINKS} - - - - - - ${rows} - -
TableOriginalNew
- `) - } catch (e) { - res.json({ errStack: e.stack }) - } -}) - -app.get('/base-list', async (req, res) => { - const spec = req.query.spec as string - - try { - const rows = await getRows(0, true, spec) - - res.type('html').send(` - - - ${LINKS} - ${SEARCH_HANDLER} - - - - - - ${rows} - -
TableOriginal
- `) - } catch (e) { - res.json({ errStack: e.stack }) - } -}) - -app.get<{ offset: number }>('/load-more/:offset', async (req, res) => { - const rows = await getRows(req.params.offset) - - res.send(rows) -}) - -app.get<{ offset: number }>('/load-more-base/:offset', async (req, res) => { - const rows = await getRows(req.params.offset, true) - - res.send(rows) -}) - -app.get('/looks-good/:name', async (req, res) => { - try { - await fs.move( - path.join(SNAPSHOT_HTML_LOCAL, `${req.params.name}.html`), - path.join(SNAPSHOT_HTML, `${req.params.name}.html`), - { overwrite: true }, - ) - - res.json({ ok: true }) - } catch (e) { - res.status(400).json({ stack: e.stack }) - } -}) - -app.get<{ name: string, type: string }>('/html/:name/:type', async (req, res) => { - const pathToFile = path.join(ERRORS_DIR, req.params.type, `${req.params.name}.html`) - - try { - const contents = await fs.readFile(pathToFile, 'utf8') - - res.type('html').send(contents.replace(/\/g, '').replace('overflow: hidden;', '')) - } catch (e) { - res.json({ errStack: e }) - } -}) - -app.get('/md', async (req, res) => { - const spec = req.query.spec as string - - try { - const toRender = (await getFiles(SNAPSHOT_MARKDOWN, spec)).filter((f) => f.endsWith('.md')).sort() - const markdownContents = await Promise.all(toRender.map((f) => fs.readFile(f, 'utf8'))) - const md = new Markdown({ - html: true, - linkify: true, - }) - - res.type('html').send(` - - ${LINKS} - ${SEARCH_HANDLER} - -
- ${toRender.map((r, i) => { - return `
-
${path.basename(r).split('.')[0]}
-
-
${md.render(markdownContents[i] ?? '')}
-
${markdownContents[i] ?? ''}
-
-
` - }).join('\n')} -
- `) - } catch (e) { - res.json({ stack: e.stack }) - } -}) - -app.listen(5555, () => { - console.log(`Comparison server listening on: http://localhost:5555`) -}) diff --git a/packages/errors/test/support/utils.ts b/packages/errors/test/support/utils.ts deleted file mode 100644 index b5f3ae939c..0000000000 --- a/packages/errors/test/support/utils.ts +++ /dev/null @@ -1,95 +0,0 @@ -import Debug from 'debug' -import { app, BrowserWindow } from 'electron' -import fse from 'fs-extra' -import path from 'path' -import { PNG } from 'pngjs' - -const isCi = require('ci-info').isCI - -if (app) { - app.on('window-all-closed', () => { - }) -} - -export const HEIGHT = 600 - -export const WIDTH = 1200 - -const EXT = '.png' -const debug = Debug(isCi ? '*' : 'visualSnapshotErrors') - -export const copyImageToBase = (from: string, to: string) => { - return fse.copy(from, to, { overwrite: true }) -} - -export const convertHtmlToImage = async (htmlFile: string, snapshotImagesFolder: string) => { - const win = new BrowserWindow({ - show: false, - width: WIDTH, - height: HEIGHT, - }) - - try { - await app.isReady() - - win.webContents.debugger.attach() - - debug(`Loading %s`, htmlFile) - - await win.loadFile(htmlFile) - - await win.webContents.debugger.sendCommand('Emulation.setDeviceMetricsOverride', { - width: WIDTH, - height: HEIGHT, - deviceScaleFactor: 1, - mobile: false, - }) - - const { data } = await win.webContents.debugger.sendCommand('Page.captureScreenshot', { - format: 'png', - quality: 100, - }) - - const imagePath = htmlFile.replace('.html', EXT) - const snapshotImagePath = path.join(snapshotImagesFolder, path.basename(imagePath)) - - debug('snapshotImagePath %s', snapshotImagePath) - - const receivedImageBuffer = Buffer.from(data, 'base64') - const receivedPng = PNG.sync.read(receivedImageBuffer) - const receivedPngBuffer = PNG.sync.write(receivedPng) - - await fse.outputFile(snapshotImagePath, receivedPngBuffer) - - // - if image does not exist in __snapshot-bases__ - // then copy into __snapshot-bases__ - // - if image does exist then diff if, and if its - // greater than >.01 diff, then copy it in - // - unless we're in CI, then fail if there's a diff - // try { - // const buf = await fse.readFile(snapshotImagePath) - // const existingPng = PNG.sync.read(buf) - // const diffPng = new PNG({ width: WIDTH, height: HEIGHT }) - // const changed = pixelmatch(existingPng.data, receivedPng.data, diffPng.data, WIDTH, HEIGHT, { threshold: 0.3 }) - - // debug('num pixels different: %s', changed) - - // if (changed > 100) { - // if (isCi) { - // throw new Error(`Image difference detected. Base error image no longer matches for file: ${snapshotImagePath}, off by ${changed} pixels`) - // } - - // await copyImageToBase(imagePath, snapshotImagePath) - // } - // } catch (e: any) { - // if (e.code === 'ENOENT') { - // debug(`Adding new image: ${imagePath}`) - // await copyImageToBase(imagePath, snapshotImagePath) - // } else { - // throw e - // } - // } - } finally { - win.destroy() - } -} diff --git a/packages/errors/test/unit/visualSnapshotErrors_spec.ts b/packages/errors/test/visualSnapshotErrors.spec.ts similarity index 75% rename from packages/errors/test/unit/visualSnapshotErrors_spec.ts rename to packages/errors/test/visualSnapshotErrors.spec.ts index 1856498339..c327de0288 100644 --- a/packages/errors/test/unit/visualSnapshotErrors_spec.ts +++ b/packages/errors/test/visualSnapshotErrors.spec.ts @@ -1,43 +1,15 @@ -/* eslint-disable no-console */ -import chai, { expect } from 'chai' -import Debug from 'debug' -import fse from 'fs-extra' -import globby from 'globby' +import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest' + +import chalk from 'chalk' import _ from 'lodash' import path from 'path' -import sinon, { SinonSpy } from 'sinon' -import * as errors from '../../src' -import { convertHtmlToImage } from '../support/utils' +import * as errors from '../src' import os from 'os' -// For importing the files below -process.env.CYPRESS_INTERNAL_ENV = 'test' - -// require'd so the unsafe types from the server / missing types don't mix in here -const termToHtml = require('term-to-html') -const isCi = require('ci-info').isCI -const { terminalBanner } = require('terminal-banner') -const ciProvider = require('@packages/server/lib/util/ci_provider') -const browsers = require('@packages/server/lib/browsers') -const { knownBrowsers } = require('@packages/launcher/lib/known-browsers') - -const debug = Debug(isCi ? '*' : 'visualSnapshotErrors') - -let snapshotFailures = 0 - -after(() => { - if (snapshotFailures > 0) { - console.log(` - ================================= - - Snapshot failures see for visualSnapshotErrors. - - Run "yarn comparison" locally from the @packages/error package to resolve - - ================================= - `) - } -}) +// these packages need process.env.CYPRESS_INTERNAL_ENV to be set to 'test' to work, which is set in the global vitest config +import ciProvider from '@packages/server/lib/util/ci_provider' +import browsers from '@packages/server/lib/browsers' +import { knownBrowsers } from '@packages/launcher/lib/known-browsers' interface ErrorGenerator { default: Parameters @@ -46,24 +18,9 @@ interface ErrorGenerator { type CypressErrorType = keyof typeof errors.AllCypressErrors -chai.config.truncateThreshold = 0 -chai.use(require('@cypress/sinon-chai')) - -termToHtml.themes.dark.bg = '#111' - +const cypressRootPath = path.join(__dirname, '..', '..', '..') const lineAndColNumsRe = /:\d+:\d+/ -const snapshotHtmlFolder = path.join(__dirname, '..', '..', '__snapshot-html__') -const snapshotHtmlLocalFolder = path.join(__dirname, '..', '..', '__snapshot-html-local__') -const snapshotMarkdownFolder = path.join(__dirname, '..', '..', '__snapshot-md__') -const snapshotImagesFolder = path.join(__dirname, '..', '..', '__snapshot-images__') - -const saveHtml = async (filename: string, html: string) => { - await fse.outputFile(filename, html, 'utf8') -} - -const cypressRootPath = path.join(__dirname, '..', '..', '..', '..') - const sanitize = (str: string) => { return str .split(lineAndColNumsRe).join('') @@ -71,213 +28,6 @@ const sanitize = (str: string) => { .split(os.tmpdir()).join('/os/tmpdir') } -const snapshotAndTestErrorConsole = async function (errorFileName: string) { - const logs = _ - .chain(consoleLog.args) - .map((args) => args.map(sanitize).join(' ')) - .join('\n') - .value() - - // if the sanitized snapshot matches, let's save the ANSI colors converted into HTML - const html = termToHtml - .strings(logs, termToHtml.themes.dark.name) - .split('color:#55F').join('color:#4ec4ff') // replace blueBright colors - .split('color:#A00').join('color:#e05561') // replace red colors - .split('color:#A50').join('color:#e5e510') // replace yellow colors - .split('color:#555').join('color:#4f5666') // replace gray colors - .split('color:#eee').join('color:#e6e6e6') // replace white colors - .split('color:#A0A').join('color:#c062de') // replace magenta colors - .split('color:#F5F').join('color:#de73ff') // replace magentaBright colors - .split('"Courier New", ').join('"Courier Prime", ') // replace font - .split('').join(` - body { - margin: 5px; - padding: 0; - overflow: hidden; - } - pre { - white-space: pre-wrap; - word-break: break-word; - -webkit-font-smoothing: antialiased; - } - - `) // remove margin/padding and force text overflow like a terminal - - if (isCi) { - expect(logs).not.to.contain('[object Object]') - } - - try { - fse.accessSync(errorFileName) - } catch (e) { - await saveHtml(errorFileName, html) - } - - const contents = await fse.readFile(errorFileName, 'utf8') - - try { - expect(contents).to.eq(html) - } catch (e) { - snapshotFailures++ - await saveHtml(errorFileName.replace('__snapshot-html__', '__snapshot-html-local__'), html) - throw e - } -} - -let consoleLog: SinonSpy - -beforeEach(() => { - sinon.restore() - consoleLog = sinon.spy(console, 'log') -}) - -afterEach(() => { - sinon.restore() -}) - -const testVisualError = (errorGeneratorFn: () => ErrorGenerator, errorType: K) => { - const variants = errorGeneratorFn() - - expect(variants).to.be.an('object') - - for (const [key, arr] of Object.entries(variants)) { - const filename = key === 'default' ? errorType : `${errorType} - ${key}` - - it(`${errorType} - ${key}`, async () => { - debug(`Converting ${filename}`) - - terminalBanner(filename) - - consoleLog.resetHistory() - - const err = errors.get(errorType, ...arr) - - if (!errors.isCypressErr(err)) { - throw new Error(`Expected Cypress Error`) - } - - errors.log(err) - - const htmlFilename = path.join(snapshotHtmlFolder, `${filename}.html`) - const mdFilename = path.join(snapshotMarkdownFolder, `${filename}.md`) - - await snapshotAndTestErrorConsole(htmlFilename) - - await fse.outputFile(mdFilename, err.messageMarkdown, 'utf8') - - debug(`Snapshotted ${htmlFilename}`) - - // dont run html -> image conversion if we're in CI / if not enabled - if (!isCi && process.env.HTML_IMAGE_CONVERSION) { - debug(`Converting ${errorType} to image`) - - await convertHtmlToImage(htmlFilename, snapshotImagesFolder) - - debug(`Conversion complete for ${errorType}`) - } - }).timeout(5000) - } -} - -const testVisualErrors = (whichError: CypressErrorType | '*', errorsToTest: { [K in CypressErrorType]: () => ErrorGenerator }) => { - // if we aren't testing all the errors - if (whichError !== '*') { - // then just test this individual error - return testVisualError(errorsToTest[whichError], whichError) - } - - // otherwise test all the errors - before(() => { - // prune out all existing local staging folders - return Promise.all([ - fse.remove(snapshotMarkdownFolder), - fse.remove(snapshotHtmlLocalFolder), - fse.remove(snapshotImagesFolder), - ]) - }) - - after(async () => { - // if we're in CI, make sure there's all the files - // we expect there to be in __snapshot-html__ - const files = await globby(`${snapshotHtmlFolder}/*`) - const errorKeys = _.keys(errors.AllCypressErrors) - - if (isCi) { - const errorNames = files.map((file) => { - return path.basename(file, '.html').split(' ')[0] - }) - const uniqErrors = _.uniq(errorNames) - // const excessErrors = _.difference(uniqErrors, _.keys(errors.AllCypressErrors)) - - // await Promise.all(excessErrors.map((file) => { - // const pathToHtml = path.join(baseImageFolder, file + EXT) - // return fse.remove(pathToHtml) - // })) - - const sortedUniqErrors = uniqErrors.sort() - const sortedErrorKeys = errorKeys.sort() - - _.each(sortedUniqErrors, (val, index) => { - expect(val).to.eq(sortedErrorKeys[index]) - }) - } else { - const errorFiles = files.map((file) => { - return { - errorType: path.basename(file, '.html').split(' ')[0], - filePath: file, - } - }) - const excessErrors = _ - .chain(errorFiles) - .map('errorType') - .uniq() - .difference(errorKeys) - .value() - - return Promise.all( - errorFiles - .filter((obj) => { - return _.includes(excessErrors, obj.errorType) - }) - .map((obj) => { - return fse.remove(obj.filePath) - }), - ) - } - }) - - // test each error visually - // @ts-expect-error - _.forEach(errorsToTest, testVisualError) - - // if we are testing all the errors then make sure we - // have a test to validate that we've written a test - // for each error type - it('ensures there are matching tests for each cypress error', () => { - const { missingErrorTypes, excessErrorTypes } = _ - .chain(errors.AllCypressErrors) - .keys() - .thru((errorTypes) => { - const errorsToTestTypes = _.keys(errorsToTest) - - return { - missingErrorTypes: _.difference(errorTypes, errorsToTestTypes), - excessErrorTypes: _.difference(errorsToTestTypes, errorTypes), - } - }) - .value() - - expect(missingErrorTypes, 'you are missing tests around the following error types').to.be.empty - expect(excessErrorTypes, 'you have added excessive tests for errors which do not exist').to.be.empty - }) -} - const makeApiErr = () => { const err = new Error('500 - "Internal Server Error"') @@ -294,15 +44,98 @@ const makeErr = () => { return err as Error & { stack: string } } -process.on('uncaughtException', (err) => { - console.error(err) - process.exit(1) -}) - describe('visual error templates', () => { const errorType = (process.env.ERROR_TYPE || '*') as CypressErrorType - // testVisualErrors('CANNOT_RECORD_NO_PROJECT_ID', { + let previousChalkLevel: 0 | 1 | 2 | 3 + let getConsoleLogOutput: () => string + + beforeEach(async () => { + vi.resetAllMocks() + vi.unstubAllEnvs() + + // turns chalk on + previousChalkLevel = chalk.level + chalk.level = 3 + + const logs: string[] = [] + + // spy on console.log and mock the output so we can snapshot the logs with chalk turned on + vi.spyOn(console, 'log').mockImplementation((args) => { + logs.push(args) + }) + + getConsoleLogOutput = () => { + const sanitizedLogs = _ + .chain(logs) + .map(sanitize) + .join('\n') + .value() + + return sanitizedLogs + } + }) + + afterEach(() => { + chalk.level = previousChalkLevel + }) + + const testVisualError = (errorGeneratorFn: () => ErrorGenerator, errorType: K) => { + const variants = errorGeneratorFn() + + expect(variants).to.be.instanceOf(Object) + + for (const [key, arr] of Object.entries(variants)) { + const filename = key === 'default' ? errorType : `${errorType} - ${key}` + + it(`${errorType} - ${key}`, async () => { + const err = errors.get(errorType, ...arr) + + if (!errors.isCypressErr(err)) { + throw new Error(`Expected Cypress Error`) + } + + errors.log(err) + + const consoleLogOutput = getConsoleLogOutput() + + expect(consoleLogOutput).toMatchFileSnapshot(`./__snapshots__/${filename}.ansi`) + }) + } + } + + const testVisualErrors = (whichError: CypressErrorType | '*', errorsToTest: { [K in CypressErrorType]: () => ErrorGenerator }) => { + // if we aren't testing all the errors + if (whichError !== '*') { + // then just test this individual error + return testVisualError(errorsToTest[whichError], whichError) + } + + // test each error visually + _.forEach(errorsToTest, testVisualError) + + // if we are testing all the errors then make sure we + // have a test to validate that we've written a test + // for each error type + it('ensures there are matching tests for each cypress error', () => { + const { missingErrorTypes, excessErrorTypes } = _ + .chain(errors.AllCypressErrors) + .keys() + .thru((errorTypes) => { + const errorsToTestTypes = _.keys(errorsToTest) + + return { + missingErrorTypes: _.difference(errorTypes, errorsToTestTypes), + excessErrorTypes: _.difference(errorsToTestTypes, errorTypes), + } + }) + .value() + + expect(missingErrorTypes, 'you are missing tests around the following error types').toHaveLength(0) + expect(excessErrorTypes, 'you have added excessive tests for errors which do not exist').toHaveLength(0) + }) + } + testVisualErrors(errorType, { CANNOT_TRASH_ASSETS: () => { const err = makeErr() @@ -368,11 +201,6 @@ describe('visual error templates', () => { retryingAgain: ['Retrying again...'], } }, - FIREFOX_CDP_FAILED_TO_CONNECT: () => { - return { - default: ['Retrying...'], - } - }, TESTS_DID_NOT_START_FAILED: () => { return { default: [], diff --git a/packages/errors/vitest.config.ts b/packages/errors/vitest.config.ts new file mode 100644 index 0000000000..0dbf099caf --- /dev/null +++ b/packages/errors/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + env: { + CYPRESS_INTERNAL_ENV: 'test', + }, + include: ['test/**/*.spec.ts'], + globals: true, + environment: 'node', + }, +}) diff --git a/packages/server/lib/browsers/chrome.ts b/packages/server/lib/browsers/chrome.ts index 5d2c2e2abf..373861f838 100644 --- a/packages/server/lib/browsers/chrome.ts +++ b/packages/server/lib/browsers/chrome.ts @@ -1,5 +1,4 @@ import Bluebird from 'bluebird' -import check from 'check-more-types' import debugModule from 'debug' import la from 'lazy-ass' import _ from 'lodash' @@ -216,8 +215,7 @@ async function _recordVideo (cdpAutomation: CdpAutomation, videoOptions: RunMode // a utility function that navigates to the given URL // once Chrome remote interface client is passed to it. const _navigateUsingCRI = async function (client, url) { - // @ts-ignore - la(check.url(url), 'missing url to navigate to', url) + la(_.isString(url) && url.match(/^https?:\/\/.*$/), 'missing url to navigate to', url) la(client, 'could not get CRI client') debug('received CRI client') debug('navigating to page %s', url) diff --git a/packages/server/lib/browsers/index.ts b/packages/server/lib/browsers/index.ts index 8ccfda4a4b..2d34ece958 100644 --- a/packages/server/lib/browsers/index.ts +++ b/packages/server/lib/browsers/index.ts @@ -3,7 +3,6 @@ import Bluebird from 'bluebird' import Debug from 'debug' import utils from './utils' import * as errors from '../errors' -import check from 'check-more-types' import { exec } from 'child_process' import util from 'util' import os from 'os' @@ -14,7 +13,7 @@ import type { DataContext } from '@packages/data-context' import type { CDPSocketServer } from '@packages/socket/lib/cdp-socket' const debug = Debug('cypress:server:browsers') -const isBrowserFamily = check.oneOf(BROWSER_FAMILY) +const isBrowserFamily = (browser: string) => BROWSER_FAMILY.includes(browser) let instance: BrowserInstance | null = null let launchAttempt = 0 diff --git a/packages/server/lib/project-base.ts b/packages/server/lib/project-base.ts index 9bf6739257..8a1ab2c235 100644 --- a/packages/server/lib/project-base.ts +++ b/packages/server/lib/project-base.ts @@ -1,4 +1,3 @@ -import check from 'check-more-types' import Debug from 'debug' import EE from 'events' import _ from 'lodash' @@ -95,7 +94,7 @@ export class ProjectBase extends EE { throw new Error('Instantiating lib/project requires a projectRoot!') } - if (!check.unemptyString(projectRoot)) { + if (!_.isString(projectRoot) || _.isEmpty(projectRoot)) { throw new Error(`Expected project root path, not ${projectRoot}`) } diff --git a/system-tests/lib/normalizeStdout.ts b/system-tests/lib/normalizeStdout.ts index e47f7c9eda..1b60b12b03 100644 --- a/system-tests/lib/normalizeStdout.ts +++ b/system-tests/lib/normalizeStdout.ts @@ -164,8 +164,6 @@ export const normalizeStdout = function (str: string, options: any = {}) { .replace(crossOriginErrorRe, '[Cross origin error message]') // Replaces connection warning since Chrome or Firefox sometimes take longer to connect .replace(/Still waiting to connect to .+, retrying in 1 second \(attempt .+\/.+\)\n/g, '') - // Replaces CDP connection error message in Firefox since Cypress will retry - .replace(/\nFailed to spawn CDP with Firefox. Retrying.*\.\.\.\n/g, '') // Replaces "new dependencies optimized" message from vite as it does not respect the logLevel='silent' option .replace(/^.*Re-optimizing dependencies.*?\n$/gm, '') .replace(/\).*new dependencies optimized.*?\n/gm, ')\n') diff --git a/yarn.lock b/yarn.lock index 7f890c3f86..1f71baf2b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30323,7 +30323,7 @@ term-to-html@1.2.0: arg "4.1.3" escape-html "1.0.3" -terminal-banner@1.1.0, terminal-banner@^1.1.0: +terminal-banner@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/terminal-banner/-/terminal-banner-1.1.0.tgz#ef81ce7d9d7e541a81d09eb2c0257c3d5463c3ea" integrity sha512-A70B8Io5gGOTKQuoqU6LUPLouNd9DvFLgw3cPh6bfrQjdy7HWW1t04VJfQwjTnygTVDX0xremaj1cg3SQaCGyg==