Commit Graph

109 Commits

Author SHA1 Message Date
Joseph Doherty 014038fbbd test(playwright): repair 14 selector-drift failures from two Central UI refactors
All 14 pre-existing Playwright failures triage to selector drift, not rig data,
timing, or application defects — every one is a test-side assumption that two
merged UI refactors invalidated without updating this suite.

`9e243493` (2026-08-11 density sweep + Theme 0.4.1) regrouped page/dialog action
buttons into `btn-group btn-group-sm`, moving the size class off the button and
onto the group. Twelve selectors still pinned `.btn-sm` on the button itself:
ConfigurationAuditLog's Search (4 tests), the Topology Create/Move dialog footers
(3), the Notification Lists row Edit/Delete (2), and the Notification Report row
Retry/Discard (2). The same sweep re-cast SiteForm's per-node subsections from
bare `<h6>` headings to Bootstrap cards, so `h6:has-text('Node A')` matches
nothing (1). Note the swept surfaces are a subset — the recipient table on the
notification-list edit form, OffsetPager, DiffDialog and friends still carry
`.btn-sm` on the button, so the selectors are deliberately asymmetric; the
remaining `.btn-sm` selectors in this suite were each re-verified against current
markup rather than swept along.

`a506b19d` moved TemplateEdit's page-embedded modals onto the DialogService host.
The attribute modal is now the DialogHost modal (`modal fade show d-block`, title
in an h5), so the `:not(.fade)` guard written to exclude DialogHost — plus the
`h6.modal-title` assertion — excluded the very modal under test (2). TemplateEdit
renders no page-local modal any more, so the guard has nothing left to guard.

Comments at each site record why the size class is absent, so a future reader
does not "fix" the selectors back.

Verified: 14 failed / 158 passed baseline -> the 36 tests in the seven affected
classes all green; solution build 0 warnings / 0 errors.
2026-08-15 03:33:51 -04:00
Joseph Doherty 9e243493fb ui: Central UI density/consistency sweep + Theme 0.4.1
Applies the family-wide admin-UI cleanup playbook to the Central UI so the
Blazor surfaces stop diverging from the shared kit: buttons are grouped rather
than individually sized, long cell values are contained instead of widening
tables, and hard-coded colours give way to theme tokens.

The headline fix is that MainLayout passed Accent="#2f5fd0" to ThemeShell,
which the kit emits as an inline style on the shell root. Being a descendant of
<html>, it beat the [data-bs-theme="dark"] override for the entire app, so the
dark accent had never rendered. Declaring --accent in site.css :root instead
lets both schemes resolve; light is unchanged because the value already matched
the kit's light default.

Theme pins to 0.4.1, which upstreams the local .btn sizing block verbatim, so
that block is deleted here rather than duplicated. Verified byte-identical
before removal; the repo now declares no --bs-btn-* anywhere.

NOT purely cosmetic, contrary to the sweep's stated scope: four detail-modal
surfaces (NotificationReport, ConfigurationAuditLog, ParkedMessages,
SiteCallsReport) were additionally refactored from holding the selected record
to holding its id and re-resolving from the current page each render, with the
resolve doubling as the visibility gate. A background refresh that drops the
row now closes the modal instead of showing a stale snapshot. This is a
behaviour change and is called out rather than buried: a full-suite run turned
up one intermittent CentralUI failure, CloseButton_DismissesModal, whose stack
(GetRequiredEventBindingEntry during DispatchEventAsync) indicates the handler
was disposed between render and click — a window the previous field-held record
made structurally impossible. Treat the modal lifecycle here as unreviewed.

Build 0/0; suite green apart from that one intermittent failure.
2026-08-11 05:50:12 -04:00
Joseph Doherty 63c16d6912 refactor(comm): retire ClusterClient naming after the gRPC cutover
Phase 4 of the ClusterClient -> gRPC migration deleted the Akka transports
but left the naming behind: `ClusterClientSiteAuditClient` was transport-
agnostic and worked unchanged, so it survived the deletion under a name
that now describes a transport the repo no longer has. Same for a scatter
of doc-comments still framing gRPC as "the new transport" beside an Akka
one that is gone.

Renames it to `SiteCommunicationAuditClient` (and its test file) and
rewrites the stale comments to describe the single transport that exists.
Also tightens CLAUDE.md: drops the self-describing directory listing and
the 27-component enumeration in favour of the non-obvious parts only.

Behaviour-neutral: names and prose only. Recorded as the Phase 4
follow-up in docs/plans/2026-07-22-clusterclient-to-grpc-plan.md.
2026-07-27 15:40:01 -04:00
Joseph Doherty 8524a7f746 test(sms-e2e): valid Twilio SID fixture so the create path passes (Gitea #29)
TestAccountSid was 'ACtest123' (AC + 6 chars). The management create
path validates the Account SID against ^AC[0-9a-fA-F]{32}$
(ManagementActor.cs:2205, added 2026-07-10, commit 40088a21) while the
fixture predates the guard (2026-06-19) — so the create was rejected and
the config-card + secret-non-leak assertions have been red/inert since.

Use AC + 32 hex (AC00000000000000000000000000000001) so the create
succeeds and the downstream Auth-Token-non-leak assertion actually runs
again. Unit-level RepositoryCoverageTests keep their short SIDs — they
construct SmsConfiguration directly and never hit the validated path.
2026-07-23 14:03:49 -04:00
Joseph Doherty d6ead8ae62 test(sms): live Playwright E2E for SMS config page + Type selector + Type column (S11) 2026-06-19 11:54:25 -04:00
Joseph Doherty f08a4d609f test(playwright): M9 surface coverage — template search, schema-library, move-connection (#263) 2026-06-19 04:31:38 -04:00
Joseph Doherty c68b9cccd2 test(playwright): harden #230 line-diff test — force-open nested details, robust +/- hunk assert
Live-run fixes: nested <details> made the summary selector ambiguous (strict-mode);
force every disclosure open via JS. Drop the brittle specific-line-text ('99') assert
(depends on CLI-seeded bodies) for a ≥1 add-hunk + ≥1 remove-hunk count check. (#230)
2026-06-19 04:27:20 -04:00
Joseph Doherty 529921f2de test(playwright): M8 import Map step + per-line diff coverage (#230) 2026-06-19 04:23:12 -04:00
Joseph Doherty 8270a603d3 test(playwright): update pager/markup selectors to M10 component hooks (INT) 2026-06-18 20:41:43 -04:00
Joseph Doherty 67ff494bf5 test(playwright): web-first timeouts on alarm-override zero-count asserts + split compound asserts (T41 review) 2026-06-18 19:42:33 -04:00
Joseph Doherty b7f7fe935c test(playwright): alarm-override trigger-config scenarios — HiLo merge, non-HiLo replace, validation, cancel, clear (T41) 2026-06-18 19:35:14 -04:00
Joseph Doherty 3f1f4ed7c6 test(kpi): K17 — Playwright KPI trend-chart spec (tolerant, SkippableFact) 2026-06-17 20:50:23 -04:00
Joseph Doherty 59e094ada3 test(playwright): DebugViewTree — tolerate empty alarm forest (TreeView renders EmptyContent, not role=tree, when no alarms) 2026-06-17 16:08:37 -04:00
Joseph Doherty 7f59ae12cb test(playwright): DebugView tabs+trees — assert tabbed layout, tree panes, Alarms-tab switch on connected instance 2026-06-17 15:33:28 -04:00
Joseph Doherty 68f911e634 docs: note alarmOverrides in GetInstanceDocumentAsync; mark template-alarm/override plan complete 2026-06-07 10:31:02 -04:00
Joseph Doherty 5bc8dbad31 test(playwright): Notification hygiene — scoped pager locator, next-enabled re-assert, role-mapping-delete doc note 2026-06-07 10:22:54 -04:00
Joseph Doherty d3adf8c2e4 test(playwright): SiteCalls hygiene — site-a seeds where grid-visible, scoped pager locator, next-enabled re-assert 2026-06-07 10:20:33 -04:00
Joseph Doherty f78086334f test(playwright): InstanceConfigure alarm-override set-priority/clear round-trip; drop stale TODO 2026-06-07 10:17:27 -04:00
Joseph Doherty c3d7d8a6a4 test(playwright): provision a HiLo alarm in InstanceConfigureFixture (via typed CLI flags) 2026-06-07 10:13:45 -04:00
Joseph Doherty f0b144ebda test(playwright): CliRunner AddAlarm + alarm-override-delete helpers + round-trip (typed flags) 2026-06-07 10:05:32 -04:00
Joseph Doherty 70e84a7b79 test(playwright): seed inside try in Notification filter/modal tests for guaranteed cleanup (review fix) 2026-06-07 04:32:16 -04:00
Joseph Doherty b1d7497463 test(playwright): seed inside try in Notification stuck/pagination tests for guaranteed cleanup (review fix) 2026-06-07 04:23:33 -04:00
Joseph Doherty 99a69c1fba test(playwright): Notification Report stuck-only + pagination edge cases (Wave 4) 2026-06-07 04:18:04 -04:00
Joseph Doherty 5774b30d0d test(playwright): scope Notification detail-modal title selector to the open modal (review fix) 2026-06-07 04:15:25 -04:00
Joseph Doherty 42f38996a9 test(playwright): Notification Report filter-combo + detail-modal edge cases (Wave 4) 2026-06-07 04:12:02 -04:00
Joseph Doherty e36adf8acd test(playwright): gate Audit non-API cURL assertion on rendered drawer body (review fix) 2026-06-07 04:09:24 -04:00
Joseph Doherty 3b71ac220a test(playwright): Site Calls keyset pagination edge case (Wave 4) 2026-06-07 04:06:08 -04:00
Joseph Doherty f5535ad5c1 test(playwright): Audit Log non-API-no-cURL + drawer-close edge cases (Wave 4) 2026-06-07 04:02:01 -04:00
Joseph Doherty eea68b97f6 test(playwright): Site Calls status-filter + empty-state edge cases (Wave 4) 2026-06-07 03:58:52 -04:00
Joseph Doherty 79778e12b7 test(playwright): Audit Log filter-combination + empty-state edge cases (Wave 4) 2026-06-07 03:55:34 -04:00
Joseph Doherty 0efbb66bc3 test(playwright): LDAP missing-field + duplicate-group edge cases (Wave 4) 2026-06-07 03:50:05 -04:00
Joseph Doherty 8419eb0d86 test(playwright): Templates edit-attribute + delete-blocked-by-instance edge cases (Wave 4) 2026-06-07 03:47:04 -04:00
Joseph Doherty 3e57c6b054 test(playwright): drop inert defensive teardown in Sites dup-identifier test (review fix) 2026-06-07 03:43:49 -04:00
Joseph Doherty 64222cf596 test(playwright): Templates duplicate-name + create-cancel edge cases (Wave 4) 2026-06-07 03:37:25 -04:00
Joseph Doherty 11ba61c39c test(playwright): Sites duplicate-identifier + cancel-from-edit edge cases (Wave 4) 2026-06-07 03:34:47 -04:00
Joseph Doherty 5c190885da test(playwright): generalize NotificationDataSeeder for status/created-at (Wave 4 prep)
Add InsertNotificationAsync with explicit status/createdAt parameters so tests
can seed back-dated Retrying rows that satisfy the IsStuck derived property
(Status ∈ {Pending,Retrying} && CreatedAt < now − 10 min). Refactor
InsertParkedNotificationAsync to delegate to it, preserving its exact public
signature and producing identical SQL for existing callers.
2026-06-07 03:31:28 -04:00
Joseph Doherty 40f6d21392 test(playwright): add CLI role-mapping create/delete helpers (Wave 4 prep) 2026-06-07 03:28:29 -04:00
Joseph Doherty c6b682c82f test(playwright): make ApiKey name-commit deterministic under full-suite load (flake fix) 2026-06-06 16:06:24 -04:00
Joseph Doherty 8f63ef08eb test(playwright): flush ApiKey name @bind before Save to destabilize validation flake 2026-06-06 15:50:33 -04:00
Joseph Doherty 037184f213 test(playwright): add Configuration Audit modal/copy/bundle-chip coverage (Wave 3) 2026-06-06 15:37:57 -04:00
Joseph Doherty 0b71712ee1 test(playwright): scope ConfigAudit pagination button selectors (review fix) 2026-06-06 15:34:09 -04:00
Joseph Doherty 6975988ab4 test(playwright): add Configuration Audit render/search/pagination coverage (Wave 3) 2026-06-06 15:29:39 -04:00
Joseph Doherty 6523499ddb test(playwright): harden ApiMethod Name selector + tab-settle + modal-title (review fix) 2026-06-06 15:23:01 -04:00
Joseph Doherty 90ef6e8dc5 test(playwright): add ConfigAuditDataSeeder (AuditLogEntries direct-SQL seeder) (Wave 3) 2026-06-06 15:20:03 -04:00
Joseph Doherty 1ecce58437 test(playwright): add ApiMethod validation + visibility + delete coverage (Wave 3) 2026-06-06 15:16:39 -04:00
Joseph Doherty 8e65fc51e5 test(playwright): node-scope DataConnection kebab + target site node (review fix) 2026-06-06 15:13:47 -04:00
Joseph Doherty e2a6453fb6 test(playwright): add SharedScript list/delete + form-render coverage (Wave 3) 2026-06-06 15:10:33 -04:00
Joseph Doherty 6861f5c14c test(playwright): add DataConnection tree-delete + create-gating coverage (Wave 3) 2026-06-06 15:07:53 -04:00
Joseph Doherty 22a440bddf test(playwright): use label-anchored ExternalSystem form selectors (review fix) 2026-06-06 15:02:08 -04:00
Joseph Doherty 4cfe950232 test(playwright): drop hollow SMTP restore, make render assert web-first (review fix) 2026-06-06 15:00:08 -04:00