运行 Chrome 在 Docker 容器中无头的 Testcafe 脚本
Run a Testcafe Script on Chrome Headless in a Docker Container
我有一个 Testcafe 脚本 (script.js
)。我想在 Chrome 浏览器上 运行 这个,但在无头模式下。所以,我使用以下命令。
testcafe chrome:headless script.js
这很好用。但是,现在我希望将它和 运行 Dockerize 到一个容器中。目的是在 Kubernetes 中得到这个 运行ning。我怎样才能做到这一点?
我看到 Testcafe Docker image,但这只是 运行 一个 Testcafe 实例。它不符合我 运行 在容器中 Chrome Headless 中安装此脚本的要求。
(This question和我问的不一样)
如您在 Dockerfile 中所见,testcafe/testcafe
Docker 图像基于 Alpine Linux 图像。它不包含 Chrome
浏览器,但您可以 运行 使用 Chromium
浏览器进行测试。
可以在 documentation
中找到更多信息
TestCafe provides a preconfigured Docker image with Chromium and Firefox installed.
Docker
我已经为您创建了一个简单的示例来说明它是如何工作的。
在我的本地机器上,我有 tests
目录,其中包含一个简单的测试脚本 script.js
:
root@server1:~# cat /tests/script.js
import { Selector } from 'testcafe';
fixture `First test`
.page `http://google.com`;
test('Test 1', async t => {
// Test code
});
我可以使用以下命令在容器中 运行 这个测试脚本:
root@server1:~# docker run -v /tests:/tests -it testcafe/testcafe chromium:headless /tests/script.js
Running tests in:
- Chrome 86.0.4240.111 / Linux 0.0
First test
✓ Test 1
1 passed (1s)
Kubernetes
此外,您可能希望 运行 在 Kubernetes 中进行一些测试,例如 Jobs
。
我根据 testcafe/testcafe
图像创建了 Dockerfile
,将我的测试脚本复制到适当的位置,然后从这个 Dockerfile
:
FROM testcafe/testcafe
...
COPY tests/script.js /tests/script.js
...
最后,我使用上图创建了 Job
(也可以是 CronJob
):
apiVersion: batch/v1
kind: Job
metadata:
name: simple-test
spec:
backoffLimit: 3
template:
spec:
containers:
- image: <IMAGE_NAME>
name: simple-test
args: [ "chromium:headless", "/tests/script.js" ]
restartPolicy: Never
我们可以看到Job
成功完成:
$ kubectl get job,pod
NAME COMPLETIONS DURATION AGE
job.batch/simple-test 1/1 18s 14m
NAME READY STATUS RESTARTS AGE
pod/simple-test-w72g2 0/1 Completed 0 14m
我有一个 Testcafe 脚本 (script.js
)。我想在 Chrome 浏览器上 运行 这个,但在无头模式下。所以,我使用以下命令。
testcafe chrome:headless script.js
这很好用。但是,现在我希望将它和 运行 Dockerize 到一个容器中。目的是在 Kubernetes 中得到这个 运行ning。我怎样才能做到这一点?
我看到 Testcafe Docker image,但这只是 运行 一个 Testcafe 实例。它不符合我 运行 在容器中 Chrome Headless 中安装此脚本的要求。
(This question和我问的不一样)
如您在 Dockerfile 中所见,testcafe/testcafe
Docker 图像基于 Alpine Linux 图像。它不包含 Chrome
浏览器,但您可以 运行 使用 Chromium
浏览器进行测试。
可以在 documentation
TestCafe provides a preconfigured Docker image with Chromium and Firefox installed.
Docker
我已经为您创建了一个简单的示例来说明它是如何工作的。
在我的本地机器上,我有 tests
目录,其中包含一个简单的测试脚本 script.js
:
root@server1:~# cat /tests/script.js
import { Selector } from 'testcafe';
fixture `First test`
.page `http://google.com`;
test('Test 1', async t => {
// Test code
});
我可以使用以下命令在容器中 运行 这个测试脚本:
root@server1:~# docker run -v /tests:/tests -it testcafe/testcafe chromium:headless /tests/script.js
Running tests in:
- Chrome 86.0.4240.111 / Linux 0.0
First test
✓ Test 1
1 passed (1s)
Kubernetes
此外,您可能希望 运行 在 Kubernetes 中进行一些测试,例如 Jobs
。
我根据 testcafe/testcafe
图像创建了 Dockerfile
,将我的测试脚本复制到适当的位置,然后从这个 Dockerfile
:
FROM testcafe/testcafe
...
COPY tests/script.js /tests/script.js
...
最后,我使用上图创建了 Job
(也可以是 CronJob
):
apiVersion: batch/v1
kind: Job
metadata:
name: simple-test
spec:
backoffLimit: 3
template:
spec:
containers:
- image: <IMAGE_NAME>
name: simple-test
args: [ "chromium:headless", "/tests/script.js" ]
restartPolicy: Never
我们可以看到Job
成功完成:
$ kubectl get job,pod
NAME COMPLETIONS DURATION AGE
job.batch/simple-test 1/1 18s 14m
NAME READY STATUS RESTARTS AGE
pod/simple-test-w72g2 0/1 Completed 0 14m