之前我们手动处理所有 auth0 逻辑,将用户信息保存在 cookie 中,自己处理所有刷新逻辑等。现在由于迁移到 vue 3,我们切换到 auth0-vue,但是我们有 e2e 测试,需要测试新的用户流程,以前我们只需替换 cookie 就可以了 - 无需每次都创建新用户。但现在,当所有身份验证逻辑都发生在插件的底层时,就不可能以同样的方式做到这一点。但我们不想每次都注册一个新用户并造成不必要的混乱,并且绝对不想回滚到手动处理所有事情。
有什么解决办法吗?
尝试在所有测试运行之前在 globalSetup 函数中执行身份验证,您可以在其中执行注册/登录操作并保存 cookie。与 auth0 或其他任何东西都能很好地配合 - 非常适合使用 OTP 进行测试。
全局设置.ts
import { chromium, type FullConfig } from '@playwright/test';
async function globalSetup(config: FullConfig) {
const { baseURL, storageState } = config.projects[0].use;
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(baseURL!);
await page.getByLabel('User Name').fill('user');
await page.getByLabel('Password').fill('password');
await page.getByText('Sign in').click();
await page.context().storageState({ path: storageState as string });
await browser.close();
}
export default globalSetup;
playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
globalSetup: require.resolve('./global-setup'),
use: {
baseURL: 'http://localhost:3000/',
storageState: 'state.json',
},
});
作为该函数中的一个选项,您可以读取 cookie 创建日期时间,如果不需要,请勿运行身份验证