From 8d581502ca4c6cc32c281b487964ba0df910a0fa Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Thu, 26 Jun 2025 18:59:19 +0000 Subject: [PATCH] build: migrate modules to use `@rules_browsers` protractor rules (#62345) Use the protractor rules from `@rules_browsers` for the module directory. PR Close #62345 --- .../npm_translate_lock_MzA5NzUwNzMx | 7 +- .bazelignore | 1 + WORKSPACE | 3 +- modules/benchmarks/benchmark_test.bzl | 43 +++ modules/benchmarks/e2e_test.bzl | 33 ++- .../src/change_detection/BUILD.bazel | 8 +- .../change_detection.e2e-spec.ts | 5 +- .../change_detection.perf-spec.ts | 7 +- .../transplanted_views/BUILD.bazel | 6 +- .../class_bindings.perf-spec.ts | 2 +- modules/benchmarks/src/defer/BUILD.bazel | 8 +- .../benchmarks/src/defer/baseline/BUILD.bazel | 6 +- .../benchmarks/src/defer/defer.e2e-spec.ts | 5 +- .../benchmarks/src/defer/defer.perf-spec.ts | 7 +- modules/benchmarks/src/defer/main/BUILD.bazel | 6 +- .../benchmarks/src/expanding_rows/BUILD.bazel | 8 +- .../expanding_rows.perf-spec.ts | 2 +- modules/benchmarks/src/hydration/BUILD.bazel | 8 +- .../src/hydration/baseline/BUILD.bazel | 6 +- .../src/hydration/hydration.e2e-spec.ts | 5 +- .../src/hydration/hydration.perf-spec.ts | 7 +- .../benchmarks/src/hydration/main/BUILD.bazel | 6 +- .../src/js-web-frameworks/BUILD.bazel | 4 +- .../js-web-frameworks.perf-spec.ts | 7 +- .../src/js-web-frameworks/ng2/BUILD.bazel | 4 +- modules/benchmarks/src/largeform/BUILD.bazel | 8 +- .../src/largeform/largeform.e2e-spec.ts | 5 +- .../src/largeform/largeform.perf-spec.ts | 5 +- .../benchmarks/src/largeform/ng2/BUILD.bazel | 6 +- modules/benchmarks/src/largetable/BUILD.bazel | 10 +- .../src/largetable/baseline/BUILD.bazel | 6 +- .../src/largetable/largetable.e2e-spec.ts | 5 +- .../src/largetable/largetable.perf-spec.ts | 7 +- .../benchmarks/src/largetable/ng2/BUILD.bazel | 6 +- .../src/largetable/ng2_switch/BUILD.bazel | 6 +- .../ng_template_outlet_context/BUILD.bazel | 4 +- .../ng2/BUILD.bazel | 4 +- .../ng_template_outlet_context.perf-spec.ts | 5 +- modules/benchmarks/src/styling/BUILD.bazel | 4 +- .../benchmarks/src/styling/ng2/BUILD.bazel | 4 +- .../src/styling/styling_perf.spec.ts | 6 +- modules/benchmarks/src/tree/BUILD.bazel | 4 +- .../benchmarks/src/tree/baseline/BUILD.bazel | 6 +- modules/benchmarks/src/tree/ng2/BUILD.bazel | 10 +- .../src/tree/ng2_static/BUILD.bazel | 6 +- .../src/tree/ng2_switch/BUILD.bazel | 6 +- modules/benchmarks/src/tree/test_utils.ts | 2 +- modules/benchmarks/tsconfig-e2e.json | 4 - modules/package.json | 12 +- .../playground/e2e_test/async/async_spec.ts | 2 +- modules/playground/e2e_test/example_test.bzl | 44 +-- .../e2e_test/hello_world/hello_world_spec.ts | 2 +- modules/playground/e2e_test/http/http_spec.ts | 2 +- .../playground/e2e_test/jsonp/jsonp_spec.ts | 2 +- .../e2e_test/key_events/key_events_spec.ts | 2 +- .../playground/e2e_test/sourcemap/BUILD.bazel | 3 +- .../e2e_test/sourcemap/sourcemap_spec.ts | 13 +- modules/playground/e2e_test/svg/svg_spec.ts | 2 +- .../template_driven_forms_spec.ts | 2 +- .../e2e_test/upgrade/upgrade_spec.ts | 2 +- .../e2e_test/zippy_component/zippy_spec.ts | 2 +- modules/playground/src/sourcemap/BUILD.bazel | 13 +- modules/playground/tsconfig-e2e.json | 4 - modules/utilities/BUILD.bazel | 21 ++ modules/utilities/e2e_util.ts | 54 ++++ modules/utilities/index.ts | 9 + modules/utilities/perf_util.ts | 130 +++++++++ modules/utilities/tsconfig.json | 8 + packages/benchpress/BUILD.bazel | 10 +- pnpm-lock.yaml | 270 +++++++++++++++++- pnpm-workspace.yaml | 1 + 71 files changed, 714 insertions(+), 229 deletions(-) create mode 100644 modules/benchmarks/benchmark_test.bzl create mode 100644 modules/utilities/BUILD.bazel create mode 100644 modules/utilities/e2e_util.ts create mode 100644 modules/utilities/index.ts create mode 100644 modules/utilities/perf_util.ts create mode 100644 modules/utilities/tsconfig.json diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index b453849ce14..2175a7e810d 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -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 diff --git a/.bazelignore b/.bazelignore index 76754df5add..2bfa842637f 100644 --- a/.bazelignore +++ b/.bazelignore @@ -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 diff --git a/WORKSPACE b/WORKSPACE index 38574962984..911367bf635 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -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", ) diff --git a/modules/benchmarks/benchmark_test.bzl b/modules/benchmarks/benchmark_test.bzl new file mode 100644 index 00000000000..52b7d755490 --- /dev/null +++ b/modules/benchmarks/benchmark_test.bzl @@ -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", + ], + ) diff --git a/modules/benchmarks/e2e_test.bzl b/modules/benchmarks/e2e_test.bzl index 053207aebae..e9054667afe 100644 --- a/modules/benchmarks/e2e_test.bzl +++ b/modules/benchmarks/e2e_test.bzl @@ -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", + ], ) diff --git a/modules/benchmarks/src/change_detection/BUILD.bazel b/modules/benchmarks/src/change_detection/BUILD.bazel index b472e39024c..cee5c66cde1 100644 --- a/modules/benchmarks/src/change_detection/BUILD.bazel +++ b/modules/benchmarks/src/change_detection/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/change_detection/change_detection.e2e-spec.ts b/modules/benchmarks/src/change_detection/change_detection.e2e-spec.ts index 8d96bf39393..85113d7d88f 100644 --- a/modules/benchmarks/src/change_detection/change_detection.e2e-spec.ts +++ b/modules/benchmarks/src/change_detection/change_detection.e2e-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/change_detection/change_detection.perf-spec.ts b/modules/benchmarks/src/change_detection/change_detection.perf-spec.ts index 9693fe862e6..2627befa21e 100644 --- a/modules/benchmarks/src/change_detection/change_detection.perf-spec.ts +++ b/modules/benchmarks/src/change_detection/change_detection.perf-spec.ts @@ -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); diff --git a/modules/benchmarks/src/change_detection/transplanted_views/BUILD.bazel b/modules/benchmarks/src/change_detection/transplanted_views/BUILD.bazel index a7b7e82b2fd..d79854d2122 100644 --- a/modules/benchmarks/src/change_detection/transplanted_views/BUILD.bazel +++ b/modules/benchmarks/src/change_detection/transplanted_views/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/class_bindings/class_bindings.perf-spec.ts b/modules/benchmarks/src/class_bindings/class_bindings.perf-spec.ts index 53ccc0da49c..32ecd9e0688 100644 --- a/modules/benchmarks/src/class_bindings/class_bindings.perf-spec.ts +++ b/modules/benchmarks/src/class_bindings/class_bindings.perf-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/defer/BUILD.bazel b/modules/benchmarks/src/defer/BUILD.bazel index f5373574142..569e88f554c 100644 --- a/modules/benchmarks/src/defer/BUILD.bazel +++ b/modules/benchmarks/src/defer/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/defer/baseline/BUILD.bazel b/modules/benchmarks/src/defer/baseline/BUILD.bazel index dbc6e1e6102..35638517b98 100644 --- a/modules/benchmarks/src/defer/baseline/BUILD.bazel +++ b/modules/benchmarks/src/defer/baseline/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/defer/defer.e2e-spec.ts b/modules/benchmarks/src/defer/defer.e2e-spec.ts index 52eb3d6c5b6..5f5ae94d226 100644 --- a/modules/benchmarks/src/defer/defer.e2e-spec.ts +++ b/modules/benchmarks/src/defer/defer.e2e-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/defer/defer.perf-spec.ts b/modules/benchmarks/src/defer/defer.perf-spec.ts index dbe6846e3fe..7920b8d7edb 100644 --- a/modules/benchmarks/src/defer/defer.perf-spec.ts +++ b/modules/benchmarks/src/defer/defer.perf-spec.ts @@ -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); diff --git a/modules/benchmarks/src/defer/main/BUILD.bazel b/modules/benchmarks/src/defer/main/BUILD.bazel index dbc6e1e6102..35638517b98 100644 --- a/modules/benchmarks/src/defer/main/BUILD.bazel +++ b/modules/benchmarks/src/defer/main/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/expanding_rows/BUILD.bazel b/modules/benchmarks/src/expanding_rows/BUILD.bazel index b7265f89e77..adf8d7d0173 100644 --- a/modules/benchmarks/src/expanding_rows/BUILD.bazel +++ b/modules/benchmarks/src/expanding_rows/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/expanding_rows/expanding_rows.perf-spec.ts b/modules/benchmarks/src/expanding_rows/expanding_rows.perf-spec.ts index ceb379d2b06..8479bf5f47a 100644 --- a/modules/benchmarks/src/expanding_rows/expanding_rows.perf-spec.ts +++ b/modules/benchmarks/src/expanding_rows/expanding_rows.perf-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/hydration/BUILD.bazel b/modules/benchmarks/src/hydration/BUILD.bazel index 381cc493975..fc951d4fb26 100644 --- a/modules/benchmarks/src/hydration/BUILD.bazel +++ b/modules/benchmarks/src/hydration/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/hydration/baseline/BUILD.bazel b/modules/benchmarks/src/hydration/baseline/BUILD.bazel index 7d3eea25990..909113ee270 100644 --- a/modules/benchmarks/src/hydration/baseline/BUILD.bazel +++ b/modules/benchmarks/src/hydration/baseline/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/hydration/hydration.e2e-spec.ts b/modules/benchmarks/src/hydration/hydration.e2e-spec.ts index ef06189e659..303e26e365a 100644 --- a/modules/benchmarks/src/hydration/hydration.e2e-spec.ts +++ b/modules/benchmarks/src/hydration/hydration.e2e-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/hydration/hydration.perf-spec.ts b/modules/benchmarks/src/hydration/hydration.perf-spec.ts index 3e854f03014..706d786963d 100644 --- a/modules/benchmarks/src/hydration/hydration.perf-spec.ts +++ b/modules/benchmarks/src/hydration/hydration.perf-spec.ts @@ -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); diff --git a/modules/benchmarks/src/hydration/main/BUILD.bazel b/modules/benchmarks/src/hydration/main/BUILD.bazel index 7d3eea25990..909113ee270 100644 --- a/modules/benchmarks/src/hydration/main/BUILD.bazel +++ b/modules/benchmarks/src/hydration/main/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/js-web-frameworks/BUILD.bazel b/modules/benchmarks/src/js-web-frameworks/BUILD.bazel index e5a3d9cf9c2..9e8fd35c559 100644 --- a/modules/benchmarks/src/js-web-frameworks/BUILD.bazel +++ b/modules/benchmarks/src/js-web-frameworks/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/js-web-frameworks/js-web-frameworks.perf-spec.ts b/modules/benchmarks/src/js-web-frameworks/js-web-frameworks.perf-spec.ts index f5e9ed501ea..e2c62ab39b8 100644 --- a/modules/benchmarks/src/js-web-frameworks/js-web-frameworks.perf-spec.ts +++ b/modules/benchmarks/src/js-web-frameworks/js-web-frameworks.perf-spec.ts @@ -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); diff --git a/modules/benchmarks/src/js-web-frameworks/ng2/BUILD.bazel b/modules/benchmarks/src/js-web-frameworks/ng2/BUILD.bazel index 44fc14b4098..dece4b65078 100644 --- a/modules/benchmarks/src/js-web-frameworks/ng2/BUILD.bazel +++ b/modules/benchmarks/src/js-web-frameworks/ng2/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/largeform/BUILD.bazel b/modules/benchmarks/src/largeform/BUILD.bazel index d814a5b76e5..aae3eea5192 100644 --- a/modules/benchmarks/src/largeform/BUILD.bazel +++ b/modules/benchmarks/src/largeform/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/largeform/largeform.e2e-spec.ts b/modules/benchmarks/src/largeform/largeform.e2e-spec.ts index 265ce6f2e7b..b6568451172 100644 --- a/modules/benchmarks/src/largeform/largeform.e2e-spec.ts +++ b/modules/benchmarks/src/largeform/largeform.e2e-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/largeform/largeform.perf-spec.ts b/modules/benchmarks/src/largeform/largeform.perf-spec.ts index 713a624bec3..e9780b1bbdb 100644 --- a/modules/benchmarks/src/largeform/largeform.perf-spec.ts +++ b/modules/benchmarks/src/largeform/largeform.perf-spec.ts @@ -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 { diff --git a/modules/benchmarks/src/largeform/ng2/BUILD.bazel b/modules/benchmarks/src/largeform/ng2/BUILD.bazel index 37ab622c7e6..349326e9c8d 100644 --- a/modules/benchmarks/src/largeform/ng2/BUILD.bazel +++ b/modules/benchmarks/src/largeform/ng2/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/largetable/BUILD.bazel b/modules/benchmarks/src/largetable/BUILD.bazel index 5b0b88a05b2..70304d59929 100644 --- a/modules/benchmarks/src/largetable/BUILD.bazel +++ b/modules/benchmarks/src/largetable/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/largetable/baseline/BUILD.bazel b/modules/benchmarks/src/largetable/baseline/BUILD.bazel index 9521fd78a38..def862ab443 100644 --- a/modules/benchmarks/src/largetable/baseline/BUILD.bazel +++ b/modules/benchmarks/src/largetable/baseline/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/largetable/largetable.e2e-spec.ts b/modules/benchmarks/src/largetable/largetable.e2e-spec.ts index fdb35f8c575..66871d15aff 100644 --- a/modules/benchmarks/src/largetable/largetable.e2e-spec.ts +++ b/modules/benchmarks/src/largetable/largetable.e2e-spec.ts @@ -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', () => { diff --git a/modules/benchmarks/src/largetable/largetable.perf-spec.ts b/modules/benchmarks/src/largetable/largetable.perf-spec.ts index 3ce54027d10..09dc21ecd36 100644 --- a/modules/benchmarks/src/largetable/largetable.perf-spec.ts +++ b/modules/benchmarks/src/largetable/largetable.perf-spec.ts @@ -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); diff --git a/modules/benchmarks/src/largetable/ng2/BUILD.bazel b/modules/benchmarks/src/largetable/ng2/BUILD.bazel index 938a9a047d2..01d7902f031 100644 --- a/modules/benchmarks/src/largetable/ng2/BUILD.bazel +++ b/modules/benchmarks/src/largetable/ng2/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel b/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel index f2c0b693392..8cceea1a651 100644 --- a/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel +++ b/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/ng_template_outlet_context/BUILD.bazel b/modules/benchmarks/src/ng_template_outlet_context/BUILD.bazel index 953e035516e..522ee34e759 100644 --- a/modules/benchmarks/src/ng_template_outlet_context/BUILD.bazel +++ b/modules/benchmarks/src/ng_template_outlet_context/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/ng_template_outlet_context/ng2/BUILD.bazel b/modules/benchmarks/src/ng_template_outlet_context/ng2/BUILD.bazel index bd1b933c769..ee6da5ef68c 100644 --- a/modules/benchmarks/src/ng_template_outlet_context/ng2/BUILD.bazel +++ b/modules/benchmarks/src/ng_template_outlet_context/ng2/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/ng_template_outlet_context/ng_template_outlet_context.perf-spec.ts b/modules/benchmarks/src/ng_template_outlet_context/ng_template_outlet_context.perf-spec.ts index e089e2408f5..6a17a786f8f 100644 --- a/modules/benchmarks/src/ng_template_outlet_context/ng_template_outlet_context.perf-spec.ts +++ b/modules/benchmarks/src/ng_template_outlet_context/ng_template_outlet_context.perf-spec.ts @@ -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 { diff --git a/modules/benchmarks/src/styling/BUILD.bazel b/modules/benchmarks/src/styling/BUILD.bazel index 2133a25b30b..f4a524532e5 100644 --- a/modules/benchmarks/src/styling/BUILD.bazel +++ b/modules/benchmarks/src/styling/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/styling/ng2/BUILD.bazel b/modules/benchmarks/src/styling/ng2/BUILD.bazel index ca677dd2a9e..fc239602e14 100644 --- a/modules/benchmarks/src/styling/ng2/BUILD.bazel +++ b/modules/benchmarks/src/styling/ng2/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/styling/styling_perf.spec.ts b/modules/benchmarks/src/styling/styling_perf.spec.ts index bcc85b1d135..cff0f9c32f3 100644 --- a/modules/benchmarks/src/styling/styling_perf.spec.ts +++ b/modules/benchmarks/src/styling/styling_perf.spec.ts @@ -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. */ diff --git a/modules/benchmarks/src/tree/BUILD.bazel b/modules/benchmarks/src/tree/BUILD.bazel index f9cb3d952e3..308413cde26 100644 --- a/modules/benchmarks/src/tree/BUILD.bazel +++ b/modules/benchmarks/src/tree/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/tree/baseline/BUILD.bazel b/modules/benchmarks/src/tree/baseline/BUILD.bazel index 78d40562e41..077b0fbf9c2 100644 --- a/modules/benchmarks/src/tree/baseline/BUILD.bazel +++ b/modules/benchmarks/src/tree/baseline/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/tree/ng2/BUILD.bazel b/modules/benchmarks/src/tree/ng2/BUILD.bazel index 6e2df933652..de3452d3ff5 100644 --- a/modules/benchmarks/src/tree/ng2/BUILD.bazel +++ b/modules/benchmarks/src/tree/ng2/BUILD.bazel @@ -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", ], ) diff --git a/modules/benchmarks/src/tree/ng2_static/BUILD.bazel b/modules/benchmarks/src/tree/ng2_static/BUILD.bazel index fd28db091fe..713e797ea05 100644 --- a/modules/benchmarks/src/tree/ng2_static/BUILD.bazel +++ b/modules/benchmarks/src/tree/ng2_static/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel b/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel index 0a72ed2235b..084c515535c 100644 --- a/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel +++ b/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel @@ -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"], ) diff --git a/modules/benchmarks/src/tree/test_utils.ts b/modules/benchmarks/src/tree/test_utils.ts index 858e1d9e692..168c71fce19 100644 --- a/modules/benchmarks/src/tree/test_utils.ts +++ b/modules/benchmarks/src/tree/test_utils.ts @@ -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({ diff --git a/modules/benchmarks/tsconfig-e2e.json b/modules/benchmarks/tsconfig-e2e.json index f623a711b6a..b21ff5bb356 100644 --- a/modules/benchmarks/tsconfig-e2e.json +++ b/modules/benchmarks/tsconfig-e2e.json @@ -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/*"] - } } } diff --git a/modules/package.json b/modules/package.json index 435eeaf98c0..027d35c296a 100644 --- a/modules/package.json +++ b/modules/package.json @@ -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:*" } } diff --git a/modules/playground/e2e_test/async/async_spec.ts b/modules/playground/e2e_test/async/async_spec.ts index 935b3bd10a3..ab3fe5ba471 100644 --- a/modules/playground/e2e_test/async/async_spec.ts +++ b/modules/playground/e2e_test/async/async_spec.ts @@ -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'; diff --git a/modules/playground/e2e_test/example_test.bzl b/modules/playground/e2e_test/example_test.bzl index 49332b8374d..75beaacae16 100644 --- a/modules/playground/e2e_test/example_test.bzl +++ b/modules/playground/e2e_test/example_test.bzl @@ -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 ) diff --git a/modules/playground/e2e_test/hello_world/hello_world_spec.ts b/modules/playground/e2e_test/hello_world/hello_world_spec.ts index 757f035a5b9..3a4e3410711 100644 --- a/modules/playground/e2e_test/hello_world/hello_world_spec.ts +++ b/modules/playground/e2e_test/hello_world/hello_world_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/http/http_spec.ts b/modules/playground/e2e_test/http/http_spec.ts index 992531ecebb..9609a2ce6a0 100644 --- a/modules/playground/e2e_test/http/http_spec.ts +++ b/modules/playground/e2e_test/http/http_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/jsonp/jsonp_spec.ts b/modules/playground/e2e_test/jsonp/jsonp_spec.ts index a97eb4e0267..6cb7d36292f 100644 --- a/modules/playground/e2e_test/jsonp/jsonp_spec.ts +++ b/modules/playground/e2e_test/jsonp/jsonp_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/key_events/key_events_spec.ts b/modules/playground/e2e_test/key_events/key_events_spec.ts index 7961321f03b..8d1d70fe399 100644 --- a/modules/playground/e2e_test/key_events/key_events_spec.ts +++ b/modules/playground/e2e_test/key_events/key_events_spec.ts @@ -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; diff --git a/modules/playground/e2e_test/sourcemap/BUILD.bazel b/modules/playground/e2e_test/sourcemap/BUILD.bazel index 5b31c08c226..778aad519bc 100644 --- a/modules/playground/e2e_test/sourcemap/BUILD.bazel +++ b/modules/playground/e2e_test/sourcemap/BUILD.bazel @@ -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"], diff --git a/modules/playground/e2e_test/sourcemap/sourcemap_spec.ts b/modules/playground/e2e_test/sourcemap/sourcemap_spec.ts index bc4fd14a738..a6a9b37ede2 100644 --- a/modules/playground/e2e_test/sourcemap/sourcemap_spec.ts +++ b/modules/playground/e2e_test/sourcemap/sourcemap_spec.ts @@ -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\'\)/, diff --git a/modules/playground/e2e_test/svg/svg_spec.ts b/modules/playground/e2e_test/svg/svg_spec.ts index d54884fb87f..9456ea1e858 100644 --- a/modules/playground/e2e_test/svg/svg_spec.ts +++ b/modules/playground/e2e_test/svg/svg_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/template_driven_forms/template_driven_forms_spec.ts b/modules/playground/e2e_test/template_driven_forms/template_driven_forms_spec.ts index 3418c65bb18..e9034560a0b 100644 --- a/modules/playground/e2e_test/template_driven_forms/template_driven_forms_spec.ts +++ b/modules/playground/e2e_test/template_driven_forms/template_driven_forms_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/upgrade/upgrade_spec.ts b/modules/playground/e2e_test/upgrade/upgrade_spec.ts index 2eddb0d581f..118df07ac9f 100644 --- a/modules/playground/e2e_test/upgrade/upgrade_spec.ts +++ b/modules/playground/e2e_test/upgrade/upgrade_spec.ts @@ -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 () { diff --git a/modules/playground/e2e_test/zippy_component/zippy_spec.ts b/modules/playground/e2e_test/zippy_component/zippy_spec.ts index 01a651fcb16..65ea61b9de6 100644 --- a/modules/playground/e2e_test/zippy_component/zippy_spec.ts +++ b/modules/playground/e2e_test/zippy_component/zippy_spec.ts @@ -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 () { diff --git a/modules/playground/src/sourcemap/BUILD.bazel b/modules/playground/src/sourcemap/BUILD.bazel index a0fec0c6d33..7f5c9b14f78 100644 --- a/modules/playground/src/sourcemap/BUILD.bazel +++ b/modules/playground/src/sourcemap/BUILD.bazel @@ -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", + ], +) diff --git a/modules/playground/tsconfig-e2e.json b/modules/playground/tsconfig-e2e.json index f623a711b6a..b21ff5bb356 100644 --- a/modules/playground/tsconfig-e2e.json +++ b/modules/playground/tsconfig-e2e.json @@ -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/*"] - } } } diff --git a/modules/utilities/BUILD.bazel b/modules/utilities/BUILD.bazel new file mode 100644 index 00000000000..7ed3817ed7c --- /dev/null +++ b/modules/utilities/BUILD.bazel @@ -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", + ], +) diff --git a/modules/utilities/e2e_util.ts b/modules/utilities/e2e_util.ts new file mode 100644 index 00000000000..d134a9907fa --- /dev/null +++ b/modules/utilities/e2e_util.ts @@ -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([]); + }); +} diff --git a/modules/utilities/index.ts b/modules/utilities/index.ts new file mode 100644 index 00000000000..82e472542dd --- /dev/null +++ b/modules/utilities/index.ts @@ -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'; diff --git a/modules/utilities/perf_util.ts b/modules/utilities/perf_util.ts new file mode 100644 index 00000000000..74707f8f2e8 --- /dev/null +++ b/modules/utilities/perf_util.ts @@ -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 | 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); + prepare?: (() => void) | (() => Promise); + setup?: (() => void) | (() => Promise); +}): Promise { + 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 { + 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 { + return await new Function(`return import('@angular/benchpress');`)(); +} diff --git a/modules/utilities/tsconfig.json b/modules/utilities/tsconfig.json new file mode 100644 index 00000000000..f0baef3360b --- /dev/null +++ b/modules/utilities/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "lib": ["es2020", "dom"], + "types": ["node"], + "declaration": true, + "sourceMap": true, + } +} diff --git a/packages/benchpress/BUILD.bazel b/packages/benchpress/BUILD.bazel index 3cc17865a99..9f2c8f4584c 100644 --- a/packages/benchpress/BUILD.bazel +++ b/packages/benchpress/BUILD.bazel @@ -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/": "", + }, +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f133b1f5f5..d3931668902 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 88e9e7c72fa..bd2a46e8220 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -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/