我使用安装了https://github.com/cypress-io/code-coverage的 Cypress v7.5.0 。配置和设置没有什么特别之处,就像描述中一样。
我有一个在 docker 容器内本地运行的 Vue3 测试应用程序。当我在主机上运行 Cypress 时,一切正常——覆盖、测试、没有问题。但是,如果我从另一个 docker 容器中运行 Cypress,则测试会由于代码覆盖而失败,请参见屏幕截图:
我知道错误来自代码覆盖,不仅是因为截图,还因为当我通过运行测试来忽略覆盖时,测试运行良好cypress run --env coverage=false
。
这是我的 docker-compose 设置:
version: '3.1'
services:
phoenix:
build:
context: .
container_name: phoenix
ports:
- "4000:4000"
- "4001:4001"
networks:
- mapp
volumes:
- ../:/app
command: bash -c "
cd /app && make run_phoenix_inside_docker
"
cypress:
container_name: cypress
# the Docker image to use from https://github.com/cypress-io/cypress-docker-images
image: "cypress/included:7.5.0"
depends_on:
- phoenix
entrypoint: ["/bin/bash", "./cypress_entrypoint.sh"]
environment:
# pass base url to test pointing at the web application
- CYPRESS_baseUrl=http://phoenix:4000
# share the current folder as volume to avoid copying
working_dir: /
volumes:
- ../E2E:/e2e
- ./cypress_entrypoint.sh:/cypress_entrypoint.sh
networks:
- mapp
networks:
mapp:
phoenix 是 vue3 应用程序,当我将 phoenix 添加到我的主机时,它在主机上运行良好,/etc/hosts
但当我从赛普拉斯容器内运行时却不行。有人知道那个Failed to fetch
错误是什么意思吗?文件是顺便写的,所以对coverage文件夹有写访问权限。
柏树入口点只是
#!/bin/bash
echo "Init cypress..."
tail -F /dev/null
避免在启动容器后立即运行测试。我猛击容器并cd e2e && cypress run
从那里运行。