test(ui): follow the relocated settings gear

This commit is contained in:
2026-11-02 11:31:49 -08:00
parent 0e1f948189
commit e6a7147dc3
2 changed files with 22 additions and 12 deletions
+8 -6
View File
@@ -13,20 +13,22 @@
`82609a5`. `82609a5`.
- `NotificationServiceTests` runs tint assertions with real theme resources and uses the current - `NotificationServiceTests` runs tint assertions with real theme resources and uses the current
`Brush.ErrorContainer` token; committed as `caf91e6`. `Brush.ErrorContainer` token; committed as `caf91e6`.
- `ScoreboardSimulationTests` now checks the shared `Helpers/DevBuild.cs` compile-time gate; focused - `ScoreboardSimulationTests` now checks the shared `Helpers/DevBuild.cs` compile-time gate;
test passes. This task is ready to commit. committed as `0e1f948`.
- Clean app build is 0 warnings. Full suite: 4 failed / 518 passed of 522; remaining failures are - `UiShellTests` now checks the orange Settings gear on the preview rail and the EDIT/session
ordering in the top bar; focused test passes. This task is ready to commit.
- Clean app build is 0 warnings. Full suite: 3 failed / 519 passed of 522; remaining failures are
being handled one task and one local commit at a time. being handled one task and one local commit at a time.
## Next action ## Next action
Commit the scoreboard-simulation guard update, then take the next remaining failure. Do not push Commit the UiShell assertion update, then take the next remaining failure. Do not push absent a
absent a milestone/checkpoint request. milestone/checkpoint request.
## Landmines ## Landmines
- Build/test with Windows `dotnet.exe`; the full suite can hang in WASAPI teardown. - Build/test with Windows `dotnet.exe`; the full suite can hang in WASAPI teardown.
- `verify.sh` cannot pass until the remaining 4 suite failures are resolved; scope checks are run - `verify.sh` cannot pass until the remaining 3 suite failures are resolved; scope checks are run
separately when that gate exits early. separately when that gate exits early.
- Any integration test constructing `MainWindow` must set `LayoutPathOverride` to a temporary DB - Any integration test constructing `MainWindow` must set `LayoutPathOverride` to a temporary DB
and clear it in `finally`. and clear it in `finally`.
+14 -6
View File
@@ -75,17 +75,25 @@ public class UiShellTests
} }
[Fact] [Fact]
public void Edit_sits_beside_the_orange_gear() public void Settings_gear_is_orange_on_the_preview_rail_and_EDIT_precedes_the_session_cluster()
{ {
var topBar = SourceAssert.Text("Controls", "TopBar.xaml"); var topBar = SourceAssert.Text("Controls", "TopBar.xaml");
var preview = SourceAssert.Text("Controls", "PreviewPane.xaml");
// The gear is a LlamaCasty control, so it wears the app's orange (not a muted icon grey). // The settings gear moved from the top bar to the first orange preview-rail tab.
Assert.Contains("Fill=\"{StaticResource Brush.Attention}\" Width=\"18\" Height=\"18\"", topBar); var settingsTooltip = preview.IndexOf("ToolTip=\"Settings\"", System.StringComparison.Ordinal);
Assert.True(settingsTooltip >= 0, "the Settings gear tab is missing from the preview rail");
var gearStart = preview.LastIndexOf("<Border ", settingsTooltip, System.StringComparison.Ordinal);
var gearEnd = preview.IndexOf("</Border>", settingsTooltip, System.StringComparison.Ordinal);
Assert.True(gearStart >= 0 && gearEnd > settingsTooltip, "the Settings tab has no bordered gear surface");
var gear = preview[gearStart..gearEnd];
Assert.Contains("Background=\"{StaticResource Brush.Attention}\"", gear);
Assert.Contains("MouseLeftButtonUp=\"SettingsTab_Click\"", gear);
Assert.DoesNotContain("ToolTip=\"Settings\"", topBar);
// EDIT lives in the LEFT cluster, immediately after the gear — not in the centre session // EDIT stays in the left brand cluster, before the centre session cluster.
// cluster (creator ruling 2026-10-30).
var edit = topBar.IndexOf("EditingActive", System.StringComparison.Ordinal); var edit = topBar.IndexOf("EditingActive", System.StringComparison.Ordinal);
var centre = topBar.IndexOf("Grid.Column=\"1\"", System.StringComparison.Ordinal); var centre = topBar.IndexOf("<StackPanel Grid.Column=\"1\"", System.StringComparison.Ordinal);
Assert.True(edit > 0 && centre > edit, Assert.True(edit > 0 && centre > edit,
"the EDIT toggle must appear before the centre (session) cluster"); "the EDIT toggle must appear before the centre (session) cluster");
} }