Files
Paul Gschwendtner 2664bc2b3e test: switch integration tests from puppeteer/webdriver-manager to Bazel-managed chromium (#44238)
Switches the integration tests form Puppeteer/webdriver-manager to the
Bazel-managed Chromium/Chromedriver. This is now possible with the new
integration test rule for which we can consult the
`dev-infra/bazel/browsers` toolchain and setup environment variables.
This has been configured already in a previous commit.

This commit also includes some additional small cleanups necessary for
the new integration test rule:

* The `test.sh` scripts have been renamed as they would conflict with
  the `test.sh` scripts generated by the integration test rule.
  Previously this was not an issue because tests were declared at a
  higher-level. As mentioned though this has other downsides and it is
  trivial to rename the file.

* Related to the point above, since tests are now declared witin the
  actual test folder (for perf e.g.), `package.json` files setting
  `"type": "module"` will accidentally cause the `nodejs_test`-generated
  files to be considered ESM. This is not correct and likely needs to be
  fixed upstream in `rules_nodejs` where explicit `.cjs` extensions
  should be used. This is only happening **once** in the `injectable-def`
  test so it is acceptable doing that for now.

PR Close #44238
2021-12-08 13:42:42 -05:00
..

E2E tests

There are four different sets of e2e tests in this folder. They are all testing different translation scenarios, but they are all built with IVY enabled.

runtime

A new polyfills.ts file is provided (polyfills-runtime.ts) which is swapped in by a file replacement in the angular.json configuration. In this new file:

  • Runtime translations are provided (loadTranslations()).
  • The current locale is set ($localize.locale = 'fr') and loaded (registerLocaleData(localeFr);)

de and fr

The application is built (into the dist folder) and then two sets of translations (src/locales/messages.(de|fr).json) are used to generate two copies of the app, which have been translated (compile-time inlined).

These translated apps are stored in tmp/translations/(de|fr).

legacy

The CLI ng extract-i18n tool extracts the messages from the Angular templates, into the XLIFF 1.2 format with legacy message ids (tmp/legacy-locales/messages.legacy.xlf).

The translation file is modified to apply a simple translation.

The app must be compiled using the i18nLegacyMessageIdFormat option set to ensure that the correct message ids are used to match those in the translation files.

The app is translated using the compile-time inlining tool to generate a copy that has the translated message in it.

Hosting

Since the CLI hosts from and in-memory file-system the compile-time inliner is not able to translate the output files. So the de, fr and legacy apps must be statically built to disk and translated there.

Since the translated app is now on disk, we cannot use the CLI to serve it. Instead we use a simple static HTTP server instead.