Manifest position 981 · CrUX rank bucket 1000
https://homepage.vivo.com
Coverage complete
Coverage complete. The target is a single hash-routed OEM browser start portal; no additional internal routes, sitemap, or links were exposed. The public entry rendered a live failure state, which was audited rather than treated as a bot block.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-mode capture is pixel-identical to the light mobile capture and computed color-scheme is normal; both stylesheets contain no prefers-color-scheme rule. F01 medium: Dark preference is ignored |
respect-user-preferencesrespects-reduced-motion | pass | high | Under prefers-reduced-motion: reduce, the active page reported zero Web Animations; the current error/search state had no running non-essential motion. |
respect-user-preferencesrespects-contrast | pass | high | The forced-colors/high-contrast screenshot retained visible text, search affordance, error illustration, and Refresh text against the system black canvas. |
implement-natural-interactionsview-transitions | pass | high | The only exercised state change, typing in search, updated the search affordance without relocating content or producing an abrupt route swap; the site exposes no internal route links. |
implement-natural-interactionsscroll-driven-animations | pass | high | The page has no scroll-linked visual effect to implement; CSS inspection found no animation-timeline usage, and layout/trace found no long task during load. |
implement-natural-interactionsphysical-gestures | pass | high | DOM and visual inspection found no swipe, drag, carousel, pull-to-refresh, or custom pointer-driven surface that fights native scrolling. |
provide-guided-navigationscroll-state-aware-chrome | pass | high | At 360x800 the content size equals the viewport and exposes no scroll-dependent navigation chrome; there is no hidden scroll state requiring a cue. |
provide-guided-navigationanchored-positioning | pass | high | DOM inspection found no dialog, popover, tooltip, menu, or anchored overlay on the only page surface. |
provide-guided-navigationdirects-attention | issues | high | The error recovery is a non-focusable DIV and the search button is a non-focusable DIV; the search-flow probe leaves focus on the 20px input with no programmatic cue to the failed content. F02 medium: Recovery and search state changes do not guide keyboard attention |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | high | Desktop and mobile load screenshots show no modal, consent wall, interstitial, or content-obscuring banner. |
maximize-content-reduce-noisesemantic-dismissible-primitives | pass | high | DOM inspection found zero dialog, popover, or disclosure surfaces, so there is no ad-hoc overlay implementation on the audited page. |
maximize-content-reduce-noisereduced-chrome | pass | high | Screenshots show a sparse content-first canvas with a search field, shortcuts, and one error state rather than a heavy application frame. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | high | At 360x800, layout measured scrollWidth=clientWidth=360 and horizontalOverflowPx=0; viewport meta is present. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | At 1440px, the phone-specific message and sparse mobile controls stretch across the full width while content stays tiny; CSS inspection found no container queries. F03 medium: Desktop is a stretched mobile layout rather than an adapted form factor |
adapt-to-the-form-factorinput-modality-aware | issues | high | The only focusable control is a 170x20 input with outline none; search and Refresh are DIVs without role/tabindex, so keyboard users cannot activate them. F04 high: Primary controls are too small and not keyboard operable |
support-core-task-successclear-purpose-and-primary-action | issues | high | Both viewports lead with a location instruction, empty shortcut placeholders, and “Unable to open web page”; there is no heading or descriptive primary action. F05 high: The entry page does not communicate a working purpose |
support-core-task-successprimary-flow-completion | issues | high | The init endpoint returns {retcode:20000}; the rendered page says “Unable to open web page”. Search submission is a DIV unavailable to keyboard users. F06 critical: The public entry experience fails its core load and search action is pointer-only |
support-core-task-successclear-system-state-and-recovery | issues | high | The page gives no failure cause or alternate path, and Refresh is a non-focusable DIV with no role or keyboard activation. F07 high: Failure recovery is vague and inaccessible |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 5.6s (score 0.17), although the unthrottled trace measured 1.67s; the error illustration became the LCP. F08 high: LCP is slow under Lighthouse mobile conditions |
be-fast-and-stablevisual-stability | pass | high | Layout measured CLS 0.022 and Lighthouse measured 0.021, both within the good range. |
be-fast-and-stableefficient-main-thread | pass | high | The trace recorded zero long tasks and 0 ms total blocking time; Lighthouse TBT was 28.5 ms. |
be-fast-and-stableefficient-resource-delivery | issues | high | HAR found ten resources without useful cache headers and an uncompressed 40KB ad SDK; Lighthouse says the LCP image is not initial-document discoverable or fetch-prioritised. F09 medium: Critical delivery and cache hygiene are weak |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimates 323KiB unused JavaScript; HAR shows 468,797 of 639,530 transferred bytes are third-party, led by DoubleClick and GTM. F10 high: Unused ad and analytics JavaScript dominates the small page |
be-inclusivenames-roles-labels | issues | high | Lighthouse found 11 images without alt, an unlabeled search input, and no main landmark; Refresh/search actions are generic DIVs. F11 high: The accessibility tree lacks names and semantics |
be-inclusivesufficient-contrast | issues | high | Lighthouse measured contrast ratios 2.84:1 and 2.92:1 for the location instruction and error message against white, below 4.5:1. F12 high: Status text fails WCAG contrast |
be-inclusivestructure-and-focus | issues | high | The page has no headings or landmarks; focusing the only input yields outline none and no box shadow, while action DIVs cannot receive focus. F13 high: There is no semantic structure or visible keyboard focus |
be-inclusivelegible-text | issues | high | The location text is 13px at 2.84:1 and the error text is 14px at 2.92:1; on desktop it remains visually tiny amid a very wide canvas. F14 medium: Tiny low-contrast status text harms readability |
be-inclusivezoom-reflow-targets-and-media | issues | high | Viewport content includes maximum-scale=1 and user-scalable=no; Lighthouse fails meta-viewport and the focus probe measures a 20px-high search input. F15 high: The viewport disables zoom and the primary input target is only 20px high |
follow-best-practicesno-console-errors | issues | high | Lighthouse captured TypeError: Cannot read properties of null (reading exposeLink) in home.aa123ac2.js. F16 medium: The page throws during load |
follow-best-practicessound-document-and-assets | issues | high | The images primitive found 11/11 images without width/height; the 548px error PNG is displayed at 180px and has no responsive source. F17 medium: Images lack intrinsic dimensions and one is oversized |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse geolocation-on-start fails at home.aa123ac2.js; the page immediately instructs users to enable positioning before an intentional user action. F18 high: Geolocation is requested on page load |
be-discoverabletitle-and-description | issues | high | The title is only “Homepage” and no meta description is present. F19 medium: Metadata is generic and incomplete |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Rendered DOM contains zero anchors, while the viewport disables scaling; robots.txt returns a branded nginx 404. F20 high: The page has no crawlable links and blocks user zoom |
be-discoverablecanonical-and-indexing-signals | issues | high | No canonical or hreflang is present; robots.txt and sitemap.xml both return 404. F21 medium: Canonical, sitemap, and language indexing signals are absent |
be-discoverablestructured-and-shareable-metadata | issues | high | Probe found zero Open Graph tags and zero JSON-LD blocks despite a public branded start page. F22 low: The public organization/start page has no share metadata |
be-private-and-securesecure-transport-and-headers | issues | high | The bundle exposes an API_KEY plus SECRET used to derive weather access keys. All four cookies use SameSite=None and three analytics cookies lack Secure; CSP and HSTS are absent. F23 critical: Client credentials and cookie/header defenses are unsafe |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Tracker capture found nine third-party origins including DoubleClick, GTM and Google Analytics; HAR attributes 73% of transferred bytes to third parties. F24 high: Tracking and ad vendors dominate network use without visible consent |
be-private-and-securein-context-permissions-and-modern-auth | issues | high | Lighthouse directly flags geolocation-on-start before the user chooses weather or location functionality; authentication is not present and does not affect this failure. F25 high: Location permission is requested out of context on load |
be-private-and-securedefensive-browser-policies | issues | high | Headers inspection found no CSP, HSTS, nosniff, frame protection, Referrer-Policy, or Permissions-Policy. F26 high: The response omits all inspected browser defense headers |
be-resilientprogressive-enhancement | issues | high | Discoverability found 0% rendered-word coverage in raw HTML; the crawler screenshot is blank while the browser view contains the error/search UI. F27 high: Core content disappears without JavaScript |
be-resilientresilient-runtime-behaviour | issues | high | A null exposeLink access throws during load and the init API returns only retcode 20000, leaving empty shortcut placeholders and a failed shell. F28 high: Optional integrations can break runtime behaviour |
be-resilientoffline-and-installable | issues | high | DOM/runtime probes found no manifest, no service-worker controller, and raw HTML contains no usable fallback content. F29 medium: The app-like portal has no install or offline baseline |
be-resilientnetwork-and-http-failure-states | issues | high | The init response is {retcode:20000}; the page renders “Unable to open web page” with a non-semantic Refresh DIV and no alternative core route. F30 high: The live API failure collapses the page into a dead-end shell |
be-internationalisedlang-dir-and-logical-properties | issues | high | Both DOM probe and Lighthouse show an empty html lang attribute; assistive technology cannot determine the English page language. F31 high: Document language is missing |
be-internationalisedlocale-aware-data | pass | high | The init request sends language=en-GB rather than hard-coding a display locale; no successfully rendered dates, currencies, or durations contradicted this. |
be-internationalisedtime-zone-correctness | not-applicable | high | The only locale-sensitive surface is weather, which did not render; the audited page exposes no events, recurring times, or cross-zone scheduling to test. |
be-trustworthyno-dark-patterns | pass | high | Visual and DOM review found no consent wall, subscription, upsell, disguised ad control, confirmshaming, or forced-continuity flow. |
be-trustworthyhumane-error-handling | pass | high | The only input is a free-form search field with no required/validity constraints; no premature validation or blame-oriented form error is present. |
be-trustworthytrustworthy-input-assistance | issues | high | The only search input explicitly sets autocomplete=off and has no label or placeholder, reducing recognition and browser assistance. F32 medium: Search disables browser input assistance |
be-trustworthysafe-commercial-and-account-flows | not-applicable | high | The single-page start portal exposes no checkout, subscription, authentication, consent-management, or account flow. |
be-sustainableoptimised-assets | issues | high | All 11 images lack dimensions; the 548px PNG error asset is rendered at 180px with no srcset and no modern-format alternative. F33 medium: Image delivery is not resolution-aware |
be-sustainableno-wasteful-work | issues | high | HAR transfers 468,797 third-party bytes and Lighthouse identifies 323KiB unused JavaScript while the core content remains an error shell. F34 high: The failed page still loads substantial advertising and analytics work |
be-sustainablethird-party-and-media-budget | issues | high | Eleven third-party requests transfer 468,797 of 639,530 bytes; DoubleClick alone transfers 262,404 bytes on a sparse failed page. F35 high: Third parties consume 73% of page bytes |
be-agent-readystructured-agent-capabilities | not-applicable | high | This OEM browser start portal exposes search/news/weather, but no agent-facing transaction or productivity capability where WebMCP tooling would be expected. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation, generation, or other inference task is present in the audited start-page experience. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After ten representative focus/type/clear/blur cycles, heap self size was 9.04 MB versus 8.90 MB baseline (+1.6%) and node count +0.4%; closure count fell, with no evidence of unbounded retained growth. |
be-memory-efficientbounded-footprint | pass | medium | Heap summaries measured 8.90-9.04 MB self size for the loaded portal, a proportionate bounded footprint despite third-party scripts. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | Neither heap summary listed a Detached* constructor among retained populations; ten input cycles did not increase closure count (13,936 to 13,918). |
Provenance
Canonical report: results/atomic/reports/0981-homepage_vivo_com.json
Report SHA-256: ad23168a324024227c1da4a75b042cb5b6f17297a75a1f81ad1caf8f70e060c2
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/homepage_vivo_com/2026-07-24T07-14-52-036Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/homepage_vivo_com/2026-07-24T07-14-52-036Z
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.