angular-docs-cn/integration/ivy-i18n
Greg Magolan acfd0edd38 test: use puppeteer in integration tests and to download correct chromedriver (#35049)
This means integration tests no longer need to depend on a $CI_CHROMEDRIVER_VERSION_ARG environment variable to specify which chromedriver version to download to match the locally installed chrome. This was bad DX and not having it specified was not reliable as webdriver-manager would not always download the chromedriver version to work with the locally installed chrome.

webdriver-manager update --gecko=false --standalone=false $CI_CHROMEDRIVER_VERSION_ARG is now replaced with node webdriver-manager-update.js in the root package.json, which checks which version of chrome puppeteer has come bundled with & downloads informs webdriver-manager to download the corresponding chrome driver version.

Integration tests now use "webdriver-manager": "file:../../node_modules/webdriver-manager" so they don't have to waste time calling webdriver-manager update in postinstall

"// resolutions": "Ensure a single version of webdriver-manager which comes from root node_modules that has already run webdriver-manager update",
"resolutions": {
"**/webdriver-manager": "file:../../node_modules/webdriver-manager"
}
This should speed up each integration postinstall by a few seconds.

Further, integration test package.json files link puppeteer via file:../../node_modules/puppeteer which is the ideal situation as the puppeteer post-install won't download chrome if it is already downloaded. In CI, since node_modules is cached it should not need to download Chrome either unless the node_modules cache is busted.

NB: each version of puppeteer comes bundles with a specific version of chrome. Root package.json & yarn.lock currently pull down puppeteer 2.1.0 which comes with chrome 80. See https://github.com/puppeteer/puppeteer#q-which-chromium-version-does-puppeteer-use for more info.

Only two references to CI_CHROMEDRIVER_VERSION_ARG left in integration tests at integration/bazel-schematics/test.sh which I'm not entirely sure how to get rid of it

Use a lightweight puppeteer=>chrome version mapping instead of launching chrome and calling browser.version()

Launching puppeteer headless chrome and calling browser.version() was a heavy-handed approach to determine the Chrome version. A small and easy to update mappings file is a better solution and it means that the `yarn install` step does not require chrome shared libs available on the system for its postinstall step

PR Close #35049
2020-02-11 13:16:52 -08:00
..
e2e test: use puppeteer in integration tests and to download correct chromedriver (#35049) 2020-02-11 13:16:52 -08:00
src fix(ivy): i18n - ensure that colons in i18n metadata are not rendered (#33820) 2019-11-18 16:00:22 -08:00
.editorconfig test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
.gitignore test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
README.md test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
angular.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
browserslist test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
debug-test.sh build: make ivy-i18n/debug-test.sh executable (#33820) 2019-11-18 16:00:22 -08:00
karma.conf.js test: use puppeteer in integration tests and to download correct chromedriver (#35049) 2020-02-11 13:16:52 -08:00
package.json test: use puppeteer in integration tests and to download correct chromedriver (#35049) 2020-02-11 13:16:52 -08:00
tsconfig.app.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tsconfig.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tsconfig.legacy-xmb.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tsconfig.legacy.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tsconfig.spec.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tsconfig.view-engine.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
tslint.json test: rename cli-hello-world-ivy-i18n to just ivy-i18n (#33510) 2019-11-01 17:50:56 +00:00
yarn.lock test: use puppeteer in integration tests and to download correct chromedriver (#35049) 2020-02-11 13:16:52 -08:00

README.md

CliHelloWorldIvyI18n

This project was generated with Angular CLI version 9.0.0-next.9.

Development server

Run ng serve for a dev server. Navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Code scaffolding

Run ng generate component component-name to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module.

Build

Run ng build to build the project. The build artifacts will be stored in the dist/ directory. Use the --prod flag for a production build.

Running unit tests

Run ng test to execute the unit tests via Karma.

Running end-to-end tests

Run ng e2e to execute the end-to-end tests via Protractor.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.