|
| 1 | +# PR_26161_018 Controls Wireframe Controller Profiles Report |
| 2 | + |
| 3 | +## Branch Validation |
| 4 | + |
| 5 | +- PASS: Current branch was `main`. |
| 6 | +- Expected branch: `main`. |
| 7 | +- Worktree was clean before PR_26161_018 edits. |
| 8 | + |
| 9 | +## Scope |
| 10 | + |
| 11 | +- Impacted lane: Controls/Input Mapping tool recovery/UAT. |
| 12 | +- Playwright impacted: Yes. |
| 13 | +- Full samples validation: SKIPPED. Samples are out of scope for this Controls wireframe/profile planning change, and no sample JSON alignment was requested. |
| 14 | +- Engine runtime behavior: Unchanged. No production controller runtime, sample runtime, auth behavior, or unrelated rewrite was added. |
| 15 | + |
| 16 | +## Requirement Checklist |
| 17 | + |
| 18 | +- PASS: Read `docs_build/dev/PROJECT_INSTRUCTIONS.md`. |
| 19 | +- PASS: Reviewed `docs_build/tools/input-mapping-v2/uat.md`. |
| 20 | +- PASS: Verified branch `main` before edits. |
| 21 | +- PASS: Continued from PR_26161_017 table-first Controls behavior. |
| 22 | +- PASS: Controls metadata moved away from beta to Wireframe with `releaseChannel: "wireframe"`. |
| 23 | +- PASS: Controller profile planning was added inside Controls, not as a separate tool. |
| 24 | +- PASS: Wireframe UI includes Device Type, Controller Name, Controller ID, Mapping Profile, Input, and Action. |
| 25 | +- PASS: Unknown controller status gives an actionable Refresh Devices step and future Create Profile path. |
| 26 | +- PASS: Existing mapping table behavior and DB persistence were preserved. |
| 27 | +- PASS: No production controller runtime or engine behavior was added. |
| 28 | + |
| 29 | +## Files Changed |
| 30 | + |
| 31 | +- `src/dev-runtime/guest-seeds/tool-metadata-inventory.js` |
| 32 | +- `toolbox/input-mapping-v2/index.html` |
| 33 | +- `toolbox/controls/index.html` |
| 34 | +- `tests/playwright/tools/InputMappingV2Tool.spec.mjs` |
| 35 | +- `docs_build/dev/reports/controls-wireframe-controller-profiles-report.md` |
| 36 | +- `docs_build/dev/reports/codex_review.diff` |
| 37 | +- `docs_build/dev/reports/codex_changed_files.txt` |
| 38 | +- `docs_build/dev/reports/playwright_v8_coverage_report.txt` |
| 39 | +- `docs_build/dev/reports/coverage_changed_js_guardrail.txt` |
| 40 | + |
| 41 | +## Testing Performed |
| 42 | + |
| 43 | +- PASS: `node --check src/dev-runtime/guest-seeds/tool-metadata-inventory.js` |
| 44 | +- PASS: `node --check tests/playwright/tools/InputMappingV2Tool.spec.mjs` |
| 45 | +- PASS: `node --check toolbox/input-mapping-v2/input-mapping-v2.js` |
| 46 | +- PASS: HTML restriction scan for inline scripts, style blocks, inline styles, and inline event handlers in both Controls routes. |
| 47 | +- PASS: `git diff --check` |
| 48 | + - Note: Git reported CRLF normalization warnings on touched files only. |
| 49 | +- PASS: `npx playwright test tests/playwright/tools/InputMappingV2Tool.spec.mjs --workers=1 --reporter=line` |
| 50 | + - Final result: 4 passed. |
| 51 | + - Initial run found only a test expectation mismatch because the registry API returns normalized `wireframe`; the assertion was corrected and the final run passed. |
| 52 | + |
| 53 | +## Playwright Coverage |
| 54 | + |
| 55 | +- Generated `docs_build/dev/reports/playwright_v8_coverage_report.txt`. |
| 56 | +- Generated `docs_build/dev/reports/coverage_changed_js_guardrail.txt`. |
| 57 | +- Coverage report includes an advisory WARN for `src/dev-runtime/guest-seeds/tool-metadata-inventory.js` because server-side seed metadata is not collected by browser V8 coverage. |
| 58 | +- Controls browser runtime coverage was collected for `toolbox/input-mapping-v2/input-mapping-v2.js`. |
| 59 | + |
| 60 | +## Manual Validation Steps |
| 61 | + |
| 62 | +1. Open `/toolbox/input-mapping-v2/index.html`. |
| 63 | +2. Confirm Controls shows as Wireframe in registry-backed tool metadata. |
| 64 | +3. Confirm Actions, Capture, Controller Profiles, Mappings, Mapping JSON, Devices, and Status panels appear. |
| 65 | +4. Confirm Controller Profiles shows Device Type, Controller Name, Controller ID, Mapping Profile, Input, and Action. |
| 66 | +5. Confirm the unknown controller status recommends Refresh Devices and points to the future Create Profile flow. |
| 67 | +6. Add a mapping row, save it, reload, and confirm it persists. |
| 68 | +7. Capture `KeyA`, confirm the mapping appears in the table and Mapping JSON, then click the token to delete it. |
| 69 | + |
| 70 | +## Skipped Lanes |
| 71 | + |
| 72 | +- Full samples smoke: SKIPPED because samples and sample JSON alignment are explicitly out of scope. |
| 73 | +- Broad workspace suite: SKIPPED because this PR only changes the Controls tool surface, Controls metadata, and targeted Controls Playwright coverage. |
| 74 | +- Engine tests: SKIPPED because no engine runtime files or controller runtime behavior changed. |
0 commit comments