Cypress Cloud 常见问题
一般问题
什么是Cypress Cloud?

Cypress Cloud 让您能够访问已记录的测试——通常是在从您的CI提供商运行Cypress测试时——并为您提供测试运行期间的详细洞察。
您可以在这里了解更多。
Cypress会记录哪些内容?
Cypress会捕获以下内容:
当您通过cypress run
命令并传递--record
标志运行Cypress时,以下数据会被发送到Cloud:
- 终端中的标准输出
- 测试结果
- 测试定义
- Cypress配置(不包括Cypress环境变量)
- 截图
- 视频
- 与CI和git信息相关的操作系统环境变量
您可以选择在发送到Cloud之前删除视频或截图,这样这些内容就不会被捕获。
当启用测试回放捕获时,以下额外数据会被发送到Cloud。您可以禁用捕获这些数据。
- 被测应用的渲染DOM和CSS样式
- 命令日志中表示的Cypress命令和事件
- 被测应用内的网络流量
- 浏览器控制台日志
Cypress Cloud不会捕获与被测应用代码或与项目关联的任何仓库代码相关的内容。
这与CI有何不同?
Cypress Cloud是您CI提供商的补充,扮演完全不同的角色。
它不会替换或改变与CI相关的任何内容。您仍然会在CI提供商中运行Cypress测试。
Cypress Cloud与CI提供商的区别在于,您的CI提供商不知道Cypress进程内部发生了什么。它仅根据进程是否具有大于0
的退出代码来判断进程是否失败。
Cypress Cloud为您提供运行期间的详细细节。结合使用CI提供商和Cypress,可以提供调试测试运行所需的洞察。
当运行发生且测试失败时,您无需检查CI提供商的stdout
输出,而是可以登录Cypress Cloud,查看stdout
以及测试运行的截图和视频。问题应该会立即清晰可见。
什么算作测试结果?
哪个定价层级最适合您,取决于您的组 织每月记录的测试数量。
当调用cypress run并传递--record
标志同时提供记录--key
时,测试会被记录。这意味着您的测试运行数据正在被“记录”到Cypress Cloud。
我们每次调用it()
函数都算作一个测试。因此,通常每个spec文件中会有多个测试记录,并且一个运行中可能有多个spec文件。只有通过和失败的测试会被计数。待定和跳过的测试不会被计数。
您始终可以从组织的计费与使用情况页面查看已记录的测试数量。
什么算作用户?
用户是指任何登录Cypress Cloud并被邀请查看和审查组织测试结果的人。
费用是多少?
请参阅我们的定价页面了解更多详情。
公共项目和私有项目有什么区别?
公共项目意味着任何人都可以查看其记录的运行。这类似于Github、Travis或CircleCI上的公共项目的处理方式。任何知道您的projectId
的人都可以查看公共项目的记录运行、截图和视频。
私有项目意味着只有您明确邀请到组织的用户才能查看其记录的运行。即使有人知道您的projectId
,除非您邀请了他们,否则他们将无法访问您的运行。
达到测试结果限制后会发生什么?
当达到限制时,使用--record
标志运行的测试将正常运行,但并行化将被禁用,新的测试结果将隐藏在仪表板中,直到您的计划升级或新的使用周期开始。使用周期每月重置一次。
为了避免服务中断,我们建议您查看使用情况并选择满足您需求的计划。您可以通过以下方式操作:
- 登录Cypress Cloud
- 选择您的组织
- 导航到计费与使用情况选项卡
- 查看组织的使用情况
- 向下滚动并在您选择的计划下选择升级
如果我降级账户会怎样?
降级您的账户不会导致无法访问Cypress Cloud。
但是,这将使您的Cypress Cloud账户受到新计划的 限制。例如,降级到_Starter_计划将限制数据保留时间为30天,每个计费周期的测试结果为500。
我可以选择不使用Cypress Cloud吗?
当然可以。Cypress Cloud是与Cypress应用分开的服务,始终是可选的。我们希望您会发现它的巨大价值,但它与运行测试的能力无关。
您始终可以在CI中使用cypress run而不使用--record
标志运行测试,这样不会与我们的外部服务器通信,也不会记录任何测试结果。
使用Cypress Cloud
projectId有什么用 ?
projectId
是一个6字符的字符串,帮助在设置测试记录后识别您的项目。它由Cypress生成,通常可以在您的Cypress配置中找到。
- cypress.config.js 文件
- cypress.config.ts 文件
const { defineConfig } = require('cypress')
module.exports = defineConfig({
projectId: 'a7bq2k',
})
import { defineConfig } from 'cypress'
export default defineConfig({
projectId: 'a7bq2k',
})
更多详情请参阅Cypress Cloud文档中的识别部分。
什么是记录密钥?
_记录密钥_是一个GUID,由Cypress在您设置测试记录后自动生成。它帮助识别您的项目并验证您的项目是否被允许记录测试。
您可以在_设置_选项卡中找到项目的记录密钥。

更多详情请参阅Cypress Cloud文档中的识别部分。
如何记录我的测试?
记录测试后,您将在Cypress Cloud和Cypress应用的运行选项卡中看到它们。
我可以从Cypress Cloud删除运行吗?
您可以归档运行,这样它就不会显示在运行列表或分析中。
**注意:**归 档记录的运行不会影响当月计费的测试记录和计数。
我可以自行托管Cypress Cloud数据吗?
不可以。目前没有自托管的Cypress Cloud版本。
为什么测试并行化基于spec文件而不是单个函数?
Cypress的测试并行化确实基于spec。对于每个spec,Cypress会搭建新的运行上下文,从某种意义上隔离每个spec文件与之前的任何spec文件,并确保下一个spec有一个干净的状态。对每个_单独_测试这样做会非常昂贵,并显著减慢测试运行速度。
Spec文件的持续时间也比单个测试的时间更有意义和一致性,我们可以根据之前记录的平均移动时间对spec进行排序。这在负载均衡快速完成单个测试时用处不大。
因此,为了更好地负载均衡spec,您需要更多具有大致相同运行时间的spec文件。否则,单个长时间运行的测试可能会限制所有测试完成的速度以及运行完成的速度。由于在每个spec文件之前启动新的测试执行上下文并在之后编码和上传视频,使spec文件运行时间短于大约10秒也是徒劳的——因为Cypress的开销会吃掉任何时间节省。
我的CI设置基于Docker,但非常定制。如何负载均衡我的测试运行?
即使您的CI设置与我们有的CI示例和运行我们的示例项目非常不同,您仍然可以利用Cypress Cloud的测试负载均衡。找到在您的容器之间相同但在运行之间不同的变量。例如,可以是一个名为CI_RUN_ID
的环境变量,您在创建容器运行Cypress时设置。您可以通过CLI参数--ci-build-id
在每个容器中启动Cypress时传递此变量:
cypress run --record --parallel --ci-build-id $CI_RUN_ID
作为参考,这里是我们从流行的CI提供商中提取的变量,对于大多数提供商,有一些变量在并行运行的多个容器中设置为相同的值。如果没有共同的变量,尝试使用提交SHA字符串。假设您不会对同一提交多次运行相同的测试,这可能足够完成任务。