我们开始使用 Typescript 中的 Playwright 编写 E2E 测试。到目前为止,我们使用 Selenium,并编写了一个抽象层或一个客户端,它包装了我们的 E2E 测试使用的每个 Selenium 函数。通过 Google 的简单搜索,您可以看到不同的人为 Selenium API 编写的许多不同的客户端。 但是,我没有找到 Playwright 的一个客户端,我想知道我们是否应该实现它?也许是因为 Playwright 已经提供了一个高级 API,旨在易于使用和理解。
我们这样做的主要原因是:
def fill(text: str)
,我们可以在文本字段中输入文本。如果我们为此函数编写一个包装器,默认情况下也会等待直到显示文本,我们将获得更稳定的结果。就此而言,Playwright 提供了异步匹配,它将等待直到满足预期条件。剧作家鼓励这样做,如其文档中所指定:
these matchers allows making the tests non-flaky and resilient
我试图在 Google 中找到 Playwright 的抽象层的实现,但没有找到任何东西。
大约一年前,我将大量 e2e 测试从 selenium 迁移到了 playwright。迁移相对轻松,因为我已经在我的 Selenium 测试中使用了抽象层,并且大多数情况下只需要迁移该层本身。根据我的经验,并假设 Playwright 会自行发展,并且将来可能会有其他东西,我强烈建议如果可能的话保留抽象层。我个人使用通用、特定于应用程序和特定于页面的页面对象的层次结构,这些对象被实现为 TypeScript 类,这些类继承自每个对象作为抽象层。我希望这有帮助。