build: migrate modules to use @rules_browsers protractor rules (#62345)

Use the protractor rules from `@rules_browsers` for the module directory.

PR Close #62345
This commit is contained in:
Joey Perrott
2025-06-26 18:59:19 +00:00
parent 0866077c31
commit 8d581502ca
71 changed files with 714 additions and 229 deletions
@@ -5,9 +5,10 @@
.pnpmfile.cjs=-2033668682
adev/shared-docs/pipeline/api-gen/package.json=939673974
integration/package.json=-239561259
modules/package.json=-96320287
modules/package.json=289846610
package.json=1802317128
packages/animations/package.json=-678724831
packages/benchpress/package.json=2057929145
packages/common/package.json=1729763064
packages/compiler-cli/linker/babel/test/package.json=939673974
packages/compiler-cli/package.json=-660047565
@@ -21,7 +22,7 @@ packages/platform-browser/package.json=-1163479450
packages/router/package.json=860819913
packages/upgrade/package.json=16347051
packages/zone.js/package.json=-1005735564
pnpm-lock.yaml=1632724996
pnpm-workspace.yaml=1973735808
pnpm-lock.yaml=-69100466
pnpm-workspace.yaml=-375658197
tools/bazel/rules_angular_store/package.json=-239561259
yarn.lock=684174595
+1
View File
@@ -57,4 +57,5 @@ packages/platform-browser-dynamic/node_modules
packages/router/node_modules
packages/zone.js/node_modules
packages/upgrade/node_modules
packages/benchpress/node_modules
tools/bazel/rules_angular_store/node_modules
+2 -1
View File
@@ -113,6 +113,7 @@ npm_translate_lock(
"//integration:package.json",
"//modules:package.json",
"//packages/animations:package.json",
"//packages/benchpress:package.json",
"//packages/common:package.json",
"//packages/compiler:package.json",
"//packages/compiler-cli:package.json",
@@ -309,7 +310,7 @@ rules_angular_step3(
git_repository(
name = "rules_browsers",
commit = "0952071cdc67acf1124c20c32a9b7e2e85da0aa3",
commit = "06b02f8968c754ab93539cd9191243bdc445e390",
remote = "https://github.com/devversion/rules_browsers.git",
)
+43
View File
@@ -0,0 +1,43 @@
load("@devinfra//bazel/spec-bundling:index_rjs.bzl", "spec_bundle")
load("@rules_browsers//src/protractor_test:index.bzl", "protractor_test")
"""
Macro that can be used to define a e2e test in `modules/benchmarks`. Targets created through
this macro differentiate from a "benchmark_test" as they will run on CI and do not run
with `@angular/benchpress`.
"""
def benchmark_test(name, deps = [], server = None, tags = []):
spec_bundle(
name = "%s_bundle" % name,
testonly = True,
srcs = ["//modules/benchmarks:tsconfig_e2e"],
deps = deps,
tags = [
"manual",
],
config = {
"resolveExtensions": [".js", ".mjs"],
"tsconfig": "./modules/benchmarks/tsconfig-e2e.json",
},
external = ["protractor", "selenium-webdriver"],
)
protractor_test(
name = name,
deps = [":%s_bundle" % name],
server = server,
enable_perf_logging = True,
# Benchmark targets should not run on CI by default.
tags = tags + [
"benchmark-test",
"manual",
"no-remote-exec",
],
data = [
"//modules:node_modules/@angular/benchpress",
"//:node_modules/tslib",
"//modules:node_modules/protractor",
"//modules:node_modules/selenium-webdriver",
],
)
+26 -7
View File
@@ -1,4 +1,5 @@
load("//tools:defaults.bzl", "protractor_web_test_suite")
load("@devinfra//bazel/spec-bundling:index_rjs.bzl", "spec_bundle")
load("@rules_browsers//src/protractor_test:index.bzl", "protractor_test")
"""
Macro that can be used to define a e2e test in `modules/benchmarks`. Targets created through
@@ -6,10 +7,28 @@ load("//tools:defaults.bzl", "protractor_web_test_suite")
with `@angular/benchpress`.
"""
def e2e_test(name, server, **kwargs):
protractor_web_test_suite(
name = name,
on_prepare = "@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:start-server.js",
server = server,
**kwargs
def e2e_test(name, deps = [], server = None):
spec_bundle(
name = "%s_bundle" % name,
testonly = True,
srcs = ["//modules/benchmarks:tsconfig_e2e"],
deps = deps,
tags = [
"manual",
],
config = {
"resolveExtensions": [".js", ".mjs"],
"tsconfig": "./modules/benchmarks/tsconfig-e2e.json",
},
external = ["protractor", "selenium-webdriver"],
)
protractor_test(
name = name,
deps = [":%s_bundle" % name],
server = server,
data = [
"//:node_modules/protractor",
"//:node_modules/selenium-webdriver",
],
)
@@ -13,12 +13,10 @@ ts_project(
name = "perf_tests_lib",
testonly = 1,
srcs = ["change_detection.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -26,11 +24,9 @@ ts_project(
name = "e2e_tests_lib",
testonly = 1,
srcs = ["change_detection.e2e-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
describe('change detection benchmark', () => {
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -45,7 +42,7 @@ const AllComponentsDirtyWorker: Worker = {
// name. We determine the name of the Bazel package where this test runs from the current test
// target. The Bazel target
// looks like: "//modules/benchmarks/src/change_detection/{pkg_name}:{target_name}".
const testPackageName = process.env['BAZEL_TARGET']!.split(':')[0].split('/').pop();
const testPackageName = process.env['JS_BINARY__TARGET']!.split(':')[0].split('/').pop();
describe('change detection benchmark perf', () => {
afterEach(verifyNoBrowserErrors);
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -47,11 +47,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/change_detection:perf_tests_lib"],
deps = ["//modules/benchmarks/src/change_detection:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/change_detection:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/change_detection:e2e_tests_lib_rjs"],
)
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {runBenchmark} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark} from '../../../utilities/index';
import {$, browser} from 'protractor';
describe('class bindings perf', () => {
+2 -6
View File
@@ -19,12 +19,10 @@ ts_project(
name = "perf_tests_lib",
testonly = 1,
srcs = ["defer.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -32,11 +30,9 @@ ts_project(
name = "e2e_tests_lib",
testonly = 1,
srcs = ["defer.e2e-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -46,11 +46,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/defer:perf_tests_lib"],
deps = ["//modules/benchmarks/src/defer:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/defer:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/defer:e2e_tests_lib_rjs"],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
describe('defer benchmark', () => {
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -38,7 +35,7 @@ const UpdateWorker: Worker = {
// name. e.g. "largeTable.ng2_switch.createDestroy". We determine the name of the
// Bazel package where this test runs from the current test target. The Bazel target
// looks like: "//modules/benchmarks/src/largetable/{pkg_name}:{target_name}".
const testPackageName = process.env['BAZEL_TARGET']!.split(':')[0].split('/').pop();
const testPackageName = process.env['JS_BINARY__TARGET']!.split(':')[0].split('/').pop();
describe('defer benchmark perf', () => {
afterEach(verifyNoBrowserErrors);
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -46,11 +46,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/defer:perf_tests_lib"],
deps = ["//modules/benchmarks/src/defer:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/defer:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/defer:e2e_tests_lib_rjs"],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//tools:defaults.bzl", "http_server")
load("//tools:defaults2.bzl", "ts_project")
@@ -36,12 +36,10 @@ ts_project(
name = "perf_lib",
testonly = 1,
srcs = ["expanding_rows.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -58,6 +56,6 @@ benchmark_test(
name = "perf",
server = ":prodserver",
deps = [
":perf_lib",
":perf_lib_rjs",
],
)
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {runBenchmark} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark} from '../../../utilities/index';
import {$, browser} from 'protractor';
describe('benchmarks', () => {
+2 -6
View File
@@ -23,12 +23,10 @@ ts_project(
name = "perf_tests_lib",
testonly = 1,
srcs = ["hydration.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -36,11 +34,9 @@ ts_project(
name = "e2e_tests_lib",
testonly = 1,
srcs = ["hydration.e2e-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -44,11 +44,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/hydration:perf_tests_lib"],
deps = ["//modules/benchmarks/src/hydration:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/hydration:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/hydration:e2e_tests_lib_rjs"],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
describe('hydration benchmark', () => {
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -39,7 +36,7 @@ const UpdateWorker: Worker = {
// name. e.g. "largeTable.ng2_switch.createDestroy". We determine the name of the
// Bazel package where this test runs from the current test target. The Bazel target
// looks like: "//modules/benchmarks/src/largetable/{pkg_name}:{target_name}".
const testPackageName = process.env['BAZEL_TARGET']!.split(':')[0].split('/').pop();
const testPackageName = process.env['JS_BINARY__TARGET']!.split(':')[0].split('/').pop();
describe('hydration benchmark perf', () => {
afterEach(verifyNoBrowserErrors);
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -44,11 +44,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/hydration:perf_tests_lib"],
deps = ["//modules/benchmarks/src/hydration:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/hydration:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/hydration:e2e_tests_lib_rjs"],
)
@@ -6,11 +6,9 @@ ts_project(
name = "perf_lib",
testonly = True,
srcs = ["js-web-frameworks.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -62,7 +59,7 @@ const SwapWorker: Worker = {
// name. e.g. "largeTable.ng2_switch.createDestroy". We determine the name of the
// Bazel package where this test runs from the current test target. The Bazel target
// looks like: "//modules/benchmarks/src/largetable/{pkg_name}:{target_name}".
const testPackageName = process.env['BAZEL_TARGET']!.split(':')[0].split('/').pop();
const testPackageName = process.env['JS_BINARY__TARGET']!.split(':')[0].split('/').pop();
describe('js-web-frameworks benchmark perf', () => {
afterEach(verifyNoBrowserErrors);
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//tools:defaults.bzl", "http_server")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@@ -41,5 +41,5 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/js-web-frameworks:perf_lib"],
deps = ["//modules/benchmarks/src/js-web-frameworks:perf_lib_rjs"],
)
+2 -6
View File
@@ -6,12 +6,10 @@ ts_project(
name = "perf_tests_lib",
testonly = 1,
srcs = ["largeform.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -19,11 +17,9 @@ ts_project(
name = "e2e_tests_lib",
testonly = 1,
srcs = ["largeform.e2e-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, verifyNoBrowserErrors} from '../../../utilities/index';
import {$, By, element} from 'protractor';
describe('largeform benchmark', () => {
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -46,11 +46,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/largeform:perf_tests_lib"],
deps = ["//modules/benchmarks/src/largeform:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/largeform:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/largeform:e2e_tests_lib_rjs"],
)
@@ -5,7 +5,7 @@ package(default_visibility = ["//visibility:public"])
ts_project(
name = "util_lib",
srcs = ["util.ts"],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
tsconfig = "//modules/benchmarks:tsconfig_build",
deps = ["//modules/benchmarks/src:util_lib_rjs"],
)
@@ -13,12 +13,10 @@ ts_project(
name = "perf_tests_lib",
testonly = 1,
srcs = ["largetable.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -26,11 +24,9 @@ ts_project(
name = "e2e_tests_lib",
testonly = 1,
srcs = ["largetable.e2e-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -41,11 +41,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib_rjs"],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
describe('largetable benchmark', () => {
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
@@ -43,7 +40,7 @@ const UpdateWorker: Worker = {
// name. e.g. "largeTable.ng2_switch.createDestroy". We determine the name of the
// Bazel package where this test runs from the current test target. The Bazel target
// looks like: "//modules/benchmarks/src/largetable/{pkg_name}:{target_name}".
const testPackageName = process.env['BAZEL_TARGET']!.split(':')[0].split('/').pop();
const testPackageName = process.env['JS_BINARY__TARGET']!.split(':')[1].split('/').pop();
describe('largetable benchmark perf', () => {
afterEach(verifyNoBrowserErrors);
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -47,11 +47,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":prodserver",
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib_rjs"],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -44,11 +44,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/largetable:e2e_tests_lib_rjs"],
)
@@ -6,11 +6,9 @@ ts_project(
name = "perf_lib",
testonly = True,
srcs = ["ng_template_outlet_context.perf-spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//tools:defaults.bzl", "http_server")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@@ -41,5 +41,5 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/ng_template_outlet_context:perf_lib"],
deps = ["//modules/benchmarks/src/ng_template_outlet_context:perf_lib_rjs"],
)
@@ -6,10 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$} from 'protractor';
interface Worker {
+1 -3
View File
@@ -6,11 +6,9 @@ ts_project(
name = "tests_lib",
testonly = True,
srcs = ["styling_perf.spec.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//tools:defaults.bzl", "http_server")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@@ -42,5 +42,5 @@ http_server(
benchmark_test(
name = "perf",
server = ":prodserver",
deps = ["//modules/benchmarks/src/styling:tests_lib"],
deps = ["//modules/benchmarks/src/styling:tests_lib_rjs"],
)
@@ -6,11 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {
openBrowser,
runBenchmark,
verifyNoBrowserErrors,
} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, runBenchmark, verifyNoBrowserErrors} from '../../../utilities/index';
import {$, by, element} from 'protractor';
/** List of possible scenarios that should be tested. */
+1 -3
View File
@@ -13,12 +13,10 @@ ts_project(
name = "test_utils_lib",
testonly = 1,
srcs = ["test_utils.ts"],
interop_deps = [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
],
tsconfig = "//modules/benchmarks:tsconfig_e2e",
deps = [
"//:node_modules/protractor",
"//modules/utilities:utilities_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -41,11 +41,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_tests_lib"],
deps = ["//modules/benchmarks/src/tree:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib_rjs"],
)
+5 -5
View File
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -48,8 +48,8 @@ benchmark_test(
name = "perf",
server = ":prodserver",
deps = [
"//modules/benchmarks/src/tree:detect_changes_perf_tests_lib",
"//modules/benchmarks/src/tree:perf_tests_lib",
"//modules/benchmarks/src/tree:detect_changes_perf_tests_lib_rjs",
"//modules/benchmarks/src/tree:perf_tests_lib_rjs",
],
)
@@ -57,7 +57,7 @@ e2e_test(
name = "e2e",
server = ":prodserver",
deps = [
"//modules/benchmarks/src/tree:detect_changes_e2e_tests_lib",
"//modules/benchmarks/src/tree:e2e_tests_lib",
"//modules/benchmarks/src/tree:detect_changes_e2e_tests_lib_rjs",
"//modules/benchmarks/src/tree:e2e_tests_lib_rjs",
],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -53,11 +53,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_tests_lib"],
deps = ["//modules/benchmarks/src/tree:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib_rjs"],
)
@@ -1,5 +1,5 @@
load("@npm//@angular/build-tooling/bazel/benchmark/component_benchmark:benchmark_test.bzl", "benchmark_test")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
load("//modules/benchmarks:e2e_test.bzl", "e2e_test")
load("//tools:defaults.bzl", "http_server")
@@ -44,11 +44,11 @@ http_server(
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_tests_lib"],
deps = ["//modules/benchmarks/src/tree:perf_tests_lib_rjs"],
)
e2e_test(
name = "e2e",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib"],
deps = ["//modules/benchmarks/src/tree:e2e_tests_lib_rjs"],
)
+1 -1
View File
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {openBrowser, runBenchmark} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {openBrowser, runBenchmark} from '../../../utilities/index';
import {browser} from 'protractor';
export function runTreeBenchmark({
-4
View File
@@ -7,9 +7,5 @@
"strict": true,
"sourceMap": true,
"declaration": true,
"paths": {
// TODO(devversion): Consider dropping the dependency on this utilities, or put them somewhere else.
"@angular/build-tooling/*": ["../../external/npm/@angular/build-tooling/*"]
}
}
}
+9 -3
View File
@@ -1,16 +1,22 @@
{
"dependencies": {
"@angular/animations": "workspace:*",
"@angular/benchpress": "workspace:*",
"@angular/build": "20.0.4",
"@angular/compiler": "workspace:*",
"@angular/common": "workspace:*",
"@angular/compiler": "workspace:*",
"@angular/core": "workspace:*",
"@angular/upgrade": "workspace:*",
"@angular/forms": "workspace:*",
"@angular/localize": "workspace:*",
"@angular/router": "workspace:*",
"@angular/platform-browser": "workspace:*",
"@angular/platform-browser-dynamic": "workspace:*",
"@angular/router": "workspace:*",
"@angular/upgrade": "workspace:*",
"@types/node": "24.0.5",
"@types/selenium-webdriver": "3.0.7",
"protractor": "7.0.0",
"selenium-webdriver": "3.6.0",
"tslib": "2.8.1",
"zone.js": "workspace:*"
}
}
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {$, browser} from 'protractor';
import {promise} from 'selenium-webdriver';
+28 -16
View File
@@ -1,4 +1,5 @@
load("//tools:defaults.bzl", "protractor_web_test_suite")
load("@devinfra//bazel/spec-bundling:index_rjs.bzl", "spec_bundle")
load("@rules_browsers//src/protractor_test:index.bzl", "protractor_test")
load("//tools:defaults2.bzl", "ts_project")
def example_test(
@@ -6,11 +7,10 @@ def example_test(
srcs,
server,
data = [],
interop_deps = [],
deps = [],
external = [],
tsconfig = "//modules/playground:tsconfig_e2e",
use_legacy_webdriver_types = True,
**kwargs):
use_legacy_webdriver_types = True):
# Reliance on the Control Flow in Selenium Webdriver is not recommended long-term,
# especially with the deprecation of Protractor. New tests should not use the legacy
# webdriver types but rather use the actual `@types/jasmine` types.
@@ -25,21 +25,33 @@ def example_test(
deps = deps + [
"//:node_modules/protractor",
"//:node_modules/@types/selenium-webdriver",
],
interop_deps = interop_deps + [
"@npm//@angular/build-tooling/bazel/benchmark/driver-utilities",
"//modules/utilities:utilities_rjs",
],
)
protractor_web_test_suite(
name = "protractor_tests",
data = data + ["@npm//source-map"],
on_prepare = "//modules/playground/e2e_test:start-server.js",
server = server,
spec_bundle(
name = "%s_bundle" % name,
testonly = True,
srcs = ["//modules/playground:tsconfig_e2e"],
deps = [
":%s_lib" % name,
"@npm//selenium-webdriver",
"@npm//yargs",
"%s_lib_rjs" % name,
],
tags = [
"manual",
],
config = {
"resolveExtensions": [".js", ".mjs"],
"tsconfig": "./modules/playground/tsconfig-e2e.json",
},
external = external + ["protractor", "selenium-webdriver"],
)
protractor_test(
name = name,
deps = [":%s_bundle" % name],
server = server,
data = data + [
"//modules:node_modules/selenium-webdriver",
"//:node_modules/yargs",
],
**kwargs
)
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser} from 'protractor';
describe('hello world', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser} from 'protractor';
describe('http', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser} from 'protractor';
describe('jsonp', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser, by, element, protractor} from 'protractor';
const Key = protractor.Key;
@@ -4,8 +4,7 @@ example_test(
name = "sourcemap",
srcs = glob(["**/*.ts"]),
data = [
"//modules/playground/src/sourcemap:bundles",
"//modules/playground/src/sourcemap:main.ts",
"//modules/playground/src/sourcemap:assets",
],
# Source-Map is using WASM and cannot be bundled for specs.
external = ["source-map"],
@@ -6,11 +6,11 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {runfiles} from '@bazel/runfiles';
import {readFileSync} from 'fs';
import {$, browser} from 'protractor';
import {logging} from 'selenium-webdriver';
import {RawSourceMap, SourceMapConsumer} from 'source-map';
import {resolve} from 'path';
describe('sourcemaps', function () {
const URL = '/';
@@ -36,15 +36,14 @@ describe('sourcemaps', function () {
expect(errorColumn).not.toBeNull();
const mapContent = readFileSync(
runfiles.resolvePackageRelative('../../src/sourcemap/bundles/main.js.map'),
).toString('utf8');
resolve('./modules/playground/src/sourcemap/bundles/main.js.map'),
'utf-8',
);
const decoder = await new SourceMapConsumer(JSON.parse(mapContent) as RawSourceMap);
const originalPosition = decoder.originalPositionFor({line: errorLine!, column: errorColumn!});
const sourceCodeLines = readFileSync(
runfiles.resolvePackageRelative('../../src/sourcemap/main.ts'),
{
encoding: 'utf-8',
},
resolve('./modules/playground/src/sourcemap/main.ts'),
'utf-8',
).split('\n');
expect(sourceCodeLines[originalPosition.line! - 1]).toMatch(
/throw new Error\(\'Sourcemap test\'\)/,
+1 -1
View File
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser, by, element} from 'protractor';
describe('SVG', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser, by, element} from 'protractor';
describe('Template-Driven Forms', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser, by, element} from 'protractor';
describe('ngUpgrade', function () {
@@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.dev/license
*/
import {verifyNoBrowserErrors} from '@angular/build-tooling/bazel/benchmark/driver-utilities';
import {verifyNoBrowserErrors} from '../../../utilities/index';
import {browser, by, element} from 'protractor';
describe('Zippy Component', function () {
+9 -4
View File
@@ -1,12 +1,9 @@
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin")
load("@rules_angular//src/optimization:index.bzl", "optimize_angular_app")
load("//tools:defaults.bzl", "http_server")
package(default_visibility = ["//modules/playground:__subpackages__"])
# Exported since the e2e test needs to read the source file in order to
# ensure that the source map properly maps back to the source file.
exports_files(["main.ts"])
optimize_angular_app(
name = "bundles",
srcs = glob(["**/*.ts"]) + ["index.html"],
@@ -39,3 +36,11 @@ http_server(
"//modules:node_modules/zone.js",
],
)
copy_to_bin(
name = "assets",
srcs = [
"main.ts",
":bundles",
],
)
-4
View File
@@ -7,9 +7,5 @@
"strict": true,
"sourceMap": true,
"declaration": true,
"paths": {
// TODO(devversion): Consider dropping the dependency on this utilities, or put them somewhere else.
"@angular/build-tooling/*": ["../../external/npm/@angular/build-tooling/*"]
}
}
}
+21
View File
@@ -0,0 +1,21 @@
load("//tools:defaults2.bzl", "ts_config", "ts_project")
package(default_visibility = ["//modules:__subpackages__"])
ts_config(
name = "tsconfig_build",
src = "tsconfig.json",
)
ts_project(
name = "utilities",
srcs = glob(["*.ts"]),
tsconfig = "//modules/utilities:tsconfig_build",
deps = [
"//modules:node_modules/@angular/benchpress",
"//modules:node_modules/@types/node",
"//modules:node_modules/@types/selenium-webdriver",
"//modules:node_modules/protractor",
"//modules:node_modules/selenium-webdriver",
],
)
+54
View File
@@ -0,0 +1,54 @@
/**
* @license
* Copyright Google LLC
*
* 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
*/
/* tslint:disable:no-console */
import {browser} from 'protractor';
import * as webdriver from 'selenium-webdriver';
declare var expect: any;
export function openBrowser(config: {
url?: string;
params?: {name: string; value: any}[];
ignoreBrowserSynchronization?: boolean;
}) {
if (config.ignoreBrowserSynchronization) {
browser.ignoreSynchronization = true;
}
const urlParams: string[] = [];
if (config.params) {
config.params.forEach((param) => urlParams.push(param.name + '=' + param.value));
}
const url = encodeURI(config.url + '?' + urlParams.join('&'));
browser.get(url);
if (config.ignoreBrowserSynchronization) {
browser.sleep(2000);
}
}
/**
* @experimental This API will be moved to Protractor.
*/
export function verifyNoBrowserErrors() {
// TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command
// so that the browser logs can be read out!
browser.executeScript('1+1');
browser
.manage()
.logs()
.get('browser')
.then(function (browserLog: any) {
const filteredLog = browserLog.filter(function (logEntry: any) {
if (logEntry.level.value >= webdriver.logging.Level.INFO.value) {
console.log('>> ' + logEntry.message);
}
return logEntry.level.value > webdriver.logging.Level.WARNING.value;
});
expect(filteredLog).toEqual([]);
});
}
+9
View File
@@ -0,0 +1,9 @@
/**
* @license
* Copyright Google LLC
*
* 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
*/
export {openBrowser, verifyNoBrowserErrors} from './e2e_util';
export {runBenchmark} from './perf_util';
+130
View File
@@ -0,0 +1,130 @@
/**
* @license
* Copyright Google LLC
*
* 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
*/
import {randomUUID} from 'node:crypto';
export {verifyNoBrowserErrors} from './e2e_util';
// @ts-ignore
import type * as benchpress from '@angular/benchpress';
import {openBrowser} from './e2e_util';
// Note: Keep the `modules/benchmarks/README.md` file in sync with the supported options.
const globalOptions = {
sampleSize: process.env.PERF_SAMPLE_SIZE || 20,
forceGc: process.env.PERF_FORCE_GC === 'true',
dryRun: process.env.PERF_DRYRUN === 'true',
};
type BenchpressSetup = {
runner: benchpress.Runner;
module: typeof benchpress;
};
let _cachedBenchpressSetup: Promise<BenchpressSetup> | null = null;
export async function runBenchmark({
id,
url = '',
params = [],
ignoreBrowserSynchronization = true,
microMetrics,
work,
prepare,
setup,
}: {
id: string;
url?: string;
params?: {name: string; value: any}[];
ignoreBrowserSynchronization?: boolean;
microMetrics?: {[key: string]: string};
work?: (() => void) | (() => Promise<unknown>);
prepare?: (() => void) | (() => Promise<unknown>);
setup?: (() => void) | (() => Promise<unknown>);
}): Promise<any> {
if (_cachedBenchpressSetup === null) {
_cachedBenchpressSetup = _prepareBenchpressSetup();
}
// Wait for the benchpress setup to complete initialization.
// The benchpress setup is loaded asynchronously due to it relying on ESM.
// TODO: This can be removed when benchmark tests/e2e tests can run with ESM.
const {module, runner} = await _cachedBenchpressSetup;
openBrowser({url, params, ignoreBrowserSynchronization});
if (setup) {
await setup();
}
return runner.sample({
id,
execute: work,
prepare,
microMetrics,
providers: [{provide: module.Options.SAMPLE_DESCRIPTION, useValue: {}}],
});
}
async function _prepareBenchpressSetup(): Promise<BenchpressSetup> {
const module = await loadBenchpressModule();
const {
SeleniumWebDriverAdapter,
Options,
JsonFileReporter,
RegressionSlopeValidator,
Validator,
MultiReporter,
ConsoleReporter,
SizeValidator,
MultiMetric,
Runner,
} = module;
let runId = randomUUID();
if (process.env.GIT_SHA) {
runId = process.env.GIT_SHA + ' ' + runId;
}
const testOutputDirectory = process.env.TEST_UNDECLARED_OUTPUTS_DIR;
if (testOutputDirectory === undefined) {
throw new Error(
'Unexpected execution outside of a Bazel test. ' +
'Missing `TEST_UNDECLARED_OUTPUTS_DIR` environment variable.',
);
}
const providers: benchpress.StaticProvider[] = [
SeleniumWebDriverAdapter.PROTRACTOR_PROVIDERS,
{provide: Options.FORCE_GC, useValue: globalOptions.forceGc},
{provide: Options.DEFAULT_DESCRIPTION, useValue: {'runId': runId}},
JsonFileReporter.PROVIDERS,
{provide: JsonFileReporter.PATH, useValue: testOutputDirectory},
];
if (!globalOptions.dryRun) {
providers.push({provide: Validator, useExisting: RegressionSlopeValidator});
providers.push({
provide: RegressionSlopeValidator.SAMPLE_SIZE,
useValue: globalOptions.sampleSize,
});
providers.push(MultiReporter.provideWith([ConsoleReporter, JsonFileReporter]));
} else {
providers.push({provide: Validator, useExisting: SizeValidator});
providers.push({provide: SizeValidator.SAMPLE_SIZE, useValue: 1});
providers.push(MultiReporter.provideWith([]));
providers.push(MultiMetric.provideWith([]));
}
return {
runner: new Runner(providers),
module,
};
}
/** Loads the benchpress module through a CJS/ESM interop. */
async function loadBenchpressModule(): Promise<typeof benchpress> {
return await new Function(`return import('@angular/benchpress');`)();
}
+8
View File
@@ -0,0 +1,8 @@
{
"compilerOptions": {
"lib": ["es2020", "dom"],
"types": ["node"],
"declaration": true,
"sourceMap": true,
}
}
+9 -1
View File
@@ -1,5 +1,5 @@
load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config")
load("//tools:defaults2.bzl", "ng_package", "ts_project")
load("//tools:defaults2.bzl", "ng_package", "npm_package", "ts_project")
package(default_visibility = ["//visibility:public"])
@@ -50,3 +50,11 @@ ng_package(
":benchpress_rjs",
],
)
npm_package(
name = "pkg",
srcs = [":npm_package"],
replace_prefixes = {
"npm_package/": "",
},
)
+258 -12
View File
@@ -25,7 +25,7 @@ importers:
version: 20.0.4(chokidar@4.0.3)
'@angular/build':
specifier: 20.0.4
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
'@angular/cdk':
specifier: 20.0.4
version: 20.0.4(rxjs@7.8.2)
@@ -579,9 +579,12 @@ importers:
'@angular/animations':
specifier: workspace:*
version: link:../packages/animations
'@angular/benchpress':
specifier: workspace:*
version: link:../packages/benchpress
'@angular/build':
specifier: 20.0.4
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@24.0.5)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
'@angular/common':
specifier: workspace:*
version: link:../packages/common
@@ -609,6 +612,21 @@ importers:
'@angular/upgrade':
specifier: workspace:*
version: link:../packages/upgrade
'@types/node':
specifier: 24.0.5
version: 24.0.5
'@types/selenium-webdriver':
specifier: 3.0.7
version: 3.0.7
protractor:
specifier: 7.0.0
version: 7.0.0
selenium-webdriver:
specifier: 3.6.0
version: 3.6.0
tslib:
specifier: 2.8.1
version: 2.8.1
zone.js:
specifier: workspace:*
version: link:../packages/zone.js
@@ -619,6 +637,15 @@ importers:
specifier: ^2.3.0
version: 2.8.1
packages/benchpress:
dependencies:
'@angular/core':
specifier: ^20.0.0
version: 20.0.5(@angular/compiler@packages+compiler)(rxjs@7.8.2)(zone.js@packages+zone.js)
reflect-metadata:
specifier: ^0.2.0
version: 0.2.2
packages/common:
dependencies:
tslib:
@@ -686,7 +713,7 @@ importers:
version: link:../../../animations
'@angular/build':
specifier: 20.0.4
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
version: 20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3)
'@angular/common':
specifier: workspace:*
version: link:../../../common
@@ -1280,7 +1307,7 @@ packages:
- yaml
dev: true
/@angular/build@20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3):
/@angular/build@20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/localize@packages+localize)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@24.0.5)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3):
resolution: {integrity: sha512-SIYLg2st05Q5hgFrxwj6L4i9j2j2JNWYoYgacXp+mw9YVhFiC02Ymbakc9fq+3+sWlm0XTX5JgrupV2ac1ytNQ==, tarball: https://registry.npmjs.org/@angular/build/-/build-20.0.4.tgz}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
@@ -1337,6 +1364,102 @@ packages:
'@babel/core': 7.27.1
'@babel/helper-annotate-as-pure': 7.27.1
'@babel/helper-split-export-declaration': 7.24.7
'@inquirer/confirm': 5.1.10(@types/node@24.0.5)
'@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5)
beasties: 0.3.4
browserslist: 4.25.0
esbuild: 0.25.5
https-proxy-agent: 7.0.6(supports-color@10.0.0)
istanbul-lib-instrument: 6.0.3
jsonc-parser: 3.3.1
karma: 6.4.4
listr2: 8.3.3
magic-string: 0.30.17
mrmime: 2.0.1
parse5-html-rewriting-stream: 7.1.0
picomatch: 4.0.2
piscina: 5.1.1
rollup: 4.40.2
sass: 1.88.0
semver: 7.7.2
source-map-support: 0.5.21
tinyglobby: 0.2.13
tslib: 2.8.1
typescript: 5.8.3
vite: 6.3.5(@types/node@24.0.5)(sass@1.88.0)(terser@5.43.1)(tsx@4.20.3)
watchpack: 2.4.2
optionalDependencies:
lmdb: 3.3.0
transitivePeerDependencies:
- '@types/node'
- chokidar
- jiti
- lightningcss
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- tsx
- yaml
dev: false
/@angular/build@20.0.4(@angular/compiler-cli@packages+compiler-cli)(@angular/compiler@packages+compiler)(@angular/core@packages+core)(@angular/platform-browser@packages+platform-browser)(@angular/ssr@20.0.4)(@types/node@18.19.112)(chokidar@4.0.3)(karma@6.4.4)(terser@5.43.1)(tslib@2.8.1)(tsx@4.20.3)(typescript@5.8.3):
resolution: {integrity: sha512-SIYLg2st05Q5hgFrxwj6L4i9j2j2JNWYoYgacXp+mw9YVhFiC02Ymbakc9fq+3+sWlm0XTX5JgrupV2ac1ytNQ==, tarball: https://registry.npmjs.org/@angular/build/-/build-20.0.4.tgz}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'}
peerDependencies:
'@angular/compiler': ^20.0.0
'@angular/compiler-cli': ^20.0.0
'@angular/core': ^20.0.0
'@angular/localize': ^20.0.0
'@angular/platform-browser': ^20.0.0
'@angular/platform-server': ^20.0.0
'@angular/service-worker': ^20.0.0
'@angular/ssr': ^20.0.4
karma: ^6.4.0
less: ^4.2.0
ng-packagr: ^20.0.0
postcss: ^8.4.0
tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0
tslib: ^2.3.0
typescript: '>=5.8 <5.9'
vitest: ^3.1.1
peerDependenciesMeta:
'@angular/core':
optional: true
'@angular/localize':
optional: true
'@angular/platform-browser':
optional: true
'@angular/platform-server':
optional: true
'@angular/service-worker':
optional: true
'@angular/ssr':
optional: true
karma:
optional: true
less:
optional: true
ng-packagr:
optional: true
postcss:
optional: true
tailwindcss:
optional: true
vitest:
optional: true
dependencies:
'@ampproject/remapping': 2.3.0
'@angular-devkit/architect': 0.2000.4(chokidar@4.0.3)
'@angular/compiler': link:packages/compiler
'@angular/compiler-cli': link:packages/compiler-cli
'@angular/core': link:packages/core
'@angular/platform-browser': link:packages/platform-browser
'@angular/ssr': 20.0.4
'@babel/core': 7.27.1
'@babel/helper-annotate-as-pure': 7.27.1
'@babel/helper-split-export-declaration': 7.24.7
'@inquirer/confirm': 5.1.10(@types/node@18.19.112)
'@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5)
beasties: 0.3.4
@@ -1524,6 +1647,25 @@ packages:
zone.js: link:packages/zone.js
dev: true
/@angular/core@20.0.5(@angular/compiler@packages+compiler)(rxjs@7.8.2)(zone.js@packages+zone.js):
resolution: {integrity: sha512-r7YQXZvKPAMUXeo3psKTZxyYJrwidTwDPrzxMX3EGqZxv0eDnMPWCxH2y0O2X4BT0Nm1iAqx3zhGrSFc0vD60Q==, tarball: https://registry.npmjs.org/@angular/core/-/core-20.0.5.tgz}
engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0}
peerDependencies:
'@angular/compiler': 20.0.5
rxjs: ^6.5.3 || ^7.4.0
zone.js: ~0.15.0
peerDependenciesMeta:
'@angular/compiler':
optional: true
zone.js:
optional: true
dependencies:
'@angular/compiler': link:packages/compiler
rxjs: 7.8.2
tslib: 2.8.1
zone.js: link:packages/zone.js
dev: false
/@angular/material@20.0.4(@angular/cdk@20.0.4)(rxjs@7.8.2):
resolution: {integrity: sha512-ET+znnyOVjBezHsjy7U42/88JPl9Mhumvf01gMBN8mNcaoSpeM4cc2uKBg30/3YzykKIsjXtvUJj/PaTujmJAQ==, tarball: https://registry.npmjs.org/@angular/material/-/material-20.0.4.tgz}
peerDependencies:
@@ -3102,7 +3244,6 @@ packages:
/@bazel/typescript@5.8.1(typescript@5.7.3):
resolution: {integrity: sha512-NAJ8WQHZL1WE1YmRoCrq/1hhG15Mvy/viWh6TkvFnBeEhNUiQUsA5GYyhU1ztnBIYW03nATO3vwhAEfO7Q0U5g==, tarball: https://registry.npmjs.org/@bazel/typescript/-/typescript-5.8.1.tgz}
deprecated: No longer maintained, https://github.com/aspect-build/rules_ts is the recommended replacement
hasBin: true
peerDependencies:
typescript: '>=3.0.0'
@@ -4065,6 +4206,20 @@ packages:
'@types/node': 18.19.112
dev: false
/@inquirer/confirm@5.1.10(@types/node@24.0.5):
resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==, tarball: https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.10.tgz}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/core': 10.1.13(@types/node@24.0.5)
'@inquirer/type': 3.0.7(@types/node@24.0.5)
'@types/node': 24.0.5
dev: false
/@inquirer/confirm@5.1.12(@types/node@18.19.112):
resolution: {integrity: sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==, tarball: https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.12.tgz}
engines: {node: '>=18'}
@@ -4097,6 +4252,26 @@ packages:
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
/@inquirer/core@10.1.13(@types/node@24.0.5):
resolution: {integrity: sha512-1viSxebkYN2nJULlzCxES6G9/stgHSepZ9LqqfdIGPHj5OHhiBUXVS0a6R0bEC2A+VL4D9w6QB66ebCr6HGllA==, tarball: https://registry.npmjs.org/@inquirer/core/-/core-10.1.13.tgz}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@inquirer/figures': 1.0.12
'@inquirer/type': 3.0.7(@types/node@24.0.5)
'@types/node': 24.0.5
ansi-escapes: 4.3.2
cli-width: 4.1.0
mute-stream: 2.0.0
signal-exit: 4.1.0
wrap-ansi: 6.2.0
yoctocolors-cjs: 2.1.2
dev: false
/@inquirer/editor@4.2.13(@types/node@18.19.112):
resolution: {integrity: sha512-WbicD9SUQt/K8O5Vyk9iC2ojq5RHoCLK6itpp2fHsWe44VxxcA9z3GTWlvjSTGmMQpZr+lbVmrxdHcumJoLbMA==, tarball: https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.13.tgz}
engines: {node: '>=18'}
@@ -4276,6 +4451,18 @@ packages:
dependencies:
'@types/node': 18.19.112
/@inquirer/type@3.0.7(@types/node@24.0.5):
resolution: {integrity: sha512-PfunHQcjwnju84L+ycmcMKB/pTPIngjUJvfnRhKY6FKPuYXlM4aQCb/nIdTFR6BEhMjFvngzvng/vBAJMZpLSA==, tarball: https://registry.npmjs.org/@inquirer/type/-/type-3.0.7.tgz}
engines: {node: '>=18'}
peerDependencies:
'@types/node': '>=18'
peerDependenciesMeta:
'@types/node':
optional: true
dependencies:
'@types/node': 24.0.5
dev: false
/@isaacs/cliui@8.0.2:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, tarball: https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz}
engines: {node: '>=12'}
@@ -6503,7 +6690,7 @@ packages:
dependencies:
'@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4
'@types/node': 24.0.3
'@types/node': 24.0.5
'@types/responselike': 1.0.3
/@types/caseless@0.12.5:
@@ -6895,7 +7082,7 @@ packages:
/@types/keyv@3.1.4:
resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==, tarball: https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz}
dependencies:
'@types/node': 24.0.3
'@types/node': 24.0.5
/@types/live-server@1.2.3:
resolution: {integrity: sha512-s8SQNTnUgaYQemV1Nt7SILh5ChYbWVg8ONLBbcmjHcpAwpyHh7MXBIpwgwPNvx19lIbBWszQJ3k8ynNIHLtlyg==, tarball: https://registry.npmjs.org/@types/live-server/-/live-server-1.2.3.tgz}
@@ -6958,6 +7145,11 @@ packages:
dependencies:
undici-types: 7.8.0
/@types/node@24.0.5:
resolution: {integrity: sha512-CXEG9E7GCTOZIre0WdDznmnhvF7xi7AmnP/zF496trmLiqlfdtxp9nPRgLVqfmJ8jgtcKcs0EcvOu2yDZSuvTg==, tarball: https://registry.npmjs.org/@types/node/-/node-24.0.5.tgz}
dependencies:
undici-types: 7.8.0
/@types/normalize-package-data@2.4.4:
resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, tarball: https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz}
dev: true
@@ -7031,7 +7223,7 @@ packages:
/@types/responselike@1.0.3:
resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==, tarball: https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz}
dependencies:
'@types/node': 24.0.3
'@types/node': 24.0.5
/@types/retry@0.12.2:
resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==, tarball: https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz}
@@ -7320,7 +7512,7 @@ packages:
peerDependencies:
vite: ^6.0.0
dependencies:
vite: 6.3.5(@types/node@18.19.112)(sass@1.88.0)(terser@5.43.1)(tsx@4.20.3)
vite: 6.3.5(@types/node@24.0.5)(sass@1.88.0)(terser@5.43.1)(tsx@4.20.3)
dev: false
/@vitest/expect@3.2.4:
@@ -15605,7 +15797,7 @@ packages:
serialize-javascript: 6.0.2
strip-json-comments: 3.1.1
supports-color: 8.1.1
workerpool: 9.3.2
workerpool: 9.3.3
yargs: 17.7.2
yargs-parser: 21.1.1
yargs-unparser: 2.0.0
@@ -20716,6 +20908,60 @@ packages:
fsevents: 2.3.3
dev: false
/vite@6.3.5(@types/node@24.0.5)(sass@1.88.0)(terser@5.43.1)(tsx@4.20.3):
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==, tarball: https://registry.npmjs.org/vite/-/vite-6.3.5.tgz}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
jiti: '>=1.21.0'
less: '*'
lightningcss: ^1.21.0
sass: '*'
sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
jiti:
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
dependencies:
'@types/node': 24.0.5
esbuild: 0.25.5
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.6
rollup: 4.44.1
sass: 1.88.0
terser: 5.43.1
tinyglobby: 0.2.14
tsx: 4.20.3
optionalDependencies:
fsevents: 2.3.3
dev: false
/vitest@3.2.4(@types/node@10.17.60)(jsdom@26.1.0)(terser@5.43.1)(tsx@4.20.3):
resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==, tarball: https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
@@ -21302,8 +21548,8 @@ packages:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, tarball: https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz}
dev: true
/workerpool@9.3.2:
resolution: {integrity: sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==, tarball: https://registry.npmjs.org/workerpool/-/workerpool-9.3.2.tgz}
/workerpool@9.3.3:
resolution: {integrity: sha512-slxCaKbYjEdFT/o2rH9xS1hf4uRDch1w7Uo+apxhZ+sf/1d9e0ZVkn42kPNGP2dgjIx6YFvSevj0zHvbWe2jdw==, tarball: https://registry.npmjs.org/workerpool/-/workerpool-9.3.3.tgz}
dev: true
/wrap-ansi@6.2.0:
+1
View File
@@ -15,6 +15,7 @@ packages:
- packages/platform-browser-dynamic/
- packages/router/
- packages/localize/
- packages/benchpress/
- packages/upgrade/
- packages/zone.js/
- tools/bazel/rules_angular_store/