test(admin): qualify recent audit search and responsive feedback

This commit is contained in:
cesnimda
2026-11-10 13:12:23 +01:00
parent 1a8a97a578
commit 49e79875d9
89 changed files with 2777 additions and 8 deletions
@@ -7,7 +7,7 @@ Owner addendum received 9 November 2026. Source `E:/Storage/Projects/Active/temp
| Admin information isolation | The original redaction patch passed 62 tests on the security branch. [A3 integration](ADMIN_AUDIT_ISOLATION_VALIDATION.md) matched the exact source/test patch and passed 57 selected tests. The runs overlap and remain separate evidence. | Integrated security, remaining delivery paths, broader minimisation and deployment checks remain separate. |
| Discover Jobs | [Search-first layout](visual-correction/DISCOVERY_SEARCH_FIRST.md) moves the query above filters and qualifies the existing NAV request, keyboard submit and source disclosure. | Expose new filters, map and multilingual suggestions only with qualified data and the existing GJ architecture. Mobile filter drawer and focused detail remain open. |
| Applications | [Title-first rows and explicit bulk mode](visual-correction/APPLICATION_SELECTION_REVIEW.md) qualified at 36 configurations. | Secondary action consolidation and final native/visual review remain open. |
| Admin Users and Audit | [Aligned rows](visual-correction/ADMIN_USER_ALIGNMENT_REVIEW.md) and [read-only 2FA status](visual-correction/ADMIN_USER_2FA_REVIEW.md) each passed their own 36-configuration checks. Compact user actions and audit filter/record presentation remain open. | 2FA recovery and private support access require explicit owner approval of their technical and privacy designs. |
| Admin Users and Audit | [Aligned rows](visual-correction/ADMIN_USER_ALIGNMENT_REVIEW.md), [read-only 2FA status](visual-correction/ADMIN_USER_2FA_REVIEW.md) and [recent audit search](visual-correction/AUDIT_SEARCH_REVIEW.md) passed their own 36-configuration checks. Compact user actions, structured filters and safe expansion remain open. | 2FA recovery and private support access require explicit owner approval of their technical and privacy designs. |
| Job Correspondence | Continue inbox layout, mailbox-status presentation and existing explicit consent flow. | Provider verification, restricted scopes, multiple-account persistence and retention decisions retain their gates. Signing in grants no mailbox access. |
| System Status | [Status refresh evidence](visual-correction/SYSTEM_STATUS_REFRESH_REVIEW.md) and [diagnostics design](SYSTEM_DIAGNOSTICS_DESIGN.md) distinguish current, stale and unavailable readings. CV Benchmark Review is retained. | Predefined diagnostics require approved suites, isolated execution, role checks and audit. Live execution and per-signal telemetry remain open. |
| Terminology | “Prepare application” / “Klargjør søknaden” is visible in the scoped EN/NB application checks. | Continue broader terminology and European catalogue review. |
+2
View File
@@ -1,5 +1,7 @@
# A3-IM10 Cross-application qualification
Audit runtime `1a8a97a5` adds local metadata search for the loaded recent-event window. Ten frontend tests and 72 controlled captures and scans passed. See [audit search evidence](visual-correction/AUDIT_SEARCH_REVIEW.md).
Admin Users runtime `e22f2d64` presents read-only 2FA and confirmation status. Seven backend tests, 14 frontend tests, lint, export and 36 scoped browser scans passed. See [account status evidence](visual-correction/ADMIN_USER_2FA_REVIEW.md).
System Status runtime `4981a242` displays the last successful browser read and preserves its timestamp when a refresh fails. See [refresh evidence](visual-correction/SYSTEM_STATUS_REFRESH_REVIEW.md) and the [separate diagnostics design](SYSTEM_DIAGNOSTICS_DESIGN.md).
@@ -0,0 +1,9 @@
# Recent audit event search
Runtime `1a8a97a57894bde4029ca0d878df6d4a815424a4`. The EN/NB search filters the existing administrator response of up to 200 recent events. It matches event type, user identifiers, application title/company and exact numeric application ID. It does not match notes or old/new values. The query stays in component state and produces no network request. Undo and Restore retain their existing paths, admission and focus handling.
The focused test was red before the search existed. The first browser matrix passed its functional assertions but the 320 px Bokmål dark capture showed clipped no-match copy in the table's scroll area. The retained before capture records the problem. The final implementation displays no-match feedback at normal page width and verifies that it fits. Clearing the field restores the loaded rows.
**PASSED:** 10 selected Jest tests, full lint, export build with TypeScript, and 36 configurations with 72 scoped axe scans and captures. The pilot overlaps the matrix. Reviewed the narrow Bokmål no-match and English desktop populated captures. No writes or page errors. Browser data was synthetic, with 36 unavailable company reads outside Audit.
Full historical search, date/time and other structured filters, safe event expansion, integrated authorisation and native review remain open.
File diff suppressed because it is too large Load Diff
@@ -39,6 +39,7 @@ Owner correction: 3 November 2026. This register extends IM10 and the original 3
| V29 | Admin Users | Row details sit above the centre of the action controls | RESOLVED in `dddec043` | [Alignment review](ADMIN_USER_ALIGNMENT_REVIEW.md) records the before and after geometry and phone layout. |
| V30 | Admin System | Operators cannot tell when the displayed status response last succeeded | RESOLVED in `4981a242` | [Status refresh review](SYSTEM_STATUS_REFRESH_REVIEW.md) qualifies timestamp, stale warning and keyboard retry. Per-signal telemetry remains open. |
| V31 | Admin Users | Confirmation lacks an explicit phone label and 2FA status is absent | RESOLVED in `e22f2d64` | [Account status review](ADMIN_USER_2FA_REVIEW.md) covers the read-only flag and aligned presentation. Compact menus and protected recovery remain open. |
| V32 | Admin Audit search | The first no-match state clipped its message inside the wide table on phones | RESOLVED in `1a8a97a5` | [Audit search review](AUDIT_SEARCH_REVIEW.md) records the narrow screenshot and fitting feedback. |
The owner-approved design foundation remains original A1 dashboard, D1 visual system, B1 tracking, editor left / preview right, application context right, desktop sidebar and hybrid mobile navigation. No controls, imports, revisions, permissions or provider rights may be removed to obtain visual simplicity.
@@ -219,9 +219,9 @@
"AdminAuditPage"
],
"visualStatus": "OPEN_COLLECTION_RENDERED_SCOPED_RENDERED_REVIEW",
"afterStatus": "PASSED:36 focused timestamp and keyboard scroll configurations on 2dc8fe4c; earlier empty and populated states retained; no undo/restore",
"afterStatus": "PASSED:36 recent-search, no-match, timestamp and keyboard scroll configurations; browser mutations not run",
"functionalCriteria": "Original preservation register retained; no capability acceptance promotion",
"evidence": "AUDIT_DATE_REVIEW.md; evidence/audit-date/BROWSER.json; earlier ADMIN_HEADINGS_REVIEW.md"
"evidence": "AUDIT_SEARCH_REVIEW.md; evidence/audit-search/BROWSER.json; earlier AUDIT_DATE_REVIEW.md and ADMIN_HEADINGS_REVIEW.md"
},
{
"route": "/admin/users",
Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because it is too large Load Diff
@@ -0,0 +1,47 @@
{
"screens": [
{
"width": 320,
"language": "nb",
"mode": "dark",
"state": "audit-no-matches",
"capture": "viewport at top",
"violations": []
},
{
"width": 320,
"language": "nb",
"mode": "dark",
"state": "audit-populated",
"capture": "viewport at top",
"violations": []
}
],
"journeys": [
{
"width": 320,
"language": "nb",
"mode": "dark",
"auditSearch": "PASS",
"auditTimestampReadable": "PASS",
"headerHeight": 44.5,
"eventHeight": 79.5,
"keyboardScroll": "PASS",
"auditMutations": "NOT RUN"
}
],
"errors": [],
"unexpectedWrites": [],
"exportDenials": [],
"unavailableReads": [
"/api/companies"
],
"blockedExternal": [
"https://fonts.googleapis.com"
],
"limits": [
"Every API response is synthetic. In admin-only mode all mutations are blocked and account flows are NOT RUN; otherwise account export is a controlled 403 and confirmations are cancelled.",
"Only the populated audit table, timestamp geometry and keyboard scrolling are exercised.",
"No real credentials, provider activation, model, native device, integrated security, production or release acceptance."
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

@@ -44,7 +44,8 @@ const screens = [
{name:'Mail review suggestion',reference:'correspondence',folder:'mail-review-counts',state:'review-counts',source:'e8e7d839',scope:'Fixture suggestion with corrected singular thread, job and message counts. Review actions were not executed.'},
{name:'Mail draft conflict',reference:'correspondence',folder:'mail-recovery',state:'draft-conflict',source:'c7e8627c',scope:'A controlled 409 preserves unsaved text and shows the conflict warning. No send request.'},
{name:'Administration users',reference:'admin',folder:'admin-user-2fa',state:'last-admin',source:'e22f2d64',scope:'Confirmation and read-only 2FA status appear on aligned desktop rows and phone cards. Final-administrator safeguards remain visible.'},
{name:'Administration audit',reference:'admin',folder:'audit-date',state:'audit-populated',source:'2dc8fe4c',scope:'Readable timestamp and compact fixture row in the existing scrollable table. No undo or restore executed.'},
{name:'Administration audit',reference:'admin',folder:'audit-search',state:'audit-populated',source:'1a8a97a5',scope:'Recent event search works with the existing read response and retains keyboard access to the table.'},
{name:'Administration audit no matches',reference:'admin',folder:'audit-search',state:'audit-no-matches',source:'1a8a97a5',scope:'The empty result is readable without horizontal scrolling. Private note text is outside search.'},
{name:'Administration system',reference:'admin',folder:'system-status-refresh',state:'system-normal',source:'4981a242',scope:'A timestamp records when the browser received the successful status response. All readings are synthetic.'},
{name:'Administration stale system status',reference:'admin',folder:'system-status-refresh',state:'system-stale',source:'4981a242',scope:'A failed refresh keeps the earlier readings and timestamp with a visible warning and retry.'},
{name:'Administration benchmark',reference:'admin',folder:'admin-headings',state:'system-findings',source:'c7e8627c',scope:'Divided synthetic findings/weak files without nested panels/shadows. Unapproved fixture; no benchmark execution or engine acceptance.'},