acfd0edd38
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
39 lines
1.7 KiB
JSON
39 lines
1.7 KiB
JSON
{
|
|
"name": "angular-integration",
|
|
"version": "0.0.0",
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@angular/animations": "file:../../dist/packages-dist/animations",
|
|
"@angular/common": "file:../../dist/packages-dist/common",
|
|
"@angular/compiler": "file:../../dist/packages-dist/compiler",
|
|
"@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
|
|
"@angular/core": "file:../../dist/packages-dist/core",
|
|
"@angular/elements": "file:../../dist/packages-dist/elements",
|
|
"@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
|
|
"@angular/platform-server": "file:../../dist/packages-dist/platform-server",
|
|
"google-closure-compiler": "20180319.0.0",
|
|
"rxjs": "file:../../node_modules/rxjs",
|
|
"typescript": "file:../../node_modules/typescript",
|
|
"zone.js": "file:../../dist/zone.js-dist/zone.js"
|
|
},
|
|
"devDependencies": {
|
|
"@types/jasmine": "2.5.41",
|
|
"concurrently": "3.4.0",
|
|
"lite-server": "2.2.2",
|
|
"protractor": "file:../../node_modules/protractor",
|
|
"puppeteer": "file:../../node_modules/puppeteer"
|
|
},
|
|
"//resolutions-comment": "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"
|
|
},
|
|
"scripts": {
|
|
"closure": "java -jar node_modules/google-closure-compiler/compiler.jar --flagfile closure.conf",
|
|
"test": "ngc && yarn run closure && concurrently \"yarn run serve\" \"yarn run protractor\" --kill-others --success first",
|
|
"serve": "lite-server -c e2e/browser.config.json",
|
|
"preprotractor": "tsc -p e2e",
|
|
"protractor": "protractor e2e/protractor.config.js"
|
|
},
|
|
"private": true
|
|
}
|