From d086dc13ae6971e9bd21fee1ecd8af10ce06d986 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 17:44:22 +0100 Subject: [PATCH 1/8] refactor: fix update script to properly detect extension for firefox The update script currently fails to detect the archive extensions for Firefox since the substituted version in the download URL causes no known extension to be discovered. The `97.0` period/dot for example throws of the `extname` detection. --- bazel/browsers/update-script/browser-artifact.ts | 16 ++++++++++++---- bazel/browsers/update-script/firefox.ts | 11 +++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/bazel/browsers/update-script/browser-artifact.ts b/bazel/browsers/update-script/browser-artifact.ts index 2d3ecabf5..68f40c934 100644 --- a/bazel/browsers/update-script/browser-artifact.ts +++ b/bazel/browsers/update-script/browser-artifact.ts @@ -17,9 +17,6 @@ const KNOWN_EXTENSIONS = new Set(['zip', 'tar.gz', 'tar.bz2', 'dmg']); /** Class describing an artifact for a browser. */ export class BrowserArtifact { - /** Extension of the artifact, derived from the download URL. */ - extension = getArtifactExtension(this.downloadUrl); - constructor( /** Instance of the browser this artifact exists for. */ public browser: Browser, @@ -27,6 +24,8 @@ export class BrowserArtifact { public type: ArtifactType, /** URL for downloading the artifact. */ public downloadUrl: string, + /** Extension of the artifact. If unspecified, derived from the download URL. */ + public extension: string = detectArtifactExtension(downloadUrl), ) {} } @@ -37,7 +36,7 @@ export class BrowserArtifact { * example with `.tar.gz`, we will need to keep track of known extensions * and start looking with the first dot/period we discover. */ -function getArtifactExtension(filePath: string) { +export function detectArtifactExtension(filePath: string) { let tmpPath: string = filePath; let extension: string = ''; let currentPart: string = ''; @@ -45,6 +44,15 @@ function getArtifactExtension(filePath: string) { // Iterate from the end of the path, finding the largest possible // extension substring, accounting for cases like `a/b.tmp/file.tar.gz`. while ((currentPart = path.extname(tmpPath)) !== '') { + // An extension needs to be a continuous set of alphanumeric characters. This is a rather + // strict requirement as technically extensions could contain e.g. `dashes`. In our case + // this strictness is acceptable though as we don't expect such extensions and it makes + // this extension detection logic more correct. e.g. the logic would not incorrectly + // detect an extension for `firefox-97.0-linux.tar.gz` to `0-linux.tar.gz`. + if (!/^\.[a-zA-Z0-9]+$/.test(currentPart)) { + break; + } + extension = currentPart + extension; tmpPath = path.basename(tmpPath, currentPart); } diff --git a/bazel/browsers/update-script/firefox.ts b/bazel/browsers/update-script/firefox.ts index 05e2f980e..aa4b14493 100644 --- a/bazel/browsers/update-script/firefox.ts +++ b/bazel/browsers/update-script/firefox.ts @@ -9,6 +9,7 @@ import {ArtifactType, BrowserArtifact} from './browser-artifact'; import {Browser} from './browser'; import {Platform} from './platform'; +import {detectArtifactExtension} from './browser-artifact'; const downloadLinuxUrls = { 'browser-bin': @@ -48,9 +49,15 @@ export class Firefox implements Browser { getArtifact(platform: Platform, archiveType: ArtifactType): BrowserArtifact { const urlSet = this._getUrlSetForPlatform(platform); const baseUrl = urlSet[archiveType]; - const downloadUrl = baseUrl.replace(/\{version}/g, this.revision); + const downloadUrl = baseUrl.replace( + /\{version}/g, + // Depending on browser, or driver being requested, substitute the associated version. + archiveType === 'browser-bin' ? this.revision : this.driverVersion, + ); - return new BrowserArtifact(this, archiveType, downloadUrl); + // Note that for the artifact extension we will consult the non-substituted base URL + // as the substituted version like `97.0.tar.bz2` would throw off the detection. + return new BrowserArtifact(this, archiveType, downloadUrl, detectArtifactExtension(baseUrl)); } private _getUrlSetForPlatform(platform: Platform): Record { From a4a972ea388f10139977eb7ebb1677d987b2366b Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 17:57:41 +0100 Subject: [PATCH 2/8] test: add test for bazel browser configuration Adds a test for the Bazel browser configuration. --- bazel/browsers/test/BUILD.bazel | 26 ++ bazel/browsers/test/browser-test.spec.mjs | 13 + package.json | 7 + yarn.lock | 421 +++++++++++++++++++++- 4 files changed, 447 insertions(+), 20 deletions(-) create mode 100644 bazel/browsers/test/BUILD.bazel create mode 100644 bazel/browsers/test/browser-test.spec.mjs diff --git a/bazel/browsers/test/BUILD.bazel b/bazel/browsers/test/BUILD.bazel new file mode 100644 index 000000000..6e9ae9e72 --- /dev/null +++ b/bazel/browsers/test/BUILD.bazel @@ -0,0 +1,26 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") +load("@npm//@bazel/concatjs:index.bzl", "karma_web_test_suite") +load("//bazel/spec-bundling:index.bzl", "spec_bundle") + +karma_web_test_suite( + name = "test", + browsers = [ + "//bazel/browsers/chromium:chromium", + "//bazel/browsers/firefox:firefox", + ], + deps = [ + ":test_bundle", + ], +) + +js_library( + name = "test_lib", + srcs = ["browser-test.spec.mjs"], +) + +spec_bundle( + name = "test_bundle", + platform = "browser", + workspace_name = "dev-infra", + deps = [":test_lib"], +) diff --git a/bazel/browsers/test/browser-test.spec.mjs b/bazel/browsers/test/browser-test.spec.mjs new file mode 100644 index 000000000..4429e12c9 --- /dev/null +++ b/bazel/browsers/test/browser-test.spec.mjs @@ -0,0 +1,13 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +describe('browser test', () => { + it('should work', () => { + expect(true).toBe(true); + }); +}); diff --git a/package.json b/package.json index 9a8e2dbb0..d2a0b54c4 100644 --- a/package.json +++ b/package.json @@ -101,8 +101,15 @@ "@types/yarnpkg__lockfile": "^1.1.5", "jsdoc": "^3.6.7", "jsdom": "^19.0.0", + "karma": "^6.3.15", + "karma-chrome-launcher": "^3.1.0", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^4.0.1", + "karma-requirejs": "^1.1.0", + "karma-sourcemap-loader": "^0.3.8", "minimist": "^1.2.5", "protobufjs": "^6.11.2", + "requirejs": "^2.3.6", "rxjs": "^7.4.0", "uglify-js": "^3.14.2", "wait-on": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index b9fdd7da6..11a2f80ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -362,6 +362,12 @@ __metadata: jasmine: ^3.7.0 jsdoc: ^3.6.7 jsdom: ^19.0.0 + karma: ^6.3.15 + karma-chrome-launcher: ^3.1.0 + karma-firefox-launcher: ^2.1.2 + karma-jasmine: ^4.0.1 + karma-requirejs: ^1.1.0 + karma-sourcemap-loader: ^0.3.8 minimatch: ^3.0.4 minimist: ^1.2.5 multimatch: ^5.0.0 @@ -370,6 +376,7 @@ __metadata: prettier: ^2.3.2 protobufjs: ^6.11.2 protractor: ^7.0.0 + requirejs: ^2.3.6 rxjs: ^7.4.0 selenium-webdriver: 4.1.1 semver: ^7.3.5 @@ -2447,6 +2454,13 @@ __metadata: languageName: node linkType: hard +"@socket.io/base64-arraybuffer@npm:~1.0.2": + version: 1.0.2 + resolution: "@socket.io/base64-arraybuffer@npm:1.0.2" + checksum: fa3e58c7581643d0557969cd3bece20e198596df77968ff29ede6be329d488e65104bef900e68a67f39d8855abfa59baa2b08d96fb856504bd01cbdd8f52249c + languageName: node + linkType: hard + "@tootallnate/once@npm:1": version: 1.1.2 resolution: "@tootallnate/once@npm:1.1.2" @@ -2543,6 +2557,13 @@ __metadata: languageName: node linkType: hard +"@types/component-emitter@npm:^1.2.10": + version: 1.2.11 + resolution: "@types/component-emitter@npm:1.2.11" + checksum: 0e081c5f7a4b113af3732f67ad9ebb487d5c239d440d96938ff9a679d18bb9337a513638e12b5b02a7a921494eef18c5a4d78f1188bc43a12290edd74c42a9c7 + languageName: node + linkType: hard + "@types/connect-history-api-fallback@npm:^1.3.5": version: 1.3.5 resolution: "@types/connect-history-api-fallback@npm:1.3.5" @@ -2571,6 +2592,20 @@ __metadata: languageName: node linkType: hard +"@types/cookie@npm:^0.4.1": + version: 0.4.1 + resolution: "@types/cookie@npm:0.4.1" + checksum: 3275534ed69a76c68eb1a77d547d75f99fedc80befb75a3d1d03662fb08d697e6f8b1274e12af1a74c6896071b11510631ba891f64d30c78528d0ec45a9c1a18 + languageName: node + linkType: hard + +"@types/cors@npm:^2.8.12": + version: 2.8.12 + resolution: "@types/cors@npm:2.8.12" + checksum: 8c45f112c7d1d2d831b4b266f2e6ed33a1887a35dcbfe2a18b28370751fababb7cd045e745ef84a523c33a25932678097bf79afaa367c6cb3fa0daa7a6438257 + languageName: node + linkType: hard + "@types/ejs@npm:^3.0.6": version: 3.1.0 resolution: "@types/ejs@npm:3.1.0" @@ -2806,7 +2841,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0": +"@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=13.7.0": version: 17.0.16 resolution: "@types/node@npm:17.0.16" checksum: 2d452a9e0ee7ec83d447d66dd2baf4dd05ef2fbcda39b06f73d86b36d5150d86c43a733d534d77467e7782104756944d42a35ed4b64113bda341b8334ee4d01d @@ -3832,7 +3867,7 @@ __metadata: languageName: node linkType: hard -"base64id@npm:2.0.0": +"base64id@npm:2.0.0, base64id@npm:~2.0.0": version: 2.0.0 resolution: "base64id@npm:2.0.0" checksum: 581b1d37e6cf3738b7ccdd4d14fe2bfc5c238e696e2720ee6c44c183b838655842e22034e53ffd783f872a539915c51b0d4728a49c7cc678ac5a758e00d62168 @@ -3919,7 +3954,7 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.19.1": +"body-parser@npm:1.19.1, body-parser@npm:^1.19.0": version: 1.19.1 resolution: "body-parser@npm:1.19.1" dependencies: @@ -3968,7 +4003,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1, braces@npm:~3.0.2": +"braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -4470,6 +4505,13 @@ __metadata: languageName: node linkType: hard +"colors@npm:1.4.0": + version: 1.4.0 + resolution: "colors@npm:1.4.0" + checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec + languageName: node + linkType: hard + "colors@npm:~1.2.1": version: 1.2.5 resolution: "colors@npm:1.2.5" @@ -4592,6 +4634,18 @@ __metadata: languageName: node linkType: hard +"connect@npm:^3.7.0": + version: 3.7.0 + resolution: "connect@npm:3.7.0" + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: ~1.3.3 + utils-merge: 1.0.1 + checksum: 96e1c4effcf219b065c7823e57351c94366d2e2a6952fa95e8212bffb35c86f1d5a3f9f6c5796d4cd3a5fdda628368b1c3cc44bf19c66cfd68fe9f9cab9177e2 + languageName: node + linkType: hard + "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -4717,6 +4771,16 @@ __metadata: languageName: node linkType: hard +"cors@npm:~2.8.5": + version: 2.8.5 + resolution: "cors@npm:2.8.5" + dependencies: + object-assign: ^4 + vary: ^1 + checksum: ced838404ccd184f61ab4fdc5847035b681c90db7ac17e428f3d81d69e2989d2b680cc254da0e2554f5ed4f8a341820a1ce3d1c16b499f6e2f47a1b9b07b5006 + languageName: node + linkType: hard + "cosmiconfig@npm:^7.0.0": version: 7.0.1 resolution: "cosmiconfig@npm:7.0.1" @@ -4894,6 +4958,13 @@ __metadata: languageName: node linkType: hard +"custom-event@npm:~1.0.0": + version: 1.0.1 + resolution: "custom-event@npm:1.0.1" + checksum: 334f48a6d5fb98df95c5f72cab2729417ffdcc74aebb1d51aa9220391bdee028ec36d9e19976a5a64f536e1e4aceb5bb4f0232d4761acc3e8fd74c54573959bd + languageName: node + linkType: hard + "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" @@ -4928,6 +4999,13 @@ __metadata: languageName: node linkType: hard +"date-format@npm:^4.0.3": + version: 4.0.3 + resolution: "date-format@npm:4.0.3" + checksum: 8ae4d9de3532010169a89bc7b079342051ba3ec88552636aa677bfb53e8eb15113af8394679aea7d41367dc8bb6e9865da17f21ac2802202180b09d6e3f2339e + languageName: node + linkType: hard + "debug@npm:2.6.9, debug@npm:^2.2.0": version: 2.6.9 resolution: "debug@npm:2.6.9" @@ -4937,7 +5015,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.3 resolution: "debug@npm:4.3.3" dependencies: @@ -5163,6 +5241,13 @@ __metadata: languageName: node linkType: hard +"di@npm:^0.0.1": + version: 0.0.1 + resolution: "di@npm:0.0.1" + checksum: 3f09a99534d33e49264585db7f863ea8bc76c25c4d5a60df387c946018ecf1e1516b2c05a2092e5ca51fcdc08cefe609a6adc5253fa831626cb78cad4746505e + languageName: node + linkType: hard + "diff@npm:^4.0.1": version: 4.0.2 resolution: "diff@npm:4.0.2" @@ -5212,6 +5297,18 @@ __metadata: languageName: node linkType: hard +"dom-serialize@npm:^2.2.1": + version: 2.2.1 + resolution: "dom-serialize@npm:2.2.1" + dependencies: + custom-event: ~1.0.0 + ent: ~2.2.0 + extend: ^3.0.0 + void-elements: ^2.0.0 + checksum: 48262e299a694dbfa32905ecceb29b89f2ce59adfc00cb676284f85ee0c8db0225e07961cbf9b06bf309291deebf52c958f855a5b6709d556000acf46d5a46ef + languageName: node + linkType: hard + "dom-serializer@npm:^1.0.1": version: 1.3.2 resolution: "dom-serializer@npm:1.3.2" @@ -5413,6 +5510,15 @@ __metadata: languageName: node linkType: hard +"engine.io-parser@npm:~5.0.0": + version: 5.0.3 + resolution: "engine.io-parser@npm:5.0.3" + dependencies: + "@socket.io/base64-arraybuffer": ~1.0.2 + checksum: 88d664420a441dd02db17d110f7bbbd9efe971747918150bf666b82ee138df596a2f5038f461c8a01864c83af67cb202548364e4174543f8c0bf5f4776ca6e0d + languageName: node + linkType: hard + "engine.io@npm:~3.5.0": version: 3.5.0 resolution: "engine.io@npm:3.5.0" @@ -5427,6 +5533,24 @@ __metadata: languageName: node linkType: hard +"engine.io@npm:~6.1.0": + version: 6.1.2 + resolution: "engine.io@npm:6.1.2" + dependencies: + "@types/cookie": ^0.4.1 + "@types/cors": ^2.8.12 + "@types/node": ">=10.0.0" + accepts: ~1.3.4 + base64id: 2.0.0 + cookie: ~0.4.1 + cors: ~2.8.5 + debug: ~4.3.1 + engine.io-parser: ~5.0.0 + ws: ~8.2.3 + checksum: bd98d6ce2b1e868e8ff0f65d7667a885b90bce62065d851ea0394a00c86686925be824ab91237151222d6a5acfd5610634f36966fa9b4c502e7cf362fbdf974a + languageName: node + linkType: hard + "enhanced-resolve@npm:^5.8.3": version: 5.8.3 resolution: "enhanced-resolve@npm:5.8.3" @@ -5437,7 +5561,7 @@ __metadata: languageName: node linkType: hard -"ent@npm:^2.2.0": +"ent@npm:^2.2.0, ent@npm:~2.2.0": version: 2.2.0 resolution: "ent@npm:2.2.0" checksum: f588b5707d6fef36011ea10d530645912a69530a1eb0831f8708c498ac028363a7009f45cfadd28ceb4dafd9ac17ec15213f88d09ce239cd033cfe1328dd7d7d @@ -5909,7 +6033,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.2, extend@npm:~3.0.2": +"extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 @@ -6042,7 +6166,7 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:~1.1.2": +"finalhandler@npm:1.1.2, finalhandler@npm:~1.1.2": version: 1.1.2 resolution: "finalhandler@npm:1.1.2" dependencies: @@ -6088,6 +6212,13 @@ __metadata: languageName: node linkType: hard +"flatted@npm:^3.2.4": + version: 3.2.5 + resolution: "flatted@npm:3.2.5" + checksum: 3c436e9695ccca29620b4be5671dd72e5dd0a7500e0856611b7ca9bd8169f177f408c3b9abfa78dfe1493ee2d873e2c119080a8a9bee4e1a186a9e60ca6c89f1 + languageName: node + linkType: hard + "follow-redirects@npm:^1.0.0, follow-redirects@npm:^1.14.0": version: 1.14.7 resolution: "follow-redirects@npm:1.14.7" @@ -6180,6 +6311,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.0.0": + version: 10.0.0 + resolution: "fs-extra@npm:10.0.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: 5285a3d8f34b917cf2b66af8c231a40c1623626e9d701a20051d3337be16c6d7cac94441c8b3732d47a92a2a027886ca93c69b6a4ae6aee3c89650d2a8880c0a + languageName: node + linkType: hard + "fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" @@ -6378,7 +6520,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.2.0, glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.0.6, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:7.2.0, glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.0.6, glob@npm:^7.1.1, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6, glob@npm:^7.1.7": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: @@ -6476,7 +6618,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.9 resolution: "graceful-fs@npm:4.2.9" checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 @@ -7313,6 +7455,13 @@ __metadata: languageName: node linkType: hard +"isbinaryfile@npm:^4.0.8": + version: 4.0.8 + resolution: "isbinaryfile@npm:4.0.8" + checksum: 606e3bb648d1a0dee23459d1d937bb2560e66a5281ec7c9ff50e585402d73321ac268d0f34cb7393125b3ebc4c7962d39e50a01cdb8904b52fce08b7ccd2bf9f + languageName: node + linkType: hard + "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -7389,6 +7538,13 @@ __metadata: languageName: node linkType: hard +"jasmine-core@npm:^3.6.0, jasmine-core@npm:~3.99.0": + version: 3.99.0 + resolution: "jasmine-core@npm:3.99.0" + checksum: afab2049116105547619b6591a700a137c95b3535ddc83583df666db356d45a7ea5564eeef74321b414d839c796d619e5fa1584096a73f82bd978a2bdad06b1a + languageName: node + linkType: hard + "jasmine-core@npm:~2.8.0": version: 2.8.0 resolution: "jasmine-core@npm:2.8.0" @@ -7396,13 +7552,6 @@ __metadata: languageName: node linkType: hard -"jasmine-core@npm:~3.99.0": - version: 3.99.0 - resolution: "jasmine-core@npm:3.99.0" - checksum: afab2049116105547619b6591a700a137c95b3535ddc83583df666db356d45a7ea5564eeef74321b414d839c796d619e5fa1584096a73f82bd978a2bdad06b1a - languageName: node - linkType: hard - "jasmine-reporters@npm:~2.5.0": version: 2.5.0 resolution: "jasmine-reporters@npm:2.5.0" @@ -7698,6 +7847,19 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 + languageName: node + linkType: hard + "jsonparse@npm:^1.2.0": version: 1.3.1 resolution: "jsonparse@npm:1.3.1" @@ -7789,6 +7951,46 @@ __metadata: languageName: node linkType: hard +"karma-chrome-launcher@npm:^3.1.0": + version: 3.1.0 + resolution: "karma-chrome-launcher@npm:3.1.0" + dependencies: + which: ^1.2.1 + checksum: 63431ddec9aa40e2a0439d9e2bcfa58a6822efd08e2666bdbc3f55dfbe8fcc0b401035b71b1f6f21340339dc56c172edaed8e8c0ddc6949873318ad1666b2dd9 + languageName: node + linkType: hard + +"karma-firefox-launcher@npm:^2.1.2": + version: 2.1.2 + resolution: "karma-firefox-launcher@npm:2.1.2" + dependencies: + is-wsl: ^2.2.0 + which: ^2.0.1 + checksum: bfd5b35b35949fee50d92def57b32ab9702926ac24c90036583b76beac33fe8100ec601c9e71087b861d6ca7b3d54e8d2f9b62fa1b5115c8b99512dd763cf2ad + languageName: node + linkType: hard + +"karma-jasmine@npm:^4.0.1": + version: 4.0.1 + resolution: "karma-jasmine@npm:4.0.1" + dependencies: + jasmine-core: ^3.6.0 + peerDependencies: + karma: "*" + checksum: 28337c82941ed6c68e0c47ef432c2c91511214e84a336e78d9068daebd61a3c1cee6209207ddc5fe3ad78124597f58054b93aa0f973ff6dcc8a8fcd1951c9851 + languageName: node + linkType: hard + +"karma-requirejs@npm:^1.1.0": + version: 1.1.0 + resolution: "karma-requirejs@npm:1.1.0" + peerDependencies: + karma: ">=0.9" + requirejs: ^2.1.0 + checksum: c02a67ac933629c531c0c98db8db87189a74c63ae6455498ea7c028e758f8295d06f808dddca26a49989090d764a512ebad5c398e1d6de3c2cd2e0260c5f3ab9 + languageName: node + linkType: hard + "karma-source-map-support@npm:1.4.0": version: 1.4.0 resolution: "karma-source-map-support@npm:1.4.0" @@ -7798,6 +8000,49 @@ __metadata: languageName: node linkType: hard +"karma-sourcemap-loader@npm:^0.3.8": + version: 0.3.8 + resolution: "karma-sourcemap-loader@npm:0.3.8" + dependencies: + graceful-fs: ^4.1.2 + checksum: 12e21849af695f4aaa012752128b494e8b4b601c8d910212253d153b92153017364ad99f9ed86d58578ce44a7e53e9498ebd329950f1d0f0290bb90f4fea6d2c + languageName: node + linkType: hard + +"karma@npm:^6.3.15": + version: 6.3.15 + resolution: "karma@npm:6.3.15" + dependencies: + body-parser: ^1.19.0 + braces: ^3.0.2 + chokidar: ^3.5.1 + colors: 1.4.0 + connect: ^3.7.0 + di: ^0.0.1 + dom-serialize: ^2.2.1 + glob: ^7.1.7 + graceful-fs: ^4.2.6 + http-proxy: ^1.18.1 + isbinaryfile: ^4.0.8 + lodash: ^4.17.21 + log4js: ^6.4.1 + mime: ^2.5.2 + minimatch: ^3.0.4 + mkdirp: ^0.5.5 + qjobs: ^1.2.0 + range-parser: ^1.2.1 + rimraf: ^3.0.2 + socket.io: ^4.2.0 + source-map: ^0.6.1 + tmp: ^0.2.1 + ua-parser-js: ^0.7.30 + yargs: ^16.1.1 + bin: + karma: bin/karma + checksum: 28736fd4e69f449e9008c3e42cef38af13b860db3b3f9cdfbe84bb32e5570fd0ff29e40dd239946c200f99473d94853a77786f3531575bd7cf5b77581612cbc2 + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -8091,6 +8336,19 @@ __metadata: languageName: node linkType: hard +"log4js@npm:^6.4.1": + version: 6.4.1 + resolution: "log4js@npm:6.4.1" + dependencies: + date-format: ^4.0.3 + debug: ^4.3.3 + flatted: ^3.2.4 + rfdc: ^1.3.0 + streamroller: ^3.0.2 + checksum: 0614949662314573ec7dcd841769a4d23d8cb8268685458a40fcd94f2ae6ec628234cfb9a6bc17821fb6ea6ce3765e779b4966ba1cf918f393dc37155a3615cb + languageName: node + linkType: hard + "long@npm:^4.0.0": version: 4.0.0 resolution: "long@npm:4.0.0" @@ -8328,6 +8586,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^2.5.2": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 1497ba7b9f6960694268a557eae24b743fd2923da46ec392b042469f4b901721ba0adcf8b0d3c2677839d0e243b209d76e5edcbd09cfdeffa2dfb6bb4df4b862 + languageName: node + linkType: hard + "mime@npm:^3.0.0": version: 3.0.0 resolution: "mime@npm:3.0.0" @@ -8773,7 +9040,7 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.0.1": +"object-assign@npm:^4, object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f @@ -9840,6 +10107,13 @@ __metadata: languageName: node linkType: hard +"qjobs@npm:^1.2.0": + version: 1.2.0 + resolution: "qjobs@npm:1.2.0" + checksum: eb64c00724d2fecaf9246383b4eebc3a4c34845b25d41921dd57f41b30a4310cef661543facac27ceb6911aab64a1acdf45b5d8f1d5e2838554d0c010ee56852 + languageName: node + linkType: hard + "qs@npm:6.2.3": version: 6.2.3 resolution: "qs@npm:6.2.3" @@ -10126,6 +10400,16 @@ __metadata: languageName: node linkType: hard +"requirejs@npm:^2.3.6": + version: 2.3.6 + resolution: "requirejs@npm:2.3.6" + bin: + r.js: ./bin/r.js + r_js: ./bin/r.js + checksum: 7c3c006bf5e1887d93ac7adb7f600328918d23cf3d28282a505a2873d4ddde499c7ec560e55cee3440d17fe1205cb4dcb72b07f35b39e8940372eca850e49b62 + languageName: node + linkType: hard + "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -10284,6 +10568,13 @@ __metadata: languageName: node linkType: hard +"rfdc@npm:^1.3.0": + version: 1.3.0 + resolution: "rfdc@npm:1.3.0" + checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 + languageName: node + linkType: hard + "rimraf@npm:^2.2.8, rimraf@npm:^2.5.2, rimraf@npm:^2.5.4": version: 2.7.1 resolution: "rimraf@npm:2.7.1" @@ -10762,6 +11053,13 @@ __metadata: languageName: node linkType: hard +"socket.io-adapter@npm:~2.3.3": + version: 2.3.3 + resolution: "socket.io-adapter@npm:2.3.3" + checksum: 73890e0a33e48a9e4be83e5fa2b8ea9728d2a35ae2fed373cad4d6744c6512c0e1c735e7820df9821e58c4738dc355bdaec5aae30bc56f4d6a41d999596d0c82 + languageName: node + linkType: hard + "socket.io-client@npm:2.4.0, socket.io-client@npm:^2.4.0": version: 2.4.0 resolution: "socket.io-client@npm:2.4.0" @@ -10803,6 +11101,17 @@ __metadata: languageName: node linkType: hard +"socket.io-parser@npm:~4.0.4": + version: 4.0.4 + resolution: "socket.io-parser@npm:4.0.4" + dependencies: + "@types/component-emitter": ^1.2.10 + component-emitter: ~1.3.0 + debug: ~4.3.1 + checksum: c173b4f3747c51e2af802eca35212f4dcfa8fe55d7fdc07b9a01da1ecc956791c1bf6591e307952548eab69e6500bcfe27cea8aff1386b860d9bb51f98e4fafb + languageName: node + linkType: hard + "socket.io@npm:2.4.0": version: 2.4.0 resolution: "socket.io@npm:2.4.0" @@ -10817,6 +11126,20 @@ __metadata: languageName: node linkType: hard +"socket.io@npm:^4.2.0": + version: 4.4.1 + resolution: "socket.io@npm:4.4.1" + dependencies: + accepts: ~1.3.4 + base64id: ~2.0.0 + debug: ~4.3.2 + engine.io: ~6.1.0 + socket.io-adapter: ~2.3.3 + socket.io-parser: ~4.0.4 + checksum: a559ae52359f1ca3ce5a347368cf985c72259e1ab1bf2bf769ca0add5db34e2a86f4e183a58f37f32676ec482c71fedb7b08d873dc31cf581f5ba0797a8382fe + languageName: node + linkType: hard + "sockjs@npm:^0.3.21": version: 0.3.24 resolution: "sockjs@npm:0.3.24" @@ -11092,6 +11415,17 @@ __metadata: languageName: node linkType: hard +"streamroller@npm:^3.0.2": + version: 3.0.2 + resolution: "streamroller@npm:3.0.2" + dependencies: + date-format: ^4.0.3 + debug: ^4.1.1 + fs-extra: ^10.0.0 + checksum: 1f323824f0e81cc085c24f33addfd8ef00d0c15aafee520a8cf207ca6e2dc674fd852528c7b4450cc87f4335d1269ed18b3f0188853d45d7f0912c9a205d1fc1 + languageName: node + linkType: hard + "string-argv@npm:~0.3.1": version: 0.3.1 resolution: "string-argv@npm:0.3.1" @@ -11762,6 +12096,13 @@ __metadata: languageName: node linkType: hard +"ua-parser-js@npm:^0.7.30": + version: 0.7.31 + resolution: "ua-parser-js@npm:0.7.31" + checksum: e2f8324a83d1715601576af85b2b6c03890699aaa7272950fc77ea925c70c5e4f75060ae147dc92124e49f7f0e3d6dd2b0a91e7f40d267e92df8894be967ba8b + languageName: node + linkType: hard + "uc.micro@npm:^1.0.1, uc.micro@npm:^1.0.5": version: 1.0.6 resolution: "uc.micro@npm:1.0.6" @@ -11867,6 +12208,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^2.0.0": + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + languageName: node + linkType: hard + "unpipe@npm:1.0.0, unpipe@npm:~1.0.0": version: 1.0.0 resolution: "unpipe@npm:1.0.0" @@ -11950,7 +12298,7 @@ __metadata: languageName: node linkType: hard -"vary@npm:~1.1.2": +"vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" checksum: ae0123222c6df65b437669d63dfa8c36cee20a504101b2fcd97b8bf76f91259c17f9f2b4d70a1e3c6bbcee7f51b28392833adb6b2770b23b01abec84e369660b @@ -11968,6 +12316,13 @@ __metadata: languageName: node linkType: hard +"void-elements@npm:^2.0.0": + version: 2.0.1 + resolution: "void-elements@npm:2.0.1" + checksum: 700c07ba9cfa2dff88bb23974b3173118f9ad8107143db9e5d753552be15cf93380954d4e7f7d7bc80e7306c35c3a7fb83ab0ce4d4dcc18abf90ca8b31452126 + languageName: node + linkType: hard + "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -12264,6 +12619,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^1.2.1": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: f2e185c6242244b8426c9df1510e86629192d93c1a986a7d2a591f2c24869e7ffd03d6dac07ca863b2e4c06f59a4cc9916c585b72ee9fa1aa609d0124df15e04 + languageName: node + linkType: hard + "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -12369,6 +12735,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:~8.2.3": + version: 8.2.3 + resolution: "ws@npm:8.2.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: c869296ccb45f218ac6d32f8f614cd85b50a21fd434caf11646008eef92173be53490810c5c23aea31bc527902261fbfd7b062197eea341b26128d4be56a85e4 + languageName: node + linkType: hard + "xdg-basedir@npm:^4.0.0": version: 4.0.0 resolution: "xdg-basedir@npm:4.0.0" @@ -12507,7 +12888,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^16.0.0": +"yargs@npm:^16.0.0, yargs@npm:^16.1.1": version: 16.2.0 resolution: "yargs@npm:16.2.0" dependencies: From ddc1b02ecafe13a0c13c1d839521663fdc605910 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 17:58:49 +0100 Subject: [PATCH 3/8] fix(bazel/browsers): invalid browser firefox geckodriver checksum Fixes an invalid geckodriver checksum caused by a previously invalid download (fixed in the previous commits). --- bazel/browsers/firefox/firefox.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bazel/browsers/firefox/firefox.bzl b/bazel/browsers/firefox/firefox.bzl index 708c41293..31ba9e303 100644 --- a/bazel/browsers/firefox/firefox.bzl +++ b/bazel/browsers/firefox/firefox.bzl @@ -69,7 +69,7 @@ def define_firefox_repositories(): browser_archive( name = "org_mozilla_geckodriver_macos_arm64", licenses = ["reciprocal"], # MPL 2.0 - sha256 = "6230b0abea0df843d3420f46871efd91e17a21602f4ffc84db57c7c3a42ec00d", + sha256 = "895bc2146edaea434d57a3b5d9a141be5cb3c5f8e8804916bd4869978ddfd4db", # Geckodriver v0.30.0 urls = [ "https://github.com/mozilla/geckodriver/releases/download/v0.30.0/geckodriver-v0.30.0-macos-aarch64.tar.gz", From a1ec7ea5f655dc9fbe7a97881d2bc8e065661f15 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 18:25:14 +0100 Subject: [PATCH 4/8] ci: setup cross-platform tests for browser setup --- .circleci/config.yml | 89 ++++++++++++++++++-------- .circleci/{bazel.rc => linux-bazel.rc} | 0 bazel/browsers/test/BUILD.bazel | 6 ++ 3 files changed, 70 insertions(+), 25 deletions(-) rename .circleci/{bazel.rc => linux-bazel.rc} (100%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 61f1c5de0..1e77541b4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,15 +4,16 @@ version: 2.1 orbs: buildalert: oss-tools/buildalert@0.1.0 + win: circleci/windows@2.2.0 # **Note**: When updating the beginning of the cache key, also update the cache key to match # the new cache key prefix. This allows us to take advantage of CircleCI's fallback caching. # Read more here: https://circleci.com/docs/2.0/caching/#restoring-cache. -var_1: &cache_key v1-{{ checksum ".bazelversion" }}-{{ checksum "WORKSPACE" }} -# We invalidate the cache if the Bazel version changes. We do this because otherwise the `bazelisk` -# cache folder will contain all previously used versions and ultimately cause the cache -# restoring to be slower. -var_2: &cache_fallback_key v1-{{ checksum ".bazelversion" }}- +var_1: &cache_key v1-{{arch}}-{{ checksum ".bazelversion" }}-{{ checksum "WORKSPACE" }} +# We use a different cache if the Bazel version changes, or if the executor is a different one. +# We do this because otherwise the `bazelisk` cache folder will contain all previously used +# versions and ultimately cause the cache restoring to be slower. +var_2: &cache_fallback_key v1-{{arch}}-{{ checksum ".bazelversion" }}- var_3: &gcp_decrypt_token 'angular' @@ -29,20 +30,36 @@ var_5: &save_cache - '~/.cache/bazelisk' - '~/bazel_repository_cache' +var_6: &default_executor_settings + parameters: + resource_class: + type: string + default: medium + environment: + GCP_DECRYPT_TOKEN: *gcp_decrypt_token + resource_class: << parameters.resource_class >> + working_directory: ~/ng + +var_7: &main_upstream_branches_filter + branches: + only: + - main + # Additional branch that can be used to test the snapshot build output. + # Developers can just push to that branch to test the built artifact. + - snapshot-test + # Executor Definitions # https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-executors executors: - default-executor: - parameters: - resource_class: - type: string - default: medium - environment: - GCP_DECRYPT_TOKEN: *gcp_decrypt_token + docker-linux-executor: + <<: *default_executor_settings docker: - image: cimg/node:16.10.0-browsers@sha256:83ff2dcad3043c4b3f7f58513805a0c8757ba5541a1f3c213f80bd242a3c77ac - resource_class: << parameters.resource_class >> - working_directory: ~/ng + + macos-x64-executor: + <<: *default_executor_settings + macos: + xcode: '13.3.0' # Command Definitions # https://circleci.com/docs/2.0/reusing-config/#authoring-reusable-commands @@ -64,7 +81,7 @@ commands: setup_bazel_config: description: 'Setting up Bazel configuration for CI' steps: - - run: echo "import %workspace%/.circleci/bazel.rc" >> ./.bazelrc + - run: echo "import %workspace%/.circleci/linux-bazel.rc" >> ./.bazelrc - run: ./.circleci/setup-bazel.sh prepare_and_store_test_results: @@ -100,7 +117,7 @@ commands: # https://circleci.com/docs/2.0/reusing-config/#authoring-parameterized-jobs jobs: test: - executor: default-executor + executor: docker-linux-executor steps: - checkout_and_rebase - *restore_cache @@ -112,8 +129,32 @@ jobs: - prepare_and_store_test_results - *save_cache + test_macos_x64: + executor: macos-x64-executor + steps: + - checkout + - *restore_cache + - yarn_install + - run: yarn bazel test --test_tag_filters=macos --build_tests_only -- //... -//bazel/remote-execution/... + - prepare_and_store_test_results + - *save_cache + + test_windows_x64: + executor: + name: win/default + shell: bash.exe + steps: + - checkout + - *restore_cache + # Note: We cannot use the config-shared Yarn install command because the output timeout + # needs to be increased due to slower windows I/O (back to the 10min default for CircleCI). + - run: yarn install --immutable + - run: yarn bazel test --test_tag_filters=windows --build_tests_only -- ... -bazel/remote-execution/... + - prepare_and_store_test_results + - *save_cache + lint: - executor: default-executor + executor: docker-linux-executor steps: - checkout_and_rebase - *restore_cache @@ -127,7 +168,7 @@ jobs: command: yarn ng-dev commit-message validate-range << pipeline.git.base_revision >> << pipeline.git.revision >> publish_snapshot_build: - executor: default-executor + executor: docker-linux-executor steps: - checkout_and_rebase - *restore_cache @@ -163,11 +204,9 @@ workflows: jobs: - test - lint + - test_macos_x64: + filters: *main_upstream_branches_filter + - test_windows_x64: + filters: *main_upstream_branches_filter - publish_snapshot_build: - filters: - branches: - only: - - main - # Additional branch that can be used to test the snapshot build output. - # Developers can just push to that branch to test the built artifact. - - snapshot-test + filters: *main_upstream_branches_filter diff --git a/.circleci/bazel.rc b/.circleci/linux-bazel.rc similarity index 100% rename from .circleci/bazel.rc rename to .circleci/linux-bazel.rc diff --git a/bazel/browsers/test/BUILD.bazel b/bazel/browsers/test/BUILD.bazel index 6e9ae9e72..6beba8322 100644 --- a/bazel/browsers/test/BUILD.bazel +++ b/bazel/browsers/test/BUILD.bazel @@ -8,6 +8,11 @@ karma_web_test_suite( "//bazel/browsers/chromium:chromium", "//bazel/browsers/firefox:firefox", ], + tags = [ + "linux", + "macos", + "windows", + ], deps = [ ":test_bundle", ], @@ -15,6 +20,7 @@ karma_web_test_suite( js_library( name = "test_lib", + testonly = True, srcs = ["browser-test.spec.mjs"], ) From 9a3c01404cdff2eb8524f498c41ac6a187475a6f Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 21:17:49 +0100 Subject: [PATCH 5/8] build: update to bazel v5.0.0 with m1 support This also fixes a pythion shebang issue with Linux: https://github.com/bazelbuild/bazel/commit/2945ef5072f659878dfd88b421c7b80aa4fb6c80. --- .bazelversion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelversion b/.bazelversion index ee74734aa..0062ac971 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -4.1.0 +5.0.0 From 2e07c42003b3f5febf45e0daaac636695e683165 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 21:57:05 +0100 Subject: [PATCH 6/8] test: update bazelignore to exclude more integration node module folders Updates the bazelignore to exclude more integration node module folders that could throw off tests when they exist locally. This can happen because symlinks would be rewritten to hardlinks when the tests are running locally in a sandbox --> resulting in e.g. `node_modules/.bin` to be broken for bazelisk which uses `__dirname` and relies on symlink resolution/following. --- .bazelignore | 2 ++ .../tests/nested_bazel_workspaces/basic/package.json | 4 ++-- .../tests/nested_bazel_workspaces/basic/some_test.sh | 0 .../integration/tests/nested_bazel_workspaces/basic/yarn.lock | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) mode change 100644 => 100755 bazel/integration/tests/nested_bazel_workspaces/basic/some_test.sh diff --git a/.bazelignore b/.bazelignore index 2c5d788d2..264c2374a 100644 --- a/.bazelignore +++ b/.bazelignore @@ -3,4 +3,6 @@ dist bazel/integration/tests/angular-cli/.angular/ bazel/integration/tests/angular-cli/node_modules/ +bazel/integration/tests/nested_bazel_workspaces/node_modules bazel/integration/tests/package_mappings/node_modules/ +bazel/integration/tests/playwright_chromium/node_modules diff --git a/bazel/integration/tests/nested_bazel_workspaces/basic/package.json b/bazel/integration/tests/nested_bazel_workspaces/basic/package.json index 755191f71..c3fe8de2b 100644 --- a/bazel/integration/tests/nested_bazel_workspaces/basic/package.json +++ b/bazel/integration/tests/nested_bazel_workspaces/basic/package.json @@ -4,9 +4,9 @@ "main": "index.js", "license": "MIT", "scripts": { - "test": "bazel test ..." + "test": "bazelisk test ..." }, "devDependencies": { - "@bazel/bazelisk": "^1.10.1" + "@bazel/bazelisk": "^1.11.0" } } diff --git a/bazel/integration/tests/nested_bazel_workspaces/basic/some_test.sh b/bazel/integration/tests/nested_bazel_workspaces/basic/some_test.sh old mode 100644 new mode 100755 diff --git a/bazel/integration/tests/nested_bazel_workspaces/basic/yarn.lock b/bazel/integration/tests/nested_bazel_workspaces/basic/yarn.lock index e1a667f86..94bd0a90d 100644 --- a/bazel/integration/tests/nested_bazel_workspaces/basic/yarn.lock +++ b/bazel/integration/tests/nested_bazel_workspaces/basic/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@bazel/bazelisk@^1.10.1": +"@bazel/bazelisk@^1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@bazel/bazelisk/-/bazelisk-1.11.0.tgz#f98d8438b4c14e3328126618b96775d271caa5f8" integrity sha512-lxiQzVqSGDG0PIDQGJdVDjp7T+50p5NnM4EnRJa76mkZp6u5ul19GJNKhPKi81TZQALZEZDxAgxVqQKkWTUOxA== From 533d1e8d8b13c1b0317a1c4b00d94aecedccf9f1 Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Wed, 9 Feb 2022 22:46:20 +0100 Subject: [PATCH 7/8] ci: update test resource class to match with CircleCI bazelrc config Updates the test job resource class to match with the CircleCI Bazelrc configurtion which explicitly sets the resources to `xlarge`. Note: Looks like this is also needed looking at CPU and RAM: https://app.circleci.com/pipelines/github/angular/dev-infra/123691/workflows/aba2854d-9866-4295-ad09-72e438a3fd8c/jobs/124876/resources --- .circleci/config.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 1e77541b4..697c2e38c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -117,7 +117,10 @@ commands: # https://circleci.com/docs/2.0/reusing-config/#authoring-parameterized-jobs jobs: test: - executor: docker-linux-executor + executor: + name: docker-linux-executor + resource_class: xlarge + steps: - checkout_and_rebase - *restore_cache From 861727074ad0213c080835e4b55f451998753bda Mon Sep 17 00:00:00 2001 From: Paul Gschwendtner Date: Thu, 10 Feb 2022 19:52:50 +0100 Subject: [PATCH 8/8] ci: update macos test job to work with firefox in bazel sandbox Firefox tests will run in the Bazel sandbox, but Firefox currently requires, regardless of us specifying a custom profile directory, that the default profile directory exists. I've tracked down the Firefox launch issue, created a standalone repro without Bazel for Darwin, and submitted: https://bugzilla.mozilla.org/show_bug.cgi?id=1754821#c3 Until then, we can just make the test run on CI like this. This seems to be a long-standing issue so it does not seem worth currently reworking the Bazel Karma rules, or browser setup to workaround this. Most of the time folks can just run without sandbox, have launched firefox before (resulting in the directory to be available), or they can use `--sandbox_writable_path`. In any case though, this is something we'd need to do as a follow-up. The goal currently is to just set up a CI job to ensure that the binaries are valid, and resolved by dev-infra. --- .circleci/config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 697c2e38c..a6b1051fb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -138,6 +138,10 @@ jobs: - checkout - *restore_cache - yarn_install + # Firefox tests will run in the Bazel sandbox, but Firefox currently requires, regardless + # of us specifying a custom profile directory, that the default profile directory exists. + # TODO: Remove this once https://bugzilla.mozilla.org/show_bug.cgi?id=1754821#c3 is resolved. + - run: mkdir "$HOME/Library/Application Support/Firefox" - run: yarn bazel test --test_tag_filters=macos --build_tests_only -- //... -//bazel/remote-execution/... - prepare_and_store_test_results - *save_cache