fix: 部分收付累计释额并扩展结算 E2E 与 CI
账期收付改为按累计已付同步 credit_ledger,修复多笔 partial_paid 与坏账核销重复释额;新增 API E2E(占成、权限、部分收付/坏账)与 GitHub Actions e2e-api job。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -44,11 +44,17 @@ e2e/
|
||||
│ │ ├── 13.credit-settlement-win.spec.ts # 信用盘中奖释额
|
||||
│ │ ├── 14.settlement-payment.spec.ts # 账期 confirm + 收付
|
||||
│ │ ├── 15.reconcile-job.spec.ts # pending_reconcile 扫描
|
||||
│ │ ├── 16.agent-share-bill.spec.ts # 代理占成账单
|
||||
│ │ ├── 17.settlement-partial-payment.spec.ts # 部分收付
|
||||
│ │ ├── 18.settlement-permissions.spec.ts # 站点财务/代理权限
|
||||
│ │ ├── 19.settlement-bad-debt-partial.spec.ts # 部分收付后坏账
|
||||
│ │ ├── _helper.ts # 共享步骤
|
||||
│ │ └── helpers/draw-settlement.ts # 结算流水线
|
||||
│ └── ui/
|
||||
│ ├── admin-login.spec.ts
|
||||
│ └── front-login-hall.spec.ts
|
||||
│ ├── admin-settlement-center.spec.ts
|
||||
│ ├── front-login-hall.spec.ts
|
||||
│ └── front-place-bet.spec.ts
|
||||
├── database/seeders/
|
||||
│ └── E2EPlayerSeeder.php # 建可登录玩家(E2E\Seeders 命名空间)
|
||||
├── routes/e2e.php # 仅 /api/v1/_e2e/* 路由
|
||||
@@ -98,8 +104,8 @@ composer.json # autoload-dev 加 E2E\Seeders\, E2E\Pr
|
||||
6. **`php artisan lottery:db-init --fresh`** ⚠️ 重建 `lottery_e2e` 库(**只**作用于此库,绝不碰其他库)
|
||||
7. 跑 `E2EPlayerSeeder`(建可登录玩家)
|
||||
8. 起 `php artisan serve`(8000)、`queue:work redis`(默认队列)、`reverb:start`(8080)
|
||||
9. `npx playwright install chromium`(首次)
|
||||
10. `npx playwright test`
|
||||
9. UI 测试默认用本机 **Google Chrome**(`playwright.config.ts` `channel: 'chrome'`),**无需**下载 Playwright Chromium
|
||||
10. `npx playwright test`(若要用自带 Chromium:`PLAYWRIGHT_USE_BUNDLED_CHROMIUM=1 ./e2e/scripts/run.sh`)
|
||||
|
||||
跑完按 Ctrl+C 自动停 serve/queue/reverb。`docker compose down -v` 自行决定(脚本不删 volume,下次跑快)。
|
||||
|
||||
@@ -144,7 +150,7 @@ PLAYWRIGHT_API_URL=http://127.0.0.1:8000 \
|
||||
| 玩家登录 / 失败 / 锁定 | 02.player-auth | 4 | ✅ |
|
||||
| 玩家钱包 + 下注 + 幂等 | 03.wallet-ticket | 3 | ✅ |
|
||||
| 超管登录 / dashboard / 401 | 04.admin-auth | 3 | ✅ |
|
||||
| 玩家 transfer-in/out + 1001/1010 | 05.wallet-transfer | 7 (+2 skip) | ✅ |
|
||||
| 玩家 transfer-in/out + 1001/1010 | 05.wallet-transfer | 7 | ✅ |
|
||||
| 钱包流水一致性 + 过滤 + 分页 | 06.wallet-logs | 4 | ✅ |
|
||||
| 超管创建/冻结/解冻/查玩家 | 07.admin-player | 6 | ✅ |
|
||||
| 开奖+结算+派彩 完整链路 | 08.draw-publish-settle | 1 | ✅ 确定性 poll |
|
||||
@@ -155,10 +161,16 @@ PLAYWRIGHT_API_URL=http://127.0.0.1:8000 \
|
||||
| 信用盘中奖释额 game_settlement_win | 13.credit-settlement-win | 1 | ✅ |
|
||||
| 账期 confirm + 登记收付闭环 | 14.settlement-payment | 1 | ✅ |
|
||||
| pending_reconcile → reconcile-jobs | 15.reconcile-job | 1 | ✅ |
|
||||
| 代理占成账单 share_profit | 16.agent-share-bill | 1 | ✅ |
|
||||
| 部分收付 partial_paid → settled | 17.settlement-partial-payment | 2 | ✅ |
|
||||
| 站点财务收付 / 绑定代理禁坏账 | 18.settlement-permissions | 1 | ✅ |
|
||||
| 部分收付后坏账核销 | 19.settlement-bad-debt-partial | 1 | ✅ |
|
||||
| 管理端 UI 登录 | ui/admin-login | 1 | ✅ |
|
||||
| 管理端 UI 结算中心 | ui/admin-settlement-center | 1 | ✅ |
|
||||
| 玩家端 UI 登录进大厅 | ui/front-login-hall | 1 | ✅ |
|
||||
| 玩家端 UI 下注提交 | ui/front-place-bet | 1 | ✅ |
|
||||
|
||||
合计 ~36 个用例覆盖 e2e 关键链路。
|
||||
合计 ~43 个用例覆盖 e2e 关键链路。
|
||||
|
||||
## 已知未覆盖(需外部依赖或重构成本高)
|
||||
|
||||
@@ -194,15 +206,20 @@ npx playwright test 05.wallet-transfer.spec.ts --headed
|
||||
- **测试卡住**:脚本的 `cleanup` 钩子 Ctrl+C 会停 artisan/queue/reverb
|
||||
- **player 登录 401**:`curl -X POST http://127.0.0.1:8000/api/v1/_e2e/reset-player` 重置玩家
|
||||
|
||||
## CI 集成(参考)
|
||||
## CI 集成
|
||||
|
||||
```yaml
|
||||
# .github/workflows/e2e.yml
|
||||
- name: e2e
|
||||
run: ./e2e/scripts/run.sh
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: failure()
|
||||
with:
|
||||
name: e2e-artifacts
|
||||
path: e2e/artifacts/
|
||||
仓库已包含 `.github/workflows/e2e.yml`(push/PR 自动跑 API 项目;`E2E_UI=0` 不启前后端 dev server)。
|
||||
|
||||
本地跑全量(含 UI):
|
||||
|
||||
```bash
|
||||
./e2e/scripts/run.sh
|
||||
```
|
||||
|
||||
仅 API(与 CI 一致):
|
||||
|
||||
```bash
|
||||
E2E_UI=0 ./e2e/scripts/run.sh
|
||||
```
|
||||
|
||||
失败产物:`e2e/artifacts/`、`e2e/logs/`。
|
||||
|
||||
Reference in New Issue
Block a user