diablo2-web/TEST_READY.md

43 lines
4.8 KiB
Markdown
Raw 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.

# Test Readiness Gate (`TEST_READY.md`) — D2GS v1.13c Online Gameplay Loops & Server Authority
## Status: READY (Tiers 1–5 Complete & Verified)
The 5-tier E2E test suite for all 16 features (`F1`–`F16`) — including Tier 1–4 opaque-box requirement coverage and Tier 5 white-box post-implementation adversarial hardening — is implemented and verified at `/usr/local/google/home/taodao/diablo2-web/tests/e2e-d2gs-online/`.
---
## Test Suite Inventory & Execution Commands
| Tier | Test File | Test Count | Minimum Threshold | Run Command |
|---|---|---:|---:|---|
| **Tier 1 (Core Feature Coverage)** | `tests/e2e-d2gs-online/tier1-feature-coverage.test.ts` | **80** (`5 × F1–F16`) | `>= 80` (`>= 5` / feature) | `npx vitest run tests/e2e-d2gs-online/tier1-feature-coverage.test.ts` |
| **Tier 2 (Boundary, Corner & Negative)** | `tests/e2e-d2gs-online/tier2-boundary-corner.test.ts` | **80** (`5 × F1–F16`) | `>= 80` (`>= 5` / feature) | `npx vitest run tests/e2e-d2gs-online/tier2-boundary-corner.test.ts` |
| **Tier 3 (Cross-Feature Integration)** | `tests/e2e-d2gs-online/tier3-cross-feature.test.ts` | **16** | `>= 16` | `npx vitest run tests/e2e-d2gs-online/tier3-cross-feature.test.ts` |
| **Tier 4 (Real-World Session Scenarios)** | `tests/e2e-d2gs-online/tier4-real-world-scenarios.test.ts` | **8** | `>= 8` | `npx vitest run tests/e2e-d2gs-online/tier4-real-world-scenarios.test.ts` |
| **Tier 5 (White-Box Adversarial Hardening)** | `tests/e2e-d2gs-online/tier5-adversarial-hardening.test.ts` | **20** | `>= 16` | `npx vitest run tests/e2e-d2gs-online/tier5-adversarial-hardening.test.ts` |
| **Full E2E Suite (Tiers 1–5)** | `tests/e2e-d2gs-online/` | **204** | `>= 200` | `npx vitest run tests/e2e-d2gs-online` |
| **TypeScript Typecheck** | `tsconfig.json` | 0 errors | 0 errors | `npx tsc --noEmit` |
---
## Feature-to-Test Coverage Matrix (`F1`–`F16`)
| Feature | Requirement | Tier 1 Tests | Tier 2 Tests | Tier 3 Tests | Tier 4 Scenarios | Tier 5 Adversarial |
|---|---|---|---|---|---|---|
| **F1** — Canonical 1.13c Online Item Tooltip Bridge | R1.1 | `F1.1`–`F1.5` (5) | `F1.B1`–`F1.B5` (5) | `CF1, CF2, CF4, CF9, CF12, CF16` | Scenarios 1, 4, 8 | `T5.1, T5.5` |
| **F2** — C2S Container, Belt, NPC, Merc, Warp, Party & Trade Packet Encoders | R1.2, R2–R5 | `F2.1`–`F2.5` (5) | `F2.B1`–`F2.B5` (5) | `CF3` + all C2S assertions | Scenarios 1–8 | `T5.18, T5.19, T5.20` |
| **F3** — Server-Authoritative Container, Belt, Identify, Socket & Tome UI Wiring | R1.2 | `F3.1`–`F3.5` (5) | `F3.B1`–`F3.B5` (5) | `CF1, CF2, CF3, CF10` | Scenarios 1, 2 | `T5.1, T5.2, T5.3, T5.4` |
| **F4** — Weapon Set II (`bodyLoc` 11 & 12) Sync | R1.3 | `F4.1`–`F4.5` (5) | `F4.B1`–`F4.B5` (5) | `CF4` | Scenario 1 | `T5.6` |
| **F5** — Act 1–5 Town & Quest NPC Descriptors | R2.1 | `F5.1`–`F5.5` (5) | `F5.B1`–`F5.B5` (5) | `CF5, CF6, CF16` | Scenarios 3, 8 | `T5.8, T5.9, T5.17` |
| **F6** — NPC Info (`0x27`), SetNPCTalk (`0x91`), Talk Submenu & `0x31 QuestMessage` | R2.2 | `F6.1`–`F6.5` (5) | `F6.B1`–`F6.B5` (5) | `CF5` | Scenario 3 | `T5.7, T5.8, T5.9` |
| **F7** — Act Travel Menu Options & C2S `0x38 EntityAction` | R2.3 | `F7.1`–`F7.5` (5) | `F7.B1`–`F7.B5` (5) | `CF6` | Scenario 3 | `T5.19` |
| **F8** — Mercenary World State (`0x4E`, `0x4F`, `0x9B` & `lifePct`) | R3.1 | `F8.1`–`F8.5` (5) | `F8.B1`–`F8.B5` (5) | `CF7, CF8, CF10, CF14` | Scenarios 2, 4 | `T5.10, T5.11` |
| **F9** — Mercenary Hire (`0x36`) & Resurrect (`0x62`) UI | R3.2 | `F9.1`–`F9.5` (5) | `F9.B1`–`F9.B5` (5) | `CF7, CF8` | Scenario 4 | `T5.10, T5.19` |
| **F10** — Mercenary HUD Portrait & Paperdoll (`O` Hotkey, `0x61 MercItem`) | R3.3 | `F10.1`–`F10.5` (5) | `F10.B1`–`F10.B5` (5) | `CF9, CF10` | Scenarios 2, 4 | `T5.10, T5.11` |
| **F11** — Dungeon/Stair Warp Clicking (`0x09 AssignWarp` → C2S `0x09 WarpTo`) | R4.1 | `F11.1`–`F11.5` (5) | `F11.B1`–`F11.B5` (5) | `CF11` | Scenario 5 | `T5.12, T5.19` |
| **F12** — Portal Ownership Hover (`0x60`/`0x82`) & Ground Item Labels (`0x16`) | R4.2 | `F12.1`–`F12.5` (5) | `F12.B1`–`F12.B5` (5) | `CF11, CF12, CF15` | Scenario 5 | `T5.12, T5.19` |
| **F13** — `SkillCast` (`0x4C`/`0x4D`/`0x6C`/`0x99`/`0x9A`) Animation | R4.3 | `F13.1`–`F13.5` (5) | `F13.B1`–`F13.B5` (5) | `CF13` | Scenario 6 | `T5.13` |
| **F14** — Player Death Overlay & C2S `0x41 Resurrect` | R4.4 | `F14.1`–`F14.5` (5) | `F14.B1`–`F14.B5` (5) | `CF13, CF14` | Scenario 6 | `T5.14, T5.19` |
| **F15** — Multiplayer Party State & Party Panel (`P` Hotkey, `0x5D`/`0x5E`) | R5.1 | `F15.1`–`F15.5` (5) | `F15.B1`–`F15.B5` (5) | `CF15` | Scenario 7 | `T5.16, T5.19` |
| **F16** — Player-to-Player Trade UI (`0x77`–`0x79` & C2S `0x4F`) & Quest Reward Panels | R5.2, R5.3 | `F16.1`–`F16.5` (5) | `F16.B1`–`F16.B5` (5) | `CF16` | Scenario 8 | `T5.15, T5.17, T5.18` |