Manifest position 759 · CrUX rank bucket 1000
https://visa.mofa.gov.sa
Coverage complete
Coverage-complete model audit of five representative public paths. Excluded: authenticated post-login workflows, real application submission requiring identity/data, PDF contents, and the external ksavisa.sa site.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-preference screenshot is visually indistinguishable from the light rendering, and the CSS probe found no prefers-color-scheme rule. F01 medium: The site does not honor the user’s dark color-scheme preference. |
respect-user-preferencesrespects-reduced-motion | issues | high | The reduced-motion probe matched prefers-reduced-motion: reduce but still found a running animation with duration 10000 ms. F02 medium: A non-essential 10-second animation continues under reduced motion. |
respect-user-preferencesrespects-contrast | pass | high | Forced-colors screenshot preserves visible text, controls, borders, and page hierarchy. |
implement-natural-interactionsview-transitions | issues | high | The CSS probe found no view-transition usage across the inspected MPA routes. F03 low: Page and state changes are abrupt rather than continuity-preserving. |
implement-natural-interactionsscroll-driven-animations | pass | high | No scroll-linked animation is present; CSS probe found neither scroll handlers as a UI technique nor animation-timeline, so there is no main-thread scroll animation anti-pattern on inspected paths. |
implement-natural-interactionsphysical-gestures | pass | high | Inspected routes use native scrolling and links; CSS/DOM probe found no custom pointer gesture system that fights platform behavior. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | The CSS probe found no scroll-state/container or scroll-timeline support while screenshots show persistent multi-row header/banner chrome. F04 low: The large navigation chrome does not react to scroll position. |
provide-guided-navigationanchored-positioning | issues | high | The DOM contains tooltip links and Bootstrap scripts, while the CSS probe found no anchor-name or position-anchor usage. F05 low: Help tooltips rely on legacy scripted positioning rather than resilient anchored positioning. |
provide-guided-navigationdirects-attention | pass | high | Service listing visually marks the active visitor-services tab and pairs each card with a clear heading and action. |
maximize-content-reduce-noiseno-intrusive-interruptions | issues | high | Desktop and mobile load screenshots show a centered promotional modal plus a bottom consent banner covering most of the first viewport. F06 high: A launch modal and consent banner obscure the primary service and lookup content on arrival. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | DOM evidence found div.modal elements with role=dialog; axe reports the visible dialog has no accessible name. F07 medium: The launch experience uses custom Bootstrap div dialogs with incomplete semantics. |
maximize-content-reduce-noisereduced-chrome | issues | high | Service, login, and support screenshots show the KSA Visa banner and bottom consent layer consuming substantial viewport area. F08 medium: Promotional and consent chrome displaces core content on every representative route. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | high | Layout metrics on home and support at 360 px report horizontalOverflowPx 0 with viewport meta present. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | The CSS probe found no @container rules despite card/form components being reused in different page regions. F09 low: Reusable cards and forms adapt only through legacy viewport styling. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The active-control probe reports outline-style none for sampled links/fields and multiple controls at 12–41 px in one dimension. F10 high: Keyboard focus is not visibly indicated and several targets are undersized. |
support-core-task-successclear-purpose-and-primary-action | pass | high | Home, service-listing, login, and support screenshots present explicit Arabic headings and task-specific actions. |
support-core-task-successprimary-flow-completion | pass | high | Visitor service cards expose direct “Apply” actions and login offers both national SSO and account routes without an observed dead end before credential handoff. |
support-core-task-successclear-system-state-and-recovery | pass | high | Empty form submission exposes required-state messages and the invalid-route screenshot presents a clear 404 explanation and recovery instruction. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 5.5 s (performance 0.73); the independent trace measured LCP 4075.66 ms and FCP 3573.56 ms. F11 high: The main page misses the good LCP range. |
be-fast-and-stablevisual-stability | pass | high | Layout observer measured CLS 0 on mobile home/support; Lighthouse CLS was 0.058, within the good range. |
be-fast-and-stableefficient-main-thread | pass | high | Trace found one 68.24 ms long task and only 18.24 ms TBT; Lighthouse measured 0 ms TBT. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR reports 8 parser-inserted high-priority stylesheets, synchronous classic scripts, an uncompressed 56 KB document, and missing cache headers on major assets. F12 medium: Critical delivery is slowed by many blocking resources and weak cache/compression hygiene. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimates 55 KiB of unused CSS; HAR shows 9 stylesheets and 12 scripts for a small landing page. F13 low: The page ships avoidable CSS and legacy dependency overhead. |
be-inclusivenames-roles-labels | issues | high | Axe reports critical label/select-name/image-alt failures, unnamed tooltip links, and an unnamed launch dialog. F14 high: Core lookup controls and contextual help lack accessible names. |
be-inclusivesufficient-contrast | issues | high | Axe measured ratios of 4.34:1 and 3.38:1 for normal-sized text, below the required 4.5:1. F15 medium: Navigation and service text fail WCAG AA contrast. |
be-inclusivestructure-and-focus | issues | high | Axe reports invalid heading order and content outside landmarks; the focus probe found no visible outline on sampled controls. F16 medium: Heading, landmark, and keyboard-focus structure is incomplete. |
be-inclusivelegible-text | pass | high | Representative desktop/mobile screenshots show readable Arabic text without clipping or horizontal overflow. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Mobile layouts have no horizontal overflow, but the modality probe measured links and help icons as small as 12×12 px and key controls below 44 px high. F17 medium: Although mobile reflow works, several interactive targets remain too small. |
follow-best-practicesno-console-errors | pass | high | Lighthouse errors-in-console audit scored 1 and the page completed all CDP probes without an uncaught exception. |
follow-best-practicessound-document-and-assets | issues | high | DOM/Lighthouse report no HTML doctype; the image audit found all 6 images missing explicit width and height. F18 medium: The document lacks a doctype and image sizing metadata. |
follow-best-practicesbrowser-platform-hygiene | pass | high | Lighthouse deprecations audit passed; probes found no load-time permission prompt, paste blocker, or broken runtime flow. |
be-discoverabletitle-and-description | issues | high | DOM probe found title “منصة التأشيرات” and no meta description; representative routes reuse the same title. F19 medium: Pages use a generic title and omit meta descriptions. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | DOM probe found javascript: and # hrefs; Lighthouse crawlable-anchors and robots audits score 0, and /robots.txt returns a request-rejected HTML page. F20 medium: Some links are not crawlable and robots.txt is unusable. |
be-discoverablecanonical-and-indexing-signals | issues | high | Probe found no canonical; sitemap.xml returned an empty body and robots.txt was blocked, despite public routes returning 200. F21 medium: Canonical, sitemap, and consistent indexing signals are missing. |
be-discoverablestructured-and-shareable-metadata | issues | high | Probe found zero JSON-LD blocks and no Open Graph metadata on the home page. F22 low: The public government service has no structured or social-preview metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | Headers primitive found no CSP, HSTS, or nosniff; cookies primitive found cw0125088f without Secure or HttpOnly. F23 high: HTTPS is used, but core security headers are absent and one cookie is not Secure. |
be-private-and-securedata-minimisation-and-third-parties | pass | high | Tracker capture saw one third-party origin, no known trackers, and zero transferred third-party bytes; secrets scan found no exposed credentials. |
be-private-and-securein-context-permissions-and-modern-auth | pass | high | No permission prompt occurred on load; login path prominently supports the Saudi national unified access identity provider. |
be-private-and-securedefensive-browser-policies | issues | high | Headers primitive found no X-Frame-Options or CSP frame-ancestors, Referrer-Policy, or Permissions-Policy; all cookies use SameSite=None. F24 high: Browser-enforced clickjacking, referrer, and permissions defenses are not configured. |
be-resilientprogressive-enhancement | pass | high | Discoverability runs show 100% rendered-content coverage in raw HTML for home, service, and login routes with no JS shell. |
be-resilientresilient-runtime-behaviour | pass | high | Menus, cards, modal dismissal, mobile support layout, and validation states remained usable in exercised paths without clipping or runtime failure. |
be-resilientoffline-and-installable | not-applicable | medium | This transactional government visa service is intrinsically online and has no useful offline completion mode; offline/installability is contextual. No manifest or service-worker registration was found. |
be-resilientnetwork-and-http-failure-states | pass | high | A nonexistent route produces a branded, explanatory recovery page rather than a blank shell or infinite spinner. |
be-internationalisedlang-dir-and-logical-properties | issues | high | DOM has lang=ar-sa but no dir; CSS probe found no logical properties and 846 left/right declarations. F25 medium: The Arabic layout does not explicitly declare direction and relies heavily on physical CSS. |
be-internationalisedlocale-aware-data | not-applicable | medium | No locale-sensitive dates, currency, durations, or numeric presentation appeared in the representative public routes. |
be-internationalisedtime-zone-correctness | not-applicable | medium | No events, appointments, recurring intervals, or time-zone-sensitive data appeared in the exercised scope. |
be-trustworthyno-dark-patterns | issues | high | The first viewport is blocked by a promotional modal, while the consent banner exposes only “Agree” with no equivalent reject/manage choice. F26 high: Consent and promotional defaults are coercive. |
be-trustworthyhumane-error-handling | issues | high | Submitting an empty lookup yields three identical “required field” messages, while no controls match :invalid and axe finds missing labels. F27 medium: Lookup validation is generic and not connected to programmatic invalid state. |
be-trustworthytrustworthy-input-assistance | issues | high | DOM probe found blank autocomplete values for lookup fields and autocomplete=off for CAPTCHA; inspected sign-in is a primary account path. F28 medium: Forms omit useful autocomplete semantics. |
be-trustworthysafe-commercial-and-account-flows | pass | high | No commercial commitment appears in inspected scope; account path clearly separates national SSO and legacy sign-in without a forced upsell. |
be-sustainableoptimised-assets | issues | high | Image audit found 6/6 without dimensions, 3 without srcset, 2 legacy-format images, 2 below-fold images not lazy-loaded, and one oversized logo. F29 medium: Image delivery lacks basic sizing and responsive optimization. |
be-sustainableno-wasteful-work | pass | high | HAR is bounded at 38 requests/630 KB and trace shows only 18.24 ms TBT with no media or background polling observed. |
be-sustainablethird-party-and-media-budget | pass | high | Only one zero-byte third-party request was recorded, no audio/video exists, and no autoplay media was found. |
be-agent-readystructured-agent-capabilities | not-applicable | medium | Emerging agent tooling was judged out of scope for this public visa portal audit; conventional server-rendered forms and links remain machine-readable. |
be-agent-readyon-device-inference | not-applicable | medium | No summarisation, generation, or other inference task exists on the inspected public routes where on-device AI would materially improve the core journey. |
be-memory-efficientno-leak-under-repeated-interaction | pass | high | After 10 dropdown open/close cycles, heap node count and self size decreased (148681→148404 nodes; 9,291,146→9,249,360 bytes). |
be-memory-efficientbounded-footprint | pass | high | Baseline heap is proportionate for the page at 148681 nodes and 9.29 MB self size; DOM probe counted 270 live elements. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | high | Repeated interaction left live DOM count unchanged at 270 and listener probe delta at 0; post heap did not grow. |
Provenance
Canonical report: results/atomic/reports/0759-visa_mofa_gov_sa.json
Report SHA-256: 660c1c8d63635607845a10d4b9832fc2a411d9cb677c2cabe1371dd1981d059f
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/visa_mofa_gov_sa/2026-07-22T21-27-09-990Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/visa_mofa_gov_sa/2026-07-22T21-27-09-990Z
Catalog SHA-256: sha256:78ccfdb2d483f4c57d9dafed80fd86c6265585a56457c8dcfddc254b80fb44d7
Raw screenshots, HARs, traces, heaps, and other browser artifacts are retained at the local evidence root and intentionally are not committed. Artifact paths in the canonical report are relative to that root.