
agoldis/sorry-cypress-api!Update Dockerhub Images
director 服务api 服务dashboard 服务<cypress-root>/packages/server/config/app.yml 中设置 api_url 为 [***]cypress run --parallel --record --key xxx --ci-build-id <buildId> 实例!并行运行 Cypress 测试演示
!Web 仪表盘原型
访问 [***] 查看 Web 仪表盘 alpha 版本的实际效果。
此演示基于免费 Heroku 实例,首次访问时可能需要一分钟启动。
您可以重新配置 Cypress,将 api_url 设置为 "[***]",运行测试后即可在仪表盘中查看结果。
也可参考示例了解并行化的详细用法。
docker-compose -f docker-compose.full.yml up这将在本地启动所有 3 个服务,
重新配置 Cypress,将 api_url 设置为 "http://localhost:1234/",
运行测试 cypress run --parallel --record --key xxx --ci-build-id <buildId>,结果将显示在仪表盘中。这些 Cypress 测试将并行运行,无需连接官方仪表盘。
如需上传失败测试截图,需设置 S3。设置 S3 存储桶后,替换
docker-compose.full.yml中的凭据。
每个包均包含 Dockerfile,可用于构建自定义镜像。
预构建 Docker 镜像可在 [***] 获取。
Docker 镜像标签对应 Git 标签,latest 标签对应 master 分支。
参考 docker-compose.full.yml 获取配置示例。
已迁移至 Wiki - Heroku 教程
🎉 使用 AWS CloudFormation 模板,仅需 5 分钟即可在 AWS 上部署 sorry-cypress,获得完整功能版本,包括:
详见 Wiki - AWS 教程,或直接点击下方按钮 👇🏻
director 服务director 服务负责:
当在 CI 环境的多台机器上启动 Cypress 时,每台机器首先联系仪表盘获取下一个要运行的测试。仪表盘协调不同机器的请求并为每台机器分配测试。这正是 director 服务的功能 👆
shcd packages/director npm install npm run build npm run start # ... Initializing "in-memory" execution driver... Initializing "dummy" screenshots driver... Listening on 1234...
默认情况下,服务在端口 1234 启动,使用内存执行驱动和 dummy 快照驱动。
[***] 上运行的就是这种无状态执行模式,仅并行化测试,不持久化测试结果,也不上传失败测试的截图。
服务使用 dotenv 包 - 要修改默认配置,在服务根目录创建 .env 文件设置环境变量:
sh$ pwd /Users/agoldis/sorry-cypress/packages/director $ cat .env PORT=1234 # DASHBOARD_URL 是 Cypress 客户端显示的"运行 URL" DASHBOARD_URL="[***]" # 执行驱动详情见下文 EXECUTION_DRIVER="../execution/in-memory" # 截图驱动详情见下文 SCREENSHOTS_DRIVER="../screenshots/dummy.driver" # 记录密钥白名单详情见下文 ALLOWED_KEYS="my_secret_key,my_another_secret_key"
director 使用"驱动"定义其不同功能方面。
...用于驱动执行流程。
已实现 2 种"执行驱动":
无状态(in-memory)
在内存中保存运行状态。重启服务会清除所有数据。
这是最简单的实现方式。适用于仅需并行运行测试,无需存储测试结果的场景。
MongoDB 持久化
运行状态(测试运行和结果)持久化到 MongoDB,可通过查询在仪表盘中显示。
要启用此驱动,设置环境变量:
EXECUTION_DRIVER="../execution/mongo/driver" MONGODB_URI="monodgb://your-DB-URI" MONGODB_DATABASE="your-DB-name"
使用 MongoDB 驱动后,可通过 api 和 dashboard 服务查看运行结果。
...用于保存快照和测试视频。为客户端(Cypress 运行器)提供资产(视频和截图)的上传 URL。
Dummy
默认驱动,不执行任何操作 - 快照不会保存。
设置环境变量定义截图驱动:
SCREENSHOTS_DRIVER="../screenshots/dummy.driver"
S3 驱动
生成 S3 存储桶的上传 URL。相应设置环境变量:
SCREENSHOTS_DRIVER="../screenshots/s3.driver" S3_BUCKET="your_bucket_name" S3_REGION="us-east-1"
确保环境中存在具有调用 s3.getSignedUrl 权限的 AWS 凭据。
参考 wiki 页面了解设置 S3 上传截图。
设置 ALLOWED_KEYS 变量可定义逗号分隔的记录密钥列表(通过 --key 选项提供给 Cypress 运行器),director 服务仅接受这些密钥。当 Cypress 在外部 CI 服务器上运行且需将 director 暴露到互联网时,此功能非常有用。
变量为空或未设置时,允许所有记录密钥。
ALLOWED_KEYS="my_secret_key"
api 服务...是一个简单的 GraphQL 服务,允许查询 MongoDB 中持久化的数据。
设置定义 MongoDB 连接详情的环境变量:
MONGODB_URI='mongodb://mongo:27017' MONGODB_DATABASE='sorry-cypress'
dashboard 服务...是基于 ReactJS 实现的 Web 仪表盘,目前处于 alpha 阶段,功能较基础 - 可浏览测试详情、失败记录和查看截图。
生产模式下需提供环境变量 GRAPHQL_SCHEMA_URL - GraphQL 客户端将使用该 URL 下载模式。
设置定义获取模式的 URL 的环境变量:
GRAPHQL_SCHEMA_URL=[***]
可在 [***] 探索当前可用功能。
项目使用 yarn workspaces,在根目录运行 yarn 引导所有依赖。
在开发模式下运行每个包:yarn dev。
建议使用 docker-compose 运行后端服务(director 和 api),在主机上运行 dashboard。
项目使用 docker-compose 便捷地在容器中运行后端服务。
从项目根目录运行 docker-compose build
运行 docker-compose up 启动服务。
上述命令将创建 3 个服务:
27017 上的 MongoDB 实例1234 上的 director 服务4000 上的 api 服务可通过 docker-compose.yml 文件中定义的环境变量修改配置。
--ci-build-id 和其他 CLI 参数director 基于参数创建或获取现有 run,返回随机生成的 machineId 和分配的 runId
每个 Cypress 客户端请求先前返回的 runId 的下一个可用任务
服务查看测试规范列表并返回下一个可用测试
官方 Cypress 仪表盘实现了不同的"智能"策略来选择下一个测试
我开发此项目是因为:
是的,Cypress 是开源软件。
是的。
MIT


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务