-
Notifications
You must be signed in to change notification settings - Fork 27k
build(docs-infra): fix example e2e tests not failing properly in some situations #49293
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Formats the `run-example-e2e.mjs` file with prettier to ease future diffs.
… situations The `run-example-e2e` script does not properly fail if configured tests of examples are failing. This happens when a CLI example configures multiple tests in the `example-config`. Due to incorrect usage of promises in combination with reduce, only the last test command had an effect on the overall test conclusion. A similar issue seems to occur with SystemJS Protractor tests. This commit fixes the problem and also cleans up the code a little by switching it to `async/await`.
… example This causes the e2e tests to fail. The tests were compiled using a tsconfig with `lib=dom`, but the tests explicitly tried to pull in the Node types. This causes a conflict for e.g. `AbortController` types.
Whenever we run example tests using the local framework packages, the
e2e tests will have the local framework packages symlinked in the
`node_modules`.
This works well in general, but due to NodeJS by default resolving
symlinks to the target location, NodeJS will end up looking for
transitive dependencies in the `bazel-bin` instead of in the example
`node_modules` folder. This means that we end up incorrectly resolving
older versions of `@angular/core` that end up existing in the main
project dependencies. This causes errors like:
```
Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/http/testing/index.d.ts:12:21 - error TS2307: Cannot find module '@angular/common/http' or its corresponding type declarations.
12 import * as i1 from '@angular/common/http';
~~~~~~~~~~~~~~~~~~~~~~
Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/index.d.ts:1630:18 - error TS2707: Generic type 'ɵɵDirectiveDeclaration' requires between 6 and 8 type arguments.
1630 static ɵdir: i0.ɵɵDirectiveDeclaration<NgClass, "[ngClass]", never, { "klass": "class"; "ngClass": "ngClass"; }, {}, never, never, true, never>;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
We can fix this by properly ensuring that NodeJS does not resolve
symlinks, but rather preserves them.
In the error above, the e2e tests end up accidentally resolving
`@angular/core` v14 that comes from `@angular/benchpress`. Angular
Benchpress is installed via `@angular/build-tooling` in the project
root.
…AIO example e2e tests Chromium is launched via Karma from within the Bazel AIO example e2e tests. This breaks depending on the platform and sandbox mechanism used. We should never use Chromium's sandbox on top of Bazel's sandbox invocation. The Angular CLI exposes a browser exactly for this use-case.
Currently, examples with test commands like `ng build` are *never* using the local version of `//packages/compiler-cli`. This is because the CLI is invoked accidentally from within `external/aio_example_deps`. Since the CLI relies on importing the compiler-cli, it will always resolve the dependency from that directory- causing it to be always the version installed via `aio/examples/tools/shared/package.json`. We should never resolve symlinks and escape the e2e sandbox. That way the compiler-cli would be resolved properly and could also become the locally built one, depending on the test mode (i.e. npm or "local").
We recently migrated the testing example to use the router testing harness. There was one instance of the previous non-`TestBed` examples left that still relies on a stub that has already been removed. This example is not used anywhere and we should rather encourage a single pattern of testing. i.e. the harness as per recent changes. This commit removes the broken file.
2bd3942 to
08dacb4
Compare
|
Note: Disabling pull approve since we have docs infra approval and LGTM the examples where actual docs content changed |
|
This PR was merged into the repository by commit 47dda6e. |
Formats the `run-example-e2e.mjs` file with prettier to ease future diffs. PR Close #49293
… situations (#49293) The `run-example-e2e` script does not properly fail if configured tests of examples are failing. This happens when a CLI example configures multiple tests in the `example-config`. Due to incorrect usage of promises in combination with reduce, only the last test command had an effect on the overall test conclusion. A similar issue seems to occur with SystemJS Protractor tests. This commit fixes the problem and also cleans up the code a little by switching it to `async/await`. PR Close #49293
…49293) Whenever we run example tests using the local framework packages, the e2e tests will have the local framework packages symlinked in the `node_modules`. This works well in general, but due to NodeJS by default resolving symlinks to the target location, NodeJS will end up looking for transitive dependencies in the `bazel-bin` instead of in the example `node_modules` folder. This means that we end up incorrectly resolving older versions of `@angular/core` that end up existing in the main project dependencies. This causes errors like: ``` Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/http/testing/index.d.ts:12:21 - error TS2307: Cannot find module '@angular/common/http' or its corresponding type declarations. 12 import * as i1 from '@angular/common/http'; ~~~~~~~~~~~~~~~~~~~~~~ Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/index.d.ts:1630:18 - error TS2707: Generic type 'ɵɵDirectiveDeclaration' requires between 6 and 8 type arguments. 1630 static ɵdir: i0.ɵɵDirectiveDeclaration<NgClass, "[ngClass]", never, { "klass": "class"; "ngClass": "ngClass"; }, {}, never, never, true, never>; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` We can fix this by properly ensuring that NodeJS does not resolve symlinks, but rather preserves them. In the error above, the e2e tests end up accidentally resolving `@angular/core` v14 that comes from `@angular/benchpress`. Angular Benchpress is installed via `@angular/build-tooling` in the project root. PR Close #49293
…AIO example e2e tests (#49293) Chromium is launched via Karma from within the Bazel AIO example e2e tests. This breaks depending on the platform and sandbox mechanism used. We should never use Chromium's sandbox on top of Bazel's sandbox invocation. The Angular CLI exposes a browser exactly for this use-case. PR Close #49293
) Currently, examples with test commands like `ng build` are *never* using the local version of `//packages/compiler-cli`. This is because the CLI is invoked accidentally from within `external/aio_example_deps`. Since the CLI relies on importing the compiler-cli, it will always resolve the dependency from that directory- causing it to be always the version installed via `aio/examples/tools/shared/package.json`. We should never resolve symlinks and escape the e2e sandbox. That way the compiler-cli would be resolved properly and could also become the locally built one, depending on the test mode (i.e. npm or "local"). PR Close #49293
…49293) We recently migrated the testing example to use the router testing harness. There was one instance of the previous non-`TestBed` examples left that still relies on a stub that has already been removed. This example is not used anywhere and we should rather encourage a single pattern of testing. i.e. the harness as per recent changes. This commit removes the broken file. PR Close #49293
… situations (#49293) The `run-example-e2e` script does not properly fail if configured tests of examples are failing. This happens when a CLI example configures multiple tests in the `example-config`. Due to incorrect usage of promises in combination with reduce, only the last test command had an effect on the overall test conclusion. A similar issue seems to occur with SystemJS Protractor tests. This commit fixes the problem and also cleans up the code a little by switching it to `async/await`. PR Close #49293
…49293) Whenever we run example tests using the local framework packages, the e2e tests will have the local framework packages symlinked in the `node_modules`. This works well in general, but due to NodeJS by default resolving symlinks to the target location, NodeJS will end up looking for transitive dependencies in the `bazel-bin` instead of in the example `node_modules` folder. This means that we end up incorrectly resolving older versions of `@angular/core` that end up existing in the main project dependencies. This causes errors like: ``` Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/http/testing/index.d.ts:12:21 - error TS2307: Cannot find module '@angular/common/http' or its corresponding type declarations. 12 import * as i1 from '@angular/common/http'; ~~~~~~~~~~~~~~~~~~~~~~ Error: ../../home/circleci/.cache/bazel/_bazel_circleci/9ce5c2144ecf75d11717c0aa41e45a8d/execroot/angular/bazel-out/k8-fastbuild/bin/packages/common/npm_package/index.d.ts:1630:18 - error TS2707: Generic type 'ɵɵDirectiveDeclaration' requires between 6 and 8 type arguments. 1630 static ɵdir: i0.ɵɵDirectiveDeclaration<NgClass, "[ngClass]", never, { "klass": "class"; "ngClass": "ngClass"; }, {}, never, never, true, never>; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ``` We can fix this by properly ensuring that NodeJS does not resolve symlinks, but rather preserves them. In the error above, the e2e tests end up accidentally resolving `@angular/core` v14 that comes from `@angular/benchpress`. Angular Benchpress is installed via `@angular/build-tooling` in the project root. PR Close #49293
…AIO example e2e tests (#49293) Chromium is launched via Karma from within the Bazel AIO example e2e tests. This breaks depending on the platform and sandbox mechanism used. We should never use Chromium's sandbox on top of Bazel's sandbox invocation. The Angular CLI exposes a browser exactly for this use-case. PR Close #49293
) Currently, examples with test commands like `ng build` are *never* using the local version of `//packages/compiler-cli`. This is because the CLI is invoked accidentally from within `external/aio_example_deps`. Since the CLI relies on importing the compiler-cli, it will always resolve the dependency from that directory- causing it to be always the version installed via `aio/examples/tools/shared/package.json`. We should never resolve symlinks and escape the e2e sandbox. That way the compiler-cli would be resolved properly and could also become the locally built one, depending on the test mode (i.e. npm or "local"). PR Close #49293
…49293) We recently migrated the testing example to use the router testing harness. There was one instance of the previous non-`TestBed` examples left that still relies on a stub that has already been removed. This example is not used anywhere and we should rather encourage a single pattern of testing. i.e. the harness as per recent changes. This commit removes the broken file. PR Close #49293
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
The
run-example-e2escript does not properly fail if configuredtests of examples are failing. This happens when a CLI example
configures multiple tests in the
example-config. Due to incorrectusage of promises in combination with reduce, only the last test
command had an effect on the overall test conclusion. A similar issue
seems to occur with SystemJS Protractor tests.
This commit fixes the problem and also cleans up the code a little
by switching it to
async/await.Additionally we fix the following two things: