From 700532b36a11652ab93a6226ae74b70d26b94974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E7=94=B7?= Date: Sun, 26 Apr 2026 20:22:17 +0800 Subject: [PATCH] =?UTF-8?q?test(admin):=20moicen=20=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=AB=AF=20/tasks=20Playwright=20=E4=B8=8E=20.env=20=E6=A0=B7?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MOICEN_ADMIN_* 与 HUIKE_ADMIN_BASE_URL;凭据仅本地 .env.e2e(gitignore)。 Made-with: Cursor --- .env.e2e.example | 7 ++++++- README.md | 5 +++-- tests/admin-tasks.spec.ts | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 tests/admin-tasks.spec.ts diff --git a/.env.e2e.example b/.env.e2e.example index 11647b4..4e8ffaf 100644 --- a/.env.e2e.example +++ b/.env.e2e.example @@ -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= diff --git a/README.md b/README.md index 3518aa7..210683c 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/tests/admin-tasks.spec.ts b/tests/admin-tasks.spec.ts new file mode 100644 index 0000000..11d37c7 --- /dev/null +++ b/tests/admin-tasks.spec.ts @@ -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 }); + }); +});