Commit Graph

1231 Commits

Author SHA1 Message Date
Joseph Doherty a8a515ec8a test(e2e): add CliRunner helpers for data-connection, api-method, api-key teardown, instance read-back 2026-06-06 11:37:57 -04:00
Joseph Doherty c23e2bf227 feat(centralui): add data-test hooks to InstanceConfigure selects + error alert (test instrumentation) 2026-06-06 11:37:03 -04:00
Joseph Doherty 8e8bf44a29 docs: add Playwright coverage-fill Wave 1 plan (InstanceConfigure, API keys, Transport export) + tasks 2026-06-06 11:32:18 -04:00
Joseph Doherty 58bf59a42d docs: add Playwright coverage-fill design (Tier 1-3 + edge sweep, 4 waves) 2026-06-06 11:23:59 -04:00
Joseph Doherty 667d141f1a test(e2e): unify toast assertion + extract shared PlaywrightDbConnection (review cleanups) 2026-06-05 11:00:27 -04:00
Joseph Doherty 5546c32593 test(e2e): move deploy/disable preconditions inside try for guaranteed cleanup (review fix)
In Disable_Instance_ShowsOutcomeToast and Enable_Instance_ShowsOutcomeToast, the
precondition CLI calls (DeployInstanceAsync / DisableInstanceAsync) were between
CreateInstanceAsync and the try block. A throw there would skip the finally
DeleteInstanceAsync, leaking the instance. Moved those calls to be the first
statements inside try so cleanup always runs once the instance exists.
2026-06-05 10:52:00 -04:00
Joseph Doherty ad0bc33231 test(e2e): cover Topology Enable/Disable/Delete + fix toast assertion 2026-06-05 10:48:06 -04:00
Joseph Doherty fac0bcbb01 test(e2e): use web-first toast assertion in notification tests (review fix) 2026-06-05 10:47:06 -04:00
Joseph Doherty 1cbf260969 test(e2e): add wizard sentinel waits + tighten audit-link assertion (review fixes) 2026-06-05 10:46:57 -04:00
Joseph Doherty 4d55c0ac95 test(e2e): cover notification retry/discard + parked-messages query 2026-06-05 10:40:06 -04:00
Joseph Doherty 9cc5b7355e test(e2e): cover Transport Import apply round-trip 2026-06-05 10:38:42 -04:00
Joseph Doherty e358c231ce test(e2e): cover Topology Deploy action 2026-06-05 10:38:34 -04:00
Joseph Doherty 043914fd71 test(e2e): scope Site delete dropdown to .dropdown (review fix) 2026-06-05 10:34:07 -04:00
Joseph Doherty 917e5f30bf test(e2e): structural modal discriminator + simpler post-delete wait (review fixes) 2026-06-05 10:34:07 -04:00
Joseph Doherty 8e11f1f900 test(e2e): guard DeploymentFixture partial-init + teardown (review fixes) 2026-06-05 10:30:16 -04:00
Joseph Doherty 19c4412fd1 test(e2e): cover Template create/add-attribute/delete round-trip 2026-06-05 10:28:53 -04:00
Joseph Doherty 3998a6126f test(e2e): cover Site create/edit/delete round-trip
Adds CreateEditDelete_Site_RoundTrips [SkippableFact] to SiteCrudTests.
Exercises the full create → edit → delete UI flow against the live cluster,
with CliRunner best-effort teardown so no zztest-* sites leak on mid-test failure.
2026-06-05 10:28:40 -04:00
Joseph Doherty 271f70b1d2 test(e2e): standardize AuditLog tests on SkippableFact + skip summary log 2026-06-05 10:25:16 -04:00
Joseph Doherty 234ddb5201 test(e2e): add DeploymentFixture (ephemeral instance on site-a) 2026-06-05 10:25:06 -04:00
Joseph Doherty 3d9ef0a477 test(e2e): harden LDAP teardown + tighten nav/health selectors (review fixes) 2026-06-05 10:19:48 -04:00
Joseph Doherty 754f049a98 test(e2e): guard BundleExport comma + document DeleteAreaAsync (review fixes) 2026-06-05 10:11:17 -04:00
Joseph Doherty 12bf08f64a test(e2e): cover LDAP mapping create/edit/delete round-trip 2026-06-05 10:09:15 -04:00
Joseph Doherty 4f4b34ea89 test(e2e): assert Health KPI tiles resolve (singleton-hang guard)
Guards against the Akka singleton Ask hang regression: asserts all nine KPI
tiles on /monitoring/health resolve to numeric values and never show the
em-dash degrade placeholder (—). Covers Notification Outbox, Audit, and
Site Call tile groups. Selector disambiguation: Outbox tiles are div.card,
Site Call tiles are button.card — prevents strict-mode collisions on the
shared "Stuck" and "Parked" labels.
2026-06-05 10:08:32 -04:00
Joseph Doherty 2a25f2aaf8 test(e2e): assert destination renders, not just URL, in nav tests 2026-06-05 10:07:19 -04:00
Joseph Doherty 4a7c46f1db test(e2e): add CliRunner typed fixture helpers 2026-06-05 10:04:05 -04:00
Joseph Doherty bf78e3e7bf test(e2e): harden CliRunner timeout drain + skip-counter (review fixes) 2026-06-05 09:59:41 -04:00
Joseph Doherty 9e914299c8 test(e2e): add CliRunner + ClusterAvailability probe 2026-06-05 09:56:47 -04:00
Joseph Doherty 51e48fca91 test(e2e): reference CLI project so tests can shell out to it 2026-06-05 09:53:51 -04:00
Joseph Doherty b540015fbd docs(tests): implementation plan for Playwright coverage expansion
16 task-by-task steps: shared CliRunner + ClusterAvailability skip infra,
DeploymentFixture + deploy/enable/disable/delete suites, notification
retry/discard + parked-messages query, Transport Import round-trip, Site/
Template/LDAP CRUD round-trips, nav render hardening, Health KPI guard, and a
no-residue verification pass. Co-located .tasks.json for resumable execution.
2026-06-05 09:52:12 -04:00
Joseph Doherty cb3b3bf373 docs(tests): design for Playwright coverage expansion (7 audit recs)
Captures the 2026-06-05 coverage audit's gaps and the approved approach for
closing them: ephemeral CLI-provisioned fixtures with outcome-tolerant asserts
for the mutating suites (deploy lifecycle, retry/discard, transport import),
UI CRUD round-trips, nav render hardening, a Health KPI load test, and a
standardized skip-and-log policy. Next: writing-plans turns this into tasks.
2026-06-05 09:39:35 -04:00
Joseph Doherty d33617d65d fix(host): register ActorSystem as DI singleton so health-probe scopes don't dispose it (HOST-021)
Per-probe health-check child scopes were disposing the AddTransient-bridged
ActorSystem (IDisposable), terminating the live cluster node ~4s after boot and
leaving every singleton-proxy Ask to hang the full 30s QueryTimeout — the central
report pages (/notifications, /site-calls, /monitoring/health) loaded in ~30s.
Bridge it as a singleton via a new lazy AkkaHostedService.GetOrCreateActorSystem()
so child-scope disposal never touches it. Verified: 0 post-startup terminates,
healthy active/standby, report pages ~0.05s, Playwright 68 passed / 0 failed.
2026-06-05 08:26:09 -04:00
Joseph Doherty 0783547a2d chore(theme): bump ZB.MOM.WW.Theme 0.3.0 -> 0.3.1 (interactive-render nav fix) 2026-06-05 07:19:11 -04:00
Joseph Doherty 2515c9db2d chore(theme): consume ZB.MOM.WW.Theme 0.3.0 (nav/login kit fixes) 2026-06-05 04:44:47 -04:00
Joseph Doherty 35a4a5bfea docs(glauth): dev/test LDAP is now the shared GLAuth on 10.100.0.35
infra/ no longer runs scadabridge-ldap (retired); central nodes bind the shared
zb-shared-glauth on 10.100.0.35:3893 (dc=zb,dc=local). Source of truth:
scadaproj/infra/glauth/. test_infra_ldap.md banner-marked SUPERSEDED.
2026-06-04 16:38:08 -04:00
Joseph Doherty 5ddb17a089 feat(auth): seed SCADA-Viewers->Viewer LDAP-group role mapping
Completes the multi-role test user's 4th role. HasData row Id=5
(SCADA-Viewers->Viewer) + the SCADA-Viewers group in the (now-retired) local
glauth config. The live shared dir is scadaproj/infra/glauth/.
2026-06-04 16:38:08 -04:00
Joseph Doherty 244207c0db feat(auth): point dev clusters at shared GLAuth 10.100.0.35; retire local scadabridge-ldap
Both :9000 (docker) and :9100 (docker-env2) central nodes now bind the shared dev
GLAuth (scadaproj/infra/glauth/, dc=zb,dc=local) via the cn=serviceaccount search
account instead of the bundled scadabridge-ldap container (now commented out in
infra/docker-compose.yml, kept for rollback). Verified: multi-role -> all 4 roles
on both clusters with scadabridge-ldap stopped.
2026-06-04 15:58:42 -04:00
Joseph Doherty 0e2d9ed186 chore(theme): bump ZB.MOM.WW.Theme 0.2.0 -> 0.2.1 (desktop app-shell render fix) 2026-06-04 10:23:16 -04:00
Joseph Doherty 0c3837c778 docs(components): accuracy fixes from deep review (batch 4)
ManagementService (role table: queries any-auth, area mutations Designer;
audit contract exception), CLI (missing instance/api-key subcommands; server
JSON printed verbatim; bundle preview timeout), Transport (BundleFormatVersion
exact-match gate; dependency scan fields; three flushes), CentralUI
(/api/script-analysis endpoints; LoginLayout minimal; Health tile components),
TreeView (Topology no RevealNode; ContextMenu Site branch; InitiallyExpanded).
2026-06-03 16:39:29 -04:00
Joseph Doherty 9175b0c013 docs(components): accuracy fixes from deep review (batch 3)
NotificationService (Notify.Send returns string not NotificationId;
MaxConcurrentConnections unenforced; AddHttpClient), NotificationOutbox
(one Attempted row always, terminal row only on terminal status), SiteCallAudit
(direct dual-write, no Tell; KPI tiles consumed by CentralUI), HealthMonitoring
(CentralOfflineTimeout 180s = 6x ReportInterval; HealthReportSender gates on
IsActiveNode), SiteEventLogging (active-node purge seam not wired; runs on both
nodes), InboundAPI (whole System.Diagnostics namespace forbidden).
2026-06-03 16:37:15 -04:00
Joseph Doherty 25bae4e43b docs(components): accuracy fixes from deep review (batch 2)
TemplateEngine (alarm-script-ref ordering, native-alarm-sources not in
revision hash, composition cycle checks, 9-step pipeline), SiteRuntime
(alarm on-trigger scripts run with a restricted context; PreStart seeds
children from defaults before overrides arrive), DataConnectionLayer
(UnsubscribeAlarmsRequest stashed in Connecting), StoreAndForward (InFlight/
Delivered are dead enum values; notifications can park at 50 retries),
ExternalSystemGateway (CachedWrite returns void + enqueues directly; log levels).
2026-06-03 16:34:37 -04:00
Joseph Doherty c5fb02d640 docs(components): accuracy fixes from deep review (batch 1)
Commons (third-party dep, 7 namespaces, retired ApiKey, repo SaveChanges
carve-out), ConfigurationDatabase (5 persisted + 1 non-persisted computed col),
ClusterInfrastructure (abbreviated HOCON note, RemotingPort default),
Host (component matrix: CI/HealthMonitoring/ExternalSystemGateway have no
actors; DeadLetterMonitorActor runs on both roles), Security (Bearer not
X-API-Key; ApiKeyAdmin registered by Host), Communication (Task.Run/Sender).
2026-06-03 16:32:01 -04:00
Joseph Doherty 66f0f96328 docs(components): verification pass — fix cross-link targets, tag code fences, correct type names
- Fix 15 link-text/target mismatches (ConfigurationDatabase ×8 to Commons,
  NotificationOutbox ×4, ClusterInfrastructure case, HealthMonitoring,
  SiteCallAudit) caught by a link-text-vs-target consistency check.
- Tag 14 untagged code-fence openers (ASCII diagrams/trees, JSON, HTTP).
- Correct 4 type names to match source (ValidationService, HealthReportSender,
  CentralCommunicationActor, DebugSnapshotCommand set).
- Soften Traefik version prose per the style guide.
2026-06-03 16:09:06 -04:00
Joseph Doherty a26f4a5f81 docs(components): index + link from README 2026-06-03 15:59:20 -04:00
Joseph Doherty d14fc3f68f docs(components): reference docs batch 4/4 — ManagementService, CLI, Transport, CentralUI, TraefikProxy, TreeView 2026-06-03 15:57:32 -04:00
Joseph Doherty c1c8e35687 docs(components): reference docs batch 3/4 — NotificationService, NotificationOutbox, SiteCallAudit, HealthMonitoring, SiteEventLogging, InboundAPI 2026-06-03 15:52:33 -04:00
Joseph Doherty 8fb90ba400 docs(components): reference docs batch 2/4 — TemplateEngine, DeploymentManager, SiteRuntime, DataConnectionLayer, StoreAndForward, ExternalSystemGateway 2026-06-03 15:47:16 -04:00
Joseph Doherty b89611464b docs(components): reference docs batch 1/4 — Commons, ConfigurationDatabase, Communication, ClusterInfrastructure, Host, Security 2026-06-03 15:42:03 -04:00
Joseph Doherty b2770764c5 docs(components): AuditLog reference doc (pilot exemplar) 2026-06-03 15:34:30 -04:00
Joseph Doherty 0da5d3dd0b docs(components): scaffold reference-docs folder + link checker 2026-06-03 15:24:05 -04:00
Joseph Doherty 5e106df9e6 docs(plans): implementation plan for per-component reference docs
28-task plan: scaffold, AuditLog pilot (approval gate), 24-doc parallel
fan-out, index+README, verification pass. Co-located .tasks.json for resume.
2026-06-03 15:24:05 -04:00