Add verify skill: drive the console against vPOD
A project verify skill (.claude/skills/verify) capturing the recipe used this session: build the console + vPOD, launch both, drive the console's WinForms UI via UI Automation, and observe real behavior -- pod connection endpoint via netstat, egg contents in vPOD, the full Load/Run/Stop mission lifecycle -- rather than relying on tests alone. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
---
|
||||
name: verify
|
||||
description: Drive the TeslaConsole WinForms app against vPOD to verify console changes end-to-end on this machine.
|
||||
---
|
||||
|
||||
# Verifying console changes against vPOD
|
||||
|
||||
Build (Debug is what the exes below point at):
|
||||
|
||||
```
|
||||
dotnet build Console/TeslaConsole.csproj
|
||||
dotnet build vPOD/vPOD.csproj
|
||||
```
|
||||
|
||||
Launch both (the machine's `C:\ProgramData\Tesla Console\local.siteconfig`
|
||||
already has squad `bay1` with a provisioned `vPOD` pod at 127.0.0.1; vPOD's
|
||||
session key persists in `%LocalAppData%\vPOD\TeslaKeyStore.key`):
|
||||
|
||||
```
|
||||
Start-Process vPOD\bin\Debug\net48\vPOD.exe -ArgumentList "-app","bt" # or rp
|
||||
Start-Process Console\bin\Debug\net48\TeslaConsole.exe
|
||||
```
|
||||
|
||||
Drive the UI with System.Windows.Automation (UIA) — WinForms on net48 exposes
|
||||
menus, buttons, checkboxes, and DataGridView rows/cells as real UIA elements:
|
||||
|
||||
- Menus: ExpandCollapsePattern on "Games", InvokePattern on the item.
|
||||
- Pilots grid cells are named like `Enabled Row 1`, `Pilot Row 1`; real mouse
|
||||
clicks at the cell's BoundingRectangle center behave exactly like a user
|
||||
(needed for CellEndEdit paths — programmatic value sets bypass them).
|
||||
Click another cell afterwards to commit a checkbox cell edit.
|
||||
- Type into a grid cell: click it, then `[System.Windows.Forms.SendKeys]::SendWait()`.
|
||||
- The WeifenLuo dock tabs are NOT UIA TabItems; switch documents with
|
||||
Ctrl+Tab sent to the focused window.
|
||||
- Screenshots: Graphics.CopyFromScreen of the element's BoundingRectangle
|
||||
(coordinates are physical pixels; fine to pass straight to SetCursorPos).
|
||||
|
||||
Observe behavior:
|
||||
|
||||
- Game connection endpoint: `Get-NetTCPConnection -OwningProcess <consolePid>
|
||||
-RemotePort 1501`. vPOD binds 0.0.0.0:1501, so any 127.x.x.x target lands on
|
||||
it — distinguish targets by the netstat RemoteAddress, not by whether vPOD
|
||||
answered.
|
||||
- Mission content: vPOD's Current Egg pane shows the decoded egg (player IPs,
|
||||
pilots, map) after clicking Load; its protocol log timestamps connects,
|
||||
disconnects, and state transitions.
|
||||
- Full lifecycle: enable a pod row + pilot name → Load → Run Mission → Stop
|
||||
Mission. With the watchdog checkbox on, vPOD drops the connection after a
|
||||
mission ends and comes back in WaitingForEgg — an observed reconnect there
|
||||
is normal.
|
||||
|
||||
Gotchas: enabling a pod row only requests the connection once the cell edit
|
||||
commits. A helper script with these UIA primitives from a previous session:
|
||||
scratchpad `uia.ps1` (Get-Window / Find-ByName / Click-Elem / Screenshot) —
|
||||
recreate from this recipe if gone. Close both apps when done
|
||||
(`CloseMainWindow`, then Stop-Process stragglers).
|
||||
Reference in New Issue
Block a user