現在 azure pipeline 來到前端的unit test 階段
想像中應該就像在自己電腦裡執行一樣,如果可以正常用chrome headless 執行 unit test 放到docker 應該不會有問題。BUT 事情總是沒有這麼單純。
以下是我部份的karma.config.js 跟DockerFile
module.exports = function (config) {
config.set({
customLaunchers: {
ChromeHeadlessDocker: {
base: 'ChromeHeadless',
flags: [
'--disable-web-security',
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--remote-debugging-port=9223',
'--headless',
'--disable-gpu'
]
}
},
.
.
.
});
};
DockerFile
RUN ng test --watch=false --code-coverage --browsers=ChromeHeadlessDocker --reporters=junit,progress
結果一直會出現
ChromeHeadless have not captured in 60000 ms, killing.
這才想到…我沒有裝chrome在docker container裡面
原本我是用
RUN Invoke-WebRequest -OutFile ChromeStandaloneSetup64.exe https://dl.google.com/tag/s/installdataindex/update2/installers/ChromeStandaloneSetup64.exe;
RUN ./ChromeStandaloneSetup64.exe /silent /install
但是卻一直裝不成功。( 如果有裝成功會在 C:\Program Files (x86)\ 底下有個Google 的目錄)
後來到 https://cloud.google.com/chrome-enterprise/browser/download/ 下載MSI的版本,先COPY到 image裡面再下指令裝
COPY ./GoogleChromeStandaloneEnterprise64.msi /
RUN Start-Process -FilePath msiexec -ArgumentList /q, /i, GoogleChromeStandaloneEnterprise64.msi -Wait ; `
Remove-Item -Force GoogleChromeStandaloneEnterprise64.msi
確認chrome有裝起來之後,再執行docker build 還是出現
ChromeHeadless have not captured in 60000 ms, killing.
把 karma.config.js 裡的 logLevel: config.LOG_INFO, 改成 config.LOG_DEBUG 也沒得到什麼有用的資訊
這個時候己經快瘋了,在這裡卡關卡了三天,無論改config或者一些奇奇怪怪的方法都沒效。
而且重點是網路上找到的方法,其實都是Linux container的解決方案。 Windows Container 根本一整個弱掉了。
後來終於在這裡找到 https://stackoverflow.com/questions/52948655/chrome-on-windows-docker-container-is-not-working 原來是缺少字型的問題. 一整個 WHAT THE ~~~
這位好心的 Prom3theu5 還提供了字型及安裝方法
https://github.com/prom3theu5/ServerCoreFonts
照著上面的方法,安裝字型之後終於可以看到開始測試的訊息了。
2019-07-08T00:39:39.6996247Z [32m08 07 2019 08:39:39.675:INFO [karma-server]: [39mKarma v3.1.1 server started at http://0.0.0.0:9876/
2019-07-08T00:39:39.6999650Z [32m08 07 2019 08:39:39.698:INFO [launcher]: [39mLaunching browsers ChromeHeadlessCI with concurrency unlimited
2019-07-08T00:39:39.7124483Z [32m08 07 2019 08:39:39.710:INFO [launcher]: [39mStarting browser ChromeHeadless
2019-07-08T00:40:35.5387718Z [32m08 07 2019 08:40:35.537:INFO [HeadlessChrome 0.0.0 (Windows 10 0.0.0)]: [39mConnected on socket Gsf6g9YFWi0lxoFVAAAA with id 57991930
2019-07-08T00:40:49.6356010Z HeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 0 of 439 SUCCESS (0 secs / 0 secs)
2019-07-08T00:40:49.7481854Z [1A [2KHeadlessChrome 0.0.0 (Windows 10 0.0.0): Executed 1 of 439 SUCCESS (0 secs / 0.079 secs)
沒有留言:
張貼留言