Runner 和 Reporter 是 Cypress 测试界面的核心组件,可在测试执行期间提供视觉反馈。Runner 负责在 iframe 中显示被测应用程序 (AUT) 并管理测试执行显示,而 Reporter 则呈现测试结果、命令日志和错误信息。本文档重点介绍这些显示系统;有关命令实际执行方式的信息,请参阅 Command Execution。
Runner 和 Reporter 协同工作,打造 Cypress 测试 UI 体验
来源:packages/runner/src/iframe/iframe.scss
Runner 和 Reporter 系统是独立的但相互关联的组件,负责测试可视化的不同方面
来源:packages/runner/src/iframe/iframe.scss
Runner 管理被测应用程序的显示,并处理测试执行的视觉方面。
Runner 管理两个关键的 iframe
来源:packages/runner/src/iframe/iframe.scss:1-38
Runner 通过 iframe 样式提供重要的视觉提示
在 Cypress Studio 模式下,Runner 通过边框样式显示不同的视觉状态
来源:packages/runner/src/iframe/iframe.scss:55-96
Reporter 随着测试的执行实时显示测试结果,将它们分层组织,并提供有关测试状态和失败的详细信息。
当测试失败或 Runner 遇到错误时,Reporter 会提供详细的错误信息
对于意外退出,详细的错误消息包括:
来源:cli/__snapshots__/spawn_spec.js:18-35
Runner、Reporter 和其他组件在测试执行期间进行通信
Runner 和 Reporter 具有可调整大小的界面,允许用户调整每个组件的查看区域
来源:packages/runner/src/iframe/iframe.scss:40-53
Cypress Studio 模式有几种视觉状态,Runner 通过 iframe 样式显示这些状态
| Studio 状态 | 视觉指示器 | CSS 类 |
|---|---|---|
| 开放 | 纯蓝色边框 | .studio-is-open |
| 加载 | 浅蓝色边框 | .studio-is-loading |
| 失败 | 红色边框 | .studio-is-failed |
| 准备就绪 | 动画蓝色/浅蓝色边框 | .studio-is-ready |
当 Studio 加载时,AUT Iframe 上会显示一个带有旋转图标的半透明覆盖层。
来源:packages/runner/src/iframe/iframe.scss:55-96
AUT Iframe 的样式设计清晰区分于其他元素
.aut-iframe {
background-color: #fff;
box-shadow: 0 6px 10px #555;
border: none;
display: block;
height: 100%;
overflow: auto;
width: 100%;
}
Spec Iframe 从视图中隐藏,但对测试执行至关重要
.spec-iframe {
border: none;
height: 0;
position: absolute;
visibility: hidden;
width: 0;
}
来源:packages/runner/src/iframe/iframe.scss:22-38
当测试 Runner 意外退出时,它会提供格式化的错误消息以帮助调试
The Test Runner unexpectedly exited via a exit event with signal SIGKILL
Please search Cypress documentation for possible solutions:
https://on.cypress.io
Check if there is a GitHub issue describing this crash:
https://github.com/cypress-io/cypress/issues
Consider opening a new issue.
----------
Platform: darwin-x64 (Foo-OsVersion)
Cypress Version: 0.0.0-development
来源:cli/__snapshots__/spawn_spec.js:18-35
Runner 和 Reporter 与多个其他 Cypress 系统集成
Runner 和 Reporter 构成了 Cypress 测试执行的核心用户界面。Runner 提供被测应用程序的视觉显示,具有适当的框架和视觉反馈,而 Reporter 以分层、信息丰富的方式组织和显示测试结果。它们共同创造了一个交互式的测试体验,帮助开发人员理解测试行为并高效地调试失败。