标签: playwright

仅针对最新浏览器版本进行端到端测试有什么好处

当使用 Playwright、Puppeteer 和 Cypress 等工具执行端到端测试时,我相信所有这些工具除了后者,如果我错了请原谅)只允许您使用每个浏览器的最新版本,即与每个版本捆绑在一起。

在这种情况下,我想知道运行端到端验收测试的真正好处是什么?这些测试只会针对更有限的场景验证功能,而不是确保您的应用程序仍然可以在 Chrome 70 上运行?

任何关于为什么只考虑最新的浏览器版本而忘记其余部分的见解都是一个好主意,通过使用 Playwright 而不是允许针对特定浏览器二进制文件进行定向测试的工具,例如,并使您的 E2E 测试结果如下:

PASS. Shopping-Cart (Modern)
FAIL. Shopping-Cart (chrome 70) 
// Refactor
Run Code Online (Sandbox Code Playgroud)

代替

PASS. Shopping-Cart
// Yay! Release
Run Code Online (Sandbox Code Playgroud)

e2e-testing puppeteer cypress playwright

6
推荐指数
1
解决办法
545
查看次数

Chrome - 自动在网络上打开开发工具并保留日志

我正在使用 playwright 进行自动化测试。每次测试运行都会创建一个新的 chromium 实例。当我通过时,--auto-open-devtools-for-tabs它会按预期打开开发工具。但是,我需要更进一步并启用保留日志复选框。测试速度很快,我需要在重定向之前查看请求。

python google-chrome webautomation playwright playwright-python

6
推荐指数
1
解决办法
3679
查看次数

如何使用 Playwright 与 Google Maps 或 OpenStreetMaps 等地图进行交互?

我一直在尝试使用 Playwright 与 Google Maps 或 OpenStreetMaps 等网站的地图组件进行交互。我尝试使用 browser.mouse.move()、browser.mouse.up() 和 browser.mouse.down() 的组合,并以文字作为参数。当我运行它时,它似乎根本没有对地图做任何事情。

有没有办法用 Playwright 移动地图?

我创建了一个 GitHub 存储库,以便可以轻松复制。我也会把代码放在下面。 https://github.com/vincent-woodward/Playwright-Map-Interaction

const { chromium } = require("playwright");

(async () => {
  const browser = await chromium.launch({ headless: false });
  const page = await browser.newPage();

  //await page.goto("https://www.google.com/maps");
  await page.goto("https://www.openstreetmap.org/#map=4/38.01/-95.84");

  await page.mouse.move(600, 300);
  await page.mouse.down();
  await page.mouse.move(1200, 450);
  await page.mouse.up();

  browser.close();
})();
Run Code Online (Sandbox Code Playgroud)

javascript playwright

6
推荐指数
2
解决办法
176
查看次数

Playwright 测试运行器:将测试限制为仅在一个浏览器中使用包含多个项目的配置文件

我有一个包含许多项目的测试配置文件(playwright.config.ts)。

通常,我想测试几种不同的浏览器。

但是,当我构建测试时,我只想使用单个浏览器/项目进行测试(因为在我处理测试时测试将会失败)。

我尝试了这个命令:

npx playwright test test.ts --browser='chromium'
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

错误:配置文件定义项目时无法使用 --browser 选项。请在项目中指定 browserName。

如何“在项目中指定 browserName”以限制测试在一个浏览器上运行?

我的配置文件:

const config: PlaywrightTestConfig = {
  projects: [
    {
      name: 'Chrome Stable',
      use: {
        browserName: 'chromium',
        channel: 'chrome',
      },
    },
    {
      name: 'Safari MacBook Air',
      use: {
        browserName: 'webkit',
        viewport: {
          width: 2560,
          height: 1620,
        },
      },
    },
    {
      name: 'Firefox Desktop',
      use: {
        browserName: 'firefox',
        viewport: {
          width: 1920,
          height: 1080,
        },
      },
    },
    {
      name: 'iPhone 6/7/8',
      use: devices['iPhone 8'], …
Run Code Online (Sandbox Code Playgroud)

playwright

6
推荐指数
1
解决办法
9202
查看次数

使用 codegen 命令打开时,剧作家不接受 https 网址

npx playwright codegen https:/// page.goto: net::ERR_CERT_AUTHORITY_INVALID 位于 ...

如何通过 codegen 命令传递输入参数或身份验证凭据来打开 https url

playwright

6
推荐指数
1
解决办法
2万
查看次数

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

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

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

请帮忙

css-selectors playwright playwright-test

6
推荐指数
1
解决办法
1万
查看次数

在 Puppeteer/Playwright 中通过标签文本选择输入

给出以下标记:

<label for="name">Name</label>
<input type="text" id="name" />
Run Code Online (Sandbox Code Playgroud)

我想在剧作家测试中填写输入值。但是,我更喜欢遵循类似于测试库的范例,它像真实用户一样使用选择器(通常是可见的文本内容)。因此,我希望我的剧作家选择器使用标签文本。

当我尝试以下操作时,我收到错误element is not an <input>,因为它选择了实际的标签元素: await page.fill('"Name"')

还有其他方法可以实现这一目标吗?

注意:我不热衷于使用 Playwright 测试库包,因为它还不够成熟。另外,我的理解是 Puppeteer 和 Playwright 实际上是相同的,因此为什么这个问题适用于这两个框架。

puppeteer playwright

6
推荐指数
1
解决办法
1万
查看次数

使用 Playwright 在单个测试中使用多个测试装置

// foo.ts
import { test as base } from "@playwright/test";

const test = base.extend<{foo: string}>({
    foo: "hello"
});

export { test };
Run Code Online (Sandbox Code Playgroud)
// bar.ts
import { test as base } from "@playwright/test";

const test = base.extend<{bar: string}>({
    bar: "bye"
});

export { test };
Run Code Online (Sandbox Code Playgroud)
// index.ts
import { test } from /* BOTH_FOO_AND_BAR??? */;

test("Basic test", async ({ foo, bar }) => { // <-- I want to be able to use both foo and bar fixture here
    console.log(foo);
    console.log(bar); …
Run Code Online (Sandbox Code Playgroud)

typescript playwright playwright-test

6
推荐指数
1
解决办法
5032
查看次数

剧作家赛跑者与黄瓜

最近我发现了剧作家,看起来真的很好。我发现的问题通常是在黄瓜或小黄瓜语法的实现中。例如,在 cypress 中,这里的任务非常简单,看起来我需要使用其他测试运行程序然后使用剧作家。这是真的还是我只是缺少剧作家中黄瓜的一些库/配置?感谢您的任何建议。

cucumber gherkin e2e-testing angular playwright

6
推荐指数
1
解决办法
3040
查看次数

npx playwright install-deps 在 Debian Buster 上失败

当我尝试运行时npx playwright install-deps出现错误。

\n
\xe2\x9d\xaf npx playwright install-deps\nInstalling Ubuntu dependencies...\nSwitching to root user to install dependencies...\nHit:1 http://security.debian.org/debian-security bullseye-security InRelease\nHit:2 http://deb.debian.org/debian bullseye InRelease                                \nHit:3 https://updates.signal.org/desktop/apt xenial InRelease                        \nHit:4 https://repo.steampowered.com/steam stable InRelease                           \nHit:5 https://baltocdn.com/helm/stable/debian all InRelease                          \nHit:7 https://packages.microsoft.com/repos/ms-teams stable InRelease                 \nHit:8 http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_Testing  InRelease\nHit:6 https://packagecloud.io/slacktechnologies/slack/debian jessie InRelease        \nReading package lists... Done\nReading package lists... Done\nBuilding dependency tree... Done\nReading state information... Done\nNote, selecting \'libfontconfig1\' instead of \'libfontconfig\'\nPackage libjpeg-turbo8 is not available, but is referred to by another package.\nThis may mean that the package …
Run Code Online (Sandbox Code Playgroud)

debian debian-buster playwright

6
推荐指数
2
解决办法
9139
查看次数