test(admin): moicen 管理端 /tasks Playwright 与 .env 样例
MOICEN_ADMIN_* 与 HUIKE_ADMIN_BASE_URL;凭据仅本地 .env.e2e(gitignore)。 Made-with: Cursor
This commit is contained in:
+6
-1
@@ -1,3 +1,8 @@
|
||||
# 复制为 .env.e2e(已 gitignore)
|
||||
# 复制为 .env.e2e(已 gitignore)。勿将含真实口令的 .env.e2e 提交到 git。
|
||||
MOICEN_E2E_UNIONID=
|
||||
HUIKE_FRONT_BASE_URL=https://music-room.moicen.com
|
||||
|
||||
# 管理端 tasks 页(tests/admin-tasks.spec.ts);口令仅放本地 .env.e2e
|
||||
HUIKE_ADMIN_BASE_URL=https://admin.moicen.com
|
||||
MOICEN_ADMIN_USER=
|
||||
MOICEN_ADMIN_PASSWORD=
|
||||
|
||||
@@ -12,7 +12,7 @@ npx playwright test
|
||||
|
||||
走代理安装(默认 `http://localhost:7890`):`npm run install:with-proxy`
|
||||
|
||||
可选:复制 `.env.e2e.example` → `.env.e2e`,填写 **`MOICEN_E2E_UNIONID`**(仅此一项敏感凭据即可跑登录链与串号用例)。**不必**配置 `real_name`:姓名非唯一标识、会变,断言「欢迎回来」等 UI 即可。勿提交 `.env.e2e`。
|
||||
可选:复制 `.env.e2e.example` → `.env.e2e`。音乐房串号用例填 **`MOICEN_E2E_UNIONID`**;管理端 **`/tasks`** 用例填 **`MOICEN_ADMIN_USER`** / **`MOICEN_ADMIN_PASSWORD`**(见 example 内说明)。勿提交 `.env.e2e`。
|
||||
|
||||
用例概览:
|
||||
|
||||
@@ -21,8 +21,9 @@ npx playwright test
|
||||
| `tests/guest-onboarding.spec.ts` | 未登录:仅见「请返回微信小程序完成登录」,不出现已登录工作台 |
|
||||
| `tests/home-shell.spec.ts` | `#app`、伪造 unionid 不白屏、`page_path` 净化 |
|
||||
| `tests/logged-in-and-isolation.spec.ts` | 需 Secret:登录后非访客态;异主 unionid 剥离;多角色选身份后见「欢迎回来」(不校验姓名) |
|
||||
| `tests/admin-tasks.spec.ts` | 需 `MOICEN_ADMIN_USER` / `MOICEN_ADMIN_PASSWORD`:管理端登录后打开 `/tasks` |
|
||||
|
||||
未配置 `MOICEN_E2E_UNIONID` 时,`logged-in-and-isolation` 内用例全部 skip。
|
||||
未配置 `MOICEN_E2E_UNIONID` 时,`logged-in-and-isolation` 内用例全部 skip。未配置管理端账号时,`admin-tasks` 内用例 skip。
|
||||
|
||||
## GitHub Actions
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
const adminUser = process.env.MOICEN_ADMIN_USER?.trim();
|
||||
const adminPassword = process.env.MOICEN_ADMIN_PASSWORD?.trim();
|
||||
const adminBase =
|
||||
process.env.HUIKE_ADMIN_BASE_URL?.trim() || 'https://admin.moicen.com';
|
||||
|
||||
test.describe('管理端 tasks(Rust TS)', () => {
|
||||
test.skip(
|
||||
!adminUser || !adminPassword,
|
||||
'需要 MOICEN_ADMIN_USER / MOICEN_ADMIN_PASSWORD(见 .env.e2e.example → .env.e2e)'
|
||||
);
|
||||
|
||||
test('登录后可打开 /tasks 并出现任务页结构', async ({ page }) => {
|
||||
await page.goto(`${adminBase}/login`, {
|
||||
waitUntil: 'domcontentloaded',
|
||||
timeout: 60_000,
|
||||
});
|
||||
await page.locator('#username_field').fill(adminUser!);
|
||||
await page.locator('#password_field').fill(adminPassword!);
|
||||
await page.locator('#submit_btn').click();
|
||||
await page.waitForURL((u) => !u.pathname.endsWith('/login'), {
|
||||
timeout: 60_000,
|
||||
});
|
||||
|
||||
await page.goto(`${adminBase}/tasks`, {
|
||||
waitUntil: 'domcontentloaded',
|
||||
timeout: 60_000,
|
||||
});
|
||||
await expect(page.locator('#app')).toBeVisible({ timeout: 30_000 });
|
||||
await expect(
|
||||
page.getByRole('columnheader', { name: 'Task ID' })
|
||||
).toBeVisible({ timeout: 45_000 });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user