Files
weli e56713e23e ci: Playwright 后 SSH moicen 只读校验(PG/Redis/日志)
新增 scripts/moicen-remote-readonly-check.sh;同源 PR/push 跑 MOICEN_SSH_*。

Made-with: Cursor
2026-04-28 12:14:36 +08:00

45 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# huike-e2e-moicen
针对 **已部署**`music-room.moicen.com`(或任意 `HUIKE_FRONT_BASE_URL`)跑 **Playwright**,不 clone `huike-front`、不起 Postgres、不编译 Rust。全栈本地 E2E 见 **[alchemy-studio/huike-e2e](https://github.com/alchemy-studio/huike-e2e)**。
## 本机
```bash
npm ci
npx playwright install chromium
npx playwright test
```
走代理安装(默认 `http://localhost:7890`):`npm run install:with-proxy`
可选:复制 `.env.e2e.example``.env.e2e`。音乐房串号用例填 **`MOICEN_E2E_UNIONID`**;管理端 **`/tasks`** 用例填 **`MOICEN_ADMIN_USER`** / **`MOICEN_ADMIN_PASSWORD`**(见 example 内说明)。勿提交 `.env.e2e`
用例概览:
| 文件 | 内容 |
|------|------|
| `tests/smoke-http.spec.ts` | **request**`GET /` 返回 HTML(网关 / TLS / 静态入口底线,不启浏览器) |
| `tests/core-full-chain.spec.ts` | **访客**:未登录访问 `/course` 被送回 `/` 且见访客占位;**已登录**:黄金路径(会话→深链→课程体系壳层→JWT 与机构闭环);**可选** `MOICEN_HEALTHCHECK_URL` |
| `tests/guest-onboarding.spec.ts` | 未登录:仅见「请返回微信小程序完成登录」,不出现已登录工作台 |
| `tests/home-shell.spec.ts` | `#app`、伪造 unionid 不白屏、`page_path` 净化 |
| `tests/logged-in-and-isolation.spec.ts` | 需 Secret:登录后非访客态;异主 unionid 剥离;多角色选身份后见「欢迎回来」(不校验姓名) |
| `tests/org-multi-tenant.spec.ts` | 需 Secret:机构选择页可达且呈现机构列表 UI |
| `tests/org-data-isolation.spec.ts` | 需 Secret`CurrentOrgId` 与 JWT `current_org_id` 一致;多机构时可切换机构并更新上下文;`/course` 课程体系列表不出现「请求失败」错误态 |
| `tests/admin-tasks.spec.ts` | 需 `MOICEN_ADMIN_USER` / `MOICEN_ADMIN_PASSWORD`:管理端登录后打开 `/tasks` |
未配置 `MOICEN_E2E_UNIONID` 时,`logged-in-and-isolation``org-multi-tenant``org-data-isolation` 内用例全部 skip。未配置管理端账号时,`admin-tasks` 内用例 skip。
## GitHub Actions
**Settings → Secrets → Actions** 配置 **`MOICEN_E2E_UNIONID`** 即可。未配 unionid 时仅跑访客与壳层用例。
可选:在 **Settings → Secrets and variables → Actions → Variables** 配置 **`MOICEN_HEALTHCHECK_URL`**(完整 URL,返回 2xx),用于可选后端健康检查用例;未配置时该条自动 skip。
Playwright 成功后,CI 会 **SSH 到 moicen**(需 Secrets**`MOICEN_SSH_PRIVATE_KEY`**、**`MOICEN_SSH_USER`**、**`MOICEN_SSH_KNOWN_HOSTS`**),在机上执行 **`scripts/moicen-remote-readonly-check.sh`**`TS_DATABASE_URL` 探库、`redis-cli ping`、tail **`htyproc`** 与 **OpenResty error.log**。fork 仓库发起的 PR 不会跑该步(无 Secrets)。主机名固定 **`moicen.com`**(写在 workflow)。
`workflow_dispatch` 可改目标 `base_url`**默认定时:每天 06:30 UTC**(见 `.github/workflows/playwright-music-room.yml`)。
## 与 moicen 运维文档
浏览器联调、在 UC 库查 `union_id` 等:见团队内 **`plan_skills/moicen/moicen-music-room-browser-test-runbook.md`**(与 huiwing-migration / 运维仓同路径即可)。