【发布时间】:2019-05-30 00:41:03
【问题描述】:
对于 CI 服务器上的测试,我想使用 Chrome 的图像而不是 PhantomJS。 我可以在有和没有 puppeteer 的情况下做到这一点,但两者都需要我在服务器上安装 chrome-stable 包。因此,我想要一个更轻量级的方法,因此使用 docker 图像。
对于 Karma,根据文档,如果我想使用自定义浏览器,我必须为浏览器指定脚本。此外,Karma 会将 1 个参数传递给该脚本,即 url。为此,我还拉取了无浏览器的 docker 镜像browserless quickstart。
我已经创建了脚本并且可以调整 Karma 测试,但看起来 karma 在脚本完成执行之前进入了失败状态。关于我在这里出错的任何想法。容器按预期运行,对 localhost:3000 的 curl 命令返回预期结果。
自定义脚本
#!/bin/bash
set -euxo pipefail
URL="$1"
# http://localhost:9876/?id=30931514 this is the argument passed in by Karma
# Change the port to the port the docker container exposes 3000
DOCKER_URL=$( echo "$URL" | sed s/9876/3000/g )
killDockerContainer(){
echo 'Killing Docker Container'
docker rm -f browserless
}
trap "killDockerContainer; exit 0" EXIT
echo "Launching browserless: $DOCKER_URL"
docker run -d -p 3000:3000 --shm-size 2gb --name browserless --restart always -e "DEBUG=browserless/chrome" -e "MAX_CONCURRENT_SESSIONS=10" browserless/chrome
测试运行的输出
3 01 2019 11:53:08.471:INFO [karma-server]: Karma v3.1.3 server started at
http://0.0.0.0:9876/
03 01 2019 11:53:08.471:INFO [launcher]: Launching browsers /software/applications/app/browserle 14% building modules 38/38 modules 0 active03 01 2019 11:53:08.491:INFO [launcher]: Starting browser /software/applications/app/browserless.sh
03 01 2019 11:53:08.491:DEBUG [temp-dir]: Creating temp dir at /tmp/karma-34604420
03 01 2019 11:53:08.543:DEBUG [launcher]: /software/applications/app/browserless.sh http://local 17% building modules 60/60 modules 0 active03 01 2019 11:53:10.906:DEBUG [launcher]: Process /software/applications/app/browserless.sh exited with code 0
03 01 2019 11:53:10.907:ERROR [launcher]: Cannot start /software/applications/app/browserless.sh
+ URL='http://localhost:9876/?id=34604420'
++ sed s/9876/3000/g
++ echo 'http://localhost:9876/?id=34604420'
+ DOCKER_URL='http://localhost:3000/?id=34604420'
+ trap 'killDockerContainer; exit 0' EXIT
+ echo 'Launching browserless: http://localhost:3000/?id=34604420'
+ docker run -d -p 3000:3000 --shm-size 2gb --name browserless --restart always -e DEBUG=browserless/chrome -e MAX_CONCURRENT_SESSIONS=10 domain:9082/browserless/chrome 'http://localhost:3000/?id=34604420'
+ killDockerContainer
+ echo 'Killing Docker Container'
+ docker rm -f browserless
+ exit 0
03 01 2019 11:53:10.907:ERROR [launcher]: /software/applications/app/browserless.sh stdout: Launching browserless: http://localhost:3000/?id=34604420
b7144002bc2c9abc786dbdd015a8426c9afcbd0713f408cf3103e980e2278649
Killing Docker Container
browserless
【问题讨论】:
-
我必须添加,在我的 karma 配置中使用 puppeteer 而不下载 chromium 并且根本不使用它会导致相同的输出
标签: angular karma-jasmine karma-runner puppeteer