我有一个Testcafe脚本(script.js
)。我想在Chrome浏览器上运行此程序,但要使用无头模式。因此,我使用以下命令。
testcafe chrome:headless script.js
这很好。但是,现在我希望对此进行Dockerize并在容器中运行。目的是使它在Kubernetes中运行。我该如何实现?
我看到了Testcafe Docker映像,但这只是运行一个Testcafe实例。它无法满足我在容器的Chrome Headless中运行此脚本的要求。
(这个问题与我要问的不同)
如您在Dockerfile中看到的那样,testcafe/testcafe
Docker映像基于Alpine Linux映像。它不包含Chrome
浏览器,但是您可以使用Chromium
浏览器运行测试。可以在本文档中找到更多信息
TestCafe提供了一个预先配置的Docker映像,其中安装了Chromium和Firefox。
我为您创建了一个简单的示例,以说明其工作原理。在我的本地计算机上,我的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中运行一些测试Jobs
。
我Dockerfile
基于testcafe/testcafe
图像创建了图像,该图像将测试脚本复制到适当的位置,然后从中构建图像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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句