angular-cn/integration/BUILD.bazel

121 lines
4.9 KiB
Python

load(":angular_integration_test.bzl", "angular_integration_test")
# Some integration ports must be managed manually to be unique and in other
# cases the tests are able to select a random free port.
#
# Where `ng e2e` is used we pass `ng e2e --port 0` which prompts the cli
# to select a random free port for the e2e test. The protractor.conf is
# automatically updated to use this port.
#
# Karma automatically finds a free port so no effort is needed there.
#
# The manually configured ports are as follows:
#
# TEST PORT CONFIGURATION
# ==== ==== =============
# dynamic-compiler 4201 /e2e/browser.config.json: "port": 4201
# hello_world__closure 4202 /e2e/browser.config.json: "port": 4202
# hello_world__systemjs_umd 4203 /bs-config.e2e.json: "port": 4203
# i18n 4204 /e2e/browser.config.json: "port": 4204
# ng_elements 4205 /e2e/browser.config.json: "port": 4205
# platform-server 4206 /src/server.ts: app.listen(4206,...
# Map of integration tests to tags.
# A subset of these tests fail or are not meant to be run with ivy bundles. These are tagged
# "no-ivy-aot".
INTEGRATION_TESTS = {
"bazel": {
"tags": [
# Bazel-in-bazel tests are resource intensive and should not be over-parallized
# as they will compete for the resources of other parallel tests slowing
# everything down. Ask Bazel to allocate multiple CPUs for these tests with "cpu:n" tag.
"cpu:3",
"no-ivy-aot",
],
},
"cli-elements-universal": {
"tags": ["ivy-only"],
},
"cli-hello-world": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"cli-hello-world-ivy-compat": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"cli-hello-world-ivy-i18n": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"cli-hello-world-ivy-minimal": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"cli-hello-world-lazy": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"dynamic-compiler": {"tags": ["no-ivy-aot"]},
"forms": {
"commands": "payload_size_tracking",
"tags": ["ivy-only"],
},
"hello_world__closure": {
# TODO: Re-enable the payload_size_tracking command:
# We should define ngDevMode to false in Closure, but --define only works in the global scope.
# With ngDevMode not being set to false, this size tracking test provides little value but a lot of
# headache to continue updating the size.
"tags": ["no-ivy-aot"],
},
"hello_world__systemjs_umd": {
# Special case for `hello_world__systemjs_umd` test as we want to pin
# `systems` at version 0.20.2 and not link to the root @npm//systemjs
# which is stuck at 0.18.10 and can't be updated to 0.20.2 without
# breaking the legacy saucelabs job.
"pinned_npm_packages": ["systemjs"],
},
"i18n": {"tags": ["no-ivy-aot"]},
"injectable-def": {"tags": ["no-ivy-aot"]},
"ivy-i18n": {"tags": ["ivy-only"]},
"trusted-types": {"tags": ["ivy-only"]},
"ng_elements": {"tags": ["no-ivy-aot"]},
"ng_elements_schematics": {"tags": ["ivy-only"]},
"ng_update": {},
"ng_update_migrations": {"tags": ["no-ivy-aot"]},
"ngcc": {"tags": ["no-ivy-aot"]},
"platform-server": {"tags": ["no-ivy-aot"]},
"service-worker-schema": {},
"side-effects": {"tags": ["no-ivy-aot"]},
"terser": {},
"typings_test_rxjs7": {},
"typings_test_ts41": {
# Special case for `typings_test_ts41` test as we want to pin
# `typescript` at version 4.1.x for that test and not link to the
# root @npm//typescript package.
"pinned_npm_packages": ["typescript"],
},
"typings_test_ts42": {
# Special case for `typings_test_ts42` test as we want to pin
# `typescript` at version 4.2.x for that test and not link to the
# root @npm//typescript package.
"pinned_npm_packages": ["typescript"],
},
"typings_test_ts43": {
# Special case for `typings_test_ts43` test as we want to pin
# `typescript` at version 4.3.x for that test and not link to the
# root @npm//typescript package.
"pinned_npm_packages": ["typescript"],
},
}
[
angular_integration_test(
name = test_folder,
commands = INTEGRATION_TESTS[test_folder].get("commands", "default"),
pinned_npm_packages = INTEGRATION_TESTS[test_folder].get("pinned_npm_packages", []),
tags = INTEGRATION_TESTS[test_folder].get("tags", []),
)
for test_folder in INTEGRATION_TESTS
]