From 74cf21643eac4e40e6d1ceb0058e9d841d374bee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 13:15:32 -0500 Subject: [PATCH 01/25] chore: Update Chrome (stable) to 131.0.6778.139 (#30743) * chore: Update Chrome (stable) to 131.0.6778.139 * empty commit --------- Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane --- browser-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser-versions.json b/browser-versions.json index d402b7236bb7..e3997256ea01 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { "chrome:beta": "132.0.6834.32", - "chrome:stable": "131.0.6778.108", + "chrome:stable": "131.0.6778.139", "chrome:minimum": "64.0.3282.0" } From 3e1d4b9eff85cb969a956b1ee992a8fce84e6219 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 18:49:24 -0600 Subject: [PATCH 02/25] chore(deps): update yarn to >=1.22.22 (#30745) * chore(deps): update yarn to >=1.22.22 * empty commit * chore: update dependencies to resolve yarn versioning issue * bump cache * try to fix build * try to fix build --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane Co-authored-by: Ryan Manuel --- .circleci/cache-version.txt | 2 +- .circleci/workflows.yml | 10 +++--- package.json | 2 +- yarn.lock | 65 ++++++++++++++++++++++++++++++++++--- 4 files changed, 67 insertions(+), 12 deletions(-) diff --git a/.circleci/cache-version.txt b/.circleci/cache-version.txt index 1dd4a2276a03..f82a827eb247 100644 --- a/.circleci/cache-version.txt +++ b/.circleci/cache-version.txt @@ -1,3 +1,3 @@ # Bump this version to force CI to re-create the cache from scratch. -11-5-24 +12-11-24 diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 109dd3d2378e..676f9503e0c1 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,7 +30,7 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' - - 'chore/update_reporter_mobx' + - 'renovate/yarn-1.x' - 'publish-binary' # usually we don't build Mac app - it takes a long time @@ -42,7 +42,7 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'ryanm/experiment/esm', << pipeline.git.branch >> ] + - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -53,7 +53,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'chore/update_reporter_mobx', << pipeline.git.branch >> ] + - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -76,7 +76,7 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'chore/update_reporter_mobx', << pipeline.git.branch >> ] + - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -1772,7 +1772,7 @@ jobs: PLATFORM: linux machine: # using `machine` gives us a Linux VM that can run Docker - image: ubuntu-2004:202111-02 + image: ubuntu-2004:2023.07.1 docker_layer_caching: true resource_class: medium steps: diff --git a/package.json b/package.json index 513aaad60895..dc7c145e8b0c 100644 --- a/package.json +++ b/package.json @@ -212,7 +212,7 @@ }, "engines": { "node": ">=18.17.0", - "yarn": ">=1.22.17" + "yarn": ">=1.22.22" }, "productName": "Cypress", "license": "MIT", diff --git a/yarn.lock b/yarn.lock index 1d2b449bd04f..b7545677d55e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21331,7 +21331,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4 dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.1, loupe@^2.3.6: +loupe@^2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== @@ -22254,7 +22254,7 @@ mobx@6.13.5: resolved "https://registry.npmjs.org/mobx/-/mobx-6.13.5.tgz#957d9df88c7f8b4baa7c6f8bdcb6d68b432a6ed5" integrity sha512-/HTWzW2s8J1Gqt+WmUj5Y0mddZk+LInejADc79NJadrWla3rHzmRHki/mnEUH1AvOmbNTZ1BRbKxr8DSgfdjMA== -"mocha-7.0.1@npm:mocha@7.0.1", mocha@7.0.1: +"mocha-7.0.1@npm:mocha@7.0.1": version "7.0.1" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce" integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg== @@ -22371,6 +22371,36 @@ mocha@6.2.2: yargs-parser "13.1.1" yargs-unparser "1.6.0" +mocha@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.0.1.tgz#276186d35a4852f6249808c6dd4a1376cbf6c6ce" + integrity sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "2.2.0" + minimatch "3.0.4" + mkdirp "0.5.1" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.0" + yargs-parser "13.1.1" + yargs-unparser "1.6.0" + mocha@7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.1.0.tgz#c784f579ad0904d29229ad6cb1e2514e4db7d249" @@ -29130,7 +29160,7 @@ string-template@~0.2.1: resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" integrity sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0= -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -29156,6 +29186,15 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -29257,7 +29296,7 @@ stringify-object@^3.0.0, stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -29278,6 +29317,13 @@ strip-ansi@5.2.0, strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" @@ -32287,7 +32333,7 @@ workerpool@6.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -32330,6 +32376,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" From 499c36163670b85e9f02630bdf3bbf704e8c540d Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Thu, 12 Dec 2024 07:42:35 -0700 Subject: [PATCH 03/25] test: match newline in Firefox CDP spawn message (#30753) --- system-tests/lib/normalizeStdout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-tests/lib/normalizeStdout.ts b/system-tests/lib/normalizeStdout.ts index 77d960b57c35..5dbf7f04bf84 100644 --- a/system-tests/lib/normalizeStdout.ts +++ b/system-tests/lib/normalizeStdout.ts @@ -165,7 +165,7 @@ export const normalizeStdout = function (str: string, options: any = {}) { // 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(/Failed to spawn CDP with Firefox. Retrying.*\.\.\./, '') + .replace(/Failed to spawn CDP with Firefox. Retrying.*\.\.\.\n/g, '') if (options.browser === 'webkit') { // WebKit throws for lookups on undefined refs with "Can't find variable: " From b33978618f74eb4cb39c602bd5c264814b209a9e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:53:24 -0500 Subject: [PATCH 04/25] chore: Update v8 snapshot cache - darwin (#30740) * chore: updating v8 snapshot cache * index on develop: 74cf21643e chore: Update Chrome (stable) to 131.0.6778.139 (#30743) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Ryan Manuel Co-authored-by: Jennifer Shehane --- tooling/v8-snapshot/cache/darwin/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index 522a123ca30a..5a52f6d9f1b2 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -4249,5 +4249,5 @@ "./tooling/v8-snapshot/cache/darwin/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "2e76ee3eb48ec47a4627a4c7d5f39cbf8586601c4fca32b250efef671d7016c1" + "deferredHash": "ca5ac2cd877d4a2d2614f8a49a04badcce7f12a1f9962d6f1dbdebe4aaa797ff" } \ No newline at end of file From e538359048e2dab34da2d245185b82749ed02971 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:54:44 -0500 Subject: [PATCH 05/25] chore: Update v8 snapshot cache - linux (#30741) * chore: updating v8 snapshot cache * index on develop: 74cf21643e chore: Update Chrome (stable) to 131.0.6778.139 (#30743) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Ryan Manuel Co-authored-by: Jennifer Shehane --- tooling/v8-snapshot/cache/linux/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 2224eeb09af0..19eebed4721a 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -4252,5 +4252,5 @@ "./tooling/v8-snapshot/cache/linux/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "2e76ee3eb48ec47a4627a4c7d5f39cbf8586601c4fca32b250efef671d7016c1" + "deferredHash": "ca5ac2cd877d4a2d2614f8a49a04badcce7f12a1f9962d6f1dbdebe4aaa797ff" } \ No newline at end of file From 58297dd2b4e1478e2d82b0d42173c21a2037cd83 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 12:55:23 -0500 Subject: [PATCH 06/25] chore: Update v8 snapshot cache - windows (#30742) * chore: updating v8 snapshot cache * index on develop: 74cf21643e chore: Update Chrome (stable) to 131.0.6778.139 (#30743) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Ryan Manuel Co-authored-by: Jennifer Shehane --- tooling/v8-snapshot/cache/win32/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index 32828f1a9902..ec31f89070a4 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -4252,5 +4252,5 @@ "./tooling/v8-snapshot/cache/win32/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "8c57b8f85b74c4d3743037fb216da9018cb7e3d8f510e6c0db0468ede2a35437" + "deferredHash": "7fcd9f681310aeb62da4137d956aa8b73597c9f8aa4e1c34192ca08caef2cb72" } \ No newline at end of file From 53d47cfc81a32c9dbef0fbad9592eed0d447d213 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:01:54 -0500 Subject: [PATCH 07/25] chore: Update Chrome (beta) to 132.0.6834.46 (#30755) * chore: Update Chrome (beta) to 132.0.6834.46 * empty commit --------- Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane --- browser-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser-versions.json b/browser-versions.json index e3997256ea01..5875a901c076 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { - "chrome:beta": "132.0.6834.32", + "chrome:beta": "132.0.6834.46", "chrome:stable": "131.0.6778.139", "chrome:minimum": "64.0.3282.0" } From 68c5714f1a89aa77ff3cb1a33850797a3e72d165 Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Mon, 16 Dec 2024 11:12:40 -0500 Subject: [PATCH 08/25] chore: Cleanup duplication across tsconfig files in packages (#30764) * Cleanup duplication across tsconfig files in packages * empty commit * Add ts-ignore * Add ts-ignore --- packages/app/tsconfig.json | 2 - packages/config/tsconfig.json | 10 -- packages/data-context/tsconfig.json | 11 -- packages/driver/tsconfig.json | 8 - packages/errors/tsconfig.json | 10 -- packages/extension/tsconfig.json | 7 +- packages/frontend-shared/tsconfig.json | 59 +------ .../graphql/src/utils/nexusTypegenUtils.ts | 1 - packages/graphql/tsconfig.json | 11 -- packages/icons/tsconfig.json | 12 -- packages/launcher/tsconfig.json | 1 - packages/reporter/tsconfig.json | 1 - packages/scaffold-config/tsconfig.json | 11 -- packages/server/lib/automation/util.ts | 2 + packages/server/lib/modes/interactive.ts | 1 + packages/server/tsconfig.json | 7 - packages/socket/tsconfig.json | 1 - packages/telemetry/tsconfig.json | 5 - packages/ts/README.md | 2 +- packages/ts/tsconfig.json | 163 ++++++++++++------ 20 files changed, 115 insertions(+), 210 deletions(-) diff --git a/packages/app/tsconfig.json b/packages/app/tsconfig.json index a96c821699ab..347deb1bb0be 100644 --- a/packages/app/tsconfig.json +++ b/packages/app/tsconfig.json @@ -13,7 +13,6 @@ ], "compilerOptions": { "noImplicitThis": true, - "useDefineForClassFields": true, "paths": { "@cy/i18n": ["../frontend-shared/src/locales/i18n"], "@cy/components/*": ["../frontend-shared/src/components/*"], @@ -21,7 +20,6 @@ "@cy/store/*": ["../frontend-shared/src/store/*"], "@packages/*": ["../*"] }, - "allowJs": true, "types": [ "cypress", "cypress-real-events", diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index 06872625a5ba..cf4b494620ff 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -7,19 +7,9 @@ "test" ], "compilerOptions": { - "strict": true, "allowJs": false, "rootDir": "src", "noImplicitAny": true, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", "types": ["node"], "typeRoots": [ "../../node_modules/@types" diff --git a/packages/data-context/tsconfig.json b/packages/data-context/tsconfig.json index 69d4331d9027..587382a7499e 100644 --- a/packages/data-context/tsconfig.json +++ b/packages/data-context/tsconfig.json @@ -9,19 +9,8 @@ ], "compilerOptions": { "lib": ["esnext"], - "strict": true, "allowJs": false, "noImplicitAny": true, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUnusedLocals": false, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", "types": ["cypress"], } } \ No newline at end of file diff --git a/packages/driver/tsconfig.json b/packages/driver/tsconfig.json index b22d122add99..33203e370049 100644 --- a/packages/driver/tsconfig.json +++ b/packages/driver/tsconfig.json @@ -3,23 +3,15 @@ "compilerOptions": { "target": "ES2016", "lib": ["ES2021", "DOM", "DOM.Iterable"], - "module": "commonjs", "allowJs": true, - "noImplicitAny": false, "noImplicitThis": false, "strictFunctionTypes": true, "preserveWatchOutput": true, "sourceMap": true, - "importHelpers": true, "strictNullChecks": true, - "strict": true, "forceConsistentCasingInFileNames": true, - "skipLibCheck": true, "noEmit": true, - "noImplicitReturns": true, - "allowSyntheticDefaultImports": true, "outDir": "dist", - "esModuleInterop": true, "noErrorTruncation": true, "types": [] }, diff --git a/packages/errors/tsconfig.json b/packages/errors/tsconfig.json index e4d65fa86687..dfb951b17cde 100644 --- a/packages/errors/tsconfig.json +++ b/packages/errors/tsconfig.json @@ -4,18 +4,8 @@ "src", ], "compilerOptions": { - "strict": true, "allowJs": false, "noImplicitAny": true, - "resolveJsonModule": true, - "experimentalDecorators": true, "noImplicitReturns": false, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", } } \ No newline at end of file diff --git a/packages/extension/tsconfig.json b/packages/extension/tsconfig.json index 2553bd5cab6e..aa782866197b 100644 --- a/packages/extension/tsconfig.json +++ b/packages/extension/tsconfig.json @@ -1,12 +1,7 @@ { + "extends": "../ts/tsconfig.json", "compilerOptions": { "target": "es2015", - "module": "commonjs", - "allowJs": true, - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "noImplicitAny": false, - "importHelpers": true, "strict": false } } diff --git a/packages/frontend-shared/tsconfig.json b/packages/frontend-shared/tsconfig.json index 29b65c440301..4c289529abac 100644 --- a/packages/frontend-shared/tsconfig.json +++ b/packages/frontend-shared/tsconfig.json @@ -1,55 +1,12 @@ { + "extends": "../ts/tsconfig.json", "compilerOptions": { - /* Basic Options */ - "target": "ES2018", "module": "esnext", "lib": ["dom", "ESNext"], - /* - * Allow javascript files to be compiled. - * Override this in modules that need JS - */ - "noEmit": true, "jsx": "preserve", "preserveWatchOutput": true, - // "checkJs": true, /* Report errors in .js files. */ - // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - /* Generates corresponding '.d.ts' file. */ - // "declaration": true, - // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ - /* Generates corresponding '.map' file. */ - "sourceMap": true, - /* Import emit helpers from 'tslib'. */ - "importHelpers": true, - "strictNullChecks": true, - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - /* Strict Type-Checking Options */ - // "traceResolution": true, - "strict": true, - "noImplicitAny": false, "noImplicitThis": false, - "forceConsistentCasingInFileNames": true, - /** - * Skip type checking of all declaration files (*.d.ts). - * TODO: Look into changing this in the future - */ - /* Additional Checks */ - "skipLibCheck": true, - /* Report errors on unused locals. */ - // "noEmit": true, - "noUnusedLocals": false, - // "noUnusedParameters": true, /* Report errors on unused parameters. */ - /* Report error when not all code paths in function return a value. */ - "noImplicitReturns": true, - // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": ["../driver/src"], /* List of root folders whose combined content represents the structure of the project at runtime. */ - // "typeRoots": [] /* List of folders to include type definitions from. */ - - /* Type declaration files to be included in compilation. */ + "noErrorTruncation": true, "paths": { "@cy/i18n": ["../frontend-shared/src/locales/i18n"], "@cy/components/*": ["../frontend-shared/src/components/*"] @@ -63,17 +20,5 @@ "cypress-real-events", "cypress" ], - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "noErrorTruncation": true, - "experimentalDecorators": true, - "resolveJsonModule": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", - "useUnknownInCatchVariables": false } } diff --git a/packages/graphql/src/utils/nexusTypegenUtils.ts b/packages/graphql/src/utils/nexusTypegenUtils.ts index bd8793b09e01..f209bc45af2e 100644 --- a/packages/graphql/src/utils/nexusTypegenUtils.ts +++ b/packages/graphql/src/utils/nexusTypegenUtils.ts @@ -92,7 +92,6 @@ const nexusTypegenDebounced = (cfg: NexusTypegenCfg) => { debounced[cfg.filePath] = debounced[cfg.filePath] ?? _.debounce(nexusTypegen, 500) - // @ts-expect-error debounced[cfg.filePath](cfg) } diff --git a/packages/graphql/tsconfig.json b/packages/graphql/tsconfig.json index 1b1ae93cc444..d7e45065be2f 100644 --- a/packages/graphql/tsconfig.json +++ b/packages/graphql/tsconfig.json @@ -10,19 +10,8 @@ ], "compilerOptions": { "lib": ["esnext"], - "strict": true, "allowJs": false, "noImplicitAny": true, - "noUnusedLocals": false, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", "types": [] }, } diff --git a/packages/icons/tsconfig.json b/packages/icons/tsconfig.json index 0c6beeacaeb6..8995f295a6c7 100644 --- a/packages/icons/tsconfig.json +++ b/packages/icons/tsconfig.json @@ -1,20 +1,8 @@ { "extends": "../ts/tsconfig.json", "compilerOptions": { - "strict": true, "allowJs": false, "noImplicitAny": true, - "noUnusedLocals": false, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", "outDir": "dist", - "declaration": true }, } \ No newline at end of file diff --git a/packages/launcher/tsconfig.json b/packages/launcher/tsconfig.json index 22cbe18d5cb9..41c9480108b1 100644 --- a/packages/launcher/tsconfig.json +++ b/packages/launcher/tsconfig.json @@ -5,7 +5,6 @@ "./index.ts" ], "compilerOptions": { - "skipLibCheck": true }, "files": [ "./../ts/index.d.ts" diff --git a/packages/reporter/tsconfig.json b/packages/reporter/tsconfig.json index 99b6a70b5bf3..be6c7cd941b3 100644 --- a/packages/reporter/tsconfig.json +++ b/packages/reporter/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "../ts/tsconfig.json", "compilerOptions": { - "useDefineForClassFields": true, "types": [ "node", "cypress", diff --git a/packages/scaffold-config/tsconfig.json b/packages/scaffold-config/tsconfig.json index 935ec8b2ab6b..ae027f650086 100644 --- a/packages/scaffold-config/tsconfig.json +++ b/packages/scaffold-config/tsconfig.json @@ -10,19 +10,8 @@ ], "compilerOptions": { "lib": ["esnext"], - "strict": true, "allowJs": false, "noImplicitAny": true, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUnusedLocals": false, - "noUncheckedIndexedAccess": true, - "ignoreDeprecations": "5.0", - /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", "types": [] } } \ No newline at end of file diff --git a/packages/server/lib/automation/util.ts b/packages/server/lib/automation/util.ts index bc3caab879d3..baf04a9ec320 100644 --- a/packages/server/lib/automation/util.ts +++ b/packages/server/lib/automation/util.ts @@ -1,6 +1,7 @@ import type playwright from 'playwright-webkit' import { domainMatch } from 'tough-cookie' +// @ts-ignore export type CyCookie = Pick & { // use `undefined` instead of `unspecified` sameSite?: 'no_restriction' | 'lax' | 'strict' @@ -8,6 +9,7 @@ export type CyCookie = Pick { diff --git a/packages/server/lib/modes/interactive.ts b/packages/server/lib/modes/interactive.ts index c58dfa2a3e82..bca0c83b11b4 100644 --- a/packages/server/lib/modes/interactive.ts +++ b/packages/server/lib/modes/interactive.ts @@ -125,6 +125,7 @@ export = { show: true, frame: true, transparent: false, + // @ts-ignore icon: image.createFromPath(cyIcons.getPathToIcon('icon_64x64.png')), }, } diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 5a2415042012..9c69ae92c343 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -9,12 +9,5 @@ ], "compilerOptions": { "lib": ["esnext"], - "types": [ - "mocha", - "node" - ], - "resolveJsonModule": true, - "noUnusedLocals": false, - "importHelpers": true } } diff --git a/packages/socket/tsconfig.json b/packages/socket/tsconfig.json index 9b7d0907d5eb..94523723d342 100644 --- a/packages/socket/tsconfig.json +++ b/packages/socket/tsconfig.json @@ -1,7 +1,6 @@ { "extends": "./../ts/tsconfig.json", "compilerOptions": { - "strict": true, "noImplicitAny": true, "skipLibCheck": false }, diff --git a/packages/telemetry/tsconfig.json b/packages/telemetry/tsconfig.json index edd15e17bb40..d887c0486cc8 100644 --- a/packages/telemetry/tsconfig.json +++ b/packages/telemetry/tsconfig.json @@ -4,13 +4,8 @@ "compilerOptions": { "outDir": "./dist", "lib": ["esnext", "DOM"], - "strict": true, "allowJs": false, "noImplicitAny": true, - "resolveJsonModule": true, - "experimentalDecorators": true, - "noUnusedLocals": false, - "noUncheckedIndexedAccess": true, "types": ["cypress"], } } diff --git a/packages/ts/README.md b/packages/ts/README.md index dcf27567d4d7..4c46ce9e2384 100644 --- a/packages/ts/README.md +++ b/packages/ts/README.md @@ -1,6 +1,6 @@ # TS -Internal package used to standardize this repo's version of `ts-node` used for development. In production we pre-transpile all of the typescript so this packages `register` export is a no-op +Internal package used to standardize this repo's version of `ts-node` and the base `tsconfig` options used for development. In production we pre-transpile all of the typescript so this packages `register` export is a no-op ## Installing N/A - handled by the top level `yarn install` diff --git a/packages/ts/tsconfig.json b/packages/ts/tsconfig.json index 0f0e239b759a..20f39e2b453c 100644 --- a/packages/ts/tsconfig.json +++ b/packages/ts/tsconfig.json @@ -1,65 +1,118 @@ { "compilerOptions": { - /* Basic Options */ - "target": "ES2018", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */ - "module": "commonjs", /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'. */ - "lib": ["es2021"], /* Specify library files to be included in the compilation: */ - // "allowJs": true, /* Allow javascript files to be compiled. */ - // "checkJs": true, /* Report errors in .js files. */ - "jsx": "react", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ - "skipLibCheck": true, - // "declaration": true, /* Generates corresponding '.d.ts' file. */ - // "sourceMap": true, /* Generates corresponding '.map' file. */ - // "outFile": "./", /* Concatenate and emit output to single file. */ - // "outDir": "./", /* Redirect output structure to the directory. */ - // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ - // "removeComments": true, /* Do not emit comments to output. */ - // "noEmit": true, /* Do not emit outputs. */ - "importHelpers": true, /* Import emit helpers from 'tslib'. */ - // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ - // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ - "useUnknownInCatchVariables": false, + /* Visit https://aka.ms/tsconfig to read more about this file */ - /* Strict Type-Checking Options */ - "strict": true, /* Enable all strict type-checking options. */ - "noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* Enable strict null checks. */ - // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ - // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - /* Additional Checks */ - - // noUnusedLocals should be linted, not type-check'ed - "noUnusedLocals": false, /* Report errors on unused locals. */ - "noUnusedParameters": false, /* Report errors on unused parameters. */ - "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ - "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + /* Language and Environment */ + "target": "ES2018", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["es2021"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "jsx": "react", /* Specify what JSX code is generated. */ + "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - /* Module Resolution Options */ - "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ - // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ - // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ - // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ - //"typeRoots": [], /* List of folders to include type definitions from. */ - "types": ["mocha", "node"], /* Type declaration files to be included in compilation. */ - "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ - "esModuleInterop": true, + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + "types": ["mocha", "node"], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - /* Source Map Options */ - // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ - // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ - // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - /* Experimental Options */ - "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ - // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ - "ignoreDeprecations": "5.0", + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + /* + * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior + * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. + */ + "importsNotUsedAsValues": "error", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + "noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + "useUnknownInCatchVariables": false, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + "noUnusedLocals": false, /* Enable error reporting when local variables aren't read. */ + "noUnusedParameters": false, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + /* - * TODO: remove importsNotUsedAsValues after typescript 5.5 and up as it will no longer work. If we want the same behavior - * as importsNotUsedAsValues, we need to use "verbatimModuleSyntax", which will require this package to be an ES Module. - */ - "importsNotUsedAsValues": "error", - "resolveJsonModule": true + * TODO: remove ignoreDeprecations after typescript 5.5. This is used to assist in the transition to typescript 5.5 and up. + */ + "ignoreDeprecations": "5.0", } } From 0c3c497c1d8904dc0070321cd622a853822b14c7 Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Mon, 16 Dec 2024 10:39:06 -0700 Subject: [PATCH 09/25] feat: add support for chrome for testing browser (#30751) --- .circleci/workflows.yml | 10 +- cli/CHANGELOG.md | 6 +- packages/app/cypress/e2e/top-nav.cy.ts | 8 +- .../app/src/debug/LayeredBrowserIcons.cy.tsx | 8 +- .../app/src/debug/LayeredBrowserIcons.vue | 33 ++- .../BROWSER_NOT_FOUND_BY_NAME - canary.html | 9 +- .../BROWSER_NOT_FOUND_BY_NAME.html | 9 +- packages/errors/src/errors.ts | 2 +- .../src/assets/browserLogos.ts | 6 +- .../logos/browser-chrome-for-testing_x16.svg | 33 +++ .../__snapshots__/browsers_spec.ts.js | 51 ++-- .../launcher/__snapshots__/darwin_spec.ts.js | 107 ++++--- .../launcher/__snapshots__/windows_spec.ts.js | 260 ++++++++++++++---- packages/launcher/lib/darwin/index.ts | 40 +-- packages/launcher/lib/darwin/util.ts | 12 +- packages/launcher/lib/known-browsers.ts | 49 ++-- packages/launcher/lib/windows/index.ts | 21 +- packages/launcher/test/unit/darwin_spec.ts | 2 +- packages/launcher/test/unit/windows_spec.ts | 52 +++- .../cypress/e2e/choose-a-browser.cy.ts | 20 +- .../launchpad/cypress/e2e/project-setup.cy.ts | 6 +- .../e2e/system-tests/config-spec.cy.ts | 2 +- .../server/__snapshots__/browsers_spec.js | 4 +- packages/server/lib/util/chromium_flags.ts | 2 +- .../component_testing_spec.ts.js | 4 +- system-tests/__snapshots__/plugins_spec.js | 2 +- system-tests/__snapshots__/record_spec.js | 2 +- system-tests/__snapshots__/retries_spec.ts.js | 4 +- .../vite_dev_server_fresh_spec.ts.js | 70 ++--- .../webpack_dev_server_fresh_spec.ts.js | 70 ++--- .../cypress/e2e/default_size.cy.js | 2 +- yarn.lock | 4 +- 32 files changed, 598 insertions(+), 312 deletions(-) create mode 100644 packages/frontend-shared/src/assets/logos/browser-chrome-for-testing_x16.svg diff --git a/.circleci/workflows.yml b/.circleci/workflows.yml index 676f9503e0c1..58463853349a 100644 --- a/.circleci/workflows.yml +++ b/.circleci/workflows.yml @@ -30,7 +30,7 @@ mainBuildFilters: &mainBuildFilters - /^release\/\d+\.\d+\.\d+$/ # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - 'update-v8-snapshot-cache-on-develop' - - 'renovate/yarn-1.x' + - 'mschile/chrome_for_testing' - 'publish-binary' # usually we don't build Mac app - it takes a long time @@ -42,7 +42,7 @@ macWorkflowFilters: &darwin-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] + - equal: [ 'mschile/chrome_for_testing', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -53,7 +53,7 @@ linuxArm64WorkflowFilters: &linux-arm64-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] + - equal: [ 'mschile/chrome_for_testing', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -76,7 +76,7 @@ windowsWorkflowFilters: &windows-workflow-filters - equal: [ develop, << pipeline.git.branch >> ] # use the following branch as well to ensure that v8 snapshot cache updates are fully tested - equal: [ 'update-v8-snapshot-cache-on-develop', << pipeline.git.branch >> ] - - equal: [ 'renovate/yarn-1.x', << pipeline.git.branch >> ] + - equal: [ 'mschile/chrome_for_testing', << pipeline.git.branch >> ] - matches: pattern: /^release\/\d+\.\d+\.\d+$/ value: << pipeline.git.branch >> @@ -152,7 +152,7 @@ commands: name: Set environment variable to determine whether or not to persist artifacts command: | echo "Setting SHOULD_PERSIST_ARTIFACTS variable" - echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "ryanm/experiment/esm" ]]; then + echo 'if ! [[ "$CIRCLE_BRANCH" != "develop" && "$CIRCLE_BRANCH" != "release/"* && "$CIRCLE_BRANCH" != "mschile/chrome_for_testing" ]]; then export SHOULD_PERSIST_ARTIFACTS=true fi' >> "$BASH_ENV" # You must run `setup_should_persist_artifacts` command and be using bash before running this command diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 499d4661db1f..a84d86167676 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,8 +1,12 @@ -## 13.16.2 +## 13.17.0 _Released 12/17/2024 (PENDING)_ +**Features:** + +- Added official support for the [Google Chrome for Testing](https://github.com/GoogleChromeLabs/chrome-for-testing) browser. Assuming the browser is in a location where it can be [auto-detected](https://on.cypress.io/troubleshooting-launching-browsers), it can be launched by providing the `--browser chrome-for-testing` option. If it can't be auto-detected, the path to the browser can also be provided. Previously [customizing the available browsers](https://on.cypress.io/customize-browsers) was required. Addresses [#28123](https://github.com/cypress-io/cypress/issues/28123) and [#28554](https://github.com/cypress-io/cypress/issues/28554). + **Bugfixes:** - Fixed an issue where targets may hang if `Network.enable` is not implemented for the target. Addresses [#29876](https://github.com/cypress-io/cypress/issues/29876). diff --git a/packages/app/cypress/e2e/top-nav.cy.ts b/packages/app/cypress/e2e/top-nav.cy.ts index 417642390f05..52ec9e8d7b03 100644 --- a/packages/app/cypress/e2e/top-nav.cy.ts +++ b/packages/app/cypress/e2e/top-nav.cy.ts @@ -44,7 +44,7 @@ describe('App Top Nav Workflows', () => { .should('have.attr', 'src') .and('contain', 'firefox') - cy.findByTestId('top-nav-active-browser').should('contain', 'Firefox 5') + cy.findByTestId('top-nav-active-browser').should('contain', 'Firefox 6') }) }) @@ -82,19 +82,19 @@ describe('App Top Nav Workflows', () => { cy.get('@browserItems').eq(1) .should('contain', 'Edge') - .and('contain', 'Version 8') + .and('contain', 'Version 9') .findByTestId('top-nav-browser-list-selected-item') .should('not.exist') cy.get('@browserItems').eq(2) .should('contain', 'Electron') - .and('contain', 'Version 12') + .and('contain', 'Version 13') .findByTestId('top-nav-browser-list-selected-item') .should('not.exist') cy.get('@browserItems').eq(3) .should('contain', 'Firefox') - .and('contain', 'Version 5') + .and('contain', 'Version 6') .findByTestId('top-nav-browser-list-selected-item') .should('not.exist') }) diff --git a/packages/app/src/debug/LayeredBrowserIcons.cy.tsx b/packages/app/src/debug/LayeredBrowserIcons.cy.tsx index 2de78fafab04..410812b46532 100644 --- a/packages/app/src/debug/LayeredBrowserIcons.cy.tsx +++ b/packages/app/src/debug/LayeredBrowserIcons.cy.tsx @@ -2,7 +2,7 @@ import LayeredBrowserIcons from './LayeredBrowserIcons.vue' import type { BrowserType } from './LayeredBrowserIcons.vue' describe('', () => { - const browsers: BrowserType[] = ['CHROME', 'CHROME-CANARY', 'CHROME BETA', 'FIREFOX', 'WEBKIT', 'EDGE', 'ELECTRON'] + const browsers: BrowserType[] = ['CHROME', 'CHROME BETA', 'CANARY', 'CHROME CANARY', 'CHROME FOR TESTING', 'CUSTOM CHROME FOR TESTING', 'CHROMIUM', 'CUSTOM CHROMIUM', 'EDGE', 'EDGE BETA', 'EDGE CANARY', 'EDGE DEV', 'ELECTRON', 'FIREFOX', 'FIREFOX DEVELOPER EDITION', 'FIREFOX NIGHTLY', 'WEBKIT'] it('mounts correctly for single browser', () => { browsers.forEach((ele) => { @@ -21,11 +21,11 @@ describe('', () => {
- + - + - +
)) diff --git a/packages/app/src/debug/LayeredBrowserIcons.vue b/packages/app/src/debug/LayeredBrowserIcons.vue index 07bb58c767da..4cb4032cd3b1 100644 --- a/packages/app/src/debug/LayeredBrowserIcons.vue +++ b/packages/app/src/debug/LayeredBrowserIcons.vue @@ -20,20 +20,19 @@ 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 index 95f021d5471a..f3176b9f8ef1 100644 --- a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html +++ b/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME - canary.html @@ -42,7 +42,7 @@ - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox @@ -50,18 +50,19 @@ Available browsers found on your system are: - chrome - - chromium - chrome:beta - chrome:canary + - chrome-for-testing + - chromium - firefox - firefox:dev - firefox:nightly - edge - - edge:canary - edge:beta + - edge:canary - edge:dev Note: In Cypress version 4.0.0, Canary must be launched as chrome:canary, not canary. -See https://on.cypress.io/migration-guide for more information on breaking changes in 4.0.0. +See https://on.cypress.io/migration-guide for more information on breaking changes in 4.0.0. \ 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 index d29ace7a0dc5..2ee1cd1ce62c 100644 --- a/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html +++ b/packages/errors/__snapshot-html__/BROWSER_NOT_FOUND_BY_NAME.html @@ -42,7 +42,7 @@ - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox @@ -50,14 +50,15 @@ Available browsers found on your system are: - chrome - - chromium - chrome:beta - chrome:canary + - chrome-for-testing + - chromium - firefox - firefox:dev - firefox:nightly - edge - - edge:canary - edge:beta - - edge:dev + - edge:canary + - edge:dev \ No newline at end of file diff --git a/packages/errors/src/errors.ts b/packages/errors/src/errors.ts index d0db72e6967a..63cf017b3caf 100644 --- a/packages/errors/src/errors.ts +++ b/packages/errors/src/errors.ts @@ -120,7 +120,7 @@ export const AllCypressErrors = { Browser: ${fmt.highlight(browser)} was not found on your system or is not supported by Cypress. Cypress supports the following browsers: - ${fmt.listItems(['electron', 'chrome', 'chromium', 'chrome:canary', 'edge', 'firefox'])} + ${fmt.listItems(['electron', 'chrome', 'chromium', 'chrome-for-testing', 'edge', 'firefox'])} You can also use a custom browser: https://on.cypress.io/customize-browsers diff --git a/packages/frontend-shared/src/assets/browserLogos.ts b/packages/frontend-shared/src/assets/browserLogos.ts index fb572f9c62ac..fb1317acd30e 100644 --- a/packages/frontend-shared/src/assets/browserLogos.ts +++ b/packages/frontend-shared/src/assets/browserLogos.ts @@ -4,6 +4,7 @@ import edgeIcon from 'browser-logos/src/edge/edge.svg?url' import electronIcon from 'browser-logos/src/electron/electron.svg?url' import canaryIcon from 'browser-logos/src/chrome-canary/chrome-canary.svg?url' import chromeBetaIcon from 'browser-logos/src/chrome-beta/chrome-beta.svg?url' +import chromeTestIcon from '@packages/frontend-shared/src/assets/logos/browser-chrome-for-testing_x16.svg?url' import chromiumIcon from 'browser-logos/src/chromium/chromium.svg?url' import edgeBetaIcon from 'browser-logos/src/edge-beta/edge-beta.png' import edgeCanaryIcon from 'browser-logos/src/edge-canary/edge-canary.png' @@ -16,11 +17,12 @@ import genericBrowserLogo from '@packages/frontend-shared/src/assets/logos/gener export const allBrowsersIcons = { 'Electron': electronIcon, 'Chrome': chromeIcon, + 'Chrome Beta': chromeBetaIcon, + 'Chrome Canary': canaryIcon, + 'Chrome for Testing': chromeTestIcon, 'Firefox': firefoxIcon, 'Edge': edgeIcon, 'Chromium': chromiumIcon, - 'Canary': canaryIcon, - 'Chrome Beta': chromeBetaIcon, 'Firefox Nightly': firefoxNightlyIcon, 'Firefox Developer Edition': firefoxDeveloperEditionIcon, 'Edge Canary': edgeCanaryIcon, diff --git a/packages/frontend-shared/src/assets/logos/browser-chrome-for-testing_x16.svg b/packages/frontend-shared/src/assets/logos/browser-chrome-for-testing_x16.svg new file mode 100644 index 000000000000..0426ce0ae6e0 --- /dev/null +++ b/packages/frontend-shared/src/assets/logos/browser-chrome-for-testing_x16.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/launcher/__snapshots__/browsers_spec.ts.js b/packages/launcher/__snapshots__/browsers_spec.ts.js index 41bc8b32e916..e14c627c0405 100644 --- a/packages/launcher/__snapshots__/browsers_spec.ts.js +++ b/packages/launcher/__snapshots__/browsers_spec.ts.js @@ -12,18 +12,6 @@ exports['browsers returns the expected list of browsers 1'] = [ ], 'minSupportedVersion': 64, }, - { - 'name': 'chromium', - 'family': 'chromium', - 'channel': 'stable', - 'displayName': 'Chromium', - 'versionRegex': {}, - 'binary': [ - 'chromium-browser', - 'chromium', - ], - 'minSupportedVersion': 64, - }, { 'name': 'chrome', 'family': 'chromium', @@ -37,11 +25,32 @@ exports['browsers returns the expected list of browsers 1'] = [ 'name': 'chrome', 'family': 'chromium', 'channel': 'canary', - 'displayName': 'Canary', + 'displayName': 'Chrome Canary', 'versionRegex': {}, 'binary': 'google-chrome-canary', 'minSupportedVersion': 64, }, + { + 'name': 'chrome-for-testing', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chrome for Testing', + 'versionRegex': {}, + 'binary': 'chrome', + 'minSupportedVersion': 64, + }, + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + }, { 'name': 'firefox', 'family': 'firefox', @@ -90,24 +99,24 @@ exports['browsers returns the expected list of browsers 1'] = [ { 'name': 'edge', 'family': 'chromium', - 'channel': 'canary', - 'displayName': 'Edge Canary', + 'channel': 'beta', + 'displayName': 'Edge Beta', 'versionRegex': {}, 'binary': [ - 'edge-canary', - 'microsoft-edge-canary', + 'edge-beta', + 'microsoft-edge-beta', ], 'minSupportedVersion': 79, }, { 'name': 'edge', 'family': 'chromium', - 'channel': 'beta', - 'displayName': 'Edge Beta', + 'channel': 'canary', + 'displayName': 'Edge Canary', 'versionRegex': {}, 'binary': [ - 'edge-beta', - 'microsoft-edge-beta', + 'edge-canary', + 'microsoft-edge-canary', ], 'minSupportedVersion': 79, }, diff --git a/packages/launcher/__snapshots__/darwin_spec.ts.js b/packages/launcher/__snapshots__/darwin_spec.ts.js index 4cd70c8c8c14..0111a4c6c728 100644 --- a/packages/launcher/__snapshots__/darwin_spec.ts.js +++ b/packages/launcher/__snapshots__/darwin_spec.ts.js @@ -16,30 +16,10 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome.app', 'executable': 'Contents/MacOS/Google Chrome', - 'appId': 'com.google.Chrome', + 'bundleId': 'com.google.Chrome', 'versionProperty': 'KSVersion', }, }, - { - 'name': 'chromium', - 'family': 'chromium', - 'channel': 'stable', - 'displayName': 'Chromium', - 'versionRegex': {}, - 'binary': [ - 'chromium-browser', - 'chromium', - ], - 'minSupportedVersion': 64, - 'path': '/Applications/Chromium.app/Contents/MacOS/Chromium', - 'version': 'someVersion', - 'findAppParams': { - 'appName': 'Chromium.app', - 'executable': 'Contents/MacOS/Chromium', - 'appId': 'org.chromium.Chromium', - 'versionProperty': 'CFBundleShortVersionString', - }, - }, { 'name': 'chrome', 'family': 'chromium', @@ -53,7 +33,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome Beta.app', 'executable': 'Contents/MacOS/Google Chrome Beta', - 'appId': 'com.google.Chrome.beta', + 'bundleId': 'com.google.Chrome.beta', 'versionProperty': 'KSVersion', }, }, @@ -61,7 +41,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'name': 'chrome', 'family': 'chromium', 'channel': 'canary', - 'displayName': 'Canary', + 'displayName': 'Chrome Canary', 'versionRegex': {}, 'binary': 'google-chrome-canary', 'minSupportedVersion': 64, @@ -70,10 +50,47 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome Canary.app', 'executable': 'Contents/MacOS/Google Chrome Canary', - 'appId': 'com.google.Chrome.canary', + 'bundleId': 'com.google.Chrome.canary', 'versionProperty': 'KSVersion', }, }, + { + 'name': 'chrome-for-testing', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chrome for Testing', + 'versionRegex': {}, + 'binary': 'chrome', + 'minSupportedVersion': 64, + 'path': '/Applications/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing', + 'version': 'someVersion', + 'findAppParams': { + 'appName': 'Google Chrome for Testing.app', + 'executable': 'Contents/MacOS/Google Chrome for Testing', + 'bundleId': 'com.google.chrome.for.testing', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + 'path': '/Applications/Chromium.app/Contents/MacOS/Chromium', + 'version': 'someVersion', + 'findAppParams': { + 'appName': 'Chromium.app', + 'executable': 'Contents/MacOS/Chromium', + 'bundleId': 'org.chromium.Chromium', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, { 'name': 'firefox', 'family': 'firefox', @@ -87,7 +104,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefox', + 'bundleId': 'org.mozilla.firefox', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -107,7 +124,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox Developer Edition.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefoxdeveloperedition', + 'bundleId': 'org.mozilla.firefoxdeveloperedition', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -127,7 +144,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox Nightly.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.nightly', + 'bundleId': 'org.mozilla.nightly', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -147,47 +164,47 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Microsoft Edge.app', 'executable': 'Contents/MacOS/Microsoft Edge', - 'appId': 'com.microsoft.Edge', + 'bundleId': 'com.microsoft.Edge', 'versionProperty': 'CFBundleShortVersionString', }, }, { 'name': 'edge', 'family': 'chromium', - 'channel': 'canary', - 'displayName': 'Edge Canary', + 'channel': 'beta', + 'displayName': 'Edge Beta', 'versionRegex': {}, 'binary': [ - 'edge-canary', - 'microsoft-edge-canary', + 'edge-beta', + 'microsoft-edge-beta', ], 'minSupportedVersion': 79, - 'path': '/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary', + 'path': '/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta', 'version': 'someVersion', 'findAppParams': { - 'appName': 'Microsoft Edge Canary.app', - 'executable': 'Contents/MacOS/Microsoft Edge Canary', - 'appId': 'com.microsoft.Edge.Canary', + 'appName': 'Microsoft Edge Beta.app', + 'executable': 'Contents/MacOS/Microsoft Edge Beta', + 'bundleId': 'com.microsoft.Edge.Beta', 'versionProperty': 'CFBundleShortVersionString', }, }, { 'name': 'edge', 'family': 'chromium', - 'channel': 'beta', - 'displayName': 'Edge Beta', + 'channel': 'canary', + 'displayName': 'Edge Canary', 'versionRegex': {}, 'binary': [ - 'edge-beta', - 'microsoft-edge-beta', + 'edge-canary', + 'microsoft-edge-canary', ], 'minSupportedVersion': 79, - 'path': '/Applications/Microsoft Edge Beta.app/Contents/MacOS/Microsoft Edge Beta', + 'path': '/Applications/Microsoft Edge Canary.app/Contents/MacOS/Microsoft Edge Canary', 'version': 'someVersion', 'findAppParams': { - 'appName': 'Microsoft Edge Beta.app', - 'executable': 'Contents/MacOS/Microsoft Edge Beta', - 'appId': 'com.microsoft.Edge.Beta', + 'appName': 'Microsoft Edge Canary.app', + 'executable': 'Contents/MacOS/Microsoft Edge Canary', + 'bundleId': 'com.microsoft.Edge.Canary', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -207,7 +224,7 @@ exports['darwin browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Microsoft Edge Dev.app', 'executable': 'Contents/MacOS/Microsoft Edge Dev', - 'appId': 'com.microsoft.Edge.Dev', + 'bundleId': 'com.microsoft.Edge.Dev', 'versionProperty': 'CFBundleShortVersionString', }, }, diff --git a/packages/launcher/__snapshots__/windows_spec.ts.js b/packages/launcher/__snapshots__/windows_spec.ts.js index 0ba7dfb13388..8652d47e2492 100644 --- a/packages/launcher/__snapshots__/windows_spec.ts.js +++ b/packages/launcher/__snapshots__/windows_spec.ts.js @@ -16,30 +16,10 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome.app', 'executable': 'Contents/MacOS/Google Chrome', - 'appId': 'com.google.Chrome', + 'bundleId': 'com.google.Chrome', 'versionProperty': 'KSVersion', }, }, - { - 'name': 'chromium', - 'family': 'chromium', - 'channel': 'stable', - 'displayName': 'Chromium', - 'versionRegex': {}, - 'binary': [ - 'chromium-browser', - 'chromium', - ], - 'minSupportedVersion': 64, - 'path': 'C:/Program Files (x86)/Google/chrome-win32/chrome.exe', - 'version': '2.3.4', - 'findAppParams': { - 'appName': 'Chromium.app', - 'executable': 'Contents/MacOS/Chromium', - 'appId': 'org.chromium.Chromium', - 'versionProperty': 'CFBundleShortVersionString', - }, - }, { 'name': 'chrome', 'family': 'chromium', @@ -53,7 +33,7 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome Beta.app', 'executable': 'Contents/MacOS/Google Chrome Beta', - 'appId': 'com.google.Chrome.beta', + 'bundleId': 'com.google.Chrome.beta', 'versionProperty': 'KSVersion', }, }, @@ -61,7 +41,7 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'name': 'chrome', 'family': 'chromium', 'channel': 'canary', - 'displayName': 'Canary', + 'displayName': 'Chrome Canary', 'versionRegex': {}, 'binary': 'google-chrome-canary', 'minSupportedVersion': 64, @@ -70,10 +50,47 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Google Chrome Canary.app', 'executable': 'Contents/MacOS/Google Chrome Canary', - 'appId': 'com.google.Chrome.canary', + 'bundleId': 'com.google.Chrome.canary', 'versionProperty': 'KSVersion', }, }, + { + 'name': 'chrome-for-testing', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chrome for Testing', + 'versionRegex': {}, + 'binary': 'chrome', + 'minSupportedVersion': 64, + 'path': 'C:/Program Files/Google/Chrome for Testing/chrome.exe', + 'version': '1.2.3', + 'findAppParams': { + 'appName': 'Google Chrome for Testing.app', + 'executable': 'Contents/MacOS/Google Chrome for Testing', + 'bundleId': 'com.google.chrome.for.testing', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + 'path': 'C:/Program Files (x86)/Google/chrome-win32/chrome.exe', + 'version': '2.3.4', + 'findAppParams': { + 'appName': 'Chromium.app', + 'executable': 'Contents/MacOS/Chromium', + 'bundleId': 'org.chromium.Chromium', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, { 'name': 'firefox', 'family': 'firefox', @@ -87,7 +104,7 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefox', + 'bundleId': 'org.mozilla.firefox', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -107,7 +124,7 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox Developer Edition.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefoxdeveloperedition', + 'bundleId': 'org.mozilla.firefoxdeveloperedition', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -127,7 +144,7 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Firefox Nightly.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.nightly', + 'bundleId': 'org.mozilla.nightly', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -147,47 +164,47 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Microsoft Edge.app', 'executable': 'Contents/MacOS/Microsoft Edge', - 'appId': 'com.microsoft.Edge', + 'bundleId': 'com.microsoft.Edge', 'versionProperty': 'CFBundleShortVersionString', }, }, { 'name': 'edge', 'family': 'chromium', - 'channel': 'canary', - 'displayName': 'Edge Canary', + 'channel': 'beta', + 'displayName': 'Edge Beta', 'versionRegex': {}, 'binary': [ - 'edge-canary', - 'microsoft-edge-canary', + 'edge-beta', + 'microsoft-edge-beta', ], 'minSupportedVersion': 79, - 'path': 'C:/Users/flotwig/AppData/Local/Microsoft/Edge SxS/Application/msedge.exe', - 'version': '14', + 'path': 'C:/Program Files (x86)/Microsoft/Edge Beta/Application/msedge.exe', + 'version': '12', 'findAppParams': { - 'appName': 'Microsoft Edge Canary.app', - 'executable': 'Contents/MacOS/Microsoft Edge Canary', - 'appId': 'com.microsoft.Edge.Canary', + 'appName': 'Microsoft Edge Beta.app', + 'executable': 'Contents/MacOS/Microsoft Edge Beta', + 'bundleId': 'com.microsoft.Edge.Beta', 'versionProperty': 'CFBundleShortVersionString', }, }, { 'name': 'edge', 'family': 'chromium', - 'channel': 'beta', - 'displayName': 'Edge Beta', + 'channel': 'canary', + 'displayName': 'Edge Canary', 'versionRegex': {}, 'binary': [ - 'edge-beta', - 'microsoft-edge-beta', + 'edge-canary', + 'microsoft-edge-canary', ], 'minSupportedVersion': 79, - 'path': 'C:/Program Files (x86)/Microsoft/Edge Beta/Application/msedge.exe', - 'version': '12', + 'path': 'C:/Users/flotwig/AppData/Local/Microsoft/Edge SxS/Application/msedge.exe', + 'version': '14', 'findAppParams': { - 'appName': 'Microsoft Edge Beta.app', - 'executable': 'Contents/MacOS/Microsoft Edge Beta', - 'appId': 'com.microsoft.Edge.Beta', + 'appName': 'Microsoft Edge Canary.app', + 'executable': 'Contents/MacOS/Microsoft Edge Canary', + 'bundleId': 'com.microsoft.Edge.Canary', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -207,25 +224,77 @@ exports['windows browser detection detects browsers as expected 1'] = [ 'findAppParams': { 'appName': 'Microsoft Edge Dev.app', 'executable': 'Contents/MacOS/Microsoft Edge Dev', - 'appId': 'com.microsoft.Edge.Dev', + 'bundleId': 'com.microsoft.Edge.Dev', 'versionProperty': 'CFBundleShortVersionString', }, }, ] -exports['windows browser detection detects 64-bit Chrome Beta app path 1'] = { - 'name': 'chrome', - 'version': '9.0.1', - 'path': 'C:/Program Files/Google/Chrome Beta/Application/chrome.exe', -} +exports['windows browser detection detects Chrome Beta 64-bit install 1'] = [ + { + 'name': 'chrome', + 'family': 'chromium', + 'channel': 'beta', + 'displayName': 'Chrome Beta', + 'versionRegex': {}, + 'binary': 'google-chrome-beta', + 'minSupportedVersion': 64, + 'path': 'C:/Program Files/Google/Chrome Beta/Application/chrome.exe', + 'version': '9.0.1', + 'findAppParams': { + 'appName': 'Google Chrome Beta.app', + 'executable': 'Contents/MacOS/Google Chrome Beta', + 'bundleId': 'com.google.Chrome.beta', + 'versionProperty': 'KSVersion', + }, + }, +] + +exports['windows browser detection detects Chrome 64-bit install 1'] = [ + { + 'name': 'chrome', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chrome', + 'versionRegex': {}, + 'binary': [ + 'google-chrome', + 'chrome', + 'google-chrome-stable', + ], + 'minSupportedVersion': 64, + 'path': 'C:/Program Files/Google/Chrome/Application/chrome.exe', + 'version': '4.4.4', + 'findAppParams': { + 'appName': 'Google Chrome.app', + 'executable': 'Contents/MacOS/Google Chrome', + 'bundleId': 'com.google.Chrome', + 'versionProperty': 'KSVersion', + }, + }, +] -exports['windows browser detection detects new Chrome 64-bit app path 1'] = { - 'name': 'chrome', - 'version': '4.4.4', - 'path': 'C:/Program Files/Google/Chrome/Application/chrome.exe', -} +exports['windows browser detection detects Chrome for Testing 32-bit install 1'] = [ + { + 'name': 'chrome-for-testing', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chrome for Testing', + 'versionRegex': {}, + 'binary': 'chrome', + 'minSupportedVersion': 64, + 'path': 'C:/Program Files (x86)/Google/Chrome for Testing/chrome.exe', + 'version': '5.5.5', + 'findAppParams': { + 'appName': 'Google Chrome for Testing.app', + 'executable': 'Contents/MacOS/Google Chrome for Testing', + 'bundleId': 'com.google.chrome.for.testing', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, +] -exports['windows browser detection detects local Firefox installs 1'] = [ +exports['windows browser detection detects Firefox local installs 1'] = [ { 'name': 'firefox', 'family': 'firefox', @@ -239,7 +308,7 @@ exports['windows browser detection detects local Firefox installs 1'] = [ 'findAppParams': { 'appName': 'Firefox.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefox', + 'bundleId': 'org.mozilla.firefox', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -259,7 +328,7 @@ exports['windows browser detection detects local Firefox installs 1'] = [ 'findAppParams': { 'appName': 'Firefox Developer Edition.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.firefoxdeveloperedition', + 'bundleId': 'org.mozilla.firefoxdeveloperedition', 'versionProperty': 'CFBundleShortVersionString', }, }, @@ -279,7 +348,76 @@ exports['windows browser detection detects local Firefox installs 1'] = [ 'findAppParams': { 'appName': 'Firefox Nightly.app', 'executable': 'Contents/MacOS/firefox', - 'appId': 'org.mozilla.nightly', + 'bundleId': 'org.mozilla.nightly', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, +] + +exports['windows browser detection detects Chromium 64-bit install 1'] = [ + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + 'path': 'C:/Program Files/Google/chrome-win/chrome.exe', + 'version': '6.6.6', + 'findAppParams': { + 'appName': 'Chromium.app', + 'executable': 'Contents/MacOS/Chromium', + 'bundleId': 'org.chromium.Chromium', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, +] + +exports['windows browser detection detects Chromium 32-bit install in Chromium folder 1'] = [ + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + 'path': 'C:/Program Files (x86)/Google/Chromium/chrome.exe', + 'version': '7.7.7', + 'findAppParams': { + 'appName': 'Chromium.app', + 'executable': 'Contents/MacOS/Chromium', + 'bundleId': 'org.chromium.Chromium', + 'versionProperty': 'CFBundleShortVersionString', + }, + }, +] + +exports['windows browser detection detects Chromium 64-bit install in Chromium folder 1'] = [ + { + 'name': 'chromium', + 'family': 'chromium', + 'channel': 'stable', + 'displayName': 'Chromium', + 'versionRegex': {}, + 'binary': [ + 'chromium-browser', + 'chromium', + ], + 'minSupportedVersion': 64, + 'path': 'C:/Program Files/Google/Chromium/chrome.exe', + 'version': '8.8.8', + 'findAppParams': { + 'appName': 'Chromium.app', + 'executable': 'Contents/MacOS/Chromium', + 'bundleId': 'org.chromium.Chromium', 'versionProperty': 'CFBundleShortVersionString', }, }, diff --git a/packages/launcher/lib/darwin/index.ts b/packages/launcher/lib/darwin/index.ts index caa2500839b3..8d4f7ee06c37 100644 --- a/packages/launcher/lib/darwin/index.ts +++ b/packages/launcher/lib/darwin/index.ts @@ -17,27 +17,35 @@ export const browsers: Detectors = { stable: { appName: 'Google Chrome.app', executable: 'Contents/MacOS/Google Chrome', - appId: 'com.google.Chrome', + bundleId: 'com.google.Chrome', versionProperty: 'KSVersion', }, beta: { appName: 'Google Chrome Beta.app', executable: 'Contents/MacOS/Google Chrome Beta', - appId: 'com.google.Chrome.beta', + bundleId: 'com.google.Chrome.beta', versionProperty: 'KSVersion', }, canary: { appName: 'Google Chrome Canary.app', executable: 'Contents/MacOS/Google Chrome Canary', - appId: 'com.google.Chrome.canary', + bundleId: 'com.google.Chrome.canary', versionProperty: 'KSVersion', }, }, + 'chrome-for-testing': { + stable: { + appName: 'Google Chrome for Testing.app', + executable: 'Contents/MacOS/Google Chrome for Testing', + bundleId: 'com.google.chrome.for.testing', + versionProperty: 'CFBundleShortVersionString', + }, + }, chromium: { stable: { appName: 'Chromium.app', executable: 'Contents/MacOS/Chromium', - appId: 'org.chromium.Chromium', + bundleId: 'org.chromium.Chromium', versionProperty: 'CFBundleShortVersionString', }, }, @@ -45,19 +53,19 @@ export const browsers: Detectors = { stable: { appName: 'Firefox.app', executable: 'Contents/MacOS/firefox', - appId: 'org.mozilla.firefox', + bundleId: 'org.mozilla.firefox', versionProperty: 'CFBundleShortVersionString', }, dev: { appName: 'Firefox Developer Edition.app', executable: 'Contents/MacOS/firefox', - appId: 'org.mozilla.firefoxdeveloperedition', + bundleId: 'org.mozilla.firefoxdeveloperedition', versionProperty: 'CFBundleShortVersionString', }, nightly: { appName: 'Firefox Nightly.app', executable: 'Contents/MacOS/firefox', - appId: 'org.mozilla.nightly', + bundleId: 'org.mozilla.nightly', versionProperty: 'CFBundleShortVersionString', }, }, @@ -65,25 +73,25 @@ export const browsers: Detectors = { stable: { appName: 'Microsoft Edge.app', executable: 'Contents/MacOS/Microsoft Edge', - appId: 'com.microsoft.Edge', - versionProperty: 'CFBundleShortVersionString', - }, - canary: { - appName: 'Microsoft Edge Canary.app', - executable: 'Contents/MacOS/Microsoft Edge Canary', - appId: 'com.microsoft.Edge.Canary', + bundleId: 'com.microsoft.Edge', versionProperty: 'CFBundleShortVersionString', }, beta: { appName: 'Microsoft Edge Beta.app', executable: 'Contents/MacOS/Microsoft Edge Beta', - appId: 'com.microsoft.Edge.Beta', + bundleId: 'com.microsoft.Edge.Beta', + versionProperty: 'CFBundleShortVersionString', + }, + canary: { + appName: 'Microsoft Edge Canary.app', + executable: 'Contents/MacOS/Microsoft Edge Canary', + bundleId: 'com.microsoft.Edge.Canary', versionProperty: 'CFBundleShortVersionString', }, dev: { appName: 'Microsoft Edge Dev.app', executable: 'Contents/MacOS/Microsoft Edge Dev', - appId: 'com.microsoft.Edge.Dev', + bundleId: 'com.microsoft.Edge.Dev', versionProperty: 'CFBundleShortVersionString', }, }, diff --git a/packages/launcher/lib/darwin/util.ts b/packages/launcher/lib/darwin/util.ts index e669682ef38d..2e87bc4b709d 100644 --- a/packages/launcher/lib/darwin/util.ts +++ b/packages/launcher/lib/darwin/util.ts @@ -64,9 +64,13 @@ export type AppInfo = { } export type FindAppParams = { + // The name of the application (e.g. 'Google Chrome.app') appName: string + // The path to the executable within the application (e.g. 'Contents/MacOS/Google Chrome') executable: string - appId: string + // The CFBundleIdentifier in the Info.plist (e.g. 'com.google.Chrome') + bundleId: string + // The key from the Info.plist to find the version (e.g. 'KSVersion') versionProperty: string } @@ -75,8 +79,8 @@ function formApplicationPath (appName: string) { } /** finds an application and its version */ -export function findApp ({ appName, executable, appId, versionProperty }: FindAppParams): Promise { - debugVerbose('looking for app %s id %s', executable, appId) +export function findApp ({ appName, executable, bundleId, versionProperty }: FindAppParams): Promise { + debugVerbose('looking for app %s bundle id %s', executable, bundleId) const findVersion = (foundPath: string) => { return parsePlist(foundPath, versionProperty).then((version) => { @@ -90,7 +94,7 @@ export function findApp ({ appName, executable, appId, versionProperty }: FindAp } const tryMdFind = () => { - return mdfind(appId).then(findVersion) + return mdfind(bundleId).then(findVersion) } const tryFullApplicationFind = () => { diff --git a/packages/launcher/lib/known-browsers.ts b/packages/launcher/lib/known-browsers.ts index 53be37e599a1..24c335fe0169 100644 --- a/packages/launcher/lib/known-browsers.ts +++ b/packages/launcher/lib/known-browsers.ts @@ -34,20 +34,10 @@ export const knownBrowsers: Browser[] = [ family: 'chromium', channel: 'stable', displayName: 'Chrome', - versionRegex: /Google Chrome (\S+)/m, + versionRegex: /Google Chrome(?! for Testing) (\S+)/m, binary: ['google-chrome', 'chrome', 'google-chrome-stable'], minSupportedVersion: MIN_CHROME_VERSION, }, - { - name: 'chromium', - family: 'chromium', - // technically Chromium is always in development - channel: 'stable', - displayName: 'Chromium', - versionRegex: /Chromium (\S+)/m, - binary: ['chromium-browser', 'chromium'], - minSupportedVersion: MIN_CHROME_VERSION, - }, { name: 'chrome', family: 'chromium', @@ -61,11 +51,30 @@ export const knownBrowsers: Browser[] = [ name: 'chrome', family: 'chromium', channel: 'canary', - displayName: 'Canary', + displayName: 'Chrome Canary', versionRegex: /Google Chrome Canary (\S+)/m, binary: 'google-chrome-canary', minSupportedVersion: MIN_CHROME_VERSION, }, + { + name: 'chrome-for-testing', + family: 'chromium', + channel: 'stable', + displayName: 'Chrome for Testing', + versionRegex: /Google Chrome for Testing (\S+)/m, + binary: 'chrome', + minSupportedVersion: MIN_CHROME_VERSION, + }, + { + name: 'chromium', + family: 'chromium', + // technically Chromium is always in development + channel: 'stable', + displayName: 'Chromium', + versionRegex: /Chromium (\S+)/m, + binary: ['chromium-browser', 'chromium'], + minSupportedVersion: MIN_CHROME_VERSION, + }, { name: 'firefox', family: 'firefox', @@ -124,19 +133,19 @@ export const knownBrowsers: Browser[] = [ { name: 'edge', family: 'chromium', - channel: 'canary', - displayName: 'Edge Canary', - versionRegex: /Microsoft Edge.+?(\S*(?= canary)|(?<=canary )\S*)/mi, - binary: ['edge-canary', 'microsoft-edge-canary'], + channel: 'beta', + displayName: 'Edge Beta', + versionRegex: /Microsoft Edge.+?(\S*(?= beta)|(?<=beta )\S*)/mi, + binary: ['edge-beta', 'microsoft-edge-beta'], minSupportedVersion: MIN_EDGE_VERSION, }, { name: 'edge', family: 'chromium', - channel: 'beta', - displayName: 'Edge Beta', - versionRegex: /Microsoft Edge.+?(\S*(?= beta)|(?<=beta )\S*)/mi, - binary: ['edge-beta', 'microsoft-edge-beta'], + channel: 'canary', + displayName: 'Edge Canary', + versionRegex: /Microsoft Edge.+?(\S*(?= canary)|(?<=canary )\S*)/mi, + binary: ['edge-canary', 'microsoft-edge-canary'], minSupportedVersion: MIN_EDGE_VERSION, }, { diff --git a/packages/launcher/lib/windows/index.ts b/packages/launcher/lib/windows/index.ts index d0baaedbaccc..c1897b674200 100644 --- a/packages/launcher/lib/windows/index.ts +++ b/packages/launcher/lib/windows/index.ts @@ -26,9 +26,12 @@ function formChromeBetaAppPath () { } function formChromiumAppPath () { - const exe = 'C:/Program Files (x86)/Google/chrome-win32/chrome.exe' - - return [normalize(exe)] + return [ + 'C:/Program Files (x86)/Google/chrome-win32/chrome.exe', + 'C:/Program Files/Google/chrome-win/chrome.exe', + 'C:/Program Files/Google/Chromium/chrome.exe', + 'C:/Program Files (x86)/Google/Chromium/chrome.exe', + ].map(normalize) } function formChromeCanaryAppPath () { @@ -46,6 +49,13 @@ function formChromeCanaryAppPath () { return [normalize(exe)] } +function formChromeForTestingAppPath () { + return [ + 'C:/Program Files/Google/Chrome for Testing/chrome.exe', + 'C:/Program Files (x86)/Google/Chrome for Testing/chrome.exe', + ].map(normalize) +} + function getFirefoxPaths (editionFolder) { return () => { return (['Program Files', 'Program Files (x86)']) @@ -91,6 +101,9 @@ const formPaths: WindowsBrowserPaths = { beta: formChromeBetaAppPath, canary: formChromeCanaryAppPath, }, + 'chrome-for-testing': { + stable: formChromeForTestingAppPath, + }, chromium: { stable: formChromiumAppPath, }, @@ -106,10 +119,10 @@ const formPaths: WindowsBrowserPaths = { beta: () => { return [normalize('C:/Program Files (x86)/Microsoft/Edge Beta/Application/msedge.exe')] }, + canary: formEdgeCanaryAppPath, dev: () => { return [normalize('C:/Program Files (x86)/Microsoft/Edge Dev/Application/msedge.exe')] }, - canary: formEdgeCanaryAppPath, }, } diff --git a/packages/launcher/test/unit/darwin_spec.ts b/packages/launcher/test/unit/darwin_spec.ts index d62101d27b09..0e03b11904ab 100644 --- a/packages/launcher/test/unit/darwin_spec.ts +++ b/packages/launcher/test/unit/darwin_spec.ts @@ -30,7 +30,7 @@ function generatePlist (key, value) { function stubBrowser (findAppParams: darwinUtil.FindAppParams) { (utils.getOutput as unknown as SinonStub) - .withArgs(`mdfind 'kMDItemCFBundleIdentifier=="${findAppParams.appId}"' | head -1`) + .withArgs(`mdfind 'kMDItemCFBundleIdentifier=="${findAppParams.bundleId}"' | head -1`) .resolves({ stdout: `/Applications/${findAppParams.appName}` }) ;(fse.readFile as SinonStub) diff --git a/packages/launcher/test/unit/windows_spec.ts b/packages/launcher/test/unit/windows_spec.ts index 27b826fe99d0..af321beca64a 100644 --- a/packages/launcher/test/unit/windows_spec.ts +++ b/packages/launcher/test/unit/windows_spec.ts @@ -43,12 +43,20 @@ describe('windows browser detection', () => { }) it('detects browsers as expected', async () => { + // chrome stubBrowser('C:/Program Files (x86)/Google/Chrome/Application/chrome.exe', '1.2.3') + // chromium - 32-bit will be preferred for passivity stubBrowser('C:/Program Files (x86)/Google/chrome-win32/chrome.exe', '2.3.4') + stubBrowser('C:/Program Files/Google/chrome-win/chrome.exe', '2.3.4') + // chrome-for-testing - 64-bit will be preferred + stubBrowser('C:/Program Files (x86)/Google/Chrome for Testing/chrome.exe', '1.2.3') + stubBrowser('C:/Program Files/Google/Chrome for Testing/chrome.exe', '1.2.3') + + // chrome beta stubBrowser('C:/Program Files (x86)/Google/Chrome Beta/Application/chrome.exe', '6.7.8') - // canary is installed in homedir + // chrome canary is installed in homedir stubBrowser(`${HOMEDIR}/AppData/Local/Google/Chrome SxS/Application/chrome.exe`, '3.4.5') // have 32-bit and 64-bit ff - 64-bit will be preferred @@ -71,23 +79,30 @@ describe('windows browser detection', () => { snapshot(await detect(knownBrowsers)) }) - it('detects 64-bit Chrome Beta app path', async () => { + it('detects Chrome Beta 64-bit install', async () => { stubBrowser('C:/Program Files/Google/Chrome Beta/Application/chrome.exe', '9.0.1') - const chrome = _.find(knownBrowsers, { name: 'chrome', channel: 'beta' }) + const chrome = _.find(knownBrowsers, { name: 'chrome', channel: 'beta' })! - snapshot(await windowsHelper.detect(chrome)) + snapshot(await detect([chrome])) }) // @see https://github.com/cypress-io/cypress/issues/8425 - it('detects new Chrome 64-bit app path', async () => { + it('detects Chrome 64-bit install', async () => { stubBrowser('C:/Program Files/Google/Chrome/Application/chrome.exe', '4.4.4') - const chrome = _.find(knownBrowsers, { name: 'chrome', channel: 'stable' }) + const chrome = _.find(knownBrowsers, { name: 'chrome', channel: 'stable' })! + + snapshot(await detect([chrome])) + }) + + it('detects Chrome for Testing 32-bit install', async () => { + stubBrowser('C:/Program Files (x86)/Google/Chrome for Testing/chrome.exe', '5.5.5') + const chromeForTesting = _.find(knownBrowsers, { name: 'chrome-for-testing' })! - snapshot(await windowsHelper.detect(chrome)) + snapshot(await detect([chromeForTesting])) }) // @see https://github.com/cypress-io/cypress/issues/8432 - it('detects local Firefox installs', async () => { + it('detects Firefox local installs', async () => { stubBrowser(`${HOMEDIR}/AppData/Local/Mozilla Firefox/firefox.exe`, '100') stubBrowser(`${HOMEDIR}/AppData/Local/Firefox Nightly/firefox.exe`, '200') stubBrowser(`${HOMEDIR}/AppData/Local/Firefox Developer Edition/firefox.exe`, '300') @@ -97,6 +112,27 @@ describe('windows browser detection', () => { snapshot(await detect(firefoxes)) }) + it('detects Chromium 64-bit install', async () => { + stubBrowser('C:/Program Files/Google/chrome-win/chrome.exe', '6.6.6') + const chromium = _.find(knownBrowsers, { name: 'chromium' })! + + snapshot(await detect([chromium])) + }) + + it('detects Chromium 32-bit install in Chromium folder', async () => { + stubBrowser('C:/Program Files (x86)/Google/Chromium/chrome.exe', '7.7.7') + const chromium = _.find(knownBrowsers, { name: 'chromium' })! + + snapshot(await detect([chromium])) + }) + + it('detects Chromium 64-bit install in Chromium folder', async () => { + stubBrowser('C:/Program Files/Google/Chromium/chrome.exe', '8.8.8') + const chromium = _.find(knownBrowsers, { name: 'chromium' })! + + snapshot(await detect([chromium])) + }) + it('works with :browserName format in Windows', () => { sinon.stub(os, 'platform').returns('win32') let path = `${HOMEDIR}/foo/bar/browser.exe` diff --git a/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts b/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts index 94858029ccd2..cd3e4d42c7bd 100644 --- a/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts +++ b/packages/launchpad/cypress/e2e/choose-a-browser.cy.ts @@ -46,7 +46,7 @@ describe('Choose a browser page', () => { cy.get('h1').should('contain', 'Choose a browser') - cy.findByRole('radio', { name: 'Edge v8', checked: true }) + cy.findByRole('radio', { name: 'Edge v9', checked: true }) cy.percySnapshot() @@ -103,8 +103,10 @@ describe('Choose a browser page', () => { // varies depending on platform if (Cypress.platform === 'win32') { cy.get('@AlertBody').find('code').eq(1).should('have.text', `win-version-info is unable to access file: \\${path.replaceAll('/', '\\')}`) - } else { + } else if (Cypress.platform === 'linux') { cy.get('@AlertBody').find('code').eq(1).should('have.text', `spawn ${path} ENOENT`) + } else { + cy.get('@AlertBody').find('code').eq(1).should('have.text', `Unable to find browser with path ${path}`) } cy.percySnapshot() @@ -127,11 +129,11 @@ describe('Choose a browser page', () => { cy.findByRole('radio', { name: 'Chrome v1' }) - cy.findByRole('radio', { name: 'Firefox v5' }) + cy.findByRole('radio', { name: 'Firefox v6' }) - cy.findByRole('radio', { name: 'Electron v12' }) + cy.findByRole('radio', { name: 'Electron v13' }) - cy.findByRole('radio', { name: 'Edge v8' }) + cy.findByRole('radio', { name: 'Edge v9' }) }) it('performs mutation to launch selected browser when launch button is pressed', () => { @@ -194,7 +196,7 @@ describe('Choose a browser page', () => { cy.get('h1').should('contain', 'Choose a browser') cy.findByRole('radio', { name: 'Chrome v1', checked: true }).as('chromeItem') - cy.findByRole('radio', { name: 'Firefox v5', checked: false }).as('firefoxItem') + cy.findByRole('radio', { name: 'Firefox v6', checked: false }).as('firefoxItem') cy.contains('button', 'Start E2E Testing in Chrome').should('be.visible') @@ -205,7 +207,7 @@ describe('Choose a browser page', () => { }) cy.findByRole('radio', { name: 'Chrome v1', checked: false }) - cy.findByRole('radio', { name: 'Firefox v5', checked: true }) + cy.findByRole('radio', { name: 'Firefox v6', checked: true }) cy.contains('button', 'Start E2E Testing in Firefox').should('be.visible') }) @@ -323,7 +325,7 @@ describe('Choose a browser page', () => { }) cy.contains('button', 'Start E2E Testing in Firefox').should('be.visible') - cy.findByRole('radio', { name: 'Firefox v5', checked: true }).should('be.visible') + cy.findByRole('radio', { name: 'Firefox v6', checked: true }).should('be.visible') }) it('should return to welcome screen if user modifies the config file to not include the current testing type and recover', () => { @@ -371,7 +373,7 @@ describe('Choose a browser page', () => { cy.get('[data-cy="open-browser-list"]').children().should('have.length', 1) - cy.findByRole('radio', { name: 'Electron v12', checked: true }) + cy.findByRole('radio', { name: 'Electron v13', checked: true }) cy.percySnapshot() }) }) diff --git a/packages/launchpad/cypress/e2e/project-setup.cy.ts b/packages/launchpad/cypress/e2e/project-setup.cy.ts index 62cb67118e1f..e36de4ff2251 100644 --- a/packages/launchpad/cypress/e2e/project-setup.cy.ts +++ b/packages/launchpad/cypress/e2e/project-setup.cy.ts @@ -61,9 +61,9 @@ describe('Launchpad: Setup Project', () => { cy.contains('Choose a browser', { timeout: 15000 }) cy.findByRole('radio', { name: 'Chrome v1' }) - cy.findByRole('radio', { name: 'Firefox v5' }) - cy.findByRole('radio', { name: 'Electron v12' }) - cy.findByRole('radio', { name: 'Edge v8' }) + cy.findByRole('radio', { name: 'Firefox v6' }) + cy.findByRole('radio', { name: 'Electron v13' }) + cy.findByRole('radio', { name: 'Edge v9' }) } beforeEach(() => { diff --git a/packages/launchpad/cypress/e2e/system-tests/config-spec.cy.ts b/packages/launchpad/cypress/e2e/system-tests/config-spec.cy.ts index 5bcf02a12687..ec2355c043c3 100644 --- a/packages/launchpad/cypress/e2e/system-tests/config-spec.cy.ts +++ b/packages/launchpad/cypress/e2e/system-tests/config-spec.cy.ts @@ -4,7 +4,7 @@ describe('config-spec', () => { cy.findBrowsers() cy.openProject('plugin-filter-browsers', ['--e2e']) cy.withCtx(async (ctx) => { - expect(await ctx.browser.machineBrowsers()).to.have.length(12) // stubbed list of all browsers + expect(await ctx.browser.machineBrowsers()).to.have.length(13) // stubbed list of all browsers }) cy.visitLaunchpad() diff --git a/packages/server/__snapshots__/browsers_spec.js b/packages/server/__snapshots__/browsers_spec.js index 4d9e8283e385..f5992d0d363a 100644 --- a/packages/server/__snapshots__/browsers_spec.js +++ b/packages/server/__snapshots__/browsers_spec.js @@ -7,7 +7,7 @@ Cypress supports the following browsers: - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox @@ -28,7 +28,7 @@ Cypress supports the following browsers: - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox diff --git a/packages/server/lib/util/chromium_flags.ts b/packages/server/lib/util/chromium_flags.ts index eb45e6230fcb..f803725f86c0 100644 --- a/packages/server/lib/util/chromium_flags.ts +++ b/packages/server/lib/util/chromium_flags.ts @@ -36,7 +36,7 @@ const DEFAULT_FLAGS = [ 'enable-automation', 'disable-print-preview', 'disable-component-extensions-with-background-pages', - + 'disable-infobars', 'disable-device-discovery-notifications', // https://github.com/cypress-io/cypress/issues/2376 diff --git a/system-tests/__snapshots__/component_testing_spec.ts.js b/system-tests/__snapshots__/component_testing_spec.ts.js index bc6660da8df6..e3531e039403 100644 --- a/system-tests/__snapshots__/component_testing_spec.ts.js +++ b/system-tests/__snapshots__/component_testing_spec.ts.js @@ -786,9 +786,9 @@ exports['experimentalSingleTabRunMode / executes all specs in a single tab'] = ` (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/1_fails.cy.js/simple failing spec -- fails (fai (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/1_fails.cy.js/simple failing spec -- fails (fai (1280x633) led).png - - /XXX/XXX/XXX/cypress/screenshots/1_fails.cy.js/simple failing spec -- fails agai (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/1_fails.cy.js/simple failing spec -- fails agai (1280x633) n (failed).png diff --git a/system-tests/__snapshots__/plugins_spec.js b/system-tests/__snapshots__/plugins_spec.js index 4cd267e25f59..afc98d06d7b4 100644 --- a/system-tests/__snapshots__/plugins_spec.js +++ b/system-tests/__snapshots__/plugins_spec.js @@ -7,7 +7,7 @@ Cypress supports the following browsers: - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox diff --git a/system-tests/__snapshots__/record_spec.js b/system-tests/__snapshots__/record_spec.js index d837ef612fe9..beb05d75a328 100644 --- a/system-tests/__snapshots__/record_spec.js +++ b/system-tests/__snapshots__/record_spec.js @@ -556,7 +556,7 @@ Cypress supports the following browsers: - electron - chrome - chromium - - chrome:canary + - chrome-for-testing - edge - firefox diff --git a/system-tests/__snapshots__/retries_spec.ts.js b/system-tests/__snapshots__/retries_spec.ts.js index d88ae5dc7b63..9e99c236d055 100644 --- a/system-tests/__snapshots__/retries_spec.ts.js +++ b/system-tests/__snapshots__/retries_spec.ts.js @@ -164,8 +164,8 @@ exports['retries / supports retries (chrome)'] = ` (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/fail-twice.cy.js/fail twice (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/fail-twice.cy.js/fail twice (failed) (attempt 2 (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/fail-twice.cy.js/fail twice (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/fail-twice.cy.js/fail twice (failed) (attempt 2 (1280x633) ).png diff --git a/system-tests/__snapshots__/vite_dev_server_fresh_spec.ts.js b/system-tests/__snapshots__/vite_dev_server_fresh_spec.ts.js index 5cc5e74d4ce5..bf914585b152 100644 --- a/system-tests/__snapshots__/vite_dev_server_fresh_spec.ts.js +++ b/system-tests/__snapshots__/vite_dev_server_fresh_spec.ts.js @@ -82,7 +82,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -165,12 +165,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -216,7 +216,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -254,7 +254,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -485,7 +485,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -568,12 +568,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -619,7 +619,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -657,7 +657,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -888,7 +888,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -971,12 +971,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -1022,7 +1022,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -1060,7 +1060,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -1291,7 +1291,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -1374,12 +1374,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -1425,7 +1425,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -1463,7 +1463,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -1906,7 +1906,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -1989,12 +1989,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -2040,7 +2040,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -2078,7 +2078,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png diff --git a/system-tests/__snapshots__/webpack_dev_server_fresh_spec.ts.js b/system-tests/__snapshots__/webpack_dev_server_fresh_spec.ts.js index 2af0d08c8e6f..b72a31f49c1b 100644 --- a/system-tests/__snapshots__/webpack_dev_server_fresh_spec.ts.js +++ b/system-tests/__snapshots__/webpack_dev_server_fresh_spec.ts.js @@ -321,7 +321,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -404,12 +404,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -455,7 +455,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -493,7 +493,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -744,7 +744,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -827,12 +827,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -878,7 +878,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -916,7 +916,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -1158,7 +1158,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -1241,12 +1241,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -1292,7 +1292,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -1330,7 +1330,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -1584,7 +1584,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -1667,12 +1667,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -1718,7 +1718,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -1756,7 +1756,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png @@ -2027,7 +2027,7 @@ We dynamically generated a new test to display this failure. (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/AppCompilationError.cy.jsx/An uncaught error wa (1280x633) s detected outside of a test (failed).png @@ -2110,12 +2110,12 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- error on mount (failed) (1280x633) .png - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x581) - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- sync error (failed).png (1280x633) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- async error (failed).pn (1280x633) g - - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/Errors.cy.jsx/Errors -- command failure (failed (1280x633) ).png @@ -2161,7 +2161,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReact.cy.jsx/is missing React (failed).p (1280x633) ng @@ -2199,7 +2199,7 @@ https://on.cypress.io/uncaught-exception-from-application (Screenshots) - - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x581) + - /XXX/XXX/XXX/cypress/screenshots/MissingReactInSpec.cy.jsx/is missing React in t (1280x633) his file (failed).png diff --git a/system-tests/projects/screen-size/cypress/e2e/default_size.cy.js b/system-tests/projects/screen-size/cypress/e2e/default_size.cy.js index 0c60218985d1..db3a89a0f800 100644 --- a/system-tests/projects/screen-size/cypress/e2e/default_size.cy.js +++ b/system-tests/projects/screen-size/cypress/e2e/default_size.cy.js @@ -16,7 +16,7 @@ describe('windowSize', () => { // availHeight: top.screen.availHeight, }).deep.eq({ innerWidth: 1280, - innerHeight: 581, // chrome 128 decreased the size here from 633 to 581 + innerHeight: 633, // chrome 119 increased the size here from 599 to 633 // screenWidth: 1280, // screenHeight: 603, // availWidth: 1280, diff --git a/yarn.lock b/yarn.lock index b7545677d55e..6f4f2d037e02 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10986,8 +10986,8 @@ brorand@^1.0.1, brorand@^1.1.0: integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= "browser-logos@github:alrra/browser-logos": - version "72.0.0" - resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/6e3e6a8da0dc8ec9851a6987fd9bd3523fe1876c" + version "75.0.0" + resolved "https://codeload.github.com/alrra/browser-logos/tar.gz/021a9533c9d872dccf92713f59afb383b29a50eb" browser-resolve@2.0.0: version "2.0.0" From d0e8d9b6d2ce57b97eb1c0a6eba9c0142b610409 Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Tue, 17 Dec 2024 09:59:14 -0500 Subject: [PATCH 10/25] chore: ignore yarnrc and yarn directory (#30769) * chore: ignore yarnrc and yarn directory * empty commit * empty commit --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 326b00acfcfa..2047278fbf2f 100644 --- a/.gitignore +++ b/.gitignore @@ -280,7 +280,9 @@ typings/ # Output of 'npm pack' *.tgz -# Yarn Integrity file +# Yarn files that shouldn't be checked in +.yarnrc +.yarn/ .yarn-integrity # dotenv environment variables file From 3303d1e41c1584d648673b6ff2104b3ccd61f6d9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:06:53 -0500 Subject: [PATCH 11/25] chore: Update v8 snapshot cache - linux (#30771) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/linux/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 19eebed4721a..5d91da46303c 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -4252,5 +4252,5 @@ "./tooling/v8-snapshot/cache/linux/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "ca5ac2cd877d4a2d2614f8a49a04badcce7f12a1f9962d6f1dbdebe4aaa797ff" + "deferredHash": "3f244751459328929504043ad557cf01df1c72ec53ee8aee2567bec96724c0db" } \ No newline at end of file From 97b404f3531416e7c791d3e7a7039c4157361242 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:16:36 -0500 Subject: [PATCH 12/25] chore: Update v8 snapshot cache - darwin (#30772) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/darwin/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index 5a52f6d9f1b2..aae4e301f3b7 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -4249,5 +4249,5 @@ "./tooling/v8-snapshot/cache/darwin/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "ca5ac2cd877d4a2d2614f8a49a04badcce7f12a1f9962d6f1dbdebe4aaa797ff" + "deferredHash": "3f244751459328929504043ad557cf01df1c72ec53ee8aee2567bec96724c0db" } \ No newline at end of file From a3877a423c80f86523703c12deea289e09da705d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:16:54 -0500 Subject: [PATCH 13/25] chore: Update v8 snapshot cache - windows (#30773) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/win32/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index ec31f89070a4..87c7da3e529c 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -4252,5 +4252,5 @@ "./tooling/v8-snapshot/cache/win32/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "7fcd9f681310aeb62da4137d956aa8b73597c9f8aa4e1c34192ca08caef2cb72" + "deferredHash": "9c8930c204e820609bac39267ab2522614df37c32c20c03fcb17c6daf96159f3" } \ No newline at end of file From a15076fcf9891c4fcc2a08cb82724326f90d8ef1 Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Tue, 17 Dec 2024 10:13:58 -0700 Subject: [PATCH 14/25] chore: release 13.17.0 (#30778) --- cli/CHANGELOG.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index a84d86167676..ee9a11991dcb 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,7 +1,7 @@ ## 13.17.0 -_Released 12/17/2024 (PENDING)_ +_Released 12/17/2024_ **Features:** @@ -11,7 +11,7 @@ _Released 12/17/2024 (PENDING)_ - Fixed an issue where targets may hang if `Network.enable` is not implemented for the target. Addresses [#29876](https://github.com/cypress-io/cypress/issues/29876). - Updated Firefox `userChrome.css` to correctly hide the toolbox during headless mode. Addresses [#30721](https://github.com/cypress-io/cypress/issues/30721). -- Fixed an issue loading the `cypress.config.ts` file with Node.js version `22.12.0`. Addresses [#30715](https://github.com/cypress-io/cypress/issues/30715). +- Fixed an issue loading the `cypress.config.ts` file with Node.js version `22.12.0` if it is loaded as an ESM. Addresses [#30715](https://github.com/cypress-io/cypress/issues/30715). **Misc:** diff --git a/package.json b/package.json index dc7c145e8b0c..212c6966016f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cypress", - "version": "13.16.1", + "version": "13.17.0", "description": "Cypress is a next generation front end testing tool built for the modern web", "private": true, "scripts": { From 6d13d7d23e8fe4e31c05aaedc2afd2c34455ed21 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 13:24:15 -0500 Subject: [PATCH 15/25] chore: Update Chrome (stable) to 131.0.6778.204 (#30786) * chore: Update Chrome (stable) to 131.0.6778.204 * empty commit --------- Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane --- browser-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser-versions.json b/browser-versions.json index 5875a901c076..979ffab09db6 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { "chrome:beta": "132.0.6834.46", - "chrome:stable": "131.0.6778.139", + "chrome:stable": "131.0.6778.204", "chrome:minimum": "64.0.3282.0" } From 46744bb57b590f2b455bdf4f21ba2b07b32a213a Mon Sep 17 00:00:00 2001 From: Matt Schile Date: Thu, 19 Dec 2024 13:41:46 -0700 Subject: [PATCH 16/25] test: fix system test firefox spawn message (#30791) --- system-tests/lib/normalizeStdout.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-tests/lib/normalizeStdout.ts b/system-tests/lib/normalizeStdout.ts index 5dbf7f04bf84..99a3cd57ffd3 100644 --- a/system-tests/lib/normalizeStdout.ts +++ b/system-tests/lib/normalizeStdout.ts @@ -165,7 +165,7 @@ export const normalizeStdout = function (str: string, options: any = {}) { // 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(/Failed to spawn CDP with Firefox. Retrying.*\.\.\.\n/g, '') + .replace(/\nFailed to spawn CDP with Firefox. Retrying.*\.\.\.\n/g, '') if (options.browser === 'webkit') { // WebKit throws for lookups on undefined refs with "Can't find variable: " From 07d9c1b9a0e3f17b9f0ab349bbfb971d248a787b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:38:16 -0500 Subject: [PATCH 17/25] chore: Update Chrome (beta) to 132.0.6834.57 (#30792) * chore: Update Chrome (beta) to 132.0.6834.57 * empty commit --------- Co-authored-by: cypress-bot[bot] <41898282+cypress-bot[bot]@users.noreply.github.com> Co-authored-by: Jennifer Shehane --- browser-versions.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser-versions.json b/browser-versions.json index 979ffab09db6..83794841106c 100644 --- a/browser-versions.json +++ b/browser-versions.json @@ -1,5 +1,5 @@ { - "chrome:beta": "132.0.6834.46", + "chrome:beta": "132.0.6834.57", "chrome:stable": "131.0.6778.204", "chrome:minimum": "64.0.3282.0" } From 0a8a1305fb0a6cc7846652613285702e580cd58a Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Fri, 20 Dec 2024 16:29:51 -0500 Subject: [PATCH 18/25] chore: convert screenshots.js to screenshots.ts (#30758) * chore: convert screenshots.js to screenshots.ts * Fix export * Try to clean up types * Add some more types around data * Add some more info around types to the screenshots file * try to fix the error in screenshots * fix type of overwrite * revert everything in that getPath function (just dont touch it) * more reverting * fix the thenable * revert again * revert outputFile change --- .../lib/{screenshots.js => screenshots.ts} | 158 +++++++++++++----- 1 file changed, 118 insertions(+), 40 deletions(-) rename packages/server/lib/{screenshots.js => screenshots.ts} (78%) diff --git a/packages/server/lib/screenshots.js b/packages/server/lib/screenshots.ts similarity index 78% rename from packages/server/lib/screenshots.js rename to packages/server/lib/screenshots.ts index 79730f952a3f..8f68189c7a41 100644 --- a/packages/server/lib/screenshots.js +++ b/packages/server/lib/screenshots.ts @@ -1,21 +1,74 @@ -const _ = require('lodash') -const mime = require('mime') -const path = require('path') -const Promise = require('bluebird') -const dataUriToBuffer = require('data-uri-to-buffer') -const Jimp = require('jimp') -const sizeOf = require('image-size') -const colorString = require('color-string') -const sanitize = require('sanitize-filename') -let debug = require('debug')('cypress:server:screenshot') -const plugins = require('./plugins') -const { fs } = require('./util/fs') - +import _ from 'lodash' +import Debug from 'debug' +import mime from 'mime' +import path from 'path' +import Promise from 'bluebird' +import dataUriToBuffer from 'data-uri-to-buffer' +import Jimp from 'jimp' +import sizeOf from 'image-size' +import colorString from 'color-string' +import sanitize from 'sanitize-filename' +import * as plugins from './plugins' +import { fs } from './util/fs' + +let debug = Debug('cypress:server:screenshot') const RUNNABLE_SEPARATOR = ' -- ' const pathSeparatorRe = /[\\\/]/g // internal id incrementor -let __ID__ = null +let __ID__: string | null = null + +type ScreenshotsFolder = string | false | undefined + +interface Clip { + x: number + y: number + width: number + height: number +} + +// TODO: This is likely not representative of the entire Type and should be updated +interface Data { + specName: string + name: string + startTime: Date + viewport: { + width: number + height: number + } + titles?: string[] + testFailure?: boolean + overwrite?: boolean + simple?: boolean + current?: number + total?: number + testAttemptIndex?: number + appOnly?: boolean + hideRunnerUi?: boolean + clip?: Clip + userClip?: Clip +} + +// TODO: This is likely not representative of the entire Type and should be updated +interface Details { + image: any + pixelRatio: any + multipart: any + takenAt: Date +} + +// TODO: This is likely not representative of the entire Type and should be updated +interface SavedDetails { + size?: string + takenAt?: Date + dimensions?: string + multipart?: any + pixelRatio?: number + name?: any + specName?: string + testFailure?: boolean + path?: string +} // many filesystems limit filename length to 255 bytes/characters, so truncate the filename to // the smallest common denominator of safe filenames, which is 255 bytes. when ENAMETOOLONG @@ -34,18 +87,32 @@ const MIN_PREFIX_BYTES = 64 // screenshot id to the debug logs for easier association debug = _.wrap(debug, (fn, str, ...args) => { return fn(`(${__ID__}) ${str}`, ...args) -}) +}) as Debug.Debugger -const isBlack = (rgba) => { +interface RGBA { + r: number + g: number + b: number + a: number +} + +const isBlack = (rgba: RGBA): boolean => { return `${rgba.r}${rgba.g}${rgba.b}` === '000' } -const isWhite = (rgba) => { +const isWhite = (rgba: RGBA): boolean => { return `${rgba.r}${rgba.g}${rgba.b}` === '255255255' } -const intToRGBA = function (int) { - const obj = Jimp.intToRGBA(int) +interface RGBAWithName extends RGBA { + name?: string + isNotWhite?: boolean + isWhite?: boolean + isBlack?: boolean +} + +const intToRGBA = function (int: number): RGBAWithName { + const obj: RGBAWithName = Jimp.intToRGBA(int) as RGBAWithName if (debug.enabled) { obj.name = colorString.to.keyword([ @@ -108,14 +175,14 @@ const hasHelperPixels = function (image, pixelRatio) { ) } -const captureAndCheck = function (data, automate, conditionFn) { +const captureAndCheck = function (data: Data, automate, conditionFn) { let attempt const start = new Date() let tries = 0 return (attempt = function () { tries++ - const totalDuration = new Date() - start + const totalDuration = new Date().getTime() - start.getTime() debug('capture and check %o', { tries, totalDuration }) @@ -140,7 +207,7 @@ const captureAndCheck = function (data, automate, conditionFn) { })() } -const isMultipart = (data) => { +const isMultipart = (data: Data) => { return _.isNumber(data.current) && _.isNumber(data.total) } @@ -166,7 +233,7 @@ const crop = function (image, dimensions, pixelRatio = 1) { return image.clone().crop(x, y, width, height) } -const pixelConditionFn = function (data, image) { +const pixelConditionFn = function (data: Data, image) { const pixelRatio = image.bitmap.width / data.viewport.width const hasPixels = hasHelperPixels(image, pixelRatio) @@ -187,7 +254,7 @@ const pixelConditionFn = function (data, image) { return passes } -let multipartImages = [] +let multipartImages: { data: Data, image, takenAt, __ID__ }[] = [] const clearMultipartState = function () { debug('clearing %d cached multipart images', multipartImages.length) @@ -199,7 +266,7 @@ const imagesMatch = (img1, img2) => { return img1.bitmap.data.equals(img2.bitmap.data) } -const lastImagesAreDifferent = function (data, image) { +const lastImagesAreDifferent = function (data: Data, image) { // ensure the previous image isn't the same, // which might indicate the page has not scrolled yet const previous = _.last(multipartImages) @@ -222,7 +289,7 @@ const lastImagesAreDifferent = function (data, image) { return !matches } -const multipartConditionFn = function (data, image) { +const multipartConditionFn = function (data: Data, image) { if (data.current === 1) { return pixelConditionFn(data, image) && lastImagesAreDifferent(data, image) } @@ -246,7 +313,7 @@ const stitchScreenshots = function (pixelRatio) { debug(`stitch ${multipartImages.length} images together`) - const takenAts = [] + const takenAts: string[] = [] let heightMarker = 0 const fullImage = new Jimp(fullWidth, fullHeight) @@ -278,6 +345,7 @@ const getBuffer = function (details) { return Promise .promisify(details.image.getBuffer) + // @ts-expect-error .call(details.image, Jimp.AUTO) } @@ -293,7 +361,7 @@ const getDimensions = function (details) { return pick(details.image.bitmap) } -const ensureSafePath = function (withoutExt, extension, overwrite, num = 0) { +const ensureSafePath = function (withoutExt: string, extension: string, overwrite: Data['overwrite'], num = 0) { const suffix = `${(num && !overwrite) ? ` (${num})` : ''}.${extension}` const maxSafePrefixBytes = maxSafeBytes - suffix.length @@ -316,6 +384,7 @@ const ensureSafePath = function (withoutExt, extension, overwrite, num = 0) { } // path does not exist, attempt to create it to check for an ENAMETOOLONG error + // @ts-expect-error return fs.outputFileAsync(fullPath, '') .then(() => fullPath) .catch((err) => { @@ -332,24 +401,26 @@ const ensureSafePath = function (withoutExt, extension, overwrite, num = 0) { }) } -const sanitizeToString = (title) => { +const sanitizeToString = (title: string | null | undefined) => { // test titles may be values which aren't strings like // null or undefined - so convert before trying to sanitize return sanitize(_.toString(title)) } -const getPath = function (data, ext, screenshotsFolder, overwrite) { +const getPath = function (data: Data, ext, screenshotsFolder: ScreenshotsFolder, overwrite: Data['overwrite']) { let names const specNames = (data.specName || '') .split(pathSeparatorRe) if (data.name) { + // @ts-expect-error names = data.name.split(pathSeparatorRe).map(sanitize) } else { names = _ .chain(data.titles) .map(sanitizeToString) .join(RUNNABLE_SEPARATOR) + // @ts-expect-error - this shouldn't be necessary, but it breaks if you remove it .concat([]) .value() } @@ -361,22 +432,28 @@ const getPath = function (data, ext, screenshotsFolder, overwrite) { names[index] = `${names[index]} (failed)` } - if (data.testAttemptIndex > 0) { + if (data.testAttemptIndex && data.testAttemptIndex > 0) { names[index] = `${names[index]} (attempt ${data.testAttemptIndex + 1})` } - const withoutExt = path.join(screenshotsFolder, ...specNames, ...names) + let withoutExt + + if (screenshotsFolder) { + withoutExt = path.join(screenshotsFolder, ...specNames, ...names) + } else { + withoutExt = path.join(...specNames, ...names) + } return ensureSafePath(withoutExt, ext, overwrite) } -const getPathToScreenshot = function (data, details, screenshotsFolder) { +const getPathToScreenshot = function (data: Data, details: Details, screenshotsFolder: ScreenshotsFolder) { const ext = mime.getExtension(getType(details)) return getPath(data, ext, screenshotsFolder, data.overwrite) } -module.exports = { +export = { crop, getPath, @@ -385,7 +462,7 @@ module.exports = { imagesMatch, - capture (data, automate) { + capture (data: Data, automate) { __ID__ = _.uniqueId('s') debug('capturing screenshot %o', data) @@ -419,7 +496,7 @@ module.exports = { debug(`multi-part ${data.current}/${data.total}`) } - if (multipart && (data.total > 1)) { + if (multipart && (data.total && data.total > 1)) { // keep previous screenshot partials around b/c if two screenshots are // taken in a row, the UI might not be caught up so we need something // to compare the new one to @@ -461,15 +538,16 @@ module.exports = { }) }, - save (data, details, screenshotsFolder) { + save (data: Data, details: Details, screenshotsFolder: ScreenshotsFolder) { return getPathToScreenshot(data, details, screenshotsFolder) .then((pathToScreenshot) => { debug('save', pathToScreenshot) return getBuffer(details) .then((buffer) => { - return fs.outputFileAsync(pathToScreenshot, buffer) + return fs.outputFile(pathToScreenshot, buffer) }).then(() => { + // @ts-expect-error TODO: size is not assignable here return fs.statAsync(pathToScreenshot).get('size') }).then((size) => { const dimensions = getDimensions(details) @@ -491,8 +569,8 @@ module.exports = { }) }, - afterScreenshot (data, details) { - const duration = new Date() - new Date(data.startTime) + afterScreenshot (data: Data, details: SavedDetails) { + const duration = new Date().getTime() - new Date(data.startTime).getTime() details = _.extend({}, data, details, { duration }) details = _.pick(details, 'testAttemptIndex', 'size', 'takenAt', 'dimensions', 'multipart', 'pixelRatio', 'name', 'specName', 'testFailure', 'path', 'scaled', 'blackout', 'duration') From 6324e15cb886aa59d9a6821d098f267911bdc151 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:41:20 -0500 Subject: [PATCH 19/25] chore: Update v8 snapshot cache - linux (#30795) * chore: updating v8 snapshot cache * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/linux/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index 5d91da46303c..5b416053fb64 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -781,7 +781,7 @@ "./packages/server/lib/plugins/preprocessor.js", "./packages/server/lib/plugins/run_events.js", "./packages/server/lib/reporter.js", - "./packages/server/lib/screenshots.js", + "./packages/server/lib/screenshots.ts", "./packages/server/lib/util/chrome_policy_check.js", "./packages/server/lib/util/cookies.ts", "./packages/server/lib/util/fs.ts", From 6d50810ea7e44b48fd7f9af0f2bc7c2b7146aae1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:41:36 -0500 Subject: [PATCH 20/25] chore: Update v8 snapshot cache - darwin (#30796) * chore: updating v8 snapshot cache * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/darwin/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index aae4e301f3b7..b0a9cd9049e3 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -782,7 +782,7 @@ "./packages/server/lib/plugins/preprocessor.js", "./packages/server/lib/plugins/run_events.js", "./packages/server/lib/reporter.js", - "./packages/server/lib/screenshots.js", + "./packages/server/lib/screenshots.ts", "./packages/server/lib/util/chrome_policy_check.js", "./packages/server/lib/util/cookies.ts", "./packages/server/lib/util/fs.ts", From 0ddb1197a0d81afafa5758820205bc8b37152c33 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:41:53 -0500 Subject: [PATCH 21/25] chore: Update v8 snapshot cache - windows (#30798) * chore: updating v8 snapshot cache * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) * index on develop: 0a8a1305fb chore: convert screenshots.js to screenshots.ts (#30758) --------- Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/win32/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index 87c7da3e529c..e09608696c03 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -783,7 +783,7 @@ "./packages/server/lib/plugins/preprocessor.js", "./packages/server/lib/plugins/run_events.js", "./packages/server/lib/reporter.js", - "./packages/server/lib/screenshots.js", + "./packages/server/lib/screenshots.ts", "./packages/server/lib/util/chrome_policy_check.js", "./packages/server/lib/util/cookies.ts", "./packages/server/lib/util/fs.ts", From 9dd98242065596716bbeb41db7949bf893d0d4bf Mon Sep 17 00:00:00 2001 From: Jennifer Shehane Date: Mon, 23 Dec 2024 10:13:45 -0500 Subject: [PATCH 22/25] Rearrange changelog a bit --- cli/CHANGELOG.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/cli/CHANGELOG.md b/cli/CHANGELOG.md index 4fc58f782e01..03b30dc138e9 100644 --- a/cli/CHANGELOG.md +++ b/cli/CHANGELOG.md @@ -1,17 +1,15 @@ ## 14.0.0 -_Released 12/17/2024 (PENDING)_ +_Released 1/7/2024 (PENDING)_ **Breaking Changes:** - Removed support for Node.js 16 and Node.js 21. Addresses [#29930](https://github.com/cypress-io/cypress/issues/29930). +- Upgraded bundled Node.js version from `18.17.0` to `20.18.1`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547). - Prebuilt binaries for Linux are no longer compatible with Linux distributions based on glibc <2.28, for example: Ubuntu 14-18, RHEL 7, CentOS 7, Amazon Linux 2. Addresses [#29601](https://github.com/cypress-io/cypress/issues/29601). - Cypress now only officially supports the latest 3 major versions of Chrome, Firefox, and Edge - older browser versions may still work, but we recommend keeping your browsers up to date to ensure compatibility with Cypress. A warning will no longer be displayed on browser selection in the Launchpad for any 'unsupported' browser versions. Additionally, the undocumented `minSupportedVersion` property has been removed from `Cypress.browser`. Addressed in [#30462](https://github.com/cypress-io/cypress/pull/30462). - It is no longer possible to make a `fetch` or `XMLHttpRequest` request from the `about:blank` page in Electron (i.e. `cy.window().then((win) => win.fetch('')`). You must use `cy.request` instead or perform some form of initial navigation via `cy.visit()`. Addressed in [#29547](https://github.com/cypress-io/cypress/pull/30394). -- Upgraded bundled Node.js version from `18.17.0` to `20.18.1`. Addresses [#29547](https://github.com/cypress-io/cypress/issues/29547). -- `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 3. Additionally, `@cypress/webpack-dev-server` now ships with `webpack-dev-server` version 5 by default. `webpack-dev-server` version 4 will need to be installed along side Cypress if you are still using `webpack` version 4. Addresses [#29308](https://github.com/cypress-io/cypress/issues/29308), [#30347](https://github.com/cypress-io/cypress/issues/30347), and [#30141](https://github.com/cypress-io/cypress/issues/30141). -- `@cypress/vite-dev-server` no longer supports `vite` versions 2 and 3. Addresses [#29377](https://github.com/cypress-io/cypress/issues/29377) and [#29378](https://github.com/cypress-io/cypress/issues/29378). - The `experimentalJustInTimeCompile` configuration option for component testing has been replaced with a `justInTimeCompile` option that is `true` by default. This option will only compile resources directly related to your spec, compiling them 'just-in-time' before spec execution. This should result in improved memory management and performance for component tests in `cypress open` and `cypress run` modes, in particular for large component testing suites. `justInTimeCompile` is now only supported for [`webpack`](https://www.npmjs.com/package/webpack). Addresses [#30234](https://github.com/cypress-io/cypress/issues/30234). Addressed in [#30402](https://github.com/cypress-io/cypress/pull/30402). - Cypress Component Testing no longer supports: - `create-react-app`. Addresses [#30028](https://github.com/cypress-io/cypress/issues/30028). @@ -25,6 +23,8 @@ _Released 12/17/2024 (PENDING)_ - The `cypress/react18` test harness is no longer included in the Cypress binary. Instead, React 18 support is now shipped with `cypress/react`! Addresses [#29607](https://github.com/cypress-io/cypress/issues/29607). - The `cypress/angular-signals` test harness is no longer included in the Cypress binary. Instead, signals support is now shipped with `cypress/angular`! This requires `rxjs` to be installed as a `peerDependency`. Addresses [#29606](https://github.com/cypress-io/cypress/issues/29606). - The Cypress configuration wizard for Component Testing supports TypeScript 4.0 or greater. Addresses [#30493](https://github.com/cypress-io/cypress/issues/30493). +- `@cypress/webpack-dev-server` no longer supports `webpack-dev-server` version 3. Additionally, `@cypress/webpack-dev-server` now ships with `webpack-dev-server` version 5 by default. `webpack-dev-server` version 4 will need to be installed along side Cypress if you are still using `webpack` version 4. Addresses [#29308](https://github.com/cypress-io/cypress/issues/29308), [#30347](https://github.com/cypress-io/cypress/issues/30347), and [#30141](https://github.com/cypress-io/cypress/issues/30141). +- `@cypress/vite-dev-server` no longer supports `vite` versions 2 and 3. Addresses [#29377](https://github.com/cypress-io/cypress/issues/29377) and [#29378](https://github.com/cypress-io/cypress/issues/29378). - The `delayMs` option of `cy.intercept()` has been removed. This option was deprecated in Cypress 6.4.0. Please use the `delay` option instead. Addressed in [#30463](https://github.com/cypress-io/cypress/pull/30463). - The `experimentalFetchPolyfill` configuration option was removed. This option was deprecated in Cypress 6.0.0. We recommend using `cy.intercept()` for handling fetch requests. Addressed in [#30466](https://github.com/cypress-io/cypress/pull/30466). - We removed yielding the second argument of `before:browser:launch` as an array of browser arguments. This behavior has been deprecated since Cypress 4.0.0. Addressed in [#30460](https://github.com/cypress-io/cypress/pull/30460). @@ -48,14 +48,14 @@ in this [GitHub issue](https://github.com/cypress-io/cypress/issues/30447). Addr **Bugfixes:** - Elements with `display: contents` will no longer use box model calculations for visibility, and correctly show as visible when it is visible. Fixed in [#29680](https://github.com/cypress-io/cypress/pull/29680). Fixes [#29605](https://github.com/cypress-io/cypress/issues/29605). -- The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). - Fixed a visibility issue when the element is positioned `static` or `relative` and the element's offset parent is positioned `absolute`, a descendent of the ancestor, and has no clippable overflow. Fixed in [#29689](https://github.com/cypress-io/cypress/pull/29689). Fixes [#28638](https://github.com/cypress-io/cypress/issues/28638). - Fixed a visibility issue for elements with `textContent` but without a width or height. Fixed in [#29688](https://github.com/cypress-io/cypress/pull/29688). Fixes [#29687](https://github.com/cypress-io/cypress/issues/29687). - Elements whose parent elements has `overflow: clip` and no height/width will now correctly show as hidden. Fixed in [#29778](https://github.com/cypress-io/cypress/pull/29778). Fixes [#23852](https://github.com/cypress-io/cypress/issues/23852). +- The CSS pseudo-class `:dir()` is now supported when testing in Electron. Addresses [#29766](https://github.com/cypress-io/cypress/issues/29766). **Misc:** - - Removed some component testing API stubs that were removed in [Cypress v11.0.0](https://docs.cypress.io/app/references/migration-guide#Component-Testing-Updates). Addressed in [#30696](https://github.com/cypress-io/cypress/pull/30696). Addresses [#30623](https://github.com/cypress-io/cypress/issues/30623). +- Removed some component testing API stubs that were removed in [Cypress v11.0.0](https://docs.cypress.io/app/references/migration-guide#Component-Testing-Updates). Addressed in [#30696](https://github.com/cypress-io/cypress/pull/30696). Addresses [#30623](https://github.com/cypress-io/cypress/issues/30623). **Dependency Updates:** From e1e82d7f21ace9d139d5cdeacd246037328b6be9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:14:15 -0500 Subject: [PATCH 23/25] chore: Update v8 snapshot cache - linux (#30799) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/linux/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/linux/snapshot-meta.json b/tooling/v8-snapshot/cache/linux/snapshot-meta.json index a2566162f2e5..f7902cc8c01f 100644 --- a/tooling/v8-snapshot/cache/linux/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/linux/snapshot-meta.json @@ -4184,5 +4184,5 @@ "./tooling/v8-snapshot/cache/linux/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "3f244751459328929504043ad557cf01df1c72ec53ee8aee2567bec96724c0db" + "deferredHash": "2d0ac745adc4cff2d5562745f93c4f051ee4d49bd19fd80280bd0e4cc6076675" } \ No newline at end of file From 7cc44d2e165b840eaa85d90b8e1d05f293ae489f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:14:25 -0500 Subject: [PATCH 24/25] chore: Update v8 snapshot cache - darwin (#30800) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/darwin/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json index d3d916a9820c..6cab457b6101 100644 --- a/tooling/v8-snapshot/cache/darwin/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/darwin/snapshot-meta.json @@ -4181,5 +4181,5 @@ "./tooling/v8-snapshot/cache/darwin/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "3f244751459328929504043ad557cf01df1c72ec53ee8aee2567bec96724c0db" + "deferredHash": "2d0ac745adc4cff2d5562745f93c4f051ee4d49bd19fd80280bd0e4cc6076675" } \ No newline at end of file From 547cfef6b3a7a67acabe5de0e7390cf5c2c25660 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:14:37 -0500 Subject: [PATCH 25/25] chore: Update v8 snapshot cache - windows (#30801) Co-authored-by: cypress-bot[bot] <+cypress-bot[bot]@users.noreply.github.com> --- tooling/v8-snapshot/cache/win32/snapshot-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/v8-snapshot/cache/win32/snapshot-meta.json b/tooling/v8-snapshot/cache/win32/snapshot-meta.json index 67ffd9374afe..bc680f476e6a 100644 --- a/tooling/v8-snapshot/cache/win32/snapshot-meta.json +++ b/tooling/v8-snapshot/cache/win32/snapshot-meta.json @@ -4184,5 +4184,5 @@ "./tooling/v8-snapshot/cache/win32/snapshot-entry.js" ], "deferredHashFile": "yarn.lock", - "deferredHash": "9c8930c204e820609bac39267ab2522614df37c32c20c03fcb17c6daf96159f3" + "deferredHash": "492cad220f881627c179fd50c8cbbbcc079166d29e44ed4e99d91a9b92885f02" } \ No newline at end of file