// 只为截图:登录一个已有通知的账号,截「通知页」与「新建工单」面板。 import { chromium } from "playwright-core"; const BASE = "http://127.0.0.1:5180"; const API = "http://127.0.0.1:8100/api/v1"; const CHROME = "C:/Users/Steven/AppData/Local/ms-playwright/chromium-1223/chrome-win64/chrome.exe"; const login = async (phone) => { const send = await fetch(`${API}/auth/sms/send`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ phone }), }).then((r) => r.json()); const code = send.data?.dev_code ?? "123456"; const r = await fetch(`${API}/auth/login`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ phone, code }), }).then((x) => x.json()); return r.data; }; const browser = await chromium.launch({ executablePath: CHROME, args: ["--no-sandbox"] }); const page = await browser.newPage({ viewport: { width: 1440, height: 960 }, locale: "zh-CN" }); const auth = await login("13900009002"); const me = await fetch(`${API}/auth/me`, { headers: { Authorization: `Bearer ${auth.tokens.access_token}` }, }).then((r) => r.json()); const ws = me.data.workspaces[0]; await page.goto(`${BASE}/login`, { waitUntil: "domcontentloaded" }); await page.evaluate( ([a, r]) => { localStorage.setItem("dadao.access", a); localStorage.setItem("dadao.refresh", r); }, [auth.tokens.access_token, auth.tokens.refresh_token], ); await page.goto(`${BASE}/w/${ws.id}/notifications`, { waitUntil: "domcontentloaded" }); await page.waitForSelector("ul li", { timeout: 20000 }); await page.screenshot({ path: "e2e/artifacts/ui-notifications.png" }); await page.goto(`${BASE}/w/${ws.id}/tickets`, { waitUntil: "domcontentloaded" }); await page.getByRole("button", { name: "新建工单" }).click(); await page.waitForSelector("text=交给谁", { timeout: 15000 }); await page.screenshot({ path: "e2e/artifacts/ui-ticket-new.png" }); console.log("done", ws.name); await browser.close();