Merge branch 'worktree-agent-af2a6023106279956' into feat/instance-picker

This commit is contained in:
Joseph Doherty
2026-09-08 09:45:38 -04:00
3 changed files with 46 additions and 1 deletions
@@ -332,11 +332,41 @@ public class InstancePickerTests : BunitContext
var items = cut.FindAll("[role='treeitem']");
Assert.Equal("0", items[0].GetAttribute("tabindex"));
Assert.All(items.Skip(1), i => Assert.Equal("-1", i.GetAttribute("tabindex")));
// The tab stop above is the behavioural assertion; this is the belt-and-braces check
// that real browser focus was requested too. ElementReference.FocusAsync surfaces as a
// JS invocation under Loose mode — drop this line if a bUnit upgrade stops recording it.
Assert.Contains(
JSInterop.Invocations,
i => i.Identifier.Contains("focus", StringComparison.OrdinalIgnoreCase));
}
[Fact]
public void ArrowDown_OnAClosedPicker_OpensThePanel_AndFocusesTheFirstRow()
{
// The tree does not exist yet when the keydown is handled, so this pins the deferred
// path: the panel opens in this render pass and the focus lands in the next one.
var cut = RenderPicker();
Assert.Empty(cut.FindAll("[data-test='t-panel']"));
Press(cut, "ArrowDown");
Assert.Single(cut.FindAll("[data-test='t-panel']"));
Assert.Equal("0", cut.FindAll("[role='treeitem']")[0].GetAttribute("tabindex"));
}
[Fact]
public void Escape_WhenClosed_IsANoOp()
{
var cut = RenderPicker(selectedInstanceId: 8);
Assert.Equal("Zulu", InputValue(cut));
Press(cut, "Escape");
Assert.Empty(cut.FindAll("[data-test='t-panel']"));
Assert.Equal("Zulu", InputValue(cut));
}
[Fact]
public void FilterIsNotCarriedIntoSelection()
{