--- 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\net40\vPOD.exe -ArgumentList "-app","bt" # or rp Start-Process Console\bin\Debug\net40\TeslaConsole.exe ``` (net40 since the XP11 port — both exes run on the machine's 4.8 runtime.) Drive the UI with System.Windows.Automation (UIA) — WinForms 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 -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).