加载中

调试 Scout 测试运行

本页列出了在本地和 CI 中调试 Scout 测试的最快方法。

  • 如果您的测试使用了 log fixture,消息会打印在本地控制台输出中。
  • 如需更详细的输出,请设置 SCOUT_LOG_LEVEL=debug

运行结束后,Playwright 会生成一份 HTML 报告。控制台输出中包含报告路径。要打开最新报告

node scripts/playwright show-report <plugin-path>/test/scout/ui/output/reports
		
注意

CI 运行:在 Buildkite 中,Playwright HTML 报告通常位于作业的 制品 (Artifacts) 下。

UI 模式 允许您以交互方式运行和调试测试。

node scripts/playwright test \
  --config <plugin-path>/test/scout/ui/playwright.config.ts \
  --project local \
  --ui \
  --grep @<location>-<arch>-<domain>
		

--grep 的值应与您使用的套件标签匹配。请参阅 部署标签 (Deployment tags)

当您添加新测试、修复不稳定情况或进行重大更改时,请多次运行相同的测试(建议运行 20–50 次)。请参阅 最佳实践

要在本地重现不稳定情况,您可以使用 --repeatEach 标志多次运行相同的测试。

run-tests 命令支持 --repeatEach 标志,该标志会转发 Playwright 的 --repeat-each 选项。Scout 会根据 --arch--domain 标志自动解析正确的 --project--grep 标签。

node scripts/scout run-tests \
  --arch stateful \
  --domain classic \
  --config src/platform/plugins/shared/dashboard/test/scout/ui/parallel.playwright.config.ts \
  --repeatEach 30
		

该值必须为正整数。有关 run-tests 标志的完整列表,请参阅 运行测试 (Run tests)

如果您需要更多控制权(例如,针对特定的 spec 文件),可以直接使用 --repeat-each 调用 Playwright。

Grep 是关键:务必使用与您运行的目标环境相匹配的测试标题或标签来传递 --grep,否则您可能会运行与所选 --project 不兼容的测试套件。

示例(重复单个 spec 30 次)

node scripts/playwright test dashboard_search_by_value.spec.ts \
  --project mki \
  --grep @cloud-serverless-search \
  --config src/platform/plugins/shared/dashboard/test/scout/ui/parallel.playwright.config.ts \
  --repeat-each 30
		

--project mki 针对 cloud serverless 运行,因此您通常需要 @cloud-serverless-<domain> grep(例如 @cloud-serverless-search)。对于本地运行(--project local),请使用 @local-... 标签。

如果您不确定 --grep 应该使用什么,请检查 test.describe(...) 代码块上的标签(请参阅 部署标签 (Deployment tags))。

有两种常见的方法可以触发不稳定测试运行器(仅限 Elasticians)

  • UI:打开 https://ci-stats.kibana.dev/trigger_flaky_test_runner 并按照提示操作。
  • GitHub PR 评论:在您的合并请求 (pull request) 上发表评论
/flaky scoutConfig:<Playwright config path>:<number of runs>
		

示例

/flaky scoutConfig:src/platform/plugins/shared/dashboard/test/scout/ui/parallel.playwright.config.ts:30
		
© . This website operates independently and is not affiliated with or endorsed by Elasticsearch B.V. All brand names, logos, and trademarks are the property of their respective owners.