fix(ui): unify heading help, table sizing and navigation contracts

Verified with the coordinated workspace changes by devkit full run
2026-09-08T225814-186389-0000-3e3ed7cd (all seven phases passed).
This shared UI pass does not mark the individual module reviews complete.
This commit is contained in:
2026-09-09 02:03:16 +02:00
parent 6591aaa3fd
commit 6d37aa527f
54 changed files with 1728 additions and 117 deletions
@@ -10,6 +10,7 @@ test("collapsed rail keeps visible group separators; opening settings is clean",
expect((await separator.boundingBox())!.width).toBeGreaterThan(20);
}
await expect(page.getByTestId("navigation-draft")).toHaveText("null");
await expect(page.locator('[data-navigation-layout-status="inherited"]')).toContainText("standard layout groups available modules by product area");
const spacing = await page.locator(".navigation-preference-list > li").first().evaluate((row) => {
const style = getComputedStyle(row);
return { padding: Number.parseFloat(style.paddingLeft), gap: Number.parseFloat(style.columnGap) };
@@ -72,9 +73,14 @@ test("no-op reordering stays clean and optional module positions survive other e
await handle.press("Space"); await handle.press("Enter");
await expect(page.getByTestId("navigation-draft")).toHaveText("null");
await page.goto("/?navigation-layout&unavailable");
await expect(page.locator('[data-navigation-layout-status="flat"]')).toContainText("without group headings or dividers");
await expect(page.locator(".icon-rail").getByRole("separator")).toHaveCount(0);
await page.getByRole("button", { name: "Move Mail up", exact: true }).click();
const draft = JSON.parse(await page.getByTestId("navigation-draft").textContent() ?? "null");
expect(draft.order).toContain("optional.navigation.absent");
await page.getByRole("button", { name: "Use inherited layout", exact: true }).click();
await expect(page.locator(".icon-rail").getByRole("separator")).toHaveCount(2);
await expect(page.getByTestId("navigation-draft")).toHaveText("null");
});
test("German narrow editor does not overflow and read-only controls cannot mutate", async ({ page }) => {