angular-cn/integration/platform-server
George Kalpakas 7f0d7f4d12 build: update lockfiles for integration projects (#33968)
In the `integration_test` CircleCI job, we run `yarn install` on all
projects in the `integration/` directory. If a project has no lockfile
or if the lockfile is out-of-sync with the corresponding `package.json`
file, then the installed dependency versions are no longer pinned, which
can result in different versions being installed between different runs
of the same job (if, for example, a new version is released for a
package) and breaks hermeticity.

This could be prevented by using the `--frozen-lockfile` option with
`yarn install`, but this is not possible with the current setup, because
yarn needs to be able to install the locally built Angular packages,
whose checksums will be different from the ones in the lockfile.
Therefore, we have to manually ensure that the lockfiles remain in-sync
with the corresponding `package.json` files for the rest of the
dependencies.

For example, previously, [cli-hello-world-lazy/yarn.lock][1] had an
entry for `@angular-devkit/build-angular@0.900.0-next.9` (pinned to
`0.900.0-next.9`), but [cli-hello-world-lazy/package.json][2] specified
the `@angular-devkit/build-angular` version as `^0.900.0-rc.0` (note the
leading caret). As a result, since the version in the lock file does not
much the one in `package.json`, the lockfile is ignored and the latest
available version that matches `^0.900.0-rc.0` is installed.

This, for example, started causing unrelated CI failures ([example][3]),
when `@angular-devkit/build-angular@9.0.0-rc.3` was released with a size
improvement.

This commit ensures that all integration projects have a lockfile and
that lockfiles are up-to-date (with the current `package.json` files).

[1]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/yarn.lock#L13
[2]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/package.json#L26
[3]: https://circleci.com/gh/angular/angular/535959#tests/containers/2

PR Close #33968
2019-11-26 16:08:32 -08:00
..
e2e test: move platform-server integration test (#22810) 2018-04-13 16:30:50 -07:00
src build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
README.md test: move platform-server integration test (#22810) 2018-04-13 16:30:50 -07:00
build.sh test: move platform-server integration test (#22810) 2018-04-13 16:30:50 -07:00
package.json test(ngcc): build `zone.js` from source in `scripts/build-packages-dist.sh` (#33733) 2019-11-12 09:55:16 -08:00
tsconfig.json feat: make the Ivy compiler the default for ngc (#32219) 2019-08-20 16:41:08 -07:00
webpack.client.config.js test: move platform-server integration test (#22810) 2018-04-13 16:30:50 -07:00
webpack.server.config.js test: move platform-server integration test (#22810) 2018-04-13 16:30:50 -07:00
yarn.lock build: update lockfiles for integration projects (#33968) 2019-11-26 16:08:32 -08:00

README.md

To add a new server side rendering E2E test

  • Add a new server side rendered application to src/
  • Edit webpack.client.config.js to add new entry point for the new client bundle
  • The index.html can access the client bundle from /built/.js
  • Edit src/server.ts to add the server side application to a new URL
  • Add a protractor test in e2e/ to test with the new URL