第三方运行器
只需几行代码,您就可以将 Playwright 连接到您现有的 JavaScript 测试运行器。
Playwright Test
Playwright Test 是我们推荐的与 Playwright 一起使用的第一方测试运行器。在这里了解更多信息。
Jest / Jasmine
对于 Jest,可以使用 jest-playwright。但是对于轻量级解决方案,直接引入 playwright 就可以了。Jest 与 Jasmine 共享其语法,因此这也适用于 Jasmine。
const {chromium} = require('playwright');
const expect = require('expect');
let browser;
let page;
beforeAll(async () => {
browser = await chromium.launch();
});
afterAll(async () => {
await browser.close();
});
beforeEach(async () => {
page = await browser.newPage();
});
afterEach(async () => {
await page.close();
});
it('should work', async () => {
await page.goto('https://www.example.com/');
expect(await page.title()).toBe('Example Domain');
});
AVA
测试在 AVA 中并发运行,因此单个页面变量不能在测试之间共享。相反,使用宏函数创建新页面。
const {chromium} = require('playwright');
const test = require('ava').default;
const browserPromise = chromium.launch();
async function pageMacro(t, callback) {
const browser = await browserPromise;
const page = await browser.newPage();
try {
await callback(t, page);
} finally {
await page.close();
}
}
test('should work', pageMacro, async (t, page) => {
await page.goto('https://www.example.com/');
t.is(await page.title(), 'Example Domain');
});
Mocha
Mocha 看起来与 Jest/Jasmine 设置非常相似,并且以相同的方式运行。
const {chromium} = require('playwright');
const assert = require('assert');
let browser;
before(async() => {
browser = await chromium.launch();
});
after(async () => {
await browser.close();
});
let page;
beforeEach(async() => {
page = await browser.newPage();
});
afterEach(async () => {
await page.close();
});
it('should work', async () => {
await page.goto('https://www.example.com/');
assert.equal(await page.title(), 'Example Domain');
});
Vitest
Vitest 看起来与 Jest/Jasmine 设置非常相似,并且以相同的方式运行。
import { chromium } from 'playwright';
import { afterAll, afterEach, beforeAll, beforeEach, expect, test } from 'vitest';
let browser;
let page;
beforeAll(async () => {
browser = await chromium.launch();
});
afterAll(async () => {
await browser.close();
});
beforeEach(async () => {
page = await browser.newPage();
});
afterEach(async () => {
await page.close();
});
test('should work', async () => {
await page.goto('https://www.example.com/');
expect(await page.title()).toBe('Example Domain');
});
多个浏览器
这些简单的示例可以使用环境变量扩展以支持多个浏览器。
const {chromium, webkit, firefox} = require('playwright');
const browserName = process.env.BROWSER || 'webkit';
let browser;
beforeAll(async() => {
browser = await {chromium, webkit, firefox}[browserName].launch();
});
然后设置 BROWSER=firefox 以使用 firefox 或任何其他浏览器运行您的测试。