بنقرة واحدة
wt-multi-pane-it
Build or maintain LocalOnly Windows Terminal multi-pane integration tests for Copilot Booster.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Build or maintain LocalOnly Windows Terminal multi-pane integration tests for Copilot Booster.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
{what this skill teaches agents}
Build real git source, bare remote, and local clone fixtures for CopilotBooster integration tests.
{what this skill teaches agents}
Reusable WinForms pattern for textboxes that accept either a bare GitHub PR/Issue number or a full github.com URL.
Core conventions and patterns for this codebase
Isolate tests for services that write under %LOCALAPPDATA% without touching the real user profile.
| name | wt-multi-pane-it |
| description | Build or maintain LocalOnly Windows Terminal multi-pane integration tests for Copilot Booster. |
Use this when a test must prove Copilot Booster can detect and focus Copilot CLI sessions hosted inside Windows Terminal tabs or split panes.
[LocalOnlyFact]
[Trait("Category", "LocalOnly")]
Application.DoEvents().WindowEventHookCollection if it manipulates real windows or foreground focus.Skip with Assert.Skip when any of these is missing:
Environment.UserInteractive, non-session-0, foreground HWND exists);wt.exe on PATH (where.exe wt.exe is enough);copilot --help succeeds and advertises --deny-url;Create one PowerShell wrapper script per pane. Launch WT directly; do not invoke through PowerShell unless necessary.
var args = "-w \"cb-it-<guid>\" "
+ "new-tab --title \"PaneA-Probe\" --suppressApplicationTitle powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File \"pane-a.ps1\""
+ " ; "
+ "split-pane --title \"PaneB-Probe\" --suppressApplicationTitle powershell.exe -NoLogo -NoProfile -ExecutionPolicy Bypass -File \"pane-b.ps1\"";
Process.Start(new ProcessStartInfo
{
FileName = "wt.exe",
Arguments = args,
UseShellExecute = true
});
Semicolons are WT command separators when passed directly in ProcessStartInfo.Arguments; do not escape them as \; unless a shell is interpreting the command first.
--deny-url=<guid> is a beacon for process discovery, not the session ID.
Wrapper script pattern:
Start-Process copilot -ArgumentList @('--deny-url=<guid>') -PassThru.Get-CimInstance Win32_Process for CommandLine -like '*--deny-url=<guid>*'.Wait-Process on that PID so the pane remains tied to the live process.C# mapping pattern:
~/.copilot/logs/process-*-<pid>.log.CopilotLogWatcherService.TryParseLogContent to get session_id.To force deterministic display names:
CopilotLogWatcherService discover the external session and set the unresolved placeholder.<session>/events.jsonl:{"type":"user.message","data":{"content":"PaneA-Probe"}}
SessionNameOverrideService.Get(...).ResolvedFromUserMessage == true.tracker.RemoveCopilotHost(sessionId);
tracker.HandleExternalSessionDiscovered(sessionId, copilotPid);
Assert all of these when running live:
SessionGridVisuals displays the resolved label, not the GUID.Copilot CLI.tracker.GetCopilotHost(sessionId).HostKindLabel == "Windows Terminal".WindowsTerminalPaneGateway.EnumeratePanes(wtHwnd) reports the expected pane/tab selected.Never pre-clean Copilot session state for this test. On teardown:
WM_CLOSE to captured WT HWNDs.%TEMP%\copilot-booster-it-<timestamp>\; do not delete them.