.agents/skills/wox-test-ensurance/SKILL.md
Drive Wox test assurance from the repository root until the core tests, headless Go UI tests, and native Go UI smoke tests pass. Treat failing output as evidence, fix the real cause first, and only change tests when the implementation is demonstrably correct and the test is stale, over-specified, or invalid.
If this skill is explicitly invoked, the user has already authorized the complete Wox test assurance workflow: make test, make test-go-ui-unit, and make smoke. Do not stop after summarizing a plan or ask for extra confirmation.
If the user asks for one exact command, such as make test, run only that requested command and fix its failures. Do not silently expand an exact command request into native UI smoke testing.
Use the active Wox checkout containing the root Makefile and wox.core directory. Do not assume a fixed drive or checkout path.
Before running the suite, ensure no local Wox instance or VS Code-launched Wox debug process from the active checkout is still running. Force-stop matching processes; stale processes can hold ports or keep old state alive, and native smoke tests must own the Wox process they exercise.
Use a Windows PowerShell check like this from the repository root:
$repo = (Resolve-Path ".").Path
$woxProcesses = Get-CimInstance Win32_Process | Where-Object {
$name = $_.Name
$cmd = $_.CommandLine
$exe = $_.ExecutablePath
$isWoxBinary = $name -in @("Wox.exe", "wox.exe", "wox.core.exe", "__debug_bin.exe")
$isWoxDebug = $name -in @("dlv.exe", "__debug_bin.exe") -and $cmd -like "*$repo*"
$isRepoRuntime = ($exe -like "$repo*") -and ($name -like "*wox*")
$isWoxBinary -or $isWoxDebug -or $isRepoRuntime
}
$woxProcesses | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }
If stopped processes are found, mention them briefly in the working update or final summary.
make test for the core integration suite.make test-go-ui-unit for retained-widget, automation-contract, launcher, and driver tests. This suite does not open a native window.make smoke for the real single-process Go UI. On headless Linux, set GO_UI_SMOKE_RUNNER="xvfb-run -a".make smoke suite.Prefer this order:
Use targeted reruns only while narrowing a failure. They are not final proof. The final proof is every suite required by the invocation contract passing.
make command passes.make test, make test-go-ui-unit, and make smoke runs.