[microsoft/playwright]增强 forbidOnly 模式消息以引导用户选择配置选项

2024-04-10 968 views
6

您好,我将此 PR 发布为试探性,看看是否有兴趣改进此错误消息,但该副本绝不是最终版本,我愿意接受改进建议。

我的目的是:

  • 解释什么是“重点项目” - 我们正在谈论一个测试,并且重点很可能是使用only

    还有其他类型的“物品”吗?除了这些之外,还有其他方法可以让他们集中注意力吗only

  • 解释为什么我们处于专注模式以及如何控制它

    CI=1默认的脚手架 Playwright 配置文件包含由是否设置驱动的 forbidMode 表达式。我在尝试在本地重现 CI 问题时遇到了这个问题,所以我设置了它并在不知不觉中进入了仅焦点模式。我不知道这种模式是一个东西,因为我使用的是默认配置,npm init并且不熟悉其中的所有选项。

有没有办法在这个函数中判断我们是在 TypeScript 还是 JavaScript 项目中?我将使用它来显示具有正确扩展名的配置文件名。

回答

4

由于更改,一些测试失败了!

9

@pavelfeldman 是的,我会调整它们,但我很好奇你是否对消息副本有更好的建议,以及是否有办法首先区分项目是 TypeScript 还是 JavaScript。你有什么意见吗?

4

我会推荐类似的东西

Error: item focused with ".only" is not allowed, either by 'forbidOnly' option in 'playwright.config.[jt]s' or --forbid-only flag: "${title}"

或者您甚至可以使其更具体,请参见下文。

是否有办法先区分项目是 TypeScript 还是 JavaScript。

在该createRootSuite()函数中,您可以访问配置文件 viatestRun.config.config.configFile并检查是否--forbid-only指定了 via testRun.config.configCLIOverrides.forbidOnly。请注意,配置文件是可选的。

4

@dgozman 有什么方法可以判断该项目是npm init使用 JavaScript 还是 TypeScript 语言选择的?这将帮助我打印正确的配置文件扩展名作为消息的一部分。

我还没有更新测试,一旦我克隆了 Playwright 并弄清楚如何在本地运行测试,我就会更新测试。

9

测试中发生了一些奇怪的事情。

我正在跟踪,它错过了我在运行之前必须执行CONTRIBUTING.md的步骤,但即使在之后,想要运行 9k 测试,我只想运行这些测试:npx playwright installnpm testnpm test

  • tests/playwright-test/reporter.spec.ts 应向报告者报告仅禁止错误
  • tests/playwright-test/runner.spec.ts 当使用仅禁止时,它不应该允许集中测试

当我将其中一个测试更改为 时test.only,它没有任何效果,npm test仍然想运行 9k 测试。我注意到显示的用于运行特定测试的命令playwright test没有使用,npm test所以我尝试运行该命令npx playwright test并在以下行中收到错误:

错误:需要第二次@playwright/test

我返回,npm test --grep=reporter但仍然计划运行 9k 次测试。

我究竟做错了什么?

6

没有。但您可以configFile按照我上面的建议进行检查,或者事件打印它的路径。

8

抱歉,我一开始误解了你的建议!现在我明白你的意思以及如何找到正确的道路。

7

我正在关注,但它错过了我之前CONTRIBUTING.md必须执行的步骤npx playwright installnpm test

我们应该解决这个问题!如果您愿意,请向我们发送 PR?

当我将其中一个测试更改为 时test.only,它没有任何效果,npm test仍然想运行 9k 测试。

是的,这就是测试运行程序测试。您可以使用npm run ttest(注意 double t)来运行它们。文档中也可能缺少这一点。

npm run ttest -- --grep "should report forbid-only error to reporter"

我尝试运行它npx playwright test

是的,那是行不通的。我们正在使用复杂的设置来运行测试运行器测试,所以这npm run ttest就是要走的路。

2

如果您愿意,请向我们发送 PR?

我会!会做。

npm run ttest -- --grep

完美,谢谢,也会添加到 PR 中!

最后一件事:我还将添加一条关于npm run build在进行更改后重新运行测试之前需要运行的注释。

8

好吧,这应该很顺利。测试正在本地通过,我们甚至测试了一个中存在而另一个中不存在的配置文件,以及现在反映这一点的错误消息。感谢您参与此公关和所有有用的提示!

1

@microsoft-github-policy-service 同意

1

需要解决这个问题:

runner.spec.ts:60:5 › it should not allow a focused test when forbid-only is used 
Error: expect(received).toContain(expected) // indexOf
Expected substring: "Error: … the Playwright configuration file: \"tests/focused-test.spec.js i-am-focused\""
Received string:    "Error: … the Playwright configuration file: \"tests\\focused-test.spec.js i-am-focused\"·

我需要使用特定于平台的路径分隔符在 Windows 上进行此传递。接下来的是。

0

我收到看似无关的随机测试失败,不知道如何修复它们?

8

CI 上再次出现一些失败的测试,但我认为它们与我的更改无关。

6

谢谢你!!!