| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * uni-app H5 + Playwright 公共操作(登录页起复用)
- */
- export function env() {
- return {
- base: process.env.E2E_BASE || 'http://localhost:5173',
- user: process.env.E2E_USER || 'admin',
- pass: process.env.E2E_PASS || 'admin123'
- }
- }
- export async function clearSession(page) {
- await page.goto(env().base + '/', { waitUntil: 'domcontentloaded' })
- await page.evaluate(() => {
- try {
- localStorage.clear()
- sessionStorage.clear()
- } catch (_) {}
- })
- }
- export async function openLoginFresh(page) {
- await clearSession(page)
- await page.goto(env().base + '/', { waitUntil: 'networkidle' })
- await page.waitForTimeout(800)
- // 若仍被跳到工作台,再清一次
- if (page.url().includes('workbench')) {
- await clearSession(page)
- await page.goto(env().base + '/pages/login/login', { waitUntil: 'networkidle' })
- await page.waitForTimeout(800)
- }
- }
- export function userInput(page) {
- return page.locator('input.uni-input-input[type="text"]').first()
- }
- export function passInput(page) {
- return page.locator('input.uni-input-input[type="password"]').first()
- }
- export async function fillLogin(page, username, password) {
- await userInput(page).fill(username ?? '')
- await passInput(page).fill(password ?? '')
- }
- export async function clickLoginButton(page) {
- await page.locator('uni-button.btn-login, button.btn-login').first().click({ force: true })
- }
- export async function clickAgreeCheck(page) {
- await page.locator('.agree-check').first().click({ force: true })
- }
- export async function waitToast(page, textRe, timeout = 5000) {
- // uni-app H5 toast 常见:.uni-sample-toast / .uni-toast / uni-toast
- const toast = page.locator('.uni-sample-toast, .uni-toast, uni-toast, .uni-toast__content').filter({
- hasText: textRe
- })
- await toast.first().waitFor({ state: 'visible', timeout })
- return toast.first()
- }
- export async function isOnLogin(page) {
- const url = page.url()
- if (url.includes('/pages/login/login') || url.endsWith('/') || url.match(/:5173\/?$/)) {
- const btn = await page.getByText('账号密码登录').first().isVisible().catch(() => false)
- const loading = await page.getByText('登录中...').first().isVisible().catch(() => false)
- return btn || loading
- }
- return false
- }
- export async function isOnWorkbench(page) {
- return (
- page.url().includes('/pages/workbench/workbench') &&
- (await page.getByText('工作台', { exact: true }).first().isVisible().catch(() => false))
- )
- }
|