Fixtures
Playwright Test基于测试夹具的概念。测试夹具用于为每个测试建立环境,为测试提供所需的一切,而不提供其他内容。
Playwright Test会查看每个测试声明,分析测试所需的夹具集合并专门为测试准备这些夹具。由夹具准备的值会合并成一个单一对象,作为第一个参数提供给test
、钩子、注解和其他夹具使用。
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
// ...
});
在上述测试中,Playwright Test会在运行测试前设置page
fixture,并在测试完成后将其拆除。page
fixture提供了一个可供测试使用的Page对象。
Playwright Test 内置了以下列出的fixture,您也可以添加自己的fixture。Playwright Test 还提供了选项来配置fixtures.browser、fixtures.context和fixtures.page。
属性
浏览器
Added in: v1.10Browser实例在同一工作线程中的所有测试之间共享 - 这使得测试更高效。不过,每个测试都在独立的BrowserContext中运行,并获得全新的环境。
用法
test.beforeAll(async ({ browser }) => {
const page = await browser.newPage();
// ...
});
类型
浏览器名称
Added in: v1.10运行测试的浏览器名称。默认为'chromium'
。可用于基于浏览器注释测试。
用法
test('skip this test in Firefox', async ({ page, browserName }) => {
test.skip(browserName === 'firefox', 'Still working on it');
// ...
});
类型
- "chromium" | "firefox" | "webkit"
上下文
Added in: v1.10为每个测试创建的独立BrowserContext实例。由于上下文之间相互隔离,即使多个测试在单个Browser中运行以获得最高效率,每个测试都能获得全新的环境。
默认的 fixtures.page 属于此上下文。
用法
test('example test', async ({ page, context }) => {
await context.route('*external.com/*', route => route.abort());
// ...
});
类型
页面
Added in: v1.10隔离的Page实例,为每个测试创建。由于fixtures.context的隔离机制,页面在测试之间是相互隔离的。
这是测试中最常用的夹具。
用法
import { test, expect } from '@playwright/test';
test('basic test', async ({ page }) => {
await page.goto('/signin');
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
// ...
});
类型
请求
Added in: v1.10为每个测试提供隔离的APIRequestContext实例。
用法
import { test, expect } from '@playwright/test';
test('basic test', async ({ request }) => {
await request.post('/signin', {
data: {
username: 'user',
password: 'password'
}
});
// ...
});
类型