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

2vuwiymt  于 2022-12-06  发布在  Go
关注(0)|答案(1)|浏览(153)

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

testcafe chrome:headless script.js

这很好用。但是,现在我想把它对接并在一个容器中运行它。目的是让它在Kubernetes中运行。我该怎么做呢?
我看到了Testcafe Docker image,但这只是为了运行一个Testcafe示例,它不符合我在容器中的Chrome Headless中运行此脚本的要求。
This question与我所问的不同)

jdg4fx2g

jdg4fx2g1#

正如您在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等命令在Kubernetes中运行一些测试。
我基于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

相关问题