給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