Skip to content

Commit

Permalink
ci: Add back the CLI integration test with pinning (#21555)
Browse files Browse the repository at this point in the history
The CLI app is now checked in, rather than generated dynamically with
`ng new`. This loses some assertion power, but gains hermeticity.
It also checks in lock files for all integration tests, avoiding
floating version numbers.

We'll need another place to integration test between changes in
the various repositories - but the angular/angular PR-blocking status
is not the right place to do this.

PR Close #21555
  • Loading branch information
alexeagle authored and mhevery committed Jan 26, 2018
1 parent fac4d8d commit 08aa54e
Show file tree
Hide file tree
Showing 42 changed files with 22,985 additions and 101 deletions.
4 changes: 0 additions & 4 deletions integration/.gitignore
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
built/
dist/
vendor/
yarn.lock
.ng-cli/
cli-*/**
*/src/*.d.ts
*/src/*.js
**/*.ngfactory.ts
**/*.ngsummary.json
**/*.ngsummary.ts
*/yarn*
**/.yarn_local_cache*
27 changes: 21 additions & 6 deletions integration/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
# Integration tests for Angular

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.
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.

To test Angular CLI applications, we generate integration tests such as `cli-hello-world`.
This was generated with a current version of the CLI, and the only modification was replacement of `@angular/*` packages with their counterparts coming from `file:../../dist/packages-dist/*`.
When a significant change is released in the CLI, the application should be re-generated from scratch:

```bash
$ cd integration
$ rm -rf cli-hello-world
$ ng new cli-hello-world
# Edit cli-hello-world/package.json to point the @angular packages to dist/packages-dist, and preserve local mods to
# ng build
# ng test
# typescript version
```

## Writing an integration test

Expand All @@ -29,6 +42,8 @@ you can install the package directly from `file:../../node_modules`.

## Running integration tests

First you must run `build.sh` to create the current distribution.

You can iterate on the tests by keeping the dist folder up-to-date.
See the `package.json` of the test(s) you're debugging, to see which dist/ folders they install from.
Then run the right `tsc --watch` command to keep those dist folders up-to-date, for example:
Expand Down
3 changes: 1 addition & 2 deletions integration/bazel/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
},
"scripts": {
"postinstall": "ngc -p angular.tsconfig.json",
"test": "WORKAROUND https://github.com/bazelbuild/bazel/issues/4242, can't build ...",
"test": "bazel build //src/... --noshow_progress"
"test": "bazel build //... --noshow_progress"
}
}
Loading

0 comments on commit 08aa54e

Please sign in to comment.