2017-09-26 120 views
1

我開發了Tour of Heroes Angular tutorial應用程序。之後,我寫了組件的測試。應用程序和組件測試都很好。現在我想用量角器開發E2E測試,我無法讓它們運行。量角器:ng e2e:如何解決「錯誤:連接ETIMEDOUT」錯誤?

我每次運行ng e2e在命令行中,我得到以下的輸出:關於我的設置

$ ng e2e 
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152/ ** 
Date: 2017-09-26T14:51:12.962Z 
Hash: ef70100f8d31703b6b85 
Time: 8035ms 
chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 5.83 kB [entry] [rendered] 
chunk {main} main.bundle.js, main.bundle.js.map (main) 3.16 MB {inline} [initial] [rendered] 
chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 209 kB {inline} [initial] [rendered] 
chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 11.6 kB {inline} [initial] [rendered] 
(node:13556) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead. 

webpack: Compiled successfully. 
events.js:182 
    throw er; // Unhandled 'error' event 
^

Error: connect ETIMEDOUT 216.58.205.112:443 
    at Object._errnoException (util.js:1026:11) 
    at _exceptionWithHostPort (util.js:1049:20) 
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1174:14) 

一些希望有用的信息:

  • 該項目是與Anguliar CLI
  • 創建
  • 量角器安裝在全球和本地
  • 以下文件位於node_modules/webdriver-manager/selenium目錄中: chromedriver_2.32.exe, chromedriver_2.32.zip, chrome-response.xml, gecko-response.json, selenium-server-standalone-3.5.3.jar, standalone-response.xml
  • 我跑webdriver-manager update與代理物業
  • 這沒有什麼區別,如果我跑與正在運行的硒網格或與directConnect: true配置命令
  • 作爲瀏覽器設置瀏覽器(Firefox有同樣的問題)
  • 操作系統:Windows 10,瀏覽器:鉻51.0.2704.106米(64位)

protractor.conf.js文件:

// Protractor configuration file, see link for more information 
// https://github.com/angular/protractor/blob/master/lib/config.ts 

const { SpecReporter } = require('jasmine-spec-reporter'); 

exports.config = { 
    allScriptsTimeout: 11000, 
    specs: [ 
    './e2e/**/*.e2e-spec.ts' 
    ], 
    capabilities: { 
    'browserName': 'chrome' 
    }, 
    directConnect: true, 
    baseUrl: 'http://localhost:4200/', 
    /*seleniumAddress: 'http://localhost:4444/wd/hub',*/ 
    directConnect: true, 
    framework: 'jasmine', 
    jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 30000, 
    print: function() {} 
    }, 
    onPrepare() { 
    require('ts-node').register({ 
     project: 'e2e/tsconfig.e2e.json' 
    }); 
    jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 
    } 
}; 

package.json文件:

{ 
    "name": "angular-tour-of-heroes", 
    "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.2.4", 
    "@angular/common": "^4.2.4", 
    "@angular/compiler": "^4.2.4", 
    "@angular/core": "^4.2.4", 
    "@angular/forms": "^4.2.4", 
    "@angular/http": "^4.2.4", 
    "@angular/platform-browser": "^4.2.4", 
    "@angular/platform-browser-dynamic": "^4.2.4", 
    "@angular/router": "^4.2.4", 
    "core-js": "^2.4.1", 
    "rxjs": "^5.4.2", 
    "zone.js": "^0.8.14" 
    }, 
    "devDependencies": { 
    "@angular/cli": "1.4.2", 
    "@angular/compiler-cli": "^4.2.4", 
    "@angular/language-service": "^4.2.4", 
    "@types/jasmine": "~2.5.53", 
    "@types/jasminewd2": "~2.0.2", 
    "@types/node": "~6.0.60", 
    "angular-in-memory-web-api": "^0.4.6", 
    "codelyzer": "~3.1.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-coverage-istanbul-reporter": "^1.2.1", 
    "karma-firefox-launcher": "^1.0.1", 
    "karma-jasmine": "~1.1.0", 
    "karma-jasmine-html-reporter": "^0.2.2", 
    "protractor": "^5.1.2", 
    "ts-node": "~3.2.0", 
    "tslint": "~5.3.2", 
    "typescript": "~2.3.3" 
    } 
} 

這是我第一次嘗試開發與角度和量角器端到端測試。

感謝您的支持!

更新

我不知道,如果我跑ng e2ewebdriver-manager update將被執行。所以我嘗試了ng e2e --no-webdriver-update並且使用這個命令,上面的錯誤不再出現。我認爲出現這個錯誤是因爲沒有設置代理,並且webdriver-manager無法運行更新。

但是,現在我得到一個新的錯誤。這裏是全輸出再次:

$ ng e2e --no-webdriver-update 
** NG Live Development Server is listening on localhost:49152, open your browser on http://localhost:49152/ ** 
Date: 2017-09-27T06:50:31.482Z 
Hash: ef70100f8d31703b6b85 
Time: 8513ms 
chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 5.83 kB [entry] [rendered] 
chunk {main} main.bundle.js, main.bundle.js.map (main) 3.16 MB {inline} [initial] [rendered] 
chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 209 kB {inline} [initial] [rendered] 
chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 11.6 kB {inline} [initial] [rendered] 
(node:12764) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead. 

webpack: Compiled successfully. 
[08:50:31] I/launcher - Running 1 instances of WebDriver 
[08:50:31] I/direct - Using ChromeDriver directly... 
[08:50:31] E/direct - Error code: 135 
[08:50:31] E/direct - Error message: Could not find update-config.json. Run 'webdriver-manager update' to download binaries. 
[08:50:31] E/direct - Error: Could not find update-config.json. Run 'webdriver-manager update' to download binaries. 
    at Direct.getNewDriver (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\built\driverProviders\direct.js:63:31) 
    at Runner.createBrowser (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\built\runner.js:195:43) 
    at q.then.then (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\built\runner.js:339:29) 
    at _fulfilled (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\node_modules\q\q.js:834:54) 
    at self.promiseDispatch.done (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\node_modules\q\q.js:863:30) 
    at Promise.promise.promiseDispatch (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\node_modules\q\q.js:796:13) 
    at D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\node_modules\q\q.js:556:49 
    at runSingle (D:\gitrepos\angular-tour-of-heroes\node_modules\protractor\node_modules\q\q.js:137:13) 
    at flush (D:\gitrepos\angular-tour-of-heroes\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) 
[08:50:31] E/launcher - Process exited with error code 135 

回答

2

好的,我能夠解決這個問題。這是我做的。

ng e2e運行webdriver-manager update命令。在我的情況下,這導致了ETIMEDOUT問題,因爲在我沒有代理的環境中,它無法下載文件。相反,我必須使用ng e2e --no-webdriver-update

現在我有Could not find update-config.json錯誤。

使用--proxy參數更新webdriver-manager似乎沒有下載任何內容和/或更正。我必須設置環境變量HTTP_PROXYHTTPS_PROXY並運行命令webdriver-manager update --ignore_ssl

現在量角器正在工作。

0

我發現webdriver-manager update尊重HTTPS_PROXY環境變量。嘗試在您的(企業)代理服務器上設置HTTPS_PROXY環境變量http://********:80重新啓動您的VS代碼或命令提示符(以獲取更改),您應該沒問題地運行e2e測試。