“ng e2e” is failling probably in reason of proxy b

2019-04-12 22:30发布

问题:

I download https://github.com/blizzerand/pastebin-angular and I can successfully run "ng test" or "npm run test" (I understand both do exactly the same).

C:\_pocs\ws_vsc\pastebin-angular-master>npm run test

    > test-angulr@0.0.0 test C:\_pocs\ws_vsc\pastebin-angular-master
    > ng test

     10% building modules 1/1 modules 0 active29 12 2017 18:13:27.927:WARN [karma]: No captured browser, open http://localhost:9876/
    29 12 2017 18:13:27.998:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
    29 12 2017 18:13:28.002:INFO [launcher]: Launching browsers Chrome, ChromeNoSandboxHeadless with unlimited concurrency
    29 12 2017 18:13:28.013:INFO [launcher]: Starting browser Chrome
    29 12 2017 18:13:28.032:INFO [launcher]: Starting browser Chrome              29 12 2017 18:13:39.229:WARN [karma]: No captured browser, open http://localhost:9876/
    29 12 2017 18:13:40.708:INFO [HeadlessChrome 0.0.0 (Windows 10 0.0.0)]: Connected on socket UDrOcB34PHgK-7M-AAAB with id 48647093
    29 12 2017 18:13:40.708:INFO [Chrome 63.0.3239 (Windows 10 0.0.0)]: Connected on socket 8ZsdfQHAmDKzVaoHAAAA with id 86143812
    Chrome 63.0.3239 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (3.745 secs / 3.714 secs)
    HeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (3.807 secs / 3.779 secs)
    TOTAL: 62 SUCCESS
    TOTAL: 62 SUCCESS

When I try "ng e2e" I get " ETIMEDOUT x.x.x.x:443"

C:\_pocs\ws_vsc\pastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:5784) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12097ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT x.x.x.x:443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)

So I change to "ng e2e --no-webdriver-update" since it will no rely on proxy at all.

C:\_pocs\ws_vsc\pastebin-angular-master>ng e2e --no-webdriver-update
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:14496) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 13274ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[18:20:39] I/launcher - Running 1 instances of WebDriver
[18:20:39] I/direct - Using ChromeDriver directly...
[18:20:39] E/direct - Error code: 135
[18:20:39] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
[18:20:39] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries.
    at Direct.getNewDriver (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\built\driverProviders\direct.js:63:31)
    at Runner.createBrowser (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\built\runner.js:195:43)
    at q.then.then (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\built\runner.js:339:29)
    at _fulfilled (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:834:54)
    at self.promiseDispatch.done (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:863:30)
    at Promise.promise.promiseDispatch (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:796:13)
    at C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:556:49
    at runSingle (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:137:13)
    at flush (C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\q\q.js:125:13)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
[18:20:39] E/launcher - Process exited with error code 135

Since I got "Could not find update-config.json. Run 'webdriver-manager update' " then I tried downlod it and explicitly use my local proxy

C:\_pocs\ws_vsc\pastebin-angular-master>webdriver-manager update --proxy http://myproxy.vm.mycompany.net:3128
[18:23:19] I/update - geckodriver: file exists C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\protractor\node_modules\webdriver-manager\selenium\geckodriver-v0.19.1.zip
[18:23:19] I/update - geckodriver: unzipping geckodriver-v0.19.1.zip
[18:23:19] I/update - geckodriver: geckodriver-v0.19.1.exe up to date
[18:23:20] E/downloader - Expected response code 200, received: 403
[18:23:20] I/update - chromedriver: file exists C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_2.34.zip
[18:23:20] I/update - chromedriver: unzipping chromedriver_2.34.zip
(node:14648) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Invalid filename
(node:14648) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[18:24:29] I/update - selenium standalone: file exists C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\protractor\node_modules\webdriver-manager\selenium\selenium-server-standalone-3.8.1.jar
[18:24:29] I/update - selenium standalone: selenium-server-standalone-3.8.1.jar up to date

A bit confusing for me when I see " E/downloader - Expected response code 200, received: 403" but at the end I see "I/update - selenium standalone: selenium-server-standalone-3.8.1.jar up to date". I will assume that I download it correctly. Now I repeat "ng e2e" and I got same error above. Since I see port number 443, I decided try something "ng e2e --skip-ssl" and I got same error above. I tried ng e2e --webdriver-update=false as well and I still get "Could not find update-config.json".

The last tentative I tried was

C:\_pocs\ws_vsc\pastebin-angular-master>npm run e2e

> test-angulr@0.0.0 e2e C:\_pocs\ws_vsc\pastebin-angular-master
> ng e2e

** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:9036) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 11115ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: connect ETIMEDOUT 172.217.17.48:443
    at Object._errnoException (util.js:1024:11)
    at _exceptionWithHostPort (util.js:1046:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1182:14)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! test-angulr@0.0.0 e2e: `ng e2e`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the test-angulr@0.0.0 e2e script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\dca\AppData\Roaming\npm-cache\_logs\2017-12-29T17_33_44_400Z-debug.log

and here is the log

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'e2e' ]
2 info using npm@5.5.1
3 info using node@v8.9.3
4 verbose run-script [ 'pree2e', 'e2e', 'poste2e' ]
5 info lifecycle test-angulr@0.0.0~pree2e: test-angulr@0.0.0
6 info lifecycle test-angulr@0.0.0~e2e: test-angulr@0.0.0
7 verbose lifecycle test-angulr@0.0.0~e2e: unsafe-perm in lifecycle true
8 verbose lifecycle test-angulr@0.0.0~e2e: PATH: C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\npm\bin\node-gyp-bin;C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\.bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Windows\CCM;C:\Program Files (x86)\GnuWin32\bin;C:\Program Files (x86)\Skype\Phone\;C:\_t3\gradle-3.5\bin;C:\Program Files (x86)\Subversion\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\Yarn\bin;C:\Program Files\TortoiseSVN\bin;C:\Users\dca\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\dca\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Java\jdk1.8.0_112\bin;C:\_t\maven\bin;C:\Users\dca\AppData\Local\GitHubDesktop\bin;C:\Program Files\Microsoft VS Code\bin;C:\Users\dca\AppData\Local\Yarn\bin;C:\Users\dca\AppData\Roaming\nvm;C:\Program Files\nodejs
9 verbose lifecycle test-angulr@0.0.0~e2e: CWD: C:\_pocs\ws_vsc\pastebin-angular-master
10 silly lifecycle test-angulr@0.0.0~e2e: Args: [ '/d /s /c', 'ng e2e' ]
11 silly lifecycle test-angulr@0.0.0~e2e: Returned: code: 1  signal: null
12 info lifecycle test-angulr@0.0.0~e2e: Failed to exec e2e script
13 verbose stack Error: test-angulr@0.0.0 e2e: `ng e2e`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\npm\node_modules\npm-lifecycle\index.js:280:16)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at EventEmitter.emit (events.js:214:7)
13 verbose stack     at ChildProcess.<anonymous> (C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at emitTwo (events.js:126:13)
13 verbose stack     at ChildProcess.emit (events.js:214:7)
13 verbose stack     at maybeClose (internal/child_process.js:925:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid test-angulr@0.0.0
15 verbose cwd C:\_pocs\ws_vsc\pastebin-angular-master
16 verbose Windows_NT 10.0.14393
17 verbose argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "e2e"
18 verbose node v8.9.3
19 verbose npm  v5.5.1
20 error code ELIFECYCLE
21 error errno 1
22 error test-angulr@0.0.0 e2e: `ng e2e`
22 error Exit status 1
23 error Failed at the test-angulr@0.0.0 e2e script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

In case it is relevant, here is package.json

{
  "name": "test-angulr",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^4.0.0",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "@types/faker": "^4.1.0",
    "angular-in-memory-web-api": "^0.3.2",
    "core-js": "^2.4.1",
    "faker": "^4.1.0",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "1.1.0",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/language-service": "^4.0.0",
    "@types/jasmine": "2.5.45",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }
}

All tentatives I have done was after 2 days (16 hours) struggling to settup my environment. As far as I understand "ng test" run tests based on Jasmine sintaxes and "ng e2e" based on Protractor sintaxes (I know it is very dummy comparasion).

Finally, it make my route to find the issue even more complicated when I see that both "ng serve" and "ng test" are working perfectly.

C:\_pocs\ws_vsc\pastebin-angular-master>ng serve
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200 **
Hash: 68480633f4a6979c64f6
Time: 12524ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.

...

C:\_pocs\ws_vsc\pastebin-angular-master>ng test
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
 10% building modules 1/1 modules 0 active29 12 2017 18:46:45.409:WARN [karma]: No captured browser, open http://localhost:9876/
29 12 2017 18:46:45.487:INFO [karma]: Karma v1.7.0 server started at http://0.0.0.0:9876/
29 12 2017 18:46:45.487:INFO [launcher]: Launching browsers Chrome, ChromeNoSandboxHeadless with unlimited concurrency
29 12 2017 18:46:45.502:INFO [launcher]: Starting browser Chrome
29 12 2017 18:46:45.523:INFO [launcher]: Starting browser Chrome              29 12 2017 18:46:57.058:WARN [karma]: No captured browser, open http://localhost:9876/
29 12 2017 18:46:58.843:INFO [Chrome 63.0.3239 (Windows 10 0.0.0)]: Connected on socket ZyuotOYE2ISz30vzAAAA with id 41727568
29 12 2017 18:46:58.910:INFO [HeadlessChrome 0.0.0 (Windows 10 0.0.0)]: Connected on socket yBro2KHiWGptHCihAAAB with id 10384190
Chrome 63.0.3239 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (4.328 secs / 4.288 secs)
HeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 31 of 31 SUCCESS (4.279 secs / 4.24 secs)
TOTAL: 62 SUCCESS
TOTAL: 62 SUCCESS

Webdriver-manager also starts correctly:

C:\_pocs\ws_vsc\pastebin-angular-master>webdriver-manager start proxy http://xxx.vm.xxx.net:3128
[18:52:18] I/start - java -Dwebdriver.gecko.driver=C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\protractor\node_modules\webdriver-manager\selenium\geckodriver-v0.19.1.exe -jar C:\Users\dca\AppData\Roaming\nvm\v8.9.3\node_modules\protractor\node_modules\webdriver-manager\selenium\selenium-server-standalone-3.8.1.jar -port 4444
[18:52:18] I/start - seleniumProcess.pid: 11540
18:52:19.437 INFO - Selenium build info: version: '3.8.1', revision: '6e95a6684b'
18:52:19.438 INFO - Launching a standalone Selenium Server
2017-12-29 18:52:19.546:INFO::main: Logging initialized @387ms to org.seleniumhq.jetty9.util.log.StdErrLog
18:52:19.577 INFO - Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`
18:52:19.593 INFO - Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
18:52:19.608 INFO - Using `new EdgeOptions()` is preferred to `DesiredCapabilities.edge()`
18:52:19.608 INFO - Driver class not found: com.opera.core.systems.OperaDriver                                          18:52:19.608 INFO - Using `new OperaOptions()` is preferred to `DesiredCapabilities.operaBlink()`
18:52:19.608 INFO - Using `new SafariOptions()` is preferred to `DesiredCapabilities.safari()`
18:52:19.608 INFO - Driver class not found: org.openqa.selenium.phantomjs.PhantomJSDriver                               18:52:19.655 INFO - Driver provider class org.openqa.selenium.safari.SafariDriver registration is skipped:               registration capabilities Capabilities {browserName: safari, platform: MAC, version: } does not match the current platform WIN10
18:52:19.702 INFO - Using `new ChromeOptions()` is preferred to `DesiredCapabilities.chrome()`
18:52:19.702 INFO - Using `new EdgeOptions()` is preferred to `DesiredCapabilities.edge()`                              18:52:19.702 INFO - Using `new FirefoxOptions()` is preferred to `DesiredCapabilities.firefox()`
18:52:19.702 INFO - Using `new OperaOptions()` is preferred to `DesiredCapabilities.operaBlink()`                       18:52:19.702 INFO - Using `new SafariOptions()` is preferred to `DesiredCapabilities.safari()`
18:52:19.718 INFO - Using the passthrough mode handler
2017-12-29 18:52:19.751:INFO:osjs.Server:main: jetty-9.4.7.v20170914
2017-12-29 18:52:19.778:WARN:osjs.SecurityHandler:main: ServletContext@o.s.j.s.ServletContextHandler@757942a1{/,null,STARTING} has uncovered http methods for path: /
2017-12-29 18:52:19.787:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@757942a1{/,null,AVAILABLE}2017-12-29 18:52:19.913:INFO:osjs.AbstractConnector:main: Started ServerConnector@27d415d9{HTTP/1.1,[http/1.1]}{0.0.0.0:4444}
2017-12-29 18:52:19.916:INFO:osjs.Server:main: Started @756ms
18:52:19.917 INFO - Selenium Server is up and running

Anything to check or correction on possible misunderstanding above will be highly appreciatted.

  • edited after solution found:

if I tried without environment variables suggested, I got:

C:\_pocs\ws_vsc\pastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:8044) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12039ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[16:12:48] E/downloader - Connection timeout downloading: https://chromedriver.storage.googleapis.com/2.34/chromedriver_win32.zip. Default timeout is 4 minutes.
[16:12:48] I/update - chromedriver: file exists C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_2.34.zip
[16:12:48] I/update - chromedriver: unzipping chromedriver_2.34.zip
[16:12:49] I/update - chromedriver: chromedriver_2.34.exe up to date
[16:12:49] I/launcher - Running 1 instances of WebDriver
[16:12:49] I/direct - Using ChromeDriver directly...
[16:12:49] E/downloader - Connection timeout downloading: https://chromedriver.storage.googleapis.com/2.34/chromedriver_win32.zip. Default timeout is 4 minutes.

DevTools listening on ws://127.0.0.1:12268/devtools/browser/71d97023-dae5-4b24-8ecc-98922db60bf5
Jasmine started

Executed 0 of 0 specs SUCCESS in 0.002 sec.
[16:12:53] I/launcher - 0 instance(s) of WebDriver still running
[16:12:53] I/launcher - chrome #01 passed

On another hand, after setting the environment variables, I got:

C:\_pocs\ws_vsc\pastebin-angular-master>ng e2e
Your global Angular CLI version (1.6.3) is greater than your local
version (1.1.0). The local Angular CLI version is used.

To disable this warning use "ng set --global warnings.versionMismatch=false".
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152 **
(node:2288) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
Hash: 5891176eb0b28d7d1f89
Time: 12368ms
chunk    {0} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {4} [initial] [rendered]
chunk    {1} main.bundle.js, main.bundle.js.map (main) 29.2 kB {3} [initial] [rendered]
chunk    {2} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {4} [initial] [rendered]
chunk    {3} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.82 MB [initial] [rendered]
chunk    {4} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered]
webpack: Compiled successfully.
[16:19:30] I/update - chromedriver: file exists C:\_pocs\ws_vsc\pastebin-angular-master\node_modules\protractor\node_modules\webdriver-manager\selenium\chromedriver_2.34.zip
[16:19:30] I/update - chromedriver: unzipping chromedriver_2.34.zip
[16:19:30] I/update - chromedriver: chromedriver_2.34.exe up to date
[16:19:30] I/launcher - Running 1 instances of WebDriver
[16:19:30] I/direct - Using ChromeDriver directly...

DevTools listening on ws://127.0.0.1:12462/devtools/browser/86f2d2f5-3312-48e6-8d05-25241eeba843
Jasmine started

Executed 0 of 0 specs SUCCESS in 0.003 sec.
[16:19:34] I/launcher - 0 instance(s) of WebDriver still running
[16:19:34] I/launcher - chrome #01 passed

回答1:

1) when you run ng e2e, it report error: Error: connect ETIMEDOUT x.x.x.x:443

because the default value of option --webdriver-update of ng e2e is true, and your network behind proxy, so without telling your network proxy to webdriver-manager, webdriver-manger update will fail to connect network, this's why you see the error.

I looked into the source code of ng e2e at https://github.com/angular/angular-cli/blob/master/packages/%40angular/cli/tasks/e2e.ts, and noticed we can't pass the proxy by following behind npm run e2e, but we can set proxy in Enviroment Variable which webdriver-manager will read before running, you can follow below post to set proxy in Environment Varable: how to check what is causing webdriver-manager to fail

2) when you run ng e2e --no-webdriver-update to skip webdriver update, it report error: Error message: Could not find update-config.json

It means the update-config.json not exist in project_folder\node_modules\protractor\node_modules\webdriver-manager\selenium

Because you used the global webdriver-manger to execute webdriver update, rather than the project local webdriver-manager (at project_folder\.bin\webdriver-manager).

The correct way is switch to your_project folder in cmd window firstly, then execute node_modules\.bin\webdriver-manager update --proxy http://myproxy.vm.mycompany.net:3128 Then the update-config.json will be there and ng e2e --no-webdriver-manager should work now.

ng e2e can't use global webdriver-manager, but only project local node_modules\.bin\webdriver-manger

npm proxy VS environment variable proxy

1) npm proxy

npm proxy only work for the command: npm and this command implement won't read proxy from evniroment variable, thus you have to set proxy for npm by command npm config set or directly modify .npmrc file under user home or project folder.

2) environment variable proxy

Only tool/soft/program/command which implement will read proxy setting from environment variable, then the environment variable proxy can effect on them.

It's not easy for user to know environment variable proxy will effect on a tool/soft/program/command, especially it's a new thing we touch for first time.

But in generally, we can think everything executed from command window will read proxy setting from environment variable, but it's not always this, Like npm, it only read proxy from itself proxy setting.

Now back to the webdriver-manager, first it executed from command window in most case, actually the final determiner to decide environment variable proxy will effect on it or not is the implement itself.

In webdriver-manager implement, firstly, it will read proxy passed as options in command line as following: webdriver-manager update --proxy http://proxy.company.com:1234

If you not pass proxy in command line, then it will read proxy from environment variable.