Compare commits

...

2 Commits

Author SHA1 Message Date
54f55a072e docs: add ai prereq handling 2026-01-26 12:25:40 +08:00
8b44767f11 docs: refine ai ui testing guidance 2026-01-26 11:49:32 +08:00
3 changed files with 88 additions and 35 deletions

View File

@@ -25,6 +25,18 @@
- Go tests: `go test ./...` (some service tests exist under `backend/app/services/*_test.go`).
- Frontend: build + lint are the main checks (`npm -C frontend/superadmin run build && npm -C frontend/superadmin run lint`).
## AI UI Testing References
When driving browser tests via Chrome DevTools MCP, consult:
- `docs/seed_verification.md` (full UI flow + MCP steps)
- `frontend/portal/vite.config.js` (proxy + port)
- `frontend/superadmin/vite.config.mjs` (proxy + port)
- `frontend/portal/src/router/index.js` (portal routes)
- `frontend/superadmin/src/router/index.js` (superadmin routes)
- `backend/app/services/user.go` (OTP rule: `1234`)
- `backend/app/commands/seed/seed.go` (seed users/passwords)
## Planning Requirements
- Before any non-trivial development work, first produce a complete plan document (tasks, sequence, dependencies, and acceptance criteria) and get confirmation to proceed.

View File

@@ -1,30 +1,30 @@
# Implementation Plan: Page Automation Verification
# Implementation Plan: AI Auto-Handling Prereqs
**Branch**: `main` | **Date**: 2026-01-26 | **Spec**: `docs/seed_verification.md`
**Input**: 将验证流程转为纯页面自动化测试Playwright
**Input**: 让 AI 自动处理 seed/tenantCode/localStorage 前置问题
**Note**: 本计划遵循 `docs/templates/plan-template.md`
## Summary
新增一份“纯页面自动化验证”文档包含服务启动步骤backend/portal/superadmin和 Playwright 操作清单,确保 AI 能在无 API 调用前提下完成冒烟验证
补充文档指导 AI 在开始页面测试前自动执行seed 检查/执行、DB 查询获取 tenantCode、清理浏览器存储
## Technical Context
**Language/Version**: JS (Playwright) + Go 1.22 + Vite
**Primary Dependencies**: Playwright, Vite dev server
**Storage**: PostgreSQL (seed 数据)
**Testing**: 页面自动化 (browser-driven)
**Target Platform**: Local + staging
**Language/Version**: Go 1.22 + Vite + Chrome DevTools MCP + PostgreSQL
**Primary Dependencies**: seed command, DB query, DevTools MCP
**Storage**: PostgreSQL
**Testing**: 页面自动化 (MCP)
**Target Platform**: local/staging
**Project Type**: Web application
**Performance Goals**: N/A
**Constraints**: 仅写文档,不修改业务代码
**Scale/Scope**: 覆盖 portal + superadmin 冒烟场景
**Constraints**: 不修改生成文件
**Scale/Scope**: 文档增强
## Constitution Check
- 不修改生成文件
- 仅新增/更新文档
- 遵循 `backend/llm.txt`
- 只改非生成文件
## Project Structure
@@ -38,42 +38,34 @@ docs/
## Plan Phases
### Phase 1: 启动流程梳理
- 明确 backend/portal/superadmin 本地启动方式与代理关系
### Phase 1: 自动化前置补充
- 添加 seed 检查/执行、tenantCode 查询、存储清理说明
### Phase 2: 自动化场景清单
- 按 portal/superadmin 视图输出可自动化步骤与断言
### Phase 3: 输出验证文档
- 更新 `docs/seed_verification.md` 为“纯页面自动化”版本。
### Phase 2: 复核
- 确认文档覆盖自动化前置
## Tasks
**Format**: `[ID] [P?] [Story] Description`
### Phase 1
- [x] T001 [US0] 梳理服务启动命令与端口
- [x] T001 [US0] 增加 seed/tenantCode 自动处理说明
- [x] T002 [US0] 增加 storage 清理说明
### Phase 2
- [x] T010 [US1] Portal 页面自动化步骤
- [x] T011 [US1] Superadmin 页面自动化步骤
### Phase 3
- [x] T020 [US2] 更新验证文档(含 DevTools MCP 指引)
- [x] T010 [US1] 复核文档与示例
## Dependencies
- Phase 1 → Phase 2 → Phase 3
- Phase 1 → Phase 2。
## Acceptance Criteria
- 文档包含完整启动流程与端口说明
- 文档包含可直接执行的页面自动化步骤。
- 不涉及 API 级验证说明。
- 文档明确 AI 自动化处理三个前置问题
## Risks
- 登录依赖 OTP/浏览器控制台获取
- DB 连接无法访问
## Complexity Tracking

View File

@@ -10,10 +10,60 @@
## Chrome DevTools MCP
- Start Chrome with remote debugging: `google-chrome --remote-debugging-port=9222`.
- Use MCP to connect at `http://127.0.0.1:9222`.
- Chrome remote debugging已由远程机器启动,无需本机手动启动浏览器。
- Use MCP to connect at `http://10.1.1.104:9222` (SSH forwarded DevTools port).
- Open target URLs via MCP and run page-level assertions (no API-level calls required).
## AI Auto-Handling Prereqs
- **Seed 检查/执行**
- DB 查询(示例):`SELECT COUNT(*) FROM tenants;`
- 若结果为 0执行 `go run ./backend/main.go seed` 后再继续。
- **tenantCode 获取**
- DB 查询:`SELECT code FROM tenants ORDER BY id DESC LIMIT 1;`
- 将结果注入到 Portal URL `/t/:tenantCode`
- **清理浏览器存储**
- 在 MCP 中执行脚本:清理 `localStorage` / `sessionStorage`,并清除 cookies。
- 示例:`chrome-devtools_evaluate_script``() => { localStorage.clear(); sessionStorage.clear(); document.cookie.split(';').forEach(c => document.cookie = c.replace(/^ +/, '').replace(/=.*/, '=;expires=' + new Date().toUTCString() + ';path=/')); }`
### MCP Example Flow (AI Guidance)
1. **Open Portal Home**
- `chrome-devtools_new_page``http://localhost:5174/t/:tenantCode`
- `chrome-devtools_wait_for` text: `探索戏曲` or page title
2. **Portal Login**
- Navigate to `/t/:tenantCode/auth/login`
- Tick checkbox `#terms` (required)
- `chrome-devtools_fill` phone input with `13800138000`
- Click `获取验证码`, wait for OTP step
- `chrome-devtools_fill` OTP input with `1234`
- Click `登录 / 注册`
- `chrome-devtools_wait_for` text: `个人中心` or user nickname
3. **Verify Orders & Library**
- Navigate to `/t/:tenantCode/me/orders` and assert at least 1 row
- Navigate to `/t/:tenantCode/me/library` and assert at least 1 item
4. **Open Content Detail**
- From home list, click the first content card
- Assert detail page loads and cover/media is visible
5. **Superadmin Login**
- `chrome-devtools_new_page``http://localhost:5173/super/auth/login`
- Fill `#username` with `superadmin` and `#password1` with `superadmin123`
- Click `Sign In`
- Wait for dashboard cards or `Dashboard` text
6. **Superadmin Lists**
- `/super/superadmin/orders` → verify flagged order badge
- `/super/superadmin/finance` → verify ledger table row
- `/super/superadmin/notifications` → verify template rows
7. **Console/Error Checks**
- After each page, call `chrome-devtools_list_console_messages` and fail on `error` entries.
- Use `chrome-devtools_take_snapshot` to locate table rows by text.
## Run Seed
- Execute `go run ./backend/main.go seed`.
@@ -22,7 +72,7 @@
## Data Validation (DB/Logs)
- Users: verify `creator`, `test`, `superadmin`, `negative` exist in `users.username`.
- Tenant: read `tenants.code` to obtain `tenantCode` (DB query or admin UI).
- Tenant: read `tenants.code` to obtain `tenantCode` (example: `SELECT code FROM tenants ORDER BY id DESC LIMIT 1;`).
- Memberships: `tenant_users` includes `creator` as `tenant_admin`, `test` as `member`.
- Orders: `orders` has `content_purchase` + `withdrawal`, plus flagged/reconciled records.
- Ledger: `tenant_ledgers` has at least one row.
@@ -30,8 +80,7 @@
## Portal Smoke (Use tenantCode)
- Tenant code: query DB, then open `http://localhost:5174/t/:tenantCode`.
- Login: OTP is fixed to `1234` (see `backend/app/services/user.go`).
- Tenant code: query DB (`SELECT code FROM tenants ORDER BY id DESC LIMIT 1;`), then open `http://localhost:5174/t/:tenantCode`.- Login: OTP is fixed to `1234` (see `backend/app/services/user.go`).
- Home: `/t/:tenantCode` lists content.
- Detail: open any content detail; cover and main asset render.
- Login: sign in as `test` (phone `13800138000`, OTP `1234`) and open `/t/:tenantCode/me`.