2017-02-09 12:06:19 -05:00
# Integration tests for Angular
2018-01-16 10:09:59 -05:00
This directory contains end-to-end tests for Angular. Each directory is a self-contained application that exactly mimics how a user might expect Angular
to work, so they allow high-fidelity reproductions of real-world issues.
For this to work, we first build the Angular distribution just like we would
publish it to npm, then install the distribution into each app.
2018-04-24 14:30:23 -04:00
To test Angular CLI applications, we use the integration test `cli-hello-world` .
When a significant change is released in the CLI, the application should be updated with `ng update` :
2018-01-16 10:09:59 -05:00
```bash
2018-10-31 11:25:57 -04:00
$ cd integration/cli-hello-world
$ yarn install
$ yarn ng update @angular/cli @angular -devkit/build-angular
# yarn build
# yarn test
2018-01-16 10:09:59 -05:00
# typescript version
```
2017-02-09 12:06:19 -05:00
2018-01-25 19:43:29 -05:00
## Render3 tests
2019-01-30 09:02:53 -05:00
The directory `cli-hello-world-ivy-compat` contains a test for render3 used with the angular cli.
2018-01-25 19:43:29 -05:00
2019-01-28 10:04:38 -05:00
The `cli-hello-world-ivy-minimal` contains a minimal ivy app that is meant to mimic the bazel
equivalent in `packages/core/test/bundling/hello_world` , and should be kept similar.
2017-02-09 12:06:19 -05:00
## Writing an integration test
The API for each test is:
- Each sub-directory here is an integration test
- Each test should have a `package.json` file
- The test runner will run `yarn` and `yarn test` on the package
This means that the test should be started by test script, like
```
2018-10-31 11:25:57 -04:00
"scripts": {"test": "runProgramA & & assertResultIsGood"}
2017-02-09 12:06:19 -05:00
```
Note that the `package.json` file uses a special `file://../../dist` scheme
to reference the Angular packages, so that the locally-built Angular
is installed into the test app.
2017-09-21 09:39:43 -04:00
Also, beware of floating (non-locked) dependencies. If in doubt
you can install the package directly from `file:../../node_modules` .
2017-02-09 12:06:19 -05:00
## Running integration tests
```
$ ./integration/run_tests.sh
```
2018-03-15 18:36:11 -04:00
The test runner will first re-build any stale npm packages, then `cd` into each
subdirectory to execute the test.