我们开始在Typescript中使用Playwright编写E2E测试。到目前为止,我们一直在使用Selenium,我们编写了一个抽象层,或者说一个客户端,它 Package 了E2E测试所使用的每个Selenium函数。在Google中进行简单的搜索,您可以看到许多不同的客户端,这些客户端由不同的人编写到Selenium API。然而,我没有找到一个客户端,甚至一个剧作家,我想知道我们是否应该实现它或不?也许是因为Playwright已经提供了一个高级API,该API被设计为易于使用和理解。
我们这样做的主要原因是:
1. * 提高可靠性和稳定性:因为Playwright Package 器可以提供额外的功能,它们可以帮助提高自动化测试的可靠性。通过更容易编写不太可能失败的测试,Playwright Package 器可以帮助确保测试提供准确和一致的结果*。例如:通过使用Playwright函数def fill(text: str)
,我们可以在文本字段中输入文本。如果我们为这个函数编写一个 Package 器,默认情况下,它也会等待文本显示,我们将得到更稳定的结果。对于这个问题,Playwright提供了异步匹配,它将等待直到满足预期的条件。Playwright鼓励这样做,如其文档中所述:these matchers allows making the tests non-flaky and resilient
个
1.**与Playwright的API解耦:**通过使用Playwright的客户端,我们的测试代码与客户端的API交互,而不是直接与Playwright的API交互。如果Playwright经历了重大的更改或引入了破坏性的更新,我们只需要更新 Package 器来适应这些更改。我们的测试代码的其余部分不受影响,从而减少了维护自动化套件所需的工作量。也就是说:Selenium在4.0版本中在不同的函数和组件中引入了许多breaking changes。幸运的是,由于我们使用的是 Package 了API的客户端,测试代码不受影响,我们只需要更新客户端。
1.错误处理和报告: Package 器可以实现一致的错误处理策略,并在异常发生时提供有意义的错误消息
因此,我的问题是,你会推荐在剧作家上写一个抽象层吗?
我试图在Google中为Playwright找到一个提取层的实现,但没有找到任何东西。
1条答案
按热度按时间uqjltbpv1#
大约一年前,我将大量的e2e测试从selenium迁移到了playwright。这个迁移相对来说比较轻松,因为我在selenium测试中已经使用了一个抽象层,而且大多数情况下只需要迁移层本身。根据我的经验,假设Playwright会自己发展,将来可能会有其他的东西,我强烈建议如果可能的话保留你的抽象层。我个人使用一个通用的、应用程序特定的和页面特定的页面对象的层次结构,这些对象被实现为TypeScript类,这些类从每个抽象层继承。希望这能帮上忙。