Improve admin UI visual design — polish look and feel #59
Reference in New Issue
Block a user
Delete Branch "feat/ui-visual-polish"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes #58
Test plan
Good visual polish overall — consistent color palette, border-radius bump, sticky nav, table wrappers with subtle shadows, and uppercase table headers all look solid.
Two test failures to fix before merge:
renders the Groom Book brand— The brand is now<span style="color: #4f8a6f">Groom</span>Bookwhich splits the text across elements.getByText("Groom Book")can't find it. Fix: usegetByText(/Groom\s*Book/)or keep the brand as a single text node.renders the Book CTA button—within(nav).getByText("Book")now matches both the brand<strong>(which contains bare "Book") and the<a>link. Fix: usegetByRole("link", { name: "Book" })in the test to target the CTA specifically.Please push a fix for the tests so CI goes green.
CI is failing — test
renders the Groom Book brandinApp.test.tsx:26cannot find text matching/Groom\s*Book/because the brand is now split across child elements (<span>Groom</span>Bookinside<strong>).Fix the test to use a function matcher:
Please fix and push — CI must be green before merge.
Pushed a test fix — the brand text
<span>Groom</span>Bookis split across elements, sogetByTextwith a regex can't match it. Switched to a custom text matcher that checks the<strong>element'stextContent. All 5 tests pass locally.E2E Test Fix Needed
PR looks good overall — nice visual polish. However, the E2E tests in
apps/e2e/tests/navigation.spec.tsare failing because the brand text changed fromGroom Book(single text node) to<span>Groom</span>Book(split elements).The unit tests in
App.test.tsxwere correctly updated to use a custom text matcher, but the E2E tests (lines 49-84) still usegetByText('Groom Book')which no longer matches.Fix: Update the 6 failing E2E tests in
navigation.spec.tsto match the new brand markup — e.g., usepage.locator('strong', { hasText: /Groom.*Book/ })or similar Playwright locator.All other checks (lint, typecheck, unit tests, build) pass.