剧作家只为某些文件保存存储状态
Playwright save storage state only for certain files
我目前有一个包含超过 50 个文件的测试包。 49 个文件将使用相同的身份验证,因此我在我的编剧配置文件中设置了以下内容:
storageState: 'myauth.json',
这允许我存储状态并在所有测试中使用它,
问题变成了我不想在我的一个测试中使用这个状态。如何解决这个问题?
我知道我可以将状态传递给 49 个文件并忽略其中一个,但这似乎是错误的想法。
您可以使用灯具,并将您使用 49 次的灯具设置为默认值。
在这种情况下,当您需要其他身份验证时,只需用关键字“use”覆盖它即可。它在剧作家文档中有描述。 https://playwright.dev/docs/test-fixtures
import { TodoPage } from './todo-page'; //In your case auth1 auth2
import { SettingsPage } from './settings-page';
// Declare the types of your fixtures.
type MyFixtures = {
todoPage: TodoPage;
settingsPage: SettingsPage;
};
// Extend base test by providing "todoPage" and "settingsPage".
// This new "test" can be used in multiple test files, and each of them will get the fixtures.
export const test = base.extend<MyFixtures>({
todoPage: async ({ page }, use) => {
// Set up the fixture.
const todoPage = new TodoPage(page);
await todoPage.goto();
await todoPage.addToDo('item1');
await todoPage.addToDo('item2');
// Use the fixture value in the test.
await use(todoPage);
// Clean up the fixture.
await todoPage.removeAll();
},
settingsPage: async ({ page }, use) => {
await use(new SettingsPage(page));
},
});
在您的测试页面中使用默认身份验证。
当您需要覆盖特定文件 spec.ts 文件时,只需写入:
test.use({ auth: 'reareAuth' });
如果您不想在第 50 次测试中使用 any storageState,那么您可以在该测试中使用 test.use({ storageState: undefined });
:
import { test } from '@playwright/test';
import LoginPage from '../../page/LoginPage';
test.use({ storageState: undefined });
test('This test ignores the storageState and performs a fresh login', async ({ page }) => {
loginPage = new LoginPage(page);
await loginPage.login();
});
我目前有一个包含超过 50 个文件的测试包。 49 个文件将使用相同的身份验证,因此我在我的编剧配置文件中设置了以下内容:
storageState: 'myauth.json',
这允许我存储状态并在所有测试中使用它, 问题变成了我不想在我的一个测试中使用这个状态。如何解决这个问题?
我知道我可以将状态传递给 49 个文件并忽略其中一个,但这似乎是错误的想法。
您可以使用灯具,并将您使用 49 次的灯具设置为默认值。 在这种情况下,当您需要其他身份验证时,只需用关键字“use”覆盖它即可。它在剧作家文档中有描述。 https://playwright.dev/docs/test-fixtures
import { TodoPage } from './todo-page'; //In your case auth1 auth2
import { SettingsPage } from './settings-page';
// Declare the types of your fixtures.
type MyFixtures = {
todoPage: TodoPage;
settingsPage: SettingsPage;
};
// Extend base test by providing "todoPage" and "settingsPage".
// This new "test" can be used in multiple test files, and each of them will get the fixtures.
export const test = base.extend<MyFixtures>({
todoPage: async ({ page }, use) => {
// Set up the fixture.
const todoPage = new TodoPage(page);
await todoPage.goto();
await todoPage.addToDo('item1');
await todoPage.addToDo('item2');
// Use the fixture value in the test.
await use(todoPage);
// Clean up the fixture.
await todoPage.removeAll();
},
settingsPage: async ({ page }, use) => {
await use(new SettingsPage(page));
},
});
在您的测试页面中使用默认身份验证。 当您需要覆盖特定文件 spec.ts 文件时,只需写入:
test.use({ auth: 'reareAuth' });
如果您不想在第 50 次测试中使用 any storageState,那么您可以在该测试中使用 test.use({ storageState: undefined });
:
import { test } from '@playwright/test';
import LoginPage from '../../page/LoginPage';
test.use({ storageState: undefined });
test('This test ignores the storageState and performs a fresh login', async ({ page }) => {
loginPage = new LoginPage(page);
await loginPage.login();
});