在Docker容器中运行Testcafe脚本



我有一个Testcafe脚本(script.js)。我想在Chrome浏览器上运行这个,但是在无头模式下。因此,我使用以下命令:

testcafe chrome:headless script.js

这很好。但是,现在我希望将其Dockerize并在容器中运行。目的是让它在Kubernetes中运行。我怎样才能做到这一点呢?

我看到了Testcafe Docker镜像,但这只是为了运行一个Testcafe实例。它不满足我在Chrome Headless容器中运行此脚本的要求。

(这个问题和我问的不一样)

在Dockerfile中可以看到,testcafe/testcafeDocker镜像是基于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

此外,你可能想在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

相关内容

  • 没有找到相关文章

最新更新