天天看點

Angular Karma - Chrome have not captured in 60000 ms

給Google帶偏了,各種改config各種試,花了大半天,給大家提供個思路。

這個錯的root cause是Chrome啟動不了。

為什麼啟動不了?

首先看下Chrome存不存在正不正常能不能啟動!

Command line試一下。

我的情況是本機可以,運維機器不行,缺少相應權限,卻又悲劇地預設運維機器的Chrome沒問題!是以總以為問題出在其他地方!

開Debug可以看到Chrome啟動的command line。首先檢查下路徑對不對。

20-Mar-2019 01:32:56  20 03 2019 01:32:56.381:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/ 
20-Mar-2019 01:32:56  20 03 2019 01:32:56.381:INFO [launcher]: Launching browser ChromeHeadless with unlimited concurrency 
20-Mar-2019 01:32:56  20 03 2019 01:32:56.491:INFO [launcher]: Starting browser ChromeHeadless 
20-Mar-2019 01:32:56  20 03 2019 01:32:56.492:DEBUG [temp-dir]: Creating temp dir at C:\Windows\TEMP\karma-98458715 
20-Mar-2019 01:32:56  20 03 2019 01:32:56.493:DEBUG [launcher]: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --user-data-dir=C:\Windows\TEMP\karma-98458715 --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-background-timer-throttling --disable-renderer-backgrounding --disable-device-discovery-notifications http://localhost:9876/?id=98458715 --headless --disable-gpu --remote-debugging-port=9222 
20-Mar-2019 01:34:56  20 03 2019 01:34:56.511:WARN [launcher]: ChromeHeadless have not captured in 120000 ms, killing. 
20-Mar-2019 01:34:58  20 03 2019 01:34:58.526:WARN [launcher]: ChromeHeadless was not killed in 2000 ms, sending SIGKILL. 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.542:WARN [launcher]: ChromeHeadless was not killed by SIGKILL in 2000 ms, continuing. 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.542:DEBUG [launcher]: Process ChromeHeadless exited with code -1 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.543:DEBUG [temp-dir]: Cleaning temp dir C:\Windows\TEMP\karma-98458715 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.547:DEBUG [launcher]: ChromeHeadless failed (timeout). Not restarting. 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.550:DEBUG [karma]: Run complete, exiting. 
20-Mar-2019 01:35:00  20 03 2019 01:35:00.551:DEBUG [launcher]: Disconnecting all browsers 
20-Mar-2019 01:35:00  npm ERR! Test failed.  See above for more details. 

           

Debug這樣開。

karma.conf.js

logLevel: config.LOG_DEBUG,
           

可以這樣加大啟動時間:

captureTimeout:120000

(default 60000)。

另外,

browsers: ['Chrome']

browsers: ['ChromeHeadless']

的差別是:ChromeHeadless是無彈窗模式。

自定義Browser,要注意自定義的名稱是否對應(ChromeHeadless_test)。

browsers: ['ChromeHeadless_test'],
    customLaunchers: {
      ChromeHeadless_test: {
        base: 'ChromeHeadless',
        flags: [
          '--disable-extensions', 
          '--no-sandbox', 
          '--disable-web-security', 
          '--no-proxy-server']
      }
    },

           

實際測試中剪掉一些feature會快兩三秒,如非必要還是用預設就好,不喜彈窗可用

browsers: ['ChromeHeadless']

其他問題可以直接看launcher源代碼,可能還快過Google,比較簡單。

https://github.com/karma-runner/karma-chrome-launcher

繼續閱讀