如何模拟 auth0 用户进行 Playwright 测试?

问题描述 投票:0回答:1

之前我们手动处理所有 auth0 逻辑,将用户信息保存在 cookie 中,自己处理所有刷新逻辑等。现在由于迁移到 vue 3,我们切换到 auth0-vue,但是我们有 e2e 测试,需要测试新的用户流程,以前我们只需替换 cookie 就可以了 - 无需每次都创建新用户。但现在,当所有身份验证逻辑都发生在插件的底层时,就不可能以同样的方式做到这一点。但我们不想每次都注册一个新用户并造成不必要的混乱,并且绝对不想回滚到手动处理所有事情。

有什么解决办法吗?

vuejs3 auth0 playwright
1个回答
0
投票

尝试在所有测试运行之前在 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 创建日期时间,如果不需要,请勿运行身份验证

© www.soinside.com 2019 - 2024. All rights reserved.