6369 lines
237 KiB
JSON
6369 lines
237 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"checkpoint": "P7-01",
|
|
"slice": "Public authentication presentation",
|
|
"collectedUtc": "2026-10-11T18:46:34.391008+00:00",
|
|
"acceptance": "CONDITIONAL_GO_PUBLIC_SUBSLICE",
|
|
"wholeCheckpointAcceptance": "PENDING_ACCOUNT_IMPLEMENTATION_AND_ACCEPTANCE",
|
|
"production": "NO-GO; main unchanged; no deployment",
|
|
"phase7Readiness": "Conditional development authorization; mandatory manual/production/withheld-AI gates retained",
|
|
"identity": {
|
|
"developmentBranch": "codex/ui-redesign-phase4",
|
|
"entryCommit": "27c54146ad6f9059295d169b533db7b1b6689210",
|
|
"currentHeadObserved": "27c54146ad6f9059295d169b533db7b1b6689210",
|
|
"qualification": "Measured working-tree public source, no eventual commit self-reference or inferred remote receipt",
|
|
"publicSourceFiles": [
|
|
{
|
|
"path": "job-tracker-ui/src/views/LoginPage.tsx",
|
|
"sha256": "3120b4e29d6ebf980e92742b68f12d45ec0f0ecbda12ba81a1f3c1ac24a716de",
|
|
"bytes": 13880,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
{
|
|
"path": "job-tracker-ui/src/views/ForgotPasswordPage.tsx",
|
|
"sha256": "662cd57f46fce43aa8c61d8ea8629ab76c5df34a3a9fc1a822fe64fb726206ad",
|
|
"bytes": 3601,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
{
|
|
"path": "job-tracker-ui/src/views/ResetPasswordPage.tsx",
|
|
"sha256": "33cb1f86b6b9f3254b5287e20f912c9f13236626d1ee8f9e5e40e88b535fbf51",
|
|
"bytes": 4750,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
{
|
|
"path": "job-tracker-ui/src/views/VerifyEmailPage.tsx",
|
|
"sha256": "90274cf2885ad80fbd16073e2750a8a3a53061c5fc35d877441e8efc1515e2d0",
|
|
"bytes": 2619,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
{
|
|
"path": "job-tracker-ui/src/views/MicrosoftLegacyRelinkPage.tsx",
|
|
"sha256": "88cfd80f0f743e20889a665261111a40e977c6a8ebdf0715aba255c01e1fef16",
|
|
"bytes": 2990,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
{
|
|
"path": "job-tracker-ui/src/layout/AuthPageFrame.tsx",
|
|
"sha256": "cdd4b0f238d1c5dffdb13fd0f0dd0ea08f89238ccd83858e10eed58a0a8911a7",
|
|
"bytes": 1021,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
}
|
|
],
|
|
"publicSourceSha256Lf": "b330b233508ad5202a1f622ade4464103f7a986ee53648c8f16047f2a1d32586",
|
|
"publicSourceAlgorithm": "SHA256 of ordered path + TAB + canonical-LF file SHA256 + LF records",
|
|
"buildId": "rd_SQeVLwVwER9VMCc6XL",
|
|
"buildIdRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/BUILD_ID",
|
|
"sha256": "3b9a7dfe22d00b2ea2b367484f524ba84ad775388e54714d70bb5813ef00c595",
|
|
"bytes": 21,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"staticExportFileCount": 74,
|
|
"staticExportSha256": "dff031a52740a09359715a31456c9cec70f5aae6f9932c018af078215e973d67",
|
|
"staticExportAlgorithm": "SHA256 of sorted repository-relative path + TAB + raw exported file SHA256 + LF records",
|
|
"finalFreezeConfirmedByParent": true
|
|
},
|
|
"environment": {
|
|
"osObserved": "Windows-11-10.0.26200-SP0",
|
|
"localOnly": true,
|
|
"nativeBrowser": "Chromium",
|
|
"appliedRunnerEnvironment": {
|
|
"NEXT_PUBLIC_API_BASE_URL": "http://localhost:5302/api",
|
|
"NEXT_TELEMETRY_DISABLED": "1",
|
|
"DOTNET_ROOT": "C:/Users/Connor/.dotnet",
|
|
"DOTNET_HOST_PATH": "C:/Users/Connor/.dotnet/dotnet.exe",
|
|
"PLAYWRIGHT_STATIC_EXPORT": "true",
|
|
"PLAYWRIGHT_PREBUILT_EXPORT": "true",
|
|
"PLAYWRIGHT_REUSE_SERVERS": "false",
|
|
"Workers__SavedJobSearchAlertsEnabled": "false",
|
|
"CV_FIDELITY_OUTPUT": ".artifacts/phase7/current/ui/fidelity",
|
|
"CV_SETTINGS_FIDELITY_OUTPUT": ".artifacts/phase7/current/ui/settings-fidelity"
|
|
},
|
|
"runnerRaw": {
|
|
"path": ".artifacts/phase7/current/run-ui.py",
|
|
"sha256": "95c479462812f91be97a07865764b76e7cd4e251edb0cf871ae945147fbb606d",
|
|
"bytes": 3737,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"browserTypeScriptConfig": {
|
|
"raw": {
|
|
"path": ".artifacts/phase7/e2e-tsconfig.json",
|
|
"sha256": "55fa6fffaed1e76a32657edfffcc501cd8bd87330bda2c3a3944f8f89d4019e2",
|
|
"bytes": 572,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"contents": "{\n \"extends\": \"../../job-tracker-ui/tsconfig.json\",\n \"compilerOptions\": {\n \"incremental\": false,\n \"types\": [\"node\", \"jest\"],\n \"typeRoots\": [\"../../job-tracker-ui/node_modules/@types\"]\n },\n \"include\": [\n \"../../job-tracker-ui/e2e/**/*.ts\",\n \"../../job-tracker-ui/ai-tests/**/*.ts\",\n \"../../job-tracker-ui/auth-tests/**/*.ts\",\n \"../../job-tracker-ui/playwright.*.config.ts\",\n \"../../job-tracker-ui/src/mui-theme.d.ts\",\n \"../../docs/redesign/phase-5/p5-15/p5-15-01/diagnostics/**/*.ts\"\n ],\n \"exclude\": [\"../../job-tracker-ui/node_modules\"]\n}\n"
|
|
},
|
|
"SMTPConfiguration": {
|
|
"path": "job-tracker-ui/playwright.auth-recovery.config.ts",
|
|
"sha256": "e1398a2ca5da83ae4fcb5f7486025ad57972d1c8c9e59f5045cc0fc4771ffb46",
|
|
"bytes": 2514,
|
|
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
|
},
|
|
"SMTPQualification": "Fresh synthetic SQLite/keys, loopback SMTP capture, actual app Identity tokens/mail/reset/session revocation; production mail/OAuth/Turnstile disabled, no real provider call"
|
|
},
|
|
"commands": {
|
|
"typecheck": {
|
|
"record": {
|
|
"name": "typecheck",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"npm.cmd",
|
|
"run",
|
|
"typecheck"
|
|
],
|
|
"startedUtc": "2026-10-11T18:40:04.381270+00:00",
|
|
"finishedUtc": "2026-10-11T18:40:13.702467+00:00",
|
|
"exitCode": 0
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/typecheck-command.json",
|
|
"sha256": "ec09944c3564073f9fc5053cb04b709238d9b3517d932f87ef6bfd87769985f3",
|
|
"bytes": 247,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/typecheck.log",
|
|
"sha256": "89b0ec97b537eca6560c13ca2dfea9e3a97dd1bb35580c4ff39d2462db25e080",
|
|
"bytes": 148,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
},
|
|
"browser-typecheck": {
|
|
"record": {
|
|
"name": "browser-typecheck",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"npm.cmd",
|
|
"exec",
|
|
"tsc",
|
|
"--",
|
|
"--project",
|
|
"../.artifacts/phase7/e2e-tsconfig.json",
|
|
"--noEmit"
|
|
],
|
|
"startedUtc": "2026-10-11T18:40:13.704966+00:00",
|
|
"finishedUtc": "2026-10-11T18:40:17.223050+00:00",
|
|
"exitCode": 0
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/browser-typecheck-command.json",
|
|
"sha256": "f521fa7034e2a4a13271c2290d64aa5ab6cf70ec3069193b0dbe0581d362f71d",
|
|
"bytes": 343,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/browser-typecheck.log",
|
|
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
|
"bytes": 78,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
},
|
|
"lint": {
|
|
"record": {
|
|
"name": "lint",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"npm.cmd",
|
|
"run",
|
|
"lint"
|
|
],
|
|
"startedUtc": "2026-10-11T18:40:17.225515+00:00",
|
|
"finishedUtc": "2026-10-11T18:40:33.244235+00:00",
|
|
"exitCode": 0
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/lint-command.json",
|
|
"sha256": "9942a5aabf7a93ba5150d8fb705c3641c6187892a1db213a31086c000959e9d1",
|
|
"bytes": 237,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/lint.log",
|
|
"sha256": "b040dbeca9b4adb3f6f4c25ac49de0d37e921375b2d9b57e87b542a10f599913",
|
|
"bytes": 136,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
},
|
|
"build": {
|
|
"record": {
|
|
"name": "build",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"npm.cmd",
|
|
"run",
|
|
"build"
|
|
],
|
|
"startedUtc": "2026-10-11T18:40:33.246731+00:00",
|
|
"finishedUtc": "2026-10-11T18:40:39.963279+00:00",
|
|
"exitCode": 0
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/build-command.json",
|
|
"sha256": "e3fcd7fee126f082d52489ce5ce70f42cacf9b542a49228957e25ac979cf38a4",
|
|
"bytes": 239,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/build.log",
|
|
"sha256": "ace43e7ab44772d78e3802b2b305d89fbd69febe25843ee41610de9671b3f030",
|
|
"bytes": 670,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
},
|
|
"smtp-fixture": {
|
|
"record": {
|
|
"name": "smtp-fixture",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"--test",
|
|
"scripts/localSMTPfixture.test.mjs"
|
|
],
|
|
"startedUtc": "2026-10-11T18:38:47.568488+00:00",
|
|
"finishedUtc": "2026-10-11T18:38:47.841554+00:00",
|
|
"exitCode": 0
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/smtp-fixture-command.json",
|
|
"sha256": "155a2822339d2fa288781cd3ba82973c3ac9b9a81ac689f64d735cf59ee4578f",
|
|
"bytes": 274,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/smtp-fixture.log",
|
|
"sha256": "21ab3459c6263f849416bb3ec1284146164b8b218f2b2c16a7cb94b2877e23ec",
|
|
"bytes": 712,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
}
|
|
},
|
|
"focusedUnit": {
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-password-label-green-20261011T183907Z.json",
|
|
"sha256": "19eb766e24079444a713e1ebe0b398289b2160223c86b393d45aaab1a906258e",
|
|
"bytes": 26508,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791743948118,
|
|
"passed": 61,
|
|
"failed": 0,
|
|
"pending": 0,
|
|
"total": 61,
|
|
"suites": 4,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation names the password field for login intent and retains its autocomplete contract",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation names the password field for register intent and retains its autocomplete contract",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for login",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for register",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders a dedicated registration screen and explains when registration is disabled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders one conventional sign-in card with enabled provider alternatives",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage accepts a username and reports invalid credentials without changing routes",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage handles Microsoft cancellation without exchanging or navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes the Microsoft provider return through the hardened exchange endpoint",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes a Google credential return without account-linking copy",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage posts remember-me preference without storing an auth token in browser storage",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not complete login when registration requires email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage rejects an unsafe post-login redirect path",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"https://evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"//evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage preserves encoded internal query and fragment without decoding the navigation target",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not replay an unsafe nested return context after authentication",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage abandons prior return context on the established account/session disposal entry",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage opens the separate forgot-password page with the typed email prefilled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows the 2FA code step when login requires two-factor, then proceeds like a normal login on success",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows a clear message when the 2FA challenge is rate-limited",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage offers a resend-verification action when login reports the account is not verified",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms the account and shows success when the link is valid",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error when the link is invalid or expired",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error without calling the API when the link is missing userId/token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms a pending email change and requires a fresh sign-in",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "passed"
|
|
}
|
|
]
|
|
},
|
|
"nativePublic": {
|
|
"command": {
|
|
"name": "auth",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"e2e/phase7-authentication.spec.ts",
|
|
"--grep",
|
|
"public",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:40:39.968796+00:00",
|
|
"finishedUtc": "2026-10-11T18:41:10.212431+00:00",
|
|
"exitCode": 0,
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:40:40.482Z",
|
|
"duration": 29658.595,
|
|
"expected": 22,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-command.json",
|
|
"sha256": "2f9818509196a29ff4c94d39763eb941efa957cef52ffc079a0a585b888f6dc5",
|
|
"bytes": 667,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth.json",
|
|
"sha256": "56125fb7953ac8c36a6d42c1e1a8e45e061f7e34276f091cea6f5bb23625d65a",
|
|
"bytes": 3782886,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth.log",
|
|
"sha256": "8b8e79bba89ab30125a65a7d97f2f660d4ee5addaa2f17bfd0a19ce1fdc0d8c4",
|
|
"bytes": 4061,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:40:40.482Z",
|
|
"duration": 29658.595,
|
|
"expected": 22,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[P7-01 public/auth] /login nb/dark 320x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1035
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /login en/light 1280x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 921
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register nb/light 390x844: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 977
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register en/dark 1440x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 937
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /forgot-password en/dark 360x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 909
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /forgot-password nb/light 1024x768: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 851
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /reset-password en/light 320x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 916
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /reset-password nb/dark 768x1024: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 932
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /verify-email en/light 1920x1080: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 862
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /verify-email nb/dark 390x844: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 848
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /confirm-email-change en/dark 1024x768: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 863
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /confirm-email-change nb/light 768x1024: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 843
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /microsoft-legacy-relink nb/light 1280x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 855
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /microsoft-legacy-relink en/dark 1440x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 886
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register nb/dark 1280x320: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 963
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] en keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 114,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1072
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] nb keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 114,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1032
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/verify-email invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1000
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/email-change/confirm invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 931
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/reset-password invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1068
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] en rejected sign-in retains credentials and the exact protected return route",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 186,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1977
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] nb rejected sign-in retains credentials and the exact protected return route",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 186,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1709
|
|
}
|
|
],
|
|
"axeScans": [
|
|
{
|
|
"test": "[P7-01 public/auth] /login nb/dark 320x740: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "36105550b3f71a94ce0d042881679513669ee70f1112d2f42607bf384c829606",
|
|
"bytes": 155615
|
|
},
|
|
"context": {
|
|
"path": "/login",
|
|
"title": "signInTitle",
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 320,
|
|
"height": 740,
|
|
"screenshot": true,
|
|
"state": "ready",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 320,
|
|
"viewportHeight": 740,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 126.25,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "text",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "checkbox",
|
|
"text": "",
|
|
"left": 22,
|
|
"right": 64,
|
|
"width": 42,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Glemt passord?",
|
|
"left": 193.5625,
|
|
"right": 287,
|
|
"width": 93.4375,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Logg inn",
|
|
"left": 198.65625,
|
|
"right": 287,
|
|
"width": 88.34375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Fortsett med Google",
|
|
"left": 33,
|
|
"right": 287,
|
|
"width": 254,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Fortsett med Microsoft",
|
|
"left": 33,
|
|
"right": 287,
|
|
"width": 254,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 320,
|
|
"windowHeight": 740,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"username\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"text\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"current-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /login en/light 1280x900: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "836104700e4d84242ae71dea62d9fcff26b8049ebd7f70ac016713b4e95b2d6f",
|
|
"bytes": 156060
|
|
},
|
|
"context": {
|
|
"path": "/login",
|
|
"title": "signInTitle",
|
|
"language": "en",
|
|
"mode": "light",
|
|
"width": 1280,
|
|
"height": 900,
|
|
"state": "ready",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 222.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "text",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "checkbox",
|
|
"text": "",
|
|
"left": 390,
|
|
"right": 432,
|
|
"width": 42,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Forgot password?",
|
|
"left": 771.3125,
|
|
"right": 879,
|
|
"width": 107.6875,
|
|
"height": 30.75
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Sign in",
|
|
"left": 803.015625,
|
|
"right": 879,
|
|
"width": 75.984375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Continue with Google",
|
|
"left": 401,
|
|
"right": 879,
|
|
"width": 478,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Continue with Microsoft",
|
|
"left": 401,
|
|
"right": 879,
|
|
"width": 478,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"username\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"text\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"current-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/light 390x844: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "fe0c297344c630d13cb2cefcded76ac977454835f26c16268df44d7cfb2e142f",
|
|
"bytes": 153600
|
|
},
|
|
"context": {
|
|
"path": "/register",
|
|
"title": "createAccount",
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 390,
|
|
"height": 844,
|
|
"screenshot": true,
|
|
"state": "registration-disabled",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 390,
|
|
"viewportHeight": 844,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 221.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 347,
|
|
"width": 304,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 347,
|
|
"width": 304,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 347,
|
|
"width": 304,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 33,
|
|
"right": 166.4375,
|
|
"width": 133.4375,
|
|
"height": 30.75
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Opprett konto",
|
|
"left": 232.828125,
|
|
"right": 357,
|
|
"width": 124.171875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 390,
|
|
"windowHeight": 844,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"email\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 3
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register en/dark 1440x900: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "7aff8d9d2271e4a64181c11eb3f92ea898412c8f6121b36d769a74b621cb440b",
|
|
"bytes": 153528
|
|
},
|
|
"context": {
|
|
"path": "/register",
|
|
"title": "createAccount",
|
|
"language": "en",
|
|
"mode": "dark",
|
|
"width": 1440,
|
|
"height": 900,
|
|
"state": "registration-disabled",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1440,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 262.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 491,
|
|
"right": 949,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 491,
|
|
"right": 949,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 491,
|
|
"right": 949,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 481,
|
|
"right": 565.609375,
|
|
"width": 84.609375,
|
|
"height": 30.75
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Create account",
|
|
"left": 829.90625,
|
|
"right": 959,
|
|
"width": 129.09375,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1440,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"email\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 3
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /forgot-password en/dark 360x740: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "2ac1cb084f099227edbd57888888e3935411c2766928e8672d51236819a1b4df",
|
|
"bytes": 112126
|
|
},
|
|
"context": {
|
|
"path": "/forgot-password",
|
|
"title": "forgotPasswordTitle",
|
|
"language": "en",
|
|
"mode": "dark",
|
|
"width": 360,
|
|
"height": 740,
|
|
"screenshot": true,
|
|
"state": "ready",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 360,
|
|
"viewportHeight": 740,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 269.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 317,
|
|
"width": 274,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 67.703125,
|
|
"right": 187.296875,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Send reset link",
|
|
"left": 195.296875,
|
|
"right": 327,
|
|
"width": 131.703125,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 360,
|
|
"windowHeight": 740,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"email\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 1
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /forgot-password nb/light 1024x768: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "529e99aff04dae255fa88ec690bda41a13e4af1d7a947f4e4261e85df04fa4f8",
|
|
"bytes": 112217
|
|
},
|
|
"context": {
|
|
"path": "/forgot-password",
|
|
"title": "forgotPasswordTitle",
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 1024,
|
|
"height": 768,
|
|
"state": "ready",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1024,
|
|
"viewportHeight": 768,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 281.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 283,
|
|
"right": 741,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 397.625,
|
|
"right": 567.09375,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Send nullstillingslenke",
|
|
"left": 575.09375,
|
|
"right": 751,
|
|
"width": 175.90625,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1024,
|
|
"windowHeight": 768,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"email\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 1
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /reset-password en/light 320x740: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "98de569213c6d526446c96f6edb6bb8a5cea899191d6d3112b51fb7af5cbffa7",
|
|
"bytes": 153735
|
|
},
|
|
"context": {
|
|
"path": "/reset-password",
|
|
"title": "resetPasswordTitle",
|
|
"language": "en",
|
|
"mode": "light",
|
|
"width": 320,
|
|
"height": 740,
|
|
"screenshot": true,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 320,
|
|
"viewportHeight": 740,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 154.5,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 167.40625,
|
|
"right": 287,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Update password",
|
|
"left": 145.15625,
|
|
"right": 287,
|
|
"width": 141.84375,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 320,
|
|
"windowHeight": 740,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 3
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /reset-password nb/dark 768x1024: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "22ff81c149b4357dbb0265f770ae61f33de9c86179026afe43d125bcaa1bef31",
|
|
"bytes": 153215
|
|
},
|
|
"context": {
|
|
"path": "/reset-password",
|
|
"title": "resetPasswordTitle",
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 768,
|
|
"height": 1024,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 768,
|
|
"viewportHeight": 1024,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 324.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 299.875,
|
|
"right": 469.34375,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Oppdater passord",
|
|
"left": 477.34375,
|
|
"right": 623,
|
|
"width": 145.65625,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 768,
|
|
"windowHeight": 1024,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 3
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /verify-email en/light 1920x1080: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "46f1f839097cbac05ae348e4d656f3ad202e6359ac9097e65006bd6936f74a65",
|
|
"bytes": 96524
|
|
},
|
|
"context": {
|
|
"path": "/verify-email",
|
|
"title": "verifyEmailTitle",
|
|
"language": "en",
|
|
"mode": "light",
|
|
"width": 1920,
|
|
"height": 1080,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1920,
|
|
"viewportHeight": 1080,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 457.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 1079.40625,
|
|
"right": 1199,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1920,
|
|
"windowHeight": 1080,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /verify-email nb/dark 390x844: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "f7d3670933d975eed13353494d62419cf74509a50afdb4e19e7d62db2c87ff73",
|
|
"bytes": 96590
|
|
},
|
|
"context": {
|
|
"path": "/verify-email",
|
|
"title": "verifyEmailTitle",
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 390,
|
|
"height": 844,
|
|
"screenshot": true,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 390,
|
|
"viewportHeight": 844,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 341.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 187.53125,
|
|
"right": 357,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 390,
|
|
"windowHeight": 844,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /confirm-email-change en/dark 1024x768: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "d12ddfb5a5721f62a8b02b359b0cb6571ab796c580c5d03e365a13462ce8bfd4",
|
|
"bytes": 96625
|
|
},
|
|
"context": {
|
|
"path": "/confirm-email-change",
|
|
"title": "confirmEmailChangeTitle",
|
|
"language": "en",
|
|
"mode": "dark",
|
|
"width": 1024,
|
|
"height": 768,
|
|
"screenshot": true,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1024,
|
|
"viewportHeight": 768,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 301.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 631.40625,
|
|
"right": 751,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1024,
|
|
"windowHeight": 768,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /confirm-email-change nb/light 768x1024: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "01198fc809e90fe3a3ba868560da0ea451c4316d99a1687b98789b24ddaf24b3",
|
|
"bytes": 96713
|
|
},
|
|
"context": {
|
|
"path": "/confirm-email-change",
|
|
"title": "confirmEmailChangeTitle",
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 768,
|
|
"height": 1024,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 768,
|
|
"viewportHeight": 1024,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 429.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 453.53125,
|
|
"right": 623,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 768,
|
|
"windowHeight": 1024,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /microsoft-legacy-relink nb/light 1280x900: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "46bd516a1264629e6c41691869ce9d5aa9e48d36baaf36e394259ceda5f4d11a",
|
|
"bytes": 104409
|
|
},
|
|
"context": {
|
|
"path": "/microsoft-legacy-relink",
|
|
"title": "microsoftLegacyRelinkTitle",
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 1280,
|
|
"height": 900,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 334.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 538.46875,
|
|
"right": 691.9375,
|
|
"width": 153.46875,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Fortsett med Microsoft",
|
|
"left": 699.9375,
|
|
"right": 879,
|
|
"width": 179.0625,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /microsoft-legacy-relink en/dark 1440x900: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "660bd988651b7056ed6aab306be0dcfeacaba8156003a2fde00fc7d4f65c36c6",
|
|
"bytes": 104331
|
|
},
|
|
"context": {
|
|
"path": "/microsoft-legacy-relink",
|
|
"title": "microsoftLegacyRelinkTitle",
|
|
"language": "en",
|
|
"mode": "dark",
|
|
"width": 1440,
|
|
"height": 900,
|
|
"screenshot": true,
|
|
"state": "missing-link",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1440,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 341.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 658.6875,
|
|
"right": 762.28125,
|
|
"width": 103.59375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Continue with Microsoft",
|
|
"left": 770.28125,
|
|
"right": 959,
|
|
"width": 188.71875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1440,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/dark 1280x320: landmarks, labels and reflow",
|
|
"attachment": "public-auth-presentation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "3d413f1ca998d2fa836a3ac88ece276fb7ae01ef1a1a341a9e038ebc86b37d3c",
|
|
"bytes": 153580
|
|
},
|
|
"context": {
|
|
"path": "/register",
|
|
"title": "createAccount",
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 1280,
|
|
"height": 320,
|
|
"screenshot": true,
|
|
"state": "registration-disabled",
|
|
"density": "not-applicable",
|
|
"browserZoom": "not-measured"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 320,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 45,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 401,
|
|
"right": 534.4375,
|
|
"width": 133.4375,
|
|
"height": 30.75
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Opprett konto",
|
|
"left": 754.828125,
|
|
"right": 879,
|
|
"width": 124.171875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 320,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"email\" id=\"_r_4_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\">",
|
|
"target": [
|
|
"#_r_4_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 3
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"attachment": "public-auth-reset-request-validation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "b20e7c0dec003fd31dd14bc5ebee4f1e033d1c31bb6ff4cde1b429c247259de0",
|
|
"bytes": 115730
|
|
},
|
|
"context": {
|
|
"language": "en",
|
|
"mode": "light",
|
|
"width": 1280,
|
|
"height": 900,
|
|
"route": "/forgot-password",
|
|
"state": "client-validation",
|
|
"requests": []
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 347.75,
|
|
"mainName": "_r_c_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 619.703125,
|
|
"right": 739.296875,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Send reset link",
|
|
"left": 747.296875,
|
|
"right": 879,
|
|
"width": 131.703125,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"true\" autocomplete=\"email\" id=\"_r_d_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\" aria-describedby=\"_r_d_-helper-text\">",
|
|
"target": [
|
|
"#_r_d_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<button class=\"MuiButtonBase-root M...\" tabindex=\"0\" type=\"submit\" aria-busy=\"false\">",
|
|
"target": [
|
|
".MuiButton-contained"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"attachment": "public-auth-reset-request-validation-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "7e04c153eb2443e1b7c4ee44a64d20552cff986d287fd7a2ea3768c08e94a628",
|
|
"bytes": 115817
|
|
},
|
|
"context": {
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 390,
|
|
"height": 844,
|
|
"route": "/forgot-password",
|
|
"state": "client-validation",
|
|
"requests": []
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 390,
|
|
"viewportHeight": 844,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 274.5,
|
|
"mainName": "_r_c_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 347,
|
|
"width": 304,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 187.53125,
|
|
"right": 357,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Send nullstillingslenke",
|
|
"left": 181.09375,
|
|
"right": 357,
|
|
"width": 175.90625,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 390,
|
|
"windowHeight": 844,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"true\" autocomplete=\"email\" id=\"_r_d_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"email\" value=\"\" aria-describedby=\"_r_d_-helper-text\">",
|
|
"target": [
|
|
"#_r_d_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<button class=\"MuiButtonBase-root M...\" tabindex=\"0\" type=\"submit\" aria-busy=\"false\">",
|
|
"target": [
|
|
".MuiButton-contained"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/verify-email invalid-token rejection retains a usable page",
|
|
"attachment": "public-auth-invalid-token-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "e381a5b2f1fa89341c423840cc04556eb5708e91c695ecaca39410a61be9a534",
|
|
"bytes": 96795
|
|
},
|
|
"context": {
|
|
"language": "en",
|
|
"mode": "light",
|
|
"width": 1280,
|
|
"height": 900,
|
|
"path": "/verify-email?userId=p7-nonexistent-user&token=invalid-proof",
|
|
"endpoint": "/auth/verify-email",
|
|
"title": "verifyEmailTitle",
|
|
"state": "actual-http-400",
|
|
"errorText": "Invalid or expired link.",
|
|
"errorSource": "existing server response; no frontend translation claim for server-authored text",
|
|
"persistedRecovery": "covered by separate isolated SMTP pack"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 367.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Back to login",
|
|
"left": 759.40625,
|
|
"right": 879,
|
|
"width": 119.59375,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/email-change/confirm invalid-token rejection retains a usable page",
|
|
"attachment": "public-auth-invalid-token-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "d46878bdc7321ed6667491dfd8b6ad0e2fcd12354b46a007b2b65a7e9524ab3d",
|
|
"bytes": 97003
|
|
},
|
|
"context": {
|
|
"language": "nb",
|
|
"mode": "dark",
|
|
"width": 390,
|
|
"height": 844,
|
|
"path": "/confirm-email-change?userId=p7-nonexistent-user&email=unused%40example.test&token=invalid-proof",
|
|
"endpoint": "/auth/email-change/confirm",
|
|
"title": "confirmEmailChangeTitle",
|
|
"state": "actual-http-400",
|
|
"errorText": "Invalid or expired link.",
|
|
"errorSource": "existing server response; no frontend translation claim for server-authored text",
|
|
"persistedRecovery": "covered by separate isolated SMTP pack"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 390,
|
|
"viewportHeight": 844,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 341.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 187.53125,
|
|
"right": 357,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 390,
|
|
"windowHeight": 844,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 0
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/reset-password invalid-token rejection retains a usable page",
|
|
"attachment": "public-auth-invalid-token-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "60e4d01f18fed7cd021b8ea17715b96158f2a0190c5e30230940c5f5578d9c4d",
|
|
"bytes": 153009
|
|
},
|
|
"context": {
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 768,
|
|
"height": 1024,
|
|
"path": "/reset-password?email=p7-nonexistent-account%40example.test&token=invalid-proof",
|
|
"endpoint": "/auth/reset-password",
|
|
"title": "resetPasswordTitle",
|
|
"state": "actual-http-400",
|
|
"errorText": "Invalid email or token.",
|
|
"errorSource": "existing server response; no frontend translation claim for server-authored text",
|
|
"persistedRecovery": "covered by separate isolated SMTP pack"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 768,
|
|
"viewportHeight": 1024,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 324.75,
|
|
"mainName": "_r_3_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "email",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 155,
|
|
"right": 613,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Tilbake til innlogging",
|
|
"left": 299.875,
|
|
"right": 469.34375,
|
|
"width": 169.46875,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Oppdater passord",
|
|
"left": 477.34375,
|
|
"right": 623,
|
|
"width": 145.65625,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 768,
|
|
"windowHeight": 1024,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" aria-describedby=\"_r_5_-helper-text\" autocomplete=\"new-password\" id=\"_r_5_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"NewPassword123!\">",
|
|
"target": [
|
|
"#_r_5_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"new-password\" id=\"_r_6_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"NewPassword123!\">",
|
|
"target": [
|
|
"#_r_6_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en rejected sign-in retains credentials and the exact protected return route",
|
|
"attachment": "public-auth-sign-in-error-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "77ed1e11aa5960ea332348b1f8ce26b3faa929045962c6dc5ef01ee5f15a0c4a",
|
|
"bytes": 165578
|
|
},
|
|
"context": {
|
|
"language": "en",
|
|
"mode": "dark",
|
|
"width": 1280,
|
|
"height": 900,
|
|
"requested": "/analytics?months=%36#return-proof",
|
|
"state": "actual-http-401",
|
|
"provider": "local"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 1280,
|
|
"viewportHeight": 900,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 191.75,
|
|
"mainName": "_r_e_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "text",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 411,
|
|
"right": 869,
|
|
"width": 458,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "checkbox",
|
|
"text": "",
|
|
"left": 390,
|
|
"right": 432,
|
|
"width": 42,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Forgot password?",
|
|
"left": 771.3125,
|
|
"right": 879,
|
|
"width": 107.6875,
|
|
"height": 30.75
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Sign in",
|
|
"left": 803.015625,
|
|
"right": 879,
|
|
"width": 75.984375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Continue with Google",
|
|
"left": 401,
|
|
"right": 879,
|
|
"width": 478,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Continue with Microsoft",
|
|
"left": 401,
|
|
"right": 879,
|
|
"width": 478,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 1280,
|
|
"windowHeight": 900,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"username\" id=\"_r_f_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"text\" value=\"p7-public-auth-1791744066221-0p7unm4bmtw@example.test\">",
|
|
"target": [
|
|
"#_r_f_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"current-password\" id=\"_r_g_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"IncorrectPassword123!\">",
|
|
"target": [
|
|
"#_r_g_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb rejected sign-in retains credentials and the exact protected return route",
|
|
"attachment": "public-auth-sign-in-error-all-enabled-axe",
|
|
"raw": {
|
|
"storage": "Base64 attachment in raw report",
|
|
"sha256": "0bde71e1b1c94c22ff779db97bcf3612dcff08412c070d0fb6c90c37083702ff",
|
|
"bytes": 165136
|
|
},
|
|
"context": {
|
|
"language": "nb",
|
|
"mode": "light",
|
|
"width": 320,
|
|
"height": 740,
|
|
"requested": "/analytics?months=%36#return-proof",
|
|
"state": "actual-http-401",
|
|
"provider": "local"
|
|
},
|
|
"geometry": {
|
|
"viewportWidth": 320,
|
|
"viewportHeight": 740,
|
|
"pageOverflow": 0,
|
|
"mainOverflow": 0,
|
|
"headingTop": 95.25,
|
|
"mainName": "_r_e_",
|
|
"h1Count": 1,
|
|
"controls": [
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "text",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "password",
|
|
"text": "",
|
|
"left": 43,
|
|
"right": 277,
|
|
"width": 234,
|
|
"height": 38.125
|
|
},
|
|
{
|
|
"tag": "INPUT",
|
|
"type": "checkbox",
|
|
"text": "",
|
|
"left": 22,
|
|
"right": 64,
|
|
"width": 42,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Glemt passord?",
|
|
"left": 193.5625,
|
|
"right": 287,
|
|
"width": 93.4375,
|
|
"height": 42
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "submit",
|
|
"text": "Logg inn",
|
|
"left": 198.65625,
|
|
"right": 287,
|
|
"width": 88.34375,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Fortsett med Google",
|
|
"left": 33,
|
|
"right": 287,
|
|
"width": 254,
|
|
"height": 36.5
|
|
},
|
|
{
|
|
"tag": "BUTTON",
|
|
"type": "button",
|
|
"text": "Fortsett med Microsoft",
|
|
"left": 33,
|
|
"right": 287,
|
|
"width": 254,
|
|
"height": 36.5
|
|
}
|
|
]
|
|
},
|
|
"engine": {
|
|
"name": "axe-core",
|
|
"version": "4.13.0"
|
|
},
|
|
"environment": {
|
|
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.7922.34 Safari/537.36",
|
|
"windowWidth": 320,
|
|
"windowHeight": 740,
|
|
"orientationAngle": 0,
|
|
"orientationType": "landscape-primary"
|
|
},
|
|
"toolOptions": {
|
|
"reporter": "v1"
|
|
},
|
|
"violations": [],
|
|
"incomplete": [
|
|
{
|
|
"id": "color-contrast",
|
|
"impact": "serious",
|
|
"tags": [
|
|
"cat.color",
|
|
"wcag2aa",
|
|
"wcag143",
|
|
"TTv5",
|
|
"TT13.c",
|
|
"EN-301-549",
|
|
"EN-9.1.4.3",
|
|
"ACT",
|
|
"RGAAv4",
|
|
"RGAA-3.2.1"
|
|
],
|
|
"description": "Ensure the contrast between foreground and background colors meets WCAG 2 AA minimum contrast ratio thresholds",
|
|
"help": "Elements must meet minimum color contrast ratio thresholds",
|
|
"helpUrl": "https://dequeuniversity.com/rules/axe/4.13/color-contrast?application=playwright",
|
|
"nodes": [
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"username\" id=\"_r_f_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"text\" value=\"p7-public-auth-1791744068089-jwuxdn2xf3l@example.test\">",
|
|
"target": [
|
|
"#_r_f_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
},
|
|
{
|
|
"any": [
|
|
{
|
|
"id": "color-contrast",
|
|
"data": {
|
|
"contrastRatio": 0,
|
|
"fontSize": "10.5pt (14px)",
|
|
"fontWeight": "normal",
|
|
"messageKey": "bgOverlap",
|
|
"expectedContrastRatio": "4.5:1"
|
|
},
|
|
"relatedNodes": [],
|
|
"impact": "serious",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
],
|
|
"all": [],
|
|
"none": [],
|
|
"impact": "serious",
|
|
"html": "<input aria-invalid=\"false\" autocomplete=\"current-password\" id=\"_r_g_\" class=\"MuiInputBase-input MuiOutlinedInput-input MuiInputBase-inputSizeSmall css-146iwiv\" type=\"password\" value=\"IncorrectPassword123!\">",
|
|
"target": [
|
|
"#_r_g_"
|
|
],
|
|
"failureSummary": "Fix any of the following:\n Element's background color could not be determined because it is overlapped by another element"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"violationsNodes": 0,
|
|
"incompleteNodes": 2
|
|
}
|
|
],
|
|
"screenshots": [
|
|
{
|
|
"test": "[P7-01 public/auth] /login nb/dark 320x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--85169-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-441726e62105208ed462563eb0bc0b014abe4874.png",
|
|
"sha256": "16eba6e6a69f9ce3a6f76f57107f2bfbd0922c0eac5937bfd81c33df0fd64acc",
|
|
"bytes": 21257,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/light 390x844: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--f649a-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-258beee6d7e71499b1ee76636a8db0a30eb453df.png",
|
|
"sha256": "66ee84e9e96494021eb3093b1a59e00ce78bb05a24b0cdeeb77950e6ad7aab5c",
|
|
"bytes": 21469,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /forgot-password en/dark 360x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--84f6f-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-4ffe92e738f662144344e25bfafd7c32e03efe16.png",
|
|
"sha256": "e7b4ddccfa476eb3e5f49634ab231b82f734c70e9ce97e239d743d8c88aa1ba6",
|
|
"bytes": 14762,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /reset-password en/light 320x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--dee29-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-527bd8bc898cae881a17a023355e23084ee50d64.png",
|
|
"sha256": "332a7aaf641d8484e4c29a534f61b847ab7e1f348845031b608d7dbcfee4fddb",
|
|
"bytes": 20346,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /verify-email nb/dark 390x844: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--3ac33-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-92bc7549ddf6de748a293e54b6b800a385bc924f.png",
|
|
"sha256": "f0356cbd178e5ef9f231a4b15a36f765a9670b4bf3aa8c990aa85aa2086f9ba7",
|
|
"bytes": 11955,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /confirm-email-change en/dark 1024x768: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--20407-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b5de0cce2b710796291920248e9dfea636d88921.png",
|
|
"sha256": "d0a3bfeb5880cf0bee5c2141b5d57181af98d456d6561e00742df8f982bd9ae9",
|
|
"bytes": 13869,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /microsoft-legacy-relink en/dark 1440x900: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--f1140-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b62b4b99ffc49a9dcdaf50823dcbeb939937b4c5.png",
|
|
"sha256": "86826b0466eabdbc5877e95b432b7759cce56d635660b3c58c4a08a3d1b800c6",
|
|
"bytes": 24605,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/dark 1280x320: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--299ad-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-8c5f37a12a9eb44d220bda9d8e9bd41fa09cb06a.png",
|
|
"sha256": "8450360a236b0278776715463e05a91d73912f32656ed1b78c14136f2a0c1bd4",
|
|
"bytes": 22263,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "Parent opened this exact final PNG with view_image; finite frame/labels/actions/overflow review only"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"name": "public-auth-reset-request-validation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--fc520-nd-returns-focus-to-sign-in-chromium/attachments/public-auth-reset-request-validation-f67711a54fde4512a071ceff35037e67b1eefb23.png",
|
|
"sha256": "14fcc25a8f572e0634c467be74a5817657049f601390ef769a75878a152e50a3",
|
|
"bytes": 20115,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"name": "public-auth-reset-request-validation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--5ba55-nd-returns-focus-to-sign-in-chromium/attachments/public-auth-reset-request-validation-76a3ecce6bbf9affa7fdcd1405d3f33c0d11916b.png",
|
|
"sha256": "802c77da755d18cb0b12dd7a03b718a28665a5608f983fb140944ec63854f092",
|
|
"bytes": 18747,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/verify-email invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--9b638-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-cdc4f8b61183cbf3e31c54ae348477da5d0f66ae.png",
|
|
"sha256": "eb659c2f8f239ee137bdc5888c61e6c8506b0dd0e4c09edbb80f744230c0d1ca",
|
|
"bytes": 13965,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/email-change/confirm invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--bff43-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-932b0e8c1434473074b70d4881fef5a152107822.png",
|
|
"sha256": "429e3d90cd1b416e41733c41d77f06b997f0f37370b64cc3c3a1615741ed97d8",
|
|
"bytes": 12416,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/reset-password invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--095cd-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-b6fd3d22ed02acee8dd8c16e4326f77bcc2a6429.png",
|
|
"sha256": "7613122f55c9e51f3c7bd4eabd96333422b734ab0eda5806c7958aa500cd258c",
|
|
"bytes": 26985,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en rejected sign-in retains credentials and the exact protected return route",
|
|
"name": "public-auth-sign-in-error",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--5218d-xact-protected-return-route-chromium/attachments/public-auth-sign-in-error-513930a399ef286e41d379861b2407be4fefa2e6.png",
|
|
"sha256": "ded04e16223e800fa11cd3d4a50adb02519f500bbd9e1856190649376c2ca6c3",
|
|
"bytes": 30364,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb rejected sign-in retains credentials and the exact protected return route",
|
|
"name": "public-auth-sign-in-error",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--29329-xact-protected-return-route-chromium/attachments/public-auth-sign-in-error-ff6fbd4ce2b57d6c562471149c90029e57dbe732.png",
|
|
"sha256": "8e4ff72df6d6de512f02c9e049dc37ac222f48113be5b26b347b5da1ca035d55",
|
|
"bytes": 25483,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
}
|
|
],
|
|
"reportErrors": [],
|
|
"configuration": {
|
|
"version": "1.62.1",
|
|
"workers": 1,
|
|
"projects": [
|
|
{
|
|
"name": "chromium",
|
|
"retries": 0
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"nativeSMTPRecovery": {
|
|
"command": {
|
|
"name": "auth-recovery",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"--config=playwright.auth-recovery.config.ts",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:41:10.225435+00:00",
|
|
"finishedUtc": "2026-10-11T18:41:23.989669+00:00",
|
|
"exitCode": 0,
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:41:10.750Z",
|
|
"duration": 13205.887999999999,
|
|
"expected": 2,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-recovery-command.json",
|
|
"sha256": "c99e95d4a2052cb79f8b9c0cdd13e886505dd24f5490529856ccffd8b34ee84a",
|
|
"bytes": 673,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-recovery.json",
|
|
"sha256": "95e18abfc5d3d433793bbb051f784ee75a6285457c09d8963b6244b6e6e98c53",
|
|
"bytes": 83093,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-recovery.log",
|
|
"sha256": "79f5f6ba4846e8e2a97896c6804163b924ba9ff23599b74924f4bde42927778c",
|
|
"bytes": 1038,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:41:10.750Z",
|
|
"duration": 13205.887999999999,
|
|
"expected": 2,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[PRES-E02] incomplete recovery links explain the problem without submitting tokens",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 39,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 889
|
|
},
|
|
{
|
|
"title": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 53,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 5030
|
|
}
|
|
],
|
|
"axeScans": [],
|
|
"screenshots": [],
|
|
"reportErrors": [],
|
|
"configuration": {
|
|
"version": "1.62.1",
|
|
"workers": 1,
|
|
"projects": [
|
|
{
|
|
"name": "chromium",
|
|
"retries": 0
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"countDeltas": {
|
|
"inheritedFullFrontend": {
|
|
"passed": 521,
|
|
"suites": 85,
|
|
"raw": {
|
|
"path": ".artifacts/phase6/current/ui/jest.json",
|
|
"sha256": "37c5a231fd72138e74676c7e7bf40070bda543ae35536f4ac89adf1c96e0fd2f",
|
|
"bytes": 217363,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
},
|
|
"affectedPublicBaseline": [
|
|
{
|
|
"file": "/src/login-page.test.tsx",
|
|
"cases": 33
|
|
},
|
|
{
|
|
"file": "/src/verify-email-page.test.tsx",
|
|
"cases": 4
|
|
},
|
|
{
|
|
"file": "/src/microsoft-legacy-relink-page.test.tsx",
|
|
"cases": 1
|
|
}
|
|
],
|
|
"affectedBaselineCases": 38,
|
|
"affectedCurrentCases": 61,
|
|
"addedPublicCases": 23,
|
|
"explanation": "33 Login and 4 Verify cases retained; Microsoft relink 1 to 2 (+1 recovery retry); new public-auth-presentation suite 22 cases (including two parameterized password-intent cases). 61 current affected cases versus 38 inherited; +23 cases/+1 suite. This is not a fresh full frontend run. Native public 22 and isolated SMTP 2 are new separate packs; backend87 is a subset and helper6 separate."
|
|
},
|
|
"SMTPHelper": {
|
|
"tests": 6,
|
|
"pass": 6,
|
|
"fail": 0,
|
|
"cancelled": 0,
|
|
"skipped": 0,
|
|
"todo": 0
|
|
},
|
|
"backendAuthSubset": {
|
|
"record": {
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"C:/Users/Connor/.dotnet/dotnet.exe",
|
|
"test",
|
|
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
|
|
"--configuration",
|
|
"Release",
|
|
"--no-build",
|
|
"--filter",
|
|
"FullyQualifiedName~AuthAndSystemControllerTests|FullyQualifiedName~AuthSessionRevocationTests|FullyQualifiedName~LocalAuthIdentityTests|FullyQualifiedName~SessionContextMiddlewareTests|FullyQualifiedName~SessionsControllerTests|FullyQualifiedName~TwoFactorControllerTests|FullyQualifiedName~EmailOwnershipIntegrationTests|FullyQualifiedName~ApiAuthorizationPostureTests",
|
|
"--logger",
|
|
"trx;LogFileName=auth.trx",
|
|
"--results-directory",
|
|
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\backend-auth"
|
|
],
|
|
"startedUtc": "2026-10-11T14:49:40.805882+00:00",
|
|
"finishedUtc": "2026-10-11T14:49:44.320481+00:00",
|
|
"exitCode": 0,
|
|
"logSha256": "775e8e343e0650281ac12c05716af3f5c2acc8e2a839c3842d1b17f0c65789cc",
|
|
"counts": {
|
|
"total": 87,
|
|
"passed": 87,
|
|
"failed": 0,
|
|
"notExecuted": 0
|
|
},
|
|
"resultSha256": "7ee39952dab7de2e126721f1b0f557d95f99c63570380810c09546c9b596fa11"
|
|
},
|
|
"recordRaw": {
|
|
"path": ".artifacts/phase7/current/backend-auth/command.json",
|
|
"sha256": "b53f769cb49c634a15728bedf7c75e580198a907db0eb11fa13f67d209b9ae01",
|
|
"bytes": 1183,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"trxRaw": {
|
|
"path": ".artifacts/phase7/current/backend-auth/auth.trx",
|
|
"sha256": "7ee39952dab7de2e126721f1b0f557d95f99c63570380810c09546c9b596fa11",
|
|
"bytes": 125755,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/current/backend-auth/auth.log",
|
|
"sha256": "775e8e343e0650281ac12c05716af3f5c2acc8e2a839c3842d1b17f0c65789cc",
|
|
"bytes": 575,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"qualification": "87 fresh auth/security tests at unchanged backend source; subset of inherited 1,033, not additive"
|
|
},
|
|
"accessibility": {
|
|
"allEnabledScans": 22,
|
|
"violationNodes": 0,
|
|
"incompleteNodes": 31,
|
|
"incompleteByRule": {
|
|
"color-contrast": 31
|
|
},
|
|
"incompleteChecks": [
|
|
{
|
|
"id": "color-contrast",
|
|
"message": "Element's background color could not be determined because it is overlapped by another element",
|
|
"count": 31
|
|
}
|
|
],
|
|
"triage": "Retained input/outlined-control background overlap contexts require M11 contrast/forced-colors qualification; geometry and no reported axe violations do not establish human contrast acceptance",
|
|
"scope": "Finite public presentation/workflow samples. No rule/tag exclusions, no human reader or browser zoom qualification; density is not applicable to public forms"
|
|
},
|
|
"visualReview": {
|
|
"preLabel": "Parent inspected the eight public presentation matrix PNGs before the registration-label repair; historical source, not blanket final image acceptance",
|
|
"finalMatrixImagesReviewedByParent": true,
|
|
"finalInspectedImageCount": 8,
|
|
"finalInspectedImages": [
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--85169-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-441726e62105208ed462563eb0bc0b014abe4874.png",
|
|
"sha256": "16eba6e6a69f9ce3a6f76f57107f2bfbd0922c0eac5937bfd81c33df0fd64acc",
|
|
"bytes": 21257,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--f649a-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-258beee6d7e71499b1ee76636a8db0a30eb453df.png",
|
|
"sha256": "66ee84e9e96494021eb3093b1a59e00ce78bb05a24b0cdeeb77950e6ad7aab5c",
|
|
"bytes": 21469,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--84f6f-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-4ffe92e738f662144344e25bfafd7c32e03efe16.png",
|
|
"sha256": "e7b4ddccfa476eb3e5f49634ab231b82f734c70e9ce97e239d743d8c88aa1ba6",
|
|
"bytes": 14762,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--dee29-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-527bd8bc898cae881a17a023355e23084ee50d64.png",
|
|
"sha256": "332a7aaf641d8484e4c29a534f61b847ab7e1f348845031b608d7dbcfee4fddb",
|
|
"bytes": 20346,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--3ac33-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-92bc7549ddf6de748a293e54b6b800a385bc924f.png",
|
|
"sha256": "f0356cbd178e5ef9f231a4b15a36f765a9670b4bf3aa8c990aa85aa2086f9ba7",
|
|
"bytes": 11955,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--20407-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b5de0cce2b710796291920248e9dfea636d88921.png",
|
|
"sha256": "d0a3bfeb5880cf0bee5c2141b5d57181af98d456d6561e00742df8f982bd9ae9",
|
|
"bytes": 13869,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--f1140-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b62b4b99ffc49a9dcdaf50823dcbeb939937b4c5.png",
|
|
"sha256": "86826b0466eabdbc5877e95b432b7759cce56d635660b3c58c4a08a3d1b800c6",
|
|
"bytes": 24605,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
{
|
|
"path": ".artifacts/phase7/p7-01/public-final/auth-results/phase7-authentication--P7--299ad-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-8c5f37a12a9eb44d220bda9d8e9bd41fa09cb06a.png",
|
|
"sha256": "8450360a236b0278776715463e05a91d73912f32656ed1b78c14136f2a0c1bd4",
|
|
"bytes": 22263,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
}
|
|
],
|
|
"otherFinalScreenshots": "Captured with hashes; individual inspection not claimed"
|
|
},
|
|
"attempts": [
|
|
{
|
|
"lane": "auth",
|
|
"command": {
|
|
"name": "auth",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"e2e/phase7-authentication.spec.ts",
|
|
"--grep",
|
|
"public",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:34:00.909019+00:00",
|
|
"finishedUtc": "2026-10-11T18:34:31.189426+00:00",
|
|
"exitCode": 0,
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:34:01.438Z",
|
|
"duration": 29699.525,
|
|
"expected": 22,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-command.json",
|
|
"sha256": "2863d716384e892ae1c345c32a45327fa283ccb3f6e3c4b38697582475adf490",
|
|
"bytes": 667,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth.json",
|
|
"sha256": "84dc75daa9d50700163b34b68c651e24f1655d4118c1be2966c249efb1afaaa1",
|
|
"bytes": 3782934,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth.log",
|
|
"sha256": "7bd95c2eadcab96ab7eace60e8b825e93cd07a62fb243b8f37443da5d52a7e87",
|
|
"bytes": 4060,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:34:01.438Z",
|
|
"duration": 29699.525,
|
|
"expected": 22,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[P7-01 public/auth] /login nb/dark 320x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1049
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /login en/light 1280x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 927
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register nb/light 390x844: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 971
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register en/dark 1440x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 955
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /forgot-password en/dark 360x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 910
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /forgot-password nb/light 1024x768: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 841
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /reset-password en/light 320x740: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 925
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /reset-password nb/dark 768x1024: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 872
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /verify-email en/light 1920x1080: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 866
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /verify-email nb/dark 390x844: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 853
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /confirm-email-change en/dark 1024x768: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 863
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /confirm-email-change nb/light 768x1024: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 843
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /microsoft-legacy-relink nb/light 1280x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 849
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /microsoft-legacy-relink en/dark 1440x900: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 872
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] /register nb/dark 1280x320: landmarks, labels and reflow",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 85,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 981
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] en keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 114,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1071
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] nb keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 114,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1017
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/verify-email invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1000
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/email-change/confirm invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 946
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] real /auth/reset-password invalid-token rejection retains a usable page",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 149,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1067
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] en rejected sign-in retains credentials and the exact protected return route",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 186,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1979
|
|
},
|
|
{
|
|
"title": "[P7-01 public/auth] nb rejected sign-in retains credentials and the exact protected return route",
|
|
"file": "phase7-authentication.spec.ts",
|
|
"line": 186,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1726
|
|
}
|
|
],
|
|
"screenshots": [
|
|
{
|
|
"test": "[P7-01 public/auth] /login nb/dark 320x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--85169-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-441726e62105208ed462563eb0bc0b014abe4874.png",
|
|
"sha256": "16eba6e6a69f9ce3a6f76f57107f2bfbd0922c0eac5937bfd81c33df0fd64acc",
|
|
"bytes": 21257,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/light 390x844: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--f649a-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-258beee6d7e71499b1ee76636a8db0a30eb453df.png",
|
|
"sha256": "17bfc01ff670e4b81a3167766475176b4b90c412885c76f5d53c8419d96a6d5c",
|
|
"bytes": 21787,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /forgot-password en/dark 360x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--84f6f-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-4ffe92e738f662144344e25bfafd7c32e03efe16.png",
|
|
"sha256": "e7b4ddccfa476eb3e5f49634ab231b82f734c70e9ce97e239d743d8c88aa1ba6",
|
|
"bytes": 14762,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /reset-password en/light 320x740: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--dee29-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-527bd8bc898cae881a17a023355e23084ee50d64.png",
|
|
"sha256": "332a7aaf641d8484e4c29a534f61b847ab7e1f348845031b608d7dbcfee4fddb",
|
|
"bytes": 20346,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /verify-email nb/dark 390x844: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--3ac33-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-92bc7549ddf6de748a293e54b6b800a385bc924f.png",
|
|
"sha256": "f0356cbd178e5ef9f231a4b15a36f765a9670b4bf3aa8c990aa85aa2086f9ba7",
|
|
"bytes": 11955,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /confirm-email-change en/dark 1024x768: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--20407-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b5de0cce2b710796291920248e9dfea636d88921.png",
|
|
"sha256": "d0a3bfeb5880cf0bee5c2141b5d57181af98d456d6561e00742df8f982bd9ae9",
|
|
"bytes": 13869,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /microsoft-legacy-relink en/dark 1440x900: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--f1140-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-b62b4b99ffc49a9dcdaf50823dcbeb939937b4c5.png",
|
|
"sha256": "86826b0466eabdbc5877e95b432b7759cce56d635660b3c58c4a08a3d1b800c6",
|
|
"bytes": 24605,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] /register nb/dark 1280x320: landmarks, labels and reflow",
|
|
"name": "public-auth-presentation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--299ad-landmarks-labels-and-reflow-chromium/attachments/public-auth-presentation-8c5f37a12a9eb44d220bda9d8e9bd41fa09cb06a.png",
|
|
"sha256": "470f8dd84fc7e0fb85751da7057d286e3ecda38c65d255e01648576cf470cf8b",
|
|
"bytes": 22581,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"name": "public-auth-reset-request-validation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--fc520-nd-returns-focus-to-sign-in-chromium/attachments/public-auth-reset-request-validation-f67711a54fde4512a071ceff35037e67b1eefb23.png",
|
|
"sha256": "14fcc25a8f572e0634c467be74a5817657049f601390ef769a75878a152e50a3",
|
|
"bytes": 20115,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb keyboard recovery entry preserves the prefill, validates locally and returns focus to sign-in",
|
|
"name": "public-auth-reset-request-validation",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--5ba55-nd-returns-focus-to-sign-in-chromium/attachments/public-auth-reset-request-validation-76a3ecce6bbf9affa7fdcd1405d3f33c0d11916b.png",
|
|
"sha256": "802c77da755d18cb0b12dd7a03b718a28665a5608f983fb140944ec63854f092",
|
|
"bytes": 18747,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/verify-email invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--9b638-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-cdc4f8b61183cbf3e31c54ae348477da5d0f66ae.png",
|
|
"sha256": "b3f88cd03b6fcb63a63bffd88dbbe4d4730a4864e7626eef7f77d3fa941f885f",
|
|
"bytes": 13967,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/email-change/confirm invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--bff43-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-932b0e8c1434473074b70d4881fef5a152107822.png",
|
|
"sha256": "429e3d90cd1b416e41733c41d77f06b997f0f37370b64cc3c3a1615741ed97d8",
|
|
"bytes": 12416,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] real /auth/reset-password invalid-token rejection retains a usable page",
|
|
"name": "public-auth-invalid-token",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--095cd-ction-retains-a-usable-page-chromium/attachments/public-auth-invalid-token-b6fd3d22ed02acee8dd8c16e4326f77bcc2a6429.png",
|
|
"sha256": "c96a72f36c2a6b961be0098beb1639222f6682d523310f9a6e043b82b65b1004",
|
|
"bytes": 26993,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] en rejected sign-in retains credentials and the exact protected return route",
|
|
"name": "public-auth-sign-in-error",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--5218d-xact-protected-return-route-chromium/attachments/public-auth-sign-in-error-513930a399ef286e41d379861b2407be4fefa2e6.png",
|
|
"sha256": "be2d3b19a9e865bab09e8bf0db645e086c839d65532925b418b7294b5ffc4015",
|
|
"bytes": 30501,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[P7-01 public/auth] nb rejected sign-in retains credentials and the exact protected return route",
|
|
"name": "public-auth-sign-in-error",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-184039/auth-results/phase7-authentication--P7--29329-xact-protected-return-route-chromium/attachments/public-auth-sign-in-error-ff6fbd4ce2b57d6c562471149c90029e57dbe732.png",
|
|
"sha256": "fb332626217c70fcf3106e8a5004bd0b0e2c469357430fc1ef879369b5b71c23",
|
|
"bytes": 25328,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
}
|
|
],
|
|
"qualification": "Historical attempt; never substituted for final acceptance"
|
|
},
|
|
{
|
|
"lane": "auth-recovery",
|
|
"command": {
|
|
"name": "auth-recovery",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"--config=playwright.auth-recovery.config.ts",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:34:31.197478+00:00",
|
|
"finishedUtc": "2026-10-11T18:34:48.751561+00:00",
|
|
"exitCode": 1,
|
|
"failureLog": "E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery.log",
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:34:31.776Z",
|
|
"duration": 16940.21,
|
|
"expected": 0,
|
|
"skipped": 0,
|
|
"unexpected": 2,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183529/auth-recovery-command.json",
|
|
"sha256": "949dca66f6bcce999bee1764697586adcee1e6cff7f62f1aa4252fdce4a20583",
|
|
"bytes": 778,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183529/auth-recovery.json",
|
|
"sha256": "2f2e02cea729509337942f24486b1ccb1fa2522c96118f823f8517404072b039",
|
|
"bytes": 16982,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183529/auth-recovery.log",
|
|
"sha256": "5b74cffd4527afb04895a790212f1328dd2c66607780802b341e8f2e49a3bcce",
|
|
"bytes": 8023,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:34:31.776Z",
|
|
"duration": 16940.21,
|
|
"expected": 0,
|
|
"skipped": 0,
|
|
"unexpected": 2,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[PRES-E02] incomplete recovery links explain the problem without submitting tokens",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 39,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"failed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 7930
|
|
},
|
|
{
|
|
"title": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 53,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"failed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 1271
|
|
}
|
|
],
|
|
"screenshots": [
|
|
{
|
|
"test": "[PRES-E02] incomplete recovery links explain the problem without submitting tokens",
|
|
"name": "screenshot",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183529/auth-recovery-results/auth-recovery--PRES-E02-in-e5e30-m-without-submitting-tokens-chromium/test-failed-1.png",
|
|
"sha256": "60452604d60e2879e5556e95d94f23526ada15a0839b0b6ac9dceab5eea9102a",
|
|
"bytes": 35537,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
},
|
|
{
|
|
"test": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"name": "screenshot",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183529/auth-recovery-results/auth-recovery--PRES-E02-PR-dfe9c--and-revoke-the-old-session-chromium/test-failed-1.png",
|
|
"sha256": "20a09e15788c082fd12d2af4c2645b5b71a6a7e2f0f2cda483e8ee7506beb4a2",
|
|
"bytes": 14398,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
}
|
|
],
|
|
"qualification": "Historical attempt; never substituted for final acceptance"
|
|
},
|
|
{
|
|
"lane": "auth-recovery",
|
|
"command": {
|
|
"name": "auth-recovery",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"--config=playwright.auth-recovery.config.ts",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:35:29.363857+00:00",
|
|
"finishedUtc": "2026-10-11T18:35:44.902597+00:00",
|
|
"exitCode": 1,
|
|
"failureLog": "E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery.log",
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:35:29.893Z",
|
|
"duration": 14971.873,
|
|
"expected": 1,
|
|
"skipped": 0,
|
|
"unexpected": 1,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183639/auth-recovery-command.json",
|
|
"sha256": "9596d430944848800687b4c20d6f69688fa71d2f46a34623cc0947ab1df671f9",
|
|
"bytes": 779,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183639/auth-recovery.json",
|
|
"sha256": "aabecd66f15aa494c82f6ca069723555f205f22efcd560972f10a268bfbfa0be",
|
|
"bytes": 9876,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183639/auth-recovery.log",
|
|
"sha256": "cb79846eb7e508bf16cc5573745e9b1b887191525c6c2faeb0aa9725dea8b504",
|
|
"bytes": 4171,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:35:29.893Z",
|
|
"duration": 14971.873,
|
|
"expected": 1,
|
|
"skipped": 0,
|
|
"unexpected": 1,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[PRES-E02] incomplete recovery links explain the problem without submitting tokens",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 39,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 912
|
|
},
|
|
{
|
|
"title": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 53,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"failed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 6718
|
|
}
|
|
],
|
|
"screenshots": [
|
|
{
|
|
"test": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"name": "screenshot",
|
|
"raw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-183639/auth-recovery-results/auth-recovery--PRES-E02-PR-dfe9c--and-revoke-the-old-session-chromium/test-failed-1.png",
|
|
"sha256": "14bee8a8ca244dbd6e364673ca54b8f204e35f92ba12005e2c99ffa6dc82ad3b",
|
|
"bytes": 340317,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"manualReview": "No individual inspection claimed by the collector"
|
|
}
|
|
],
|
|
"qualification": "Historical attempt; never substituted for final acceptance"
|
|
},
|
|
{
|
|
"lane": "auth-recovery",
|
|
"command": {
|
|
"name": "auth-recovery",
|
|
"command": [
|
|
"rtk",
|
|
"proxy",
|
|
"node",
|
|
"node_modules/@playwright/test/cli.js",
|
|
"test",
|
|
"--config=playwright.auth-recovery.config.ts",
|
|
"--retries=0",
|
|
"--reporter=list,json",
|
|
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\auth-recovery-results"
|
|
],
|
|
"startedUtc": "2026-10-11T18:36:39.099024+00:00",
|
|
"finishedUtc": "2026-10-11T18:36:52.822788+00:00",
|
|
"exitCode": 0,
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:36:39.621Z",
|
|
"duration": 13167.438999999998,
|
|
"expected": 2,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
}
|
|
},
|
|
"commandRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-184110/auth-recovery-command.json",
|
|
"sha256": "637ce752c3e49b988b13b1ccd39558a433513067d82bf614521412746e4ff9f1",
|
|
"bytes": 673,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"reportRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-184110/auth-recovery.json",
|
|
"sha256": "b58d503700954ead6b87963328791c08750303b6ecd1b36164e1a9ca1c9807df",
|
|
"bytes": 83773,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"logRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final/attempts/auth-recovery-184110/auth-recovery.log",
|
|
"sha256": "161778b982512defb5dd0e1c5e2b0ddecaad1e4b20ed64f06b0e0f441e2f15a6",
|
|
"bytes": 1038,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"stats": {
|
|
"startTime": "2026-10-11T18:36:39.621Z",
|
|
"duration": 13167.438999999998,
|
|
"expected": 2,
|
|
"skipped": 0,
|
|
"unexpected": 0,
|
|
"flaky": 0
|
|
},
|
|
"cases": [
|
|
{
|
|
"title": "[PRES-E02] incomplete recovery links explain the problem without submitting tokens",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 39,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 879
|
|
},
|
|
{
|
|
"title": "[PRES-E02 PRES-E05 PRES-E09] real registration, SMTP verification and password recovery preserve protected return and revoke the old session",
|
|
"file": "auth-recovery.spec.ts",
|
|
"line": 53,
|
|
"expectedStatus": "passed",
|
|
"project": "chromium",
|
|
"resultStatuses": [
|
|
"passed"
|
|
],
|
|
"retries": [
|
|
0
|
|
],
|
|
"durationMs": 5010
|
|
}
|
|
],
|
|
"screenshots": [],
|
|
"qualification": "Historical attempt; never substituted for final acceptance"
|
|
}
|
|
],
|
|
"unitHistory": [
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-config-red-20261011T145810Z.json",
|
|
"sha256": "c9cc9c852b33c92304d957c1662e6a1ae9664a71cc169a5c8e2a51a3c814f4cd",
|
|
"bytes": 18850,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791730691369,
|
|
"passed": 0,
|
|
"failed": 3,
|
|
"pending": 17,
|
|
"total": 20,
|
|
"suites": 1,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "failed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-edge-red-20261011T145538Z.json",
|
|
"sha256": "213757f88f5a3b6ac6c262e14191461ee3ac11d0fbffcd61194416a08e57e4c4",
|
|
"bytes": 45787,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791730538977,
|
|
"passed": 0,
|
|
"failed": 3,
|
|
"pending": 16,
|
|
"total": 19,
|
|
"suites": 2,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "failed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-green-20261011T145619Z.json",
|
|
"sha256": "a5d159688db2b77f311a35796d2bd685fb19af08252204026334f9038dd56f57",
|
|
"bytes": 24295,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791730579917,
|
|
"passed": 56,
|
|
"failed": 0,
|
|
"pending": 0,
|
|
"total": 56,
|
|
"suites": 4,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for login",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for register",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders a dedicated registration screen and explains when registration is disabled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders one conventional sign-in card with enabled provider alternatives",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage accepts a username and reports invalid credentials without changing routes",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage handles Microsoft cancellation without exchanging or navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes the Microsoft provider return through the hardened exchange endpoint",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes a Google credential return without account-linking copy",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage posts remember-me preference without storing an auth token in browser storage",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not complete login when registration requires email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage rejects an unsafe post-login redirect path",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"https://evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"//evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage preserves encoded internal query and fragment without decoding the navigation target",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not replay an unsafe nested return context after authentication",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage abandons prior return context on the established account/session disposal entry",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage opens the separate forgot-password page with the typed email prefilled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows the 2FA code step when login requires two-factor, then proceeds like a normal login on success",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows a clear message when the 2FA challenge is rate-limited",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage offers a resend-verification action when login reports the account is not verified",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms the account and shows success when the link is valid",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error when the link is invalid or expired",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error without calling the API when the link is missing userId/token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms a pending email change and requires a fresh sign-in",
|
|
"status": "passed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-green-20261011T145851Z.json",
|
|
"sha256": "a2182c4925416befae890880cc3eee077ab807b5e10b5d277c8a0c097bb4b896",
|
|
"bytes": 27295,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791730732178,
|
|
"passed": 58,
|
|
"failed": 1,
|
|
"pending": 0,
|
|
"total": 59,
|
|
"suites": 4,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for login",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for register",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders a dedicated registration screen and explains when registration is disabled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders one conventional sign-in card with enabled provider alternatives",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage accepts a username and reports invalid credentials without changing routes",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage handles Microsoft cancellation without exchanging or navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes the Microsoft provider return through the hardened exchange endpoint",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes a Google credential return without account-linking copy",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage posts remember-me preference without storing an auth token in browser storage",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not complete login when registration requires email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage rejects an unsafe post-login redirect path",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"https://evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"//evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage preserves encoded internal query and fragment without decoding the navigation target",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not replay an unsafe nested return context after authentication",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage abandons prior return context on the established account/session disposal entry",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage opens the separate forgot-password page with the typed email prefilled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows the 2FA code step when login requires two-factor, then proceeds like a normal login on success",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows a clear message when the 2FA challenge is rate-limited",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage offers a resend-verification action when login reports the account is not verified",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms the account and shows success when the link is valid",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error when the link is invalid or expired",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error without calling the API when the link is missing userId/token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms a pending email change and requires a fresh sign-in",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "passed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-green-20261011T150234Z.json",
|
|
"sha256": "f0b5c85061360ebab542724beb82f6b1749be84354485249a29cb60c33d800ab",
|
|
"bytes": 25619,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791730955290,
|
|
"passed": 59,
|
|
"failed": 0,
|
|
"pending": 0,
|
|
"total": 59,
|
|
"suites": 4,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for login",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for register",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders a dedicated registration screen and explains when registration is disabled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders one conventional sign-in card with enabled provider alternatives",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage accepts a username and reports invalid credentials without changing routes",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage handles Microsoft cancellation without exchanging or navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes the Microsoft provider return through the hardened exchange endpoint",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes a Google credential return without account-linking copy",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage posts remember-me preference without storing an auth token in browser storage",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not complete login when registration requires email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage rejects an unsafe post-login redirect path",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"https://evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"//evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage preserves encoded internal query and fragment without decoding the navigation target",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not replay an unsafe nested return context after authentication",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage abandons prior return context on the established account/session disposal entry",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage opens the separate forgot-password page with the typed email prefilled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows the 2FA code step when login requires two-factor, then proceeds like a normal login on success",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows a clear message when the 2FA challenge is rate-limited",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage offers a resend-verification action when login reports the account is not verified",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms the account and shows success when the link is valid",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error when the link is invalid or expired",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error without calling the API when the link is missing userId/token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms a pending email change and requires a fresh sign-in",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "passed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-password-label-green-20261011T183907Z.json",
|
|
"sha256": "19eb766e24079444a713e1ebe0b398289b2160223c86b393d45aaab1a906258e",
|
|
"bytes": 26508,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791743948118,
|
|
"passed": 61,
|
|
"failed": 0,
|
|
"pending": 0,
|
|
"total": 61,
|
|
"suites": 4,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation names the password field for login intent and retains its autocomplete contract",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation names the password field for register intent and retains its autocomplete contract",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for login",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage provides a main landmark and level-one heading for register",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders a dedicated registration screen and explains when registration is disabled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage renders one conventional sign-in card with enabled provider alternatives",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage accepts a username and reports invalid credentials without changing routes",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage handles Microsoft cancellation without exchanging or navigating",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes the Microsoft provider return through the hardened exchange endpoint",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage completes a Google credential return without account-linking copy",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage posts remember-me preference without storing an auth token in browser storage",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not complete login when registration requires email verification",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage rejects an unsafe post-login redirect path",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"https://evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"//evil.example/analytics\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/\\t/evil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%2f%2fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%252f%252fevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%5cevil.example\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=%ZZ\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/jobs/../login\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%6cogin\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/register\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics%0a\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/analytics?months=6\\n\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/LOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage uses the safe fallback for the untrusted return target \"/%4cOGIN\"",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage preserves encoded internal query and fragment without decoding the navigation target",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage restores valid owned-workspace navigation context separately from the sign-in destination",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage does not replay an unsafe nested return context after authentication",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage abandons prior return context on the established account/session disposal entry",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage opens the separate forgot-password page with the typed email prefilled",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows the 2FA code step when login requires two-factor, then proceeds like a normal login on success",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage shows a clear message when the 2FA challenge is rate-limited",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "LoginPage offers a resend-verification action when login reports the account is not verified",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms the account and shows success when the link is valid",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error when the link is invalid or expired",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage shows an error without calling the API when the link is missing userId/token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "VerifyEmailPage confirms a pending email change and requires a fresh sign-in",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "legacy Microsoft recovery requires the emailed proof and a fresh matching Microsoft token",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "pending Microsoft recovery keeps a named action and announces progress before the real confirmation boundary",
|
|
"status": "passed"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"raw": {
|
|
"path": ".artifacts/phase7/current/unit/public-password-label-red-20261011T183845Z.json",
|
|
"sha256": "d276015b8144ae9f344270a090d529d26bba247b39a748f27aef9206510a68fb",
|
|
"bytes": 38834,
|
|
"hashPolicy": "Exact measured raw bytes"
|
|
},
|
|
"startedUnixMs": 1791743925750,
|
|
"passed": 1,
|
|
"failed": 1,
|
|
"pending": 20,
|
|
"total": 22,
|
|
"suites": 1,
|
|
"cases": [
|
|
{
|
|
"name": "public auth presentation names the password field for login intent and retains its autocomplete contract",
|
|
"status": "passed"
|
|
},
|
|
{
|
|
"name": "public auth presentation names the password field for register intent and retains its autocomplete contract",
|
|
"status": "failed"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password request",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for password reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email verification",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for email change",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation provides one named main landmark and H1 for Microsoft recovery",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: false",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces the pending confirmation without an unnamed progressbar: true",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains the entered reset email and a durable error in the page when the command fails",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation retains both new-password fields and the decoded recovery token after a rejected reset",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps a rejected local sign-in beside the retained fields without navigating",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation keeps the reset-request action name while announcing an in-flight command",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces an in-flight local sign-in while preserving its action name",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation announces a pending password save without changing its payload or successful destination",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the first invalid local-login field and associates its explanation",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses the invalid new password without losing confirmation input",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation focuses and explains the invalid reset-request email without sending a command",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation replaces previous reset-request success when a later request fails",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while login configuration is unresolved",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation does not assert optional authentication while register configuration is unresolved",
|
|
"status": "pending"
|
|
},
|
|
{
|
|
"name": "public auth presentation offers a read-only configuration retry while retaining entered sign-in fields",
|
|
"status": "pending"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"failureInterpretation": [
|
|
"First SMTP attempt: two strict alert selectors also matched the established route announcer. Second: one remaining protected-entry fixture expected direct login but actual handoff is the existing Landing page. Scoped-main assertions and following Landing resolved test assumptions; no product change from these failures.",
|
|
"Registration wrong Current password label was found by actual visual review after the first passing public run; two login/register password-intent TDD cases changed it to existing New password copy and retained new-password autocomplete. The final build/native/recovery run includes the label repair.",
|
|
"Diagnostic unit testNamePattern selections retain unselected pending counts. Final affected-unit/native lanes must have zero pending/skip/retry/flaky/failure; diagnostic selection is not a final acceptance mask."
|
|
],
|
|
"preservation": {
|
|
"groups": 57,
|
|
"partial": 56,
|
|
"deferred": 1,
|
|
"routesRetained": 32,
|
|
"qualification": "No group/route upgraded by this finite public sub-slice; C11/P5-13 remains deferred. Account identity, 2FA/session/provider presentation work remains pending"
|
|
},
|
|
"manualAndDeferred": [
|
|
"M01-M12 human/device/provider/production qualifications remain open",
|
|
"M11 contextual contrast/forced colors/motion; axe incomplete nodes retained",
|
|
"Existing server-authored English auth errors remain explicit in NB workflow evidence",
|
|
"Possible duplicate error/route announcements require actual screen-reader acceptance",
|
|
"P5-13/M13 deferred do-not-execute; no model qualification or AI activation",
|
|
"Production F04/config/backup/restore/schema/rollback/ingress evidence still gates release"
|
|
],
|
|
"account": {
|
|
"status": "PENDING",
|
|
"newUnitCases": 17,
|
|
"nativeCases": 6,
|
|
"nativeExecuted": false,
|
|
"qualification": "Five account-security presentation RED cases plus twelve real provider cases (eight existing behavior cases pass, four planned presentation cases fail); no account acceptance or build claimed"
|
|
},
|
|
"pushReceipt": {
|
|
"status": "PUSHED_AND_DIRECT_REMOTE_VERIFIED",
|
|
"commit": "8ad720da5db5999ecda787575dc45621d18a5498",
|
|
"verifiedUtc": "2026-10-11T18:50:24Z",
|
|
"developmentBranch": "codex/ui-redesign-phase4",
|
|
"localHead": "8ad720da5db5999ecda787575dc45621d18a5498",
|
|
"originDevelopment": "8ad720da5db5999ecda787575dc45621d18a5498",
|
|
"liveDevelopment": "8ad720da5db5999ecda787575dc45621d18a5498",
|
|
"localOriginLiveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
|
"worktreeQualification": "No completed public work remains uncommitted; independent account work is in flight. Receipt reported by parent after actual normal push/direct remote checks; no deployment."
|
|
},
|
|
"immutablePublicRaw": {
|
|
"path": ".artifacts/phase7/p7-01/public-final",
|
|
"sourceSnapshot": ".artifacts/phase7/current/ui",
|
|
"policy": "Copy of the measured public runtime tree, including whole prior-attempt folders. Only manifest file-reference paths were rebased; raw report bytes/absolute internal attachment paths, command history, times/counts and measured hashes are unchanged. Raw report attachment paths identify original execution locations; portable PNG references resolve to this snapshot."
|
|
}
|
|
}
|