我一直在使用 Playwright 编写各种测试,将它们导入到一个单独的文件中并从那里执行。我的目标是使用单个工作人员按指定顺序执行测试。
按指定顺序启动的一系列不同测试
我不喜欢的是 Playwright 为每个测试启动一个新的浏览器上下文。 我在 DZone 上找到了一个可能的解决方案,它解释了如果您不将页面对象传递给每个测试而仅在 beforeAll 函数中声明它,那么测试将使用相同的上下文。不幸的是,我无法复制该示例,因为我的每个测试都位于不同的文件中并导出为函数(下图中的示例)。
测试示例
我一直在尝试通过在 beforeAll 测试中或在包含其中一个测试的函数之前声明页面对象来解决此问题,或者从不同的文件导入它并将其用作函数参数,但所有解决方案似乎都不起作用。添加一个失败的例子:
失败的例子
有没有办法在测试函数之前声明页面对象,或者使用 JavaScript 从不同的文件导入它并将其用作函数参数?
在 globalsetup 中创建一个 state.json 并在每个测试中重用它。
https://playwright.dev/docs/test-auth
或在多个测试中重复使用登录页面
https://playwright.dev/docs/test-auth#reuse-the-signed-in-page-in-multiple-tests
Playwright 提供全局设置和拆卸,在全局设置中创建页面实例,您可以在测试中的任何位置使用它。
声明 page 全局并禁用并行性,对我有用。 只需设置一名工人即可完成此操作。
npx playwright test --ui --workers=1