问题标签 [playwright-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
315 浏览

javascript - 如何从像测试这样的用户旅程的玩笑转移到使用夹具的@playwright/test?

我个人认为playwright这是一种进入系统/端到端测试方向的工具。因此,我使用playwright+jest来构建用户旅程并将它们集成到 CI/CD 流程中。

由于playwright创建了自己的测试运行器,具有拍摄视频和跟踪故障等有用功能,因此jest@playwright/test. 在他们的主页上playwright建议使用测试装置,所以我绝对想将它们包含在开关中。

下面我以亚马逊为例。

使用playwright+jest我做的第一件事是为环境的通用设置创建一个函数:

当然还有一个再次清理所有内容的功能:

然后我会为每个用户旅程使用一个文件。在亚马逊的情况下,用户旅程可能是订单的成功处理:

如您所见,我将测试分成逻辑部分以使其更具可读性,并查看它在哪个步骤(test块)失败。

将其迁移到@playwright/test+ 固定装置的最佳方法是什么?

  • 您将如何迁移setupSuite/ teardownSuite?是的,您可以使用夹具,但setupSuite需要像 userConfig 这样的参数。是否可以有参数化的夹具?
  • 您将如何使用固定装置构建测试?例如,如果您想模拟完整的用户旅程,那么测试将变得比仅测试登录更大。然后,一个测试块将有很多行,而无法构造它们。
  • 是否可以设置一个页面以便在所有测试中共享?beforeAll钩子不接收任何页面,并且每个块test总是接收自己的页面。test这意味着块之间没有连接。如果您手动创建一个页面beforeAll并在每次测试中使用相同的页面实例,这可能是一种不好的做法,视频和跟踪可能不起作用..那么这里可以做什么?
  • 用户旅程之类的测试真的很糟糕吗?我觉得它们不能与playwright文档中提到的夹具方法很好地结合起来。playwright感觉非常data-driven适合end-to-end测试 IMO的夹具。
0 投票
1 回答
1260 浏览

css-selectors - 相当于剧作家中的 by.name 选择器

我一直在尝试学习剧作家,并且在实施过程中我正在尝试编写一个测试用例,它通过名称找到一个输入元素并用一些值填充它

不幸的是,该元素只有类和名称属性。我一直在尝试找到一种阅读方法,但在文档上没有找到任何内容,或者我可能错过了

请帮助

0 投票
1 回答
379 浏览

javascript - 无法运行剧作家“写作断言”示例

TL;博士

无法从Playwright Getting Started页面获取“Writing Assertions”示例。

全文

我正在寻找Playwright来编写测试。我正在通过Getting Started示例进行工作,并且遇到了Example #2 (Writing Assertions)的问题。我正在我的工作机器 (macOS) 上执行此操作,并且还没有机会在家里的 Linux 机器上尝试它,如果这有所作为的话。

有问题的例子是:

我遇到的最初问题是这条线失败了:

我能够通过更改.toHaveTitle()查找正则表达式来解决它,所以现在它看起来如下所示:

但是,当我运行它时,我现在得到以下信息:

注释掉每个await expect(...)语句只会在下一个await expect(...)语句中重复错误。如果我将它们全部注释掉,那么会await page.click(...)按预期运行,但下一个会await expect(...)再次失败。

更新

所以......问题似乎在于,问题在于page.locator(...)所写的返回多个元素,这应该是显而易见的,因为我看到了以下错误:

评估失败:错误:违反严格模式:选择器解析为 2 个元素。

所以我更改了以下行:

我认为这可以解决问题。但是,现在我超时了。

0 投票
1 回答
255 浏览

playwright - 无法通过 VNC 查看器查看剧作家 docker 测试执行

我正在尝试在 mcr.microsoft.com/playwright:bionic docker container 中执行脚本。

我已经暴露了端口 5900,如下所示,但是当我尝试使用 vnc 查看器 localhost:5900 时无法连接到主机。我可以通过 vnc 查看器查看其他 docker 容器,例如 selenium/standalone-chrome 执行,但不能通过 playwright !

如何查看剧作家 docker 容器测试执行情况?还有其他方法可以让我实时查看测试执行吗?任何帮助将非常感激 !

0 投票
1 回答
202 浏览

docker - 如何获取 Playwright 的 Docker 容器的 playwrightUrl(需要集成空手道脚本)?

我正在尝试在mcr.microsoft.com/playwright:bionicDocker 容器中执行空手道脚本。

我已经暴露了端口 5900,如下所示,但不确定如何获取playwrightUrl容器的端口。我是否需要在node server.js其中执行以获取 websocket 端点?

0 投票
2 回答
353 浏览

javascript - 如何在剧作家中选择部分句子?

在我的自动化脚本中,我有一句话 - “我的帐户什么时候准备好?”。从这句话中我想选择“帐户”这个词。所以基本上我想突出显示该文本,然后右键单击它。我坚持使用自动化工具剧作家突出显示文本“帐户”。

页面元素看起来像这样。

0 投票
1 回答
2501 浏览

typescript - TypeScript + Playwright 错误:找不到模块

我遇到了剧作家编码测试自动化的问题。运行测试时,test.spec.ts出现如下错误:

错误:找不到模块“@common/common” 代码:“MODULE_NOT_FOUND”

如何解决这个问题呢?

下面有代码

测试规范.ts

包.json

tsconfig.json

0 投票
2 回答
786 浏览

node.js - 如何使用 Playwright 滚动到特定浏览器版本?

我需要在不同的 Chromium 版本中使用 Playwright 运行一些测试。我有不同版本的不同 Chromium 文件夹,但我不知道如何使用 CLI 从一个版本切换到另一个版本来运行我的测试。一些帮助?谢谢 :)

0 投票
0 回答
176 浏览

typescript - 重试失败的 Playwright 测试 cookie 问题

我在我的 Playwright 测试中使用了以下 jest 对象jest.retryTimes()来重新运行测试,如果它第一次失败最多 3 次,如下所示。我注意到的是,当您npm run test第一次使用命令执行测试时,它会打开新浏览器、导航到网站、关闭 cookie、选择汽车选项、重定向到新页面并检查是否存在特定文本。当此测试失败并再次重试时,它会在同一浏览器中执行此操作,因此 cookie 弹出窗口不会再次出现以关闭。因此重试总是会失败。

是否有一个简单的解决方案来解决这个问题,所以它也适用于出现的无头浏览器?

0 投票
1 回答
2496 浏览

playwright - Playwright - 针对不同的环境和不同的变量进行测试

我希望使用 Playwright 来测试网页。

我正在使用的系统有 4 个我们需要部署的不同环境,例如测试 url 可能是

www.test1.com www.test2.com www.test3.com www.test4.com

第一个问题是如何针对不同的环境?在我的剧作家配置中,我有一个 baseUrl,但我需要覆盖它。

此外,每个环境都有不同的登录凭据,我如何创建和覆盖这些作为每个环境的参数?