
agoldis/sorry-cypress-dashboard!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种"执行驱动":
无状态
将运行状态保存在内存中。这意味着重启服务会清除所有数据。
这是最简单的实现方式。
适用于仅需并行运行测试,无需存储测试结果的场景。
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 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务