diff --git a/docs/ui-consistency/ScadaBridge-verification.md b/docs/ui-consistency/ScadaBridge-verification.md new file mode 100644 index 00000000..98b39322 --- /dev/null +++ b/docs/ui-consistency/ScadaBridge-verification.md @@ -0,0 +1,41 @@ +# ScadaBridge UI consistency — first batch review + +Baseline accepted G1 pilot commit: `cdd3adf6`; Theme 1.0.0 published exact package. This batch follows parent G1 acceptance; it does not change package pins, policies, validators, UTC handling, lazy loading or fleet services. Secrets.Ui adoption awaits SEC07 release. No deploys or live writes. + +## Scope grouped for review + +`evidence/sb01-03/source-groups.json` lists every changed path; `source-freeze-sha256.json` records the frozen review source. No SB04+ work started. + +- **Dialog naming/lifecycle:** DialogHost title/body/prompt ID relationships; AuditDrilldownDrawer modal/name/Escape; native `dialog.js` per-overlay Map state, actual-event synchronous Tab prevention, filtered focusable children, reference-counted inert siblings, scroll-lock ownership, detached-node cleanup, connected-trigger or heading fallback; component disposal invokes deactivation. Existing Confirm/Prompt/Show result semantics and drawer OnClose are preserved. Generic extraction waits for a second consumer. +- **Label/ID associations:** 126 previously standalone labels associated with native controls across28 files, IDs scoped to component instances; repeated alarm-band keys include the band key. Mutually exclusive numeric/text/Boolean match controls share one relationship safely. Audit multi-select names combine visible field label and current summary; shared table search has a visible label and unique ID. Remaining contextual searches/table cells/move controls receive explicit names without changing bindings/callbacks/conditions. +- **Intentional caption conversions:** `caption-conversions.json` enumerates files. Composite schema/editor sections, result payloads, console output, button-group captions and list headings use caption divs instead of labels targeting no labelable element. Existing layout classes and content are retained; no output or parameter behavior changed. +- **Validation relationships:** OPC/Mx existing FieldError selection logic is retained and factored into a helper. Only fields already mapped by RenderFieldError get conditional aria-invalid, describedby and an error ID/alert. Successful removal of Errors removes invalidity and stale description. No new validation rule or validation bypass. +- **Tests:** existing dialog/drawer/OPC suites extended; new ControlLabelTests checks table search after typing. Strict clipboard test explicitly configures the new lifecycle interop and retains its clipboard payload assertions; no test mode weakening/skips. + +## Test evidence + +`red-dialogs.log`: two intended missing-name/modal failures. `red-labels.log` is retained as an invalid initial test fixture (required RowContent omitted); corrected fixture `red-labels-corrected-fixture.log` fails for the intended missing input ID. `red-validation.log` retains a compile error from a duplicate attribute found during the broad scan, then corrected; `red-validation-corrected.log` shows the intended missing aria-invalid failure. Duplicate ParkedMessages attribute was removed; its existing contextual accessible label remains unchanged. + +Focused related suite: `green-batch.log`104 passed. Intermediate full suite: `full-suite.log`1554 passed/zero skipped before the last validation regression and source naming completion. Final frozen-source suite passed **1555/1555**, zero failures/skips (`final-suite.log`, `sb01-03-final.trx`). + +## Browser pilot and remaining gates + +Disposable new fixture source is retained in umbrella `components/ui-theme/validation/scadabridge-ui/host`; actual source RCL ProjectReference, anonymous/synthetic local services only. It binds127.0.0.1:5201, separate from retained G1 canary5199. Existing rigs untouched. `infra/tools/ui_consistency_browser.py` accepts explicit loopback base URL/storage-state/output directory; no real writes. + +First matrix and one confirmation are retained separately under `browser/` and `browser-confirmation/`. Both passed name/prompt linkage, synchronous first/last Tab and Shift+Tab, hidden/disabled filtering, inert background, Escape, normal trigger focus return, lock cleanup, repeat opening and no-focusable containment at1440/390. **Disconnected-trigger fallback failed**: the native code focused the heading, then immediately removing its temporary tabindex made Chromium blur to BODY. Source now restores that attribute only after blur. No third broad screenshot/polish loop is claimed; A focused no-screenshot technical probe (`focused-fallback.json`) now confirms all three actual hosts restore the disconnected trigger to h1, retain tabindex while focused, clear it on blur, and release locks/inert. Parent lifecycle review remains required. + +SB03 source inventory does not prove every composite editor's internal accessible name or field help/error relationship at runtime. Remaining work before calling SB03 complete: machine-check frozen associations, contextual duplicate IDs on repeated editors, all existing form help relationships, Monaco composite context, and rendered browser/assistive-tree samples for transport/notification/instance forms. Aggregate form errors must stay aggregate rather than falsely marking all fields invalid. These are explicit pending acceptance items, not covered by passing unit tests. + +## Lifecycle review refinement + +The supported policy is **one active overlay**, including the audit drawer and global DialogHost. No arbitrary nested or sibling overlay support is implied by the internal Map/ref-count bookkeeping. Native activation rejects any different active overlay or inert target. C# cancels a rejected service dialog through its unchanged typed cancellation path, or invokes the drawer's existing OnClose callback. DialogService's original second-dialog guard is retained. This prevents descendant Escape bubbling from closing two simultaneously active hosts. + +A disposed DialogHost unsubscribes, cancels any pending local result, and deactivates its presentation. No new busy-operation semantics are introduced: confirm merely resolves the caller's result; domain work remains owned by the caller after the dialog closes. The adapter does not cancel or retry domain work. Source scan found no remaining callers of removed captureActiveElement/restoreActiveElement/focusTrap globals in src/tests. Browser evidence for the single-active rejection is `single-active-overlay.json`; it programmatically attempts a second local presentation while the real drawer is active, verifies cancellation/one remaining drawer, then verifies one Escape closes it and restores its trigger. + +Final lifecycle-refined full suite: **1556/1556 passed**, zero skips/failures, `reviewed-suite.log` / `sb01-03-reviewed.trx`. This supersedes1555 for the additional rejection/disposal regression. No first-batch commit until parent source/lifecycle review accepts the frozen diff. Rollback reverts this batch only; accepted G1 package/palette pilot is separate. + +## Peer finding closure and shared patch adoption + +Native focus restoration now verifies document.activeElement after attempting the trigger; still-connected disabled/hidden/unfocusable triggers use heading fallback too. `unusable-trigger-red.json` preserves the reproduced disabled/hidden failures, `unusable-trigger-green.json` verifies all four target conditions and clean lock/inert/tabindex restoration. The retained Python test includes a span made unfocusable while still connected, not merely a replacement/disconnection. + +Published Theme1.0.1 is restored from the official Gitea index into task-local `/tmp/scadabridge-theme101-packages`. Package SHA256995b117b0245577598c91404ed7957c071ebe3413696c8be48b419c9deb1bd5d and runtime DLL parity are in theme101-provenance.json; no stale default cache accepted. Full suite on the patch:1557/1557 passed, zero skips/failures. The added contextual TreeView checkbox regression remains SB03 work; its red failure is retained. diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-1440.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-1440.png new file mode 100644 index 00000000..92aea526 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-390.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-390.png new file mode 100644 index 00000000..1f04e11e Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/confirm-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-1440.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-1440.png new file mode 100644 index 00000000..f09ca30c Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-390.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-390.png new file mode 100644 index 00000000..8670a519 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/drawer-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/overlays.json b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/overlays.json new file mode 100644 index 00000000..8df4ce4c --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/overlays.json @@ -0,0 +1,105 @@ +{ + "results": [ + { + "width": 1440, + "kind": "confirm", + "title": "sb-dialog-fe51965f73ef4099946f9e8f7eb03d6a-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "prompt", + "title": "sb-dialog-33c8f61546d14cddb20a303d53c3e210-title", + "checks": { + "name": true, + "promptLabel": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "drawer", + "title": "sb-audit-drawer-08aca19b7f2448b4bef553a68c9641ab-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "no-focusable", + "checks": { + "contained": true + } + }, + { + "width": 390, + "kind": "confirm", + "title": "sb-dialog-139bc61e341b4625b3728929f04c1cc9-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "prompt", + "title": "sb-dialog-829a5e47da2a45a18626ac8d606caebf-title", + "checks": { + "name": true, + "promptLabel": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "drawer", + "title": "sb-audit-drawer-8c2bf8e848fb4b4b995e619d0b073c96-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "no-focusable", + "checks": { + "contained": true + } + } + ], + "passed": false +} diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-1440.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-1440.png new file mode 100644 index 00000000..4cadf2ea Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-390.png b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-390.png new file mode 100644 index 00000000..8bd69576 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser-confirmation/prompt-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/confirm-1440.png b/docs/ui-consistency/evidence/sb01-03/browser/confirm-1440.png new file mode 100644 index 00000000..92aea526 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/confirm-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/confirm-390.png b/docs/ui-consistency/evidence/sb01-03/browser/confirm-390.png new file mode 100644 index 00000000..1f04e11e Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/confirm-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/drawer-1440.png b/docs/ui-consistency/evidence/sb01-03/browser/drawer-1440.png new file mode 100644 index 00000000..64adb857 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/drawer-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/drawer-390.png b/docs/ui-consistency/evidence/sb01-03/browser/drawer-390.png new file mode 100644 index 00000000..761a6aec Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/drawer-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/overlays.json b/docs/ui-consistency/evidence/sb01-03/browser/overlays.json new file mode 100644 index 00000000..2d6be8b7 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/browser/overlays.json @@ -0,0 +1,105 @@ +{ + "results": [ + { + "width": 1440, + "kind": "confirm", + "title": "sb-dialog-8de688823ca14619989a4cf48285e7d3-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "prompt", + "title": "sb-dialog-3912c2fe4cec4fe1a5deccb2675bfbba-title", + "checks": { + "name": true, + "promptLabel": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "drawer", + "title": "sb-audit-drawer-b06b90411fd6467da7641ea24b806108-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 1440, + "kind": "no-focusable", + "checks": { + "contained": true + } + }, + { + "width": 390, + "kind": "confirm", + "title": "sb-dialog-32a229ff0dd847bbae994ec3a7ad6008-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "prompt", + "title": "sb-dialog-1ed4b431330e401f9f87a8915ec2a493-title", + "checks": { + "name": true, + "promptLabel": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "drawer", + "title": "sb-audit-drawer-6acaa21506b44d76a0ecee9d9efa381d-title", + "checks": { + "name": true, + "lastWraps": true, + "firstWraps": true, + "backgroundInert": true, + "restored": true, + "unlocked": true, + "disconnectedFallback": false + } + }, + { + "width": 390, + "kind": "no-focusable", + "checks": { + "contained": true + } + } + ], + "passed": false +} diff --git a/docs/ui-consistency/evidence/sb01-03/browser/prompt-1440.png b/docs/ui-consistency/evidence/sb01-03/browser/prompt-1440.png new file mode 100644 index 00000000..4cadf2ea Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/prompt-1440.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/browser/prompt-390.png b/docs/ui-consistency/evidence/sb01-03/browser/prompt-390.png new file mode 100644 index 00000000..8bd69576 Binary files /dev/null and b/docs/ui-consistency/evidence/sb01-03/browser/prompt-390.png differ diff --git a/docs/ui-consistency/evidence/sb01-03/caption-conversions.json b/docs/ui-consistency/evidence/sb01-03/caption-conversions.json new file mode 100644 index 00000000..a1d7afc4 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/caption-conversions.json @@ -0,0 +1,13 @@ +{ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeyForm.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/DebugView.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/FlowDebugger.razor": 3, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ApiMethodForm.razor": 6, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SchemaLibrary.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScriptForm.razor": 4, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateAlarmDialog.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateScriptDialog.razor": 5, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AlarmTriggerEditor.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AttributeListEditor.razor": 1, + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ScriptTriggerEditor.razor": 1 +} diff --git a/docs/ui-consistency/evidence/sb01-03/final-suite.log b/docs/ui-consistency/evidence/sb01-03/final-suite.log new file mode 100644 index 00000000..4af240ec --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/final-suite.log @@ -0,0 +1,26 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +Results File: /Users/dohertj2/Desktop/ScadaBridge/docs/ui-consistency/evidence/sb01-03/sb01-03-final.trx + +Passed! - Failed: 0, Passed: 1555, Skipped: 0, Total: 1555, Duration: 33 s - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/focused-fallback.json b/docs/ui-consistency/evidence/sb01-03/focused-fallback.json new file mode 100644 index 00000000..35171a2b --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/focused-fallback.json @@ -0,0 +1,26 @@ +[ + { + "kind": "confirm", + "headingFocused": true, + "tabindex": "-1", + "locked": false, + "inert": false, + "tabindexCleanedOnBlur": true + }, + { + "kind": "prompt", + "headingFocused": true, + "tabindex": "-1", + "locked": false, + "inert": false, + "tabindexCleanedOnBlur": true + }, + { + "kind": "drawer", + "headingFocused": true, + "tabindex": "-1", + "locked": false, + "inert": false, + "tabindexCleanedOnBlur": true + } +] diff --git a/docs/ui-consistency/evidence/sb01-03/full-suite.log b/docs/ui-consistency/evidence/sb01-03/full-suite.log new file mode 100644 index 00000000..c3285f87 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/full-suite.log @@ -0,0 +1,26 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +Results File: /Users/dohertj2/Desktop/ScadaBridge/docs/ui-consistency/evidence/sb01-03/sb01-03.trx + +Passed! - Failed: 0, Passed: 1554, Skipped: 0, Total: 1554, Duration: 33 s - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/green-batch.log b/docs/ui-consistency/evidence/sb01-03/green-batch.log new file mode 100644 index 00000000..8001eca8 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/green-batch.log @@ -0,0 +1,25 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. + +Passed! - Failed: 0, Passed: 104, Skipped: 0, Total: 104, Duration: 766 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/green-dialogs.log b/docs/ui-consistency/evidence/sb01-03/green-dialogs.log new file mode 100644 index 00000000..7466ef3b --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/green-dialogs.log @@ -0,0 +1,59 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.36] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.CopyAsCurl_InvokesClipboard_WithCurlString [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.CopyAsCurl_InvokesClipboard_WithCurlString [3 ms] + Error Message: + Bunit.JSRuntimeUnhandledInvocationException : bUnit's JSInterop has not been configured to handle the call: + + InvokeVoidAsync("sbDialog.activate", "sb-audit-drawer-dcc783d1f5974be7806d91fb02d629c1") + +Configure bUnit's JSInterop to handle the call with following: + + SetupVoid("sbDialog.activate", "sb-audit-drawer-dcc783d1f5974be7806d91fb02d629c1") +or the following, to match any arguments: + SetupVoid("sbDialog.activate", _ => true) + +The setup methods are available on an instance of the BunitJSInterop or +BunitJSModuleInterop type. The standard BunitJSInterop is available +through the BunitContext.JSInterop property, and a BunitJSModuleInterop +instance is returned from calling SetupModule on a BunitJSInterop instance. + + Stack Trace: + at Bunit.BunitJSInterop.TryHandlePlannedInvocation[TValue](JSRuntimeInvocation invocation) in /_/src/bunit/JSInterop/BunitJSInterop.cs:line 74 + at Bunit.BunitJSInterop.HandleInvocation[TValue](JSRuntimeInvocation invocation) in /_/src/bunit/JSInterop/BunitJSInterop.cs:line 59 + at Bunit.JSInterop.Implementation.JSRuntimeExtensions.HandleInvokeAsync[TValue](BunitJSInterop jSInterop, String identifier, Object[] args) in /_/src/bunit/JSInterop/Implementation/JSRuntimeExtensions.cs:line 9 + at Bunit.JSInterop.BunitJSRuntime.InvokeAsync[TValue](String identifier, Object[] args) in /_/src/bunit/JSInterop/Implementation/BunitJSRuntime.cs:line 20 + at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync(IJSRuntime jsRuntime, String identifier, Object[] args) + at ZB.MOM.WW.ScadaBridge.CentralUI.Components.Audit.AuditDrilldownDrawer.OnAfterRenderAsync(Boolean firstRender) in /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor.cs:line 49 + at Bunit.Rendering.BunitRenderer.AssertNoUnhandledExceptions() in /_/src/bunit/Rendering/BunitRenderer.cs:line 703 + at Bunit.Rendering.BunitRenderer.Render(RenderFragment renderFragment) in /_/src/bunit/Rendering/BunitRenderer.cs:line 597 + at Bunit.Rendering.BunitRenderer.RenderFragment(RenderFragment renderFragment) in /_/src/bunit/Rendering/BunitRenderer.cs:line 137 + at Bunit.BunitContext.RenderInsideRenderTree(RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 230 + at Bunit.BunitContext.RenderInsideRenderTree[TComponent](RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 214 + at Bunit.BunitContext.Render[TComponent](RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 169 + at Bunit.BunitContext.Render[TComponent](Action`1 parameterBuilder) in /_/src/bunit/BunitContext.cs:line 152 + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.CopyAsCurl_InvokesClipboard_WithCurlString() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Components/Audit/AuditDrilldownDrawerTests.cs:line 404 +--- End of stack trace from previous location --- + +Failed! - Failed: 1, Passed: 34, Skipped: 0, Total: 35, Duration: 206 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/label-associations-applied.json b/docs/ui-consistency/evidence/sb01-03/label-associations-applied.json new file mode 100644 index 00000000..ba39bc5d --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/label-associations-applied.json @@ -0,0 +1,114 @@ +[ + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/MxGatewayEndpointEditor.razor", + 7 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/OpcUaEndpointEditor.razor", + 22 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ComposeIntoDialog.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AlarmTriggerEditor.razor", + 7 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ScriptTriggerEditor.razor", + 4 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AttributeListEditor.razor", + 1 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/SchemaBuilder.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ApiMethodForm.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ExternalSystemForm.razor", + 7 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateScriptDialog.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateEdit.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DbConnectionForm.razor", + 4 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnectionForm.razor", + 4 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateCreate.razor", + 3 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SchemaLibrary.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScriptForm.razor", + 1 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeyForm.razor", + 1 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/LdapMappingForm.razor", + 3 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/SiteForm.razor", + 7 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Operations/SecuredWrites.razor", + 6 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceCreate.razor", + 4 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceConfigure.razor", + 2 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/CreateAreaDialog.razor", + 3 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/FlowDebugger.razor", + 5 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/DebugView.razor", + 1 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmsConfiguration.razor", + 8 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmtpConfiguration.razor", + 9 + ], + [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/NotificationListForm.razor", + 5 + ] +] diff --git a/docs/ui-consistency/evidence/sb01-03/red-dialogs.log b/docs/ui-consistency/evidence/sb01-03/red-dialogs.log new file mode 100644 index 00000000..84697376 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/red-dialogs.log @@ -0,0 +1,44 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.30] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.OpenDrawer_HasNamedModalAndEscapeCloses [FAIL] +[xUnit.net 00:00:00.31] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.DialogHostShowAsyncTests.Dialog_NamesAndPromptAssociationsFollowCurrentDialog [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.OpenDrawer_HasNamedModalAndEscapeCloses [148 ms] + Error Message: + Bunit.ElementNotFoundException : No elements were found that matches the selector '[role=dialog]' + Stack Trace: + at Bunit.RenderedComponentExtensions.Find[TComponent,TElement](IRenderedComponent`1 renderedComponent, String cssSelector) in /_/src/bunit/Extensions/RenderedComponentExtensions.cs:line 42 + at Bunit.RenderedComponentExtensions.Find[TComponent](IRenderedComponent`1 renderedComponent, String cssSelector) in /_/src/bunit/Extensions/RenderedComponentExtensions.cs:line 21 + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Components.Audit.AuditDrilldownDrawerTests.OpenDrawer_HasNamedModalAndEscapeCloses() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Components/Audit/AuditDrilldownDrawerTests.cs:line 43 + at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.DialogHostShowAsyncTests.Dialog_NamesAndPromptAssociationsFollowCurrentDialog [160 ms] + Error Message: + Assert.False() Failure +Expected: False +Actual: True + Stack Trace: + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.DialogHostShowAsyncTests.Dialog_NamesAndPromptAssociationsFollowCurrentDialog() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/DialogHostShowAsyncTests.cs:line 44 +--- End of stack trace from previous location --- + +Failed! - Failed: 2, Passed: 0, Skipped: 0, Total: 2, Duration: 164 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/red-labels-corrected-fixture.log b/docs/ui-consistency/evidence/sb01-03/red-labels-corrected-fixture.log new file mode 100644 index 00000000..c7a00d8f --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/red-labels-corrected-fixture.log @@ -0,0 +1,35 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.27] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping [140 ms] + Error Message: + Assert.False() Failure +Expected: False +Actual: True + Stack Trace: + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/ControlLabelTests.cs:line 18 + at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) + +Failed! - Failed: 1, Passed: 0, Skipped: 0, Total: 1, Duration: 147 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/red-labels.log b/docs/ui-consistency/evidence/sb01-03/red-labels.log new file mode 100644 index 00000000..681c9f01 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/red-labels.log @@ -0,0 +1,43 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.26] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping [118 ms] + Error Message: + System.NullReferenceException : Object reference not set to an instance of an object. + Stack Trace: + at ZB.MOM.WW.ScadaBridge.CentralUI.Components.Shared.DataTable`1.BuildRenderTree(RenderTreeBuilder __builder) in /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/DataTable.razor:line 46 + at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) +--- End of stack trace from previous location --- + at Bunit.Rendering.BunitRenderer.AssertNoUnhandledExceptions() in /_/src/bunit/Rendering/BunitRenderer.cs:line 707 + at Bunit.Rendering.BunitRenderer.Render(RenderFragment renderFragment) in /_/src/bunit/Rendering/BunitRenderer.cs:line 597 + at Bunit.Rendering.BunitRenderer.RenderFragment(RenderFragment renderFragment) in /_/src/bunit/Rendering/BunitRenderer.cs:line 137 + at Bunit.BunitContext.RenderInsideRenderTree(RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 230 + at Bunit.BunitContext.RenderInsideRenderTree[TComponent](RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 214 + at Bunit.BunitContext.Render[TComponent](RenderFragment renderFragment) in /_/src/bunit/BunitContext.cs:line 169 + at Bunit.BunitContext.Render[TComponent](Action`1 parameterBuilder) in /_/src/bunit/BunitContext.cs:line 152 + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Shared.ControlLabelTests.TableSearch_HasAssociatedLabelAfterTyping() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/ControlLabelTests.cs:line 13 + at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) + +Failed! - Failed: 1, Passed: 0, Skipped: 0, Total: 1, Duration: 125 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/red-validation-corrected.log b/docs/ui-consistency/evidence/sb01-03/red-validation-corrected.log new file mode 100644 index 00000000..98550ae1 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/red-validation-corrected.log @@ -0,0 +1,35 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.33] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Forms.OpcUaEndpointEditorTests.EndpointError_IsDescribedAndInvalidUntilValidationClears [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Forms.OpcUaEndpointEditorTests.EndpointError_IsDescribedAndInvalidUntilValidationClears [179 ms] + Error Message: + Assert.Equal() Failure: Strings differ +Expected: "true" +Actual: null + Stack Trace: + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.Forms.OpcUaEndpointEditorTests.EndpointError_IsDescribedAndInvalidUntilValidationClears() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs:line 32 + at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) + +Failed! - Failed: 1, Passed: 0, Skipped: 0, Total: 1, Duration: 186 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/red-validation.log b/docs/ui-consistency/evidence/sb01-03/red-validation.log new file mode 100644 index 00000000..3c835d73 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/red-validation.log @@ -0,0 +1,19 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll +/Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Monitoring/ParkedMessages.razor(193,33): error RZ10007: The attribute 'aria-label' is used two or more times for this element. Attributes must be unique (case-insensitive). [/Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/ZB.MOM.WW.ScadaBridge.CentralUI.csproj] diff --git a/docs/ui-consistency/evidence/sb01-03/remaining-control-scan.txt b/docs/ui-consistency/evidence/sb01-03/remaining-control-scan.txt new file mode 100644 index 00000000..9c76e6f2 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/remaining-control-scan.txt @@ -0,0 +1,57 @@ +TemplatePickerDialog.razor:18 +MoveFolderDialog.razor:10 +AttributeListEditor.razor:6 +AttributeListEditor.razor:47 +SchemaBuilder.razor:107 +MoveTemplateDialog.razor:8 +NodeBrowserDialog.razor:29 +TransportImport.razor:365 +TemplateScriptDialog.razor:183 +DataConnectionForm.razor:70 +ExternalSystems.razor:220 +ExternalSystems.razor:293 +Sites.razor:89 +LdapMappings.razor:29 +Topology.razor:75 +InstanceCreate.razor:141 +MoveAreaDialog.razor:11 +NotificationReport.razor:787 diff --git a/docs/ui-consistency/evidence/sb01-03/reviewed-suite.log b/docs/ui-consistency/evidence/sb01-03/reviewed-suite.log new file mode 100644 index 00000000..325ca63f --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/reviewed-suite.log @@ -0,0 +1,26 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +Results File: /Users/dohertj2/Desktop/ScadaBridge/docs/ui-consistency/evidence/sb01-03/sb01-03-reviewed.trx + +Passed! - Failed: 0, Passed: 1556, Skipped: 0, Total: 1556, Duration: 33 s - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/single-active-overlay.json b/docs/ui-consistency/evidence/sb01-03/single-active-overlay.json new file mode 100644 index 00000000..0a3919b8 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/single-active-overlay.json @@ -0,0 +1,8 @@ +{ + "dialogs": 1, + "drawer": true, + "cancelled": "Cancelled locally", + "afterEscapeDialogs": 0, + "triggerFocused": true, + "unlocked": true +} diff --git a/docs/ui-consistency/evidence/sb01-03/source-freeze-sha256.json b/docs/ui-consistency/evidence/sb01-03/source-freeze-sha256.json new file mode 100644 index 00000000..9b04fe87 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/source-freeze-sha256.json @@ -0,0 +1,63 @@ +{ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor": "e227e114d2c635c0884644717774e86a1329d22be4b565f5d2a39ac62970f31c", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor.cs": "8b20ae2942ececdb32337904d0fac77e55c4d4cacf5c420502ab5a2bb4d86298", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditFilterBar.razor": "2bcdc0f3aa0515ab8f28a49b2164c0e041747274b19b1ee90707f52e4e43b8ba", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Dialogs/NodeBrowserDialog.razor": "8fef5fd69d12f2e31cbc68f5474eb5f226f7a6f80e7d29e9b09293adc950e519", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/MxGatewayEndpointEditor.razor": "de40d6b4ca2ec6b11d811054206271a09dd2aec85275705108206b3c80f28777", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/OpcUaEndpointEditor.razor": "99aaea03e00e32b5b3a09249bd6c4a4f7a3cc018c89e5232db46f2923e2774a2", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeyForm.razor": "ef53429dfcff262c63f7403b81cf5c3fc2307954aa9da5e28488dd627a4f01fa", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeys.razor": "3652d2bed8794b5c30d13c4a4ed57b3c93e71bb5d3421cd2d3f24d8a6b2b0ff3", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/LdapMappingForm.razor": "d8670af065d622dab9695311aecc8ef3dbfaa8a2e09de09f8701b382f266a907", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/LdapMappings.razor": "fb111ea682cb74b2887e1871d6a5360256b2b1207bcd55b0870c0e06156ef4cd", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/SiteForm.razor": "59eba49dbad6502e0ff3f4048d3f9237d91b34d2457ec290696e97322e8fa7e6", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/Sites.razor": "6901a47bba7b464908a3c6a31ff3261d981d9cbd93b27b078d7e0e8b2ec0f7a9", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/CreateAreaDialog.razor": "fa14117412ef5e92681a101e914853f2422a3d6507e6ffaf8b9719ba35424d37", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/DebugView.razor": "eb3ab54cdc1ce9eba5501f7262b25cd04e2373a3a189dd85a32309c2da5867f4", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/FlowDebugger.razor": "10893362d2d5197fd902493bd68b7389a6e01cdd938dfbce634c80a6ad6df66e", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceConfigure.razor": "a1d4b8f46d373eed1a14b861783dbc64fdf739ca406301fe7b8d425248f1cb11", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceCreate.razor": "4f95cef86ac362b8eea7da32e4ccc0385c499d5bdfb8e370045fd9c96c6ac9df", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/MoveAreaDialog.razor": "b8b85d377676c3483ecd125502aa3c515046932c1c2c181ad20b4ecbe002f158", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/MoveInstanceDialog.razor": "feec5322422159685fd8ea4721709e244bc9c453efdd26c04a45ee536c7cb9a3", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/Topology.razor": "e3c91d6fc976c86007110ac0a819479f822540cbe365934223450c4835384f0e", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ApiMethodForm.razor": "f5d01e91381694cc376b6cb265f39286cf297952c4ba33642b89355e36fe6ed8", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnectionForm.razor": "0a289f0889455acb65aead264d48225e7237e20939549844dbc6c925995113af", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor": "12fc2ff8a5c6b744d4c70760fedf6b5f9a43249743b1c18e53ca906cf1c6d0cd", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DbConnectionForm.razor": "0234f7945b1e41dd96a0ea7dc0c2fae821b915f7b2a71251eed9f90cf3732020", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ExternalSystemForm.razor": "0cf833b64e5490856d7181a05e2879621aef493293aeb2f222f3d9bf898b1a13", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ExternalSystems.razor": "f98bc6a6bf4586b927ad5edfe9047fbfe6300fb394ecdbf641398a4524161892", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SchemaLibrary.razor": "487267e6bcaa33190b353a1ae77c4cb1fefa12a39c63e2b9a9ddc63c6aa2a4ca", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScriptForm.razor": "d9d7d7b13d71e5f59636470663efaf4b300d9d3473523e54af7b27eabae44e70", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScripts.razor": "a525cb72c6dbcdc6bf705a9da57d8ab36f410c6520c4aedca3409d06d90a2668", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateAlarmDialog.razor": "45b6be53f8341dbf3504a93b3aa6e4e86b4b6cdfead6553988f3de2a887e2cad", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateCreate.razor": "38074169da5d3d8c890d2440eea13e92209d0b62553b083589041d80983ef1da", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateEdit.razor": "a7f5431b2676a46a8dd8426e53229e08af44cc4b3496b9380348e609a977921a", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateScriptDialog.razor": "6c9970bbfa584281036254dd589e676a1793f616d84515cf068f8d359d1092a3", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/Templates.razor": "6f253bc40b8b7fff66257c1e542ce237205cd1c5008219762a32a6f53628665b", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TransportImport.razor": "bcdcef9d0ea82e1fe00fa0e5d269aa367908ce594c5b40000f3c9a348df29fd2", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Monitoring/Health.razor": "0f2779609ef54edb4304599a2979048c180fe09c421d1926ce6648ecad31a898", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/NotificationListForm.razor": "a138d4d53121140f88a8ce9678ae4c9e2185cd659c6d5bc917b3daf85f28ee0b", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmsConfiguration.razor": "0b9a90acdefebabec8635455ef9528ee2584c026f7489f7e7de458c214147671", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmtpConfiguration.razor": "6ae1405476bba5c87acb18192340c93ae929075377926eeec6c169c648252839", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Operations/SecuredWrites.razor": "72ab4d79c3dd360970333998ffeffbe13943977e27e2b272ede3558644d588ef", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AlarmTriggerEditor.razor": "97cd7f62703deca3d6cddb7a12d4c77d050db1a64dedabdbb0fa82d8649e0f81", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AttributeListEditor.razor": "efd2a47f67187a82ad2b4d0c1324f8b283562f8d3cb1958691179c467a2db1c9", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ComposeIntoDialog.razor": "2af91f3c923c75767827019df77e3da6908ac9094593489d426d502e71897c39", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/DataTable.razor": "65deb2f88b520f1c7e809cc0f0021d636166f49c125f8f33a516c44876d592a4", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/DialogHost.razor": "6392d8d4eacdd56749eaf5146f93ac53743f39adf7ff7440999811f8f0a56bc1", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveDataConnectionDialog.razor": "21aa5fccf1b82310d45fb5fe19623a1e6946ddb16c7df4f3d0e687e2326405b5", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveFolderDialog.razor": "82cb7bab20b5e3d7660b8d8e56e658037eef8d3cf3bb3aa101566e85169f6d29", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveTemplateDialog.razor": "2b9d29ef921a5996d11d0cbacc13fdb7ee291678da8c8827fa66de0b86bd264e", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MultiSelectDropdown.razor": "7b3a13b67e996b8380703cd0264bf1db3f962017614659ee50aa0bbcc6ca6428", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MultiSelectDropdown.razor.cs": "85bcd2c03d96e695976ddab9e41777f7614e0ac4116ba2cfc13b990635fb4922", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/RenameFolderDialog.razor": "5a9104184180f23e718df8a9866b465fb2cd711064f6a6bdd40ac5506ffe9821", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/SchemaBuilder.razor": "60198cdbaf1e30b76bb56fa6851a756c7685f0d7d1ceb0fc93657a205ca3fe9a", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ScriptTriggerEditor.razor": "1d38e59b03fa37cc9849cca79a0bbe075fbc9f12de34e26b1a1a813d456a00ee", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/TemplatePickerDialog.razor": "5415a5cd85df0276a058a33578a998a9fcd143181c9638a0a7dc3825cac16cdc", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/TreeView.razor": "b999966362a3e692c9325e0c9b76e590e2ac074550864c3294387293603556cb", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/js/dialog.js": "a3b1db1ef9d2fcb88d3c640f8c3431a325807a0a1570aa6752afd98c0b06855d", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Components/Audit/AuditDrilldownDrawerTests.cs": "00670b669e84161f7995ba58978954d80e34d188cbfb277facdf80266aedc8e5", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs": "778553af9313e01eae482eb509dd0f1d930fd7431c35b916d18c5286c93449ba", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/DialogHostShowAsyncTests.cs": "fcfbd97b9e01fa3ff1493e94d6136f8c8cc479441eb55ab25309be4474cb27c7", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/ControlLabelTests.cs": "bc88e1ec88b635379ded223a467b775223fa8686b510c91bd370790b75693e4c", + "infra/tools/ui_consistency_browser.py": "1f39218e01b086ff604ee775e2cabbc30f7c01717ecba0982b3d7b8468bebc5d" +} diff --git a/docs/ui-consistency/evidence/sb01-03/source-groups.json b/docs/ui-consistency/evidence/sb01-03/source-groups.json new file mode 100644 index 00000000..49a67f7a --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/source-groups.json @@ -0,0 +1,71 @@ +{ + "lifecycle-and-dialog-naming": [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor.cs", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/DialogHost.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/js/dialog.js" + ], + "native-label-id-and-contextual-control-names": [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditFilterBar.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Dialogs/NodeBrowserDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeyForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/ApiKeys.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/LdapMappingForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/LdapMappings.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/SiteForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Admin/Sites.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/CreateAreaDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/DebugView.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/FlowDebugger.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceConfigure.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/InstanceCreate.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/MoveAreaDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/MoveInstanceDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Deployment/Topology.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ApiMethodForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnectionForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DataConnections.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/DbConnectionForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ExternalSystemForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/ExternalSystems.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SchemaLibrary.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScriptForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/SharedScripts.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateAlarmDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateCreate.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateEdit.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TemplateScriptDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/Templates.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Design/TransportImport.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Monitoring/Health.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/NotificationListForm.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmsConfiguration.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Notifications/SmtpConfiguration.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Pages/Operations/SecuredWrites.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AlarmTriggerEditor.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/AttributeListEditor.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ComposeIntoDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/DataTable.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveDataConnectionDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveFolderDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MoveTemplateDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MultiSelectDropdown.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/MultiSelectDropdown.razor.cs", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/RenameFolderDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/SchemaBuilder.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/ScriptTriggerEditor.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/TemplatePickerDialog.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Shared/TreeView.razor" + ], + "validation-error-relationships": [ + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/MxGatewayEndpointEditor.razor", + "src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Forms/OpcUaEndpointEditor.razor" + ], + "tests": [ + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Components/Audit/AuditDrilldownDrawerTests.cs", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Forms/OpcUaEndpointEditorTests.cs", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/DialogHostShowAsyncTests.cs", + "tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/Shared/ControlLabelTests.cs", + "infra/tools/ui_consistency_browser.py" + ] +} diff --git a/docs/ui-consistency/evidence/sb01-03/theme101-provenance.json b/docs/ui-consistency/evidence/sb01-03/theme101-provenance.json new file mode 100644 index 00000000..4cd458ae --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/theme101-provenance.json @@ -0,0 +1,7 @@ +{ + "packageSha256": "995b117b0245577598c91404ed7957c071ebe3413696c8be48b419c9deb1bd5d", + "source": "https://gitea.dohertylan.com/api/packages/dohertj2/nuget/index.json", + "runtimeDllMatchesPackage": true, + "isolatedCache": "/tmp/scadabridge-theme101-packages/zb.mom.ww.theme/1.0.1", + "priorG1History": "Theme 1.0.0 evidence retained unchanged" +} diff --git a/docs/ui-consistency/evidence/sb01-03/theme101-restore.log b/docs/ui-consistency/evidence/sb01-03/theme101-restore.log new file mode 100644 index 00000000..fd0c1253 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/theme101-restore.log @@ -0,0 +1,22 @@ + Determining projects to restore... + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/ZB.MOM.WW.ScadaBridge.Commons.csproj (in 621 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/ZB.MOM.WW.ScadaBridge.TemplateEngine.csproj (in 1.26 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/ZB.MOM.WW.ScadaBridge.KpiHistory.csproj (in 1.5 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/ZB.MOM.WW.ScadaBridge.DeploymentManager.csproj (in 1.51 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/ZB.MOM.WW.ScadaBridge.Security.csproj (in 183 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/ZB.MOM.WW.ScadaBridge.NotificationService.csproj (in 1.7 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/ZB.MOM.WW.ScadaBridge.HealthMonitoring.csproj (in 1.7 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/ZB.MOM.WW.ScadaBridge.StoreAndForward.csproj (in 1.7 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/ZB.MOM.WW.ScadaBridge.SiteEventLogging.csproj (in 441 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/ZB.MOM.WW.ScadaBridge.NotificationOutbox.csproj (in 191 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.csproj (in 19 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.csproj (in 2.16 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/ZB.MOM.WW.ScadaBridge.AuditLog.csproj (in 380 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/ZB.MOM.WW.ScadaBridge.Transport.csproj (in 2.16 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/ZB.MOM.WW.ScadaBridge.InboundAPI.csproj (in 2.16 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/ZB.MOM.WW.ScadaBridge.ManagementService.csproj (in 2.16 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.csproj (in 401 ms). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/ZB.MOM.WW.ScadaBridge.CentralUI.csproj (in 2.16 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.csproj (in 1.53 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.csproj (in 2.17 sec). + Restored /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/ZB.MOM.WW.ScadaBridge.Communication.csproj (in 2.33 sec). diff --git a/docs/ui-consistency/evidence/sb01-03/theme101-suite.log b/docs/ui-consistency/evidence/sb01-03/theme101-suite.log new file mode 100644 index 00000000..defbc92b --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/theme101-suite.log @@ -0,0 +1,26 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +Results File: /Users/dohertj2/Desktop/ScadaBridge/docs/ui-consistency/evidence/sb01-03/sb01-03-theme101.trx + +Passed! - Failed: 0, Passed: 1557, Skipped: 0, Total: 1557, Duration: 33 s - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/tree-names-red.log b/docs/ui-consistency/evidence/sb01-03/tree-names-red.log new file mode 100644 index 00000000..54cd99b8 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/tree-names-red.log @@ -0,0 +1,35 @@ + ZB.MOM.WW.ScadaBridge.Commons -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Commons/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Commons.dll + ZB.MOM.WW.ScadaBridge.KpiHistory -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.KpiHistory/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.KpiHistory.dll + ZB.MOM.WW.ScadaBridge.Communication -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Communication/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Communication.dll + ZB.MOM.WW.ScadaBridge.ConfigurationDatabase -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ConfigurationDatabase.dll + ZB.MOM.WW.ScadaBridge.Security -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Security/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Security.dll + ZB.MOM.WW.ScadaBridge.ScriptAnalysis -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ScriptAnalysis/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ScriptAnalysis.dll + ZB.MOM.WW.ScadaBridge.SiteEventLogging -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.SiteEventLogging/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.SiteEventLogging.dll + ZB.MOM.WW.ScadaBridge.StoreAndForward -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.StoreAndForward/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.StoreAndForward.dll + ZB.MOM.WW.ScadaBridge.TemplateEngine -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.TemplateEngine/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.TemplateEngine.dll + ZB.MOM.WW.ScadaBridge.AuditLog -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.AuditLog/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.AuditLog.dll + ZB.MOM.WW.ScadaBridge.Transport -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.Transport/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.Transport.dll + ZB.MOM.WW.ScadaBridge.DeploymentManager -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.DeploymentManager/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.DeploymentManager.dll + ZB.MOM.WW.ScadaBridge.NotificationService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationService.dll + ZB.MOM.WW.ScadaBridge.HealthMonitoring -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.HealthMonitoring/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.HealthMonitoring.dll + ZB.MOM.WW.ScadaBridge.ExternalSystemGateway -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ExternalSystemGateway.dll + ZB.MOM.WW.ScadaBridge.InboundAPI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.InboundAPI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.InboundAPI.dll + ZB.MOM.WW.ScadaBridge.NotificationOutbox -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.NotificationOutbox/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.NotificationOutbox.dll + ZB.MOM.WW.ScadaBridge.ManagementService -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.ManagementService/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.ManagementService.dll + ZB.MOM.WW.ScadaBridge.CentralUI -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.dll + ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker -> /Users/dohertj2/Desktop/ScadaBridge/src/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.SandboxWorker.dll + ZB.MOM.WW.ScadaBridge.CentralUI.Tests -> /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll +Test run for /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/bin/Release/net10.0/ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (.NETCoreApp,Version=v10.0) +A total of 1 test files matched the specified pattern. +[xUnit.net 00:00:00.30] ZB.MOM.WW.ScadaBridge.CentralUI.Tests.TreeViewMultiSelectTests.CheckboxNames_ReferenceVisibleNodeAndRemainUniqueAcrossTrees [FAIL] + Failed ZB.MOM.WW.ScadaBridge.CentralUI.Tests.TreeViewMultiSelectTests.CheckboxNames_ReferenceVisibleNodeAndRemainUniqueAcrossTrees [151 ms] + Error Message: + Assert.False() Failure +Expected: False +Actual: True + Stack Trace: + at ZB.MOM.WW.ScadaBridge.CentralUI.Tests.TreeViewMultiSelectTests.CheckboxNames_ReferenceVisibleNodeAndRemainUniqueAcrossTrees() in /Users/dohertj2/Desktop/ScadaBridge/tests/ZB.MOM.WW.ScadaBridge.CentralUI.Tests/TreeViewMultiSelectTests.cs:line 76 + at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args) + at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) + +Failed! - Failed: 1, Passed: 0, Skipped: 0, Total: 1, Duration: 158 ms - ZB.MOM.WW.ScadaBridge.CentralUI.Tests.dll (net10.0) diff --git a/docs/ui-consistency/evidence/sb01-03/unusable-trigger-green.json b/docs/ui-consistency/evidence/sb01-03/unusable-trigger-green.json new file mode 100644 index 00000000..0fd82a30 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/unusable-trigger-green.json @@ -0,0 +1,30 @@ +[ + { + "state": "disabled", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "hidden", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "unfocusable", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "disconnected", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + } +] diff --git a/docs/ui-consistency/evidence/sb01-03/unusable-trigger-red.json b/docs/ui-consistency/evidence/sb01-03/unusable-trigger-red.json new file mode 100644 index 00000000..0b2abff1 --- /dev/null +++ b/docs/ui-consistency/evidence/sb01-03/unusable-trigger-red.json @@ -0,0 +1,30 @@ +[ + { + "state": "disabled", + "heading": false, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "hidden", + "heading": false, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "unfocusable", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + }, + { + "state": "disconnected", + "heading": true, + "locked": false, + "inert": false, + "cleaned": true + } +] diff --git a/infra/tools/test_overlay_focus.py b/infra/tools/test_overlay_focus.py new file mode 100644 index 00000000..da29a83c --- /dev/null +++ b/infra/tools/test_overlay_focus.py @@ -0,0 +1,16 @@ +"""Focused native lifecycle regression against the actual local overlay script.""" +import argparse,json +from pathlib import Path +from playwright.sync_api import sync_playwright +args=argparse.ArgumentParser();args.add_argument('--output',required=True);opts=args.parse_args() +script=Path('src/ZB.MOM.WW.ScadaBridge.CentralUI/wwwroot/js/dialog.js').read_text();results=[] +with sync_playwright() as p: + browser=p.chromium.launch(channel='chromium') + for state in ['disabled','hidden','unfocusable','disconnected']: + page=browser.new_page();page.set_content('

Stable heading

');page.add_script_tag(content=script); + if state=='unfocusable':page.evaluate('()=>{const span=document.createElement("span");span.id="trigger";span.tabIndex=0;span.textContent="Open";document.querySelector("#trigger").replaceWith(span)}') + page.focus('#trigger');page.evaluate('sbDialog.activate("dialog")');page.evaluate('''s=>{const t=document.querySelector('#trigger');if(s==='disabled')t.disabled=true;if(s==='hidden')t.hidden=true;if(s==='unfocusable')t.removeAttribute('tabindex');if(s==='disconnected')t.remove();document.querySelector('#dialog').remove();}''',state);page.wait_for_timeout(30) + result=page.evaluate('({heading:document.activeElement===document.querySelector("h1"),locked:document.body.classList.contains("modal-open"),inert:!!document.querySelector("[inert]")})');page.focus('#next');result['cleaned']=page.get_attribute('h1','tabindex') is None;results.append({'state':state,**result});page.close() + browser.close() +Path(opts.output).write_text(json.dumps(results,indent=2)+'\n');print(results) +raise SystemExit(0 if all(r['heading'] and not r['locked'] and not r['inert'] and r['cleaned'] for r in results) else 1) diff --git a/infra/tools/ui_consistency_browser.py b/infra/tools/ui_consistency_browser.py new file mode 100644 index 00000000..bd95b4a8 --- /dev/null +++ b/infra/tools/ui_consistency_browser.py @@ -0,0 +1,33 @@ +"""Bounded loopback fixture overlay check. Does not submit application writes.""" +import argparse,json +from pathlib import Path +from urllib.parse import urlparse +from playwright.sync_api import sync_playwright +parser=argparse.ArgumentParser();parser.add_argument('--base-url',required=True);parser.add_argument('--storage-state');parser.add_argument('--output-dir',required=True);parser.add_argument('--case',default='overlays');args=parser.parse_args() +if urlparse(args.base_url).hostname not in ('127.0.0.1','localhost'):raise SystemExit('This synthetic fixture harness accepts loopback origins only.') +out=Path(args.output_dir);out.mkdir(parents=True,exist_ok=True);results=[] +with sync_playwright() as p: + browser=p.chromium.launch(channel='chromium',headless=True) + for width in (1440,390): + context=browser.new_context(viewport={'width':width,'height':1000},reduced_motion='reduce',**({'storage_state':args.storage_state} if args.storage_state else {}));page=context.new_page();page.goto(args.base_url+'/overlays',wait_until='networkidle') + for kind in ('confirm','prompt','drawer'): + trigger='#open-'+kind;page.locator(trigger).click();dialog=page.locator('[role=dialog]');dialog.wait_for();page.wait_for_function('document.body.classList.contains("modal-open")') + record={'width':width,'kind':kind,'title':dialog.get_attribute('aria-labelledby'),'checks':{}} + record['checks']['name']=bool(record['title']) and bool(page.locator('#'+record['title']).inner_text()) + if kind=='prompt':record['checks']['promptLabel']=dialog.locator('label').get_attribute('for')==dialog.locator('input').get_attribute('id') + # Hidden/disabled descendants do not become keyboard boundaries. + dialog.evaluate('e=>{let b=document.createElement("button");b.hidden=true;b.textContent="Hidden sample";e.append(b);let d=document.createElement("button");d.disabled=true;d.textContent="Disabled sample";e.append(d)}') + selectors='a[href],button,input,select,textarea,[tabindex]' + items=dialog.locator(selectors).all();items=[i for i in items if i.is_visible() and i.is_enabled() and int(i.get_attribute('tabindex') or '0')>=0] + items[-1].focus();page.keyboard.press('Tab');record['checks']['lastWraps']=items[0].evaluate('e=>e===document.activeElement') + items[0].focus();page.keyboard.press('Shift+Tab');record['checks']['firstWraps']=items[-1].evaluate('e=>e===document.activeElement') + record['checks']['backgroundInert']=page.locator(trigger).evaluate('e=>!!e.closest("[inert]")') + page.screenshot(path=str(out/f'{kind}-{width}.png'),full_page=True) + page.keyboard.press('Escape');dialog.wait_for(state='detached');record['checks']['restored']=page.locator(trigger).evaluate('e=>e===document.activeElement');record['checks']['unlocked']=page.evaluate('!document.body.classList.contains("modal-open") && !document.querySelector("[inert]")') + # Repeat opening and disconnected-trigger fallback; no server write involved. + page.locator(trigger).click();dialog.wait_for();page.wait_for_function('document.body.classList.contains("modal-open")');page.locator(trigger).evaluate('e=>e.remove()');page.keyboard.press('Escape');dialog.wait_for(state='detached');record['checks']['disconnectedFallback']=page.locator('h1').evaluate('e=>e===document.activeElement') + results.append(record);page.reload(wait_until='networkidle') + # Real host lifecycle with temporarily nonfocusable descendants. + page.locator('#open-confirm').click();dialog=page.locator('[role=dialog]');dialog.wait_for();page.wait_for_function('document.body.classList.contains("modal-open")');dialog.locator('button').evaluate_all('xs=>xs.forEach(e=>e.disabled=true)');dialog.focus();page.keyboard.press('Tab');results.append({'width':width,'kind':'no-focusable','checks':{'contained':dialog.evaluate('e=>e===document.activeElement')}});page.keyboard.press('Escape');dialog.wait_for(state='detached');context.close() + browser.close() +(out/'overlays.json').write_text(json.dumps({'results':results,'passed':all(all(r['checks'].values()) for r in results)},indent=2)+'\n');print('Passed',sum(all(r['checks'].values()) for r in results),'/',len(results)) diff --git a/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor index a1cd3d66..f35b5840 100644 --- a/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor +++ b/src/ZB.MOM.WW.ScadaBridge.CentralUI/Components/Audit/AuditDrilldownDrawer.razor @@ -1,3 +1,5 @@ +@implements IAsyncDisposable +@inject IJSRuntime JS @using ZB.MOM.WW.ScadaBridge.CentralUI.Services @using ZB.MOM.WW.ScadaBridge.Commons.Types.Enums @@ -11,14 +13,15 @@ {
-