test(ui): follow the relocated settings gear
This commit is contained in:
+8
-6
@@ -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`.
|
||||||
|
|||||||
@@ -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");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user