Cypress 和 Docker - 无法运行,因为找不到规范文件

Gar*_*uuk 6 docker-compose cypress

我正在尝试在 docker 容器内运行 cypress 测试。我已经简化了我的设置,所以我可以尝试运行一个简单的容器实例并执行一些测试。

我正在使用 docker-compose

version: '2.1'
services:
  e2e:
    image: test/e2e:v1
    command: ["./node_modules/.bin/cypress", "run", "--spec", "integration/mobile/all.js"]
    build:
      context: .
      dockerfile: Dockerfile-cypress
    container_name: cypress
    network_mode: host
Run Code Online (Sandbox Code Playgroud)

和我的 Dokerfile-cypress

FROM cypress/browsers:chrome69

RUN mkdir /usr/src/app
WORKDIR /usr/src/app

RUN npm install cypress@3.1.0

COPY cypress /usr/src/app/cypress
COPY cypress.json /usr/src/app/cypress

RUN ./node_modules/.bin/cypress verify
Run Code Online (Sandbox Code Playgroud)

当我docker-compose up在构建图像后运行时,我看到

cypress | name_to_handle_at on /dev: Operation not permitted
cypress | Can't run because no spec files were found.
cypress |
cypress | We searched for any files matching this glob pattern:
cypress |
cypress | integration/mobile/all-control.js
cypress exited with code 1
Run Code Online (Sandbox Code Playgroud)

我已验证我的 cypress 文件和文件夹已被复制,并且我可以验证我的测试文件是否存在。我已经坚持了一段时间,我不确定除了放弃之外还能做什么。

任何指导表示赞赏。

Gar*_*uuk 5

结果 cypress 会自动检查 /cypress 文件夹中的 /integration。将我所有的 cypress 文件移动到 /cypress 文件夹中使其正常工作。


avi*_*amg 5

问题:在您的自动化套件中找不到 cypress 规格文件。

解决方案cypress/integration:Cypress 测试文件默认位于,但可以配置到其他目录。在此文件夹中按部分插入您的套件:

例如:

 - cypress/integration/billing-scenarios-suite
 - cypress/integration/user-management-suite
 - cypress/integration/proccesses-and-handlers-suite
Run Code Online (Sandbox Code Playgroud)

我假设这些套件目录包含子目录(代表一些微逻辑),因此您需要递归运行它来收集所有文件:

cypress run --spec \
cypress/integration/<your-suite>/**/* , \
cypress/integration/<your-suite>/**/**/*
Run Code Online (Sandbox Code Playgroud)

如果您在 docker 上的 cypress 中运行,请验证 cypress 卷包含测试并映射并安装在容器中的volume部分(在 Dockerfile / docker-compose.yml 文件上)并正确运行它:

docker exec -it <container-id> cypress run --spec \
cypress/integration/<your-suite>/**/* , \
cypress/integration/<your-suite>/**/**/*
Run Code Online (Sandbox Code Playgroud)