在无头的Docker容器中的Chrome上运行Testcafe脚本

基特·苏加塔达萨(Keet Sugathadasa)

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

testcafe chrome:headless script.js

这很好。但是,现在我希望对此进行Dockerize并在容器中运行。目的是使它在Kubernetes中运行。我该如何实现?

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

这个问题与我要问的不同)

matt_j

如您在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中运行一些测试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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章