Manifest position 341 · CrUX rank bucket 1000
https://meteofrance.com
Coverage complete
Coverage-complete representative audit of homepage, city forecast, editorial listing, article, search journey, and 404 recovery. Excluded: account/commerce (not present), every city URL (Ajaccio represents the shared forecast template), specialist marine/mountain/beach templates, and destructive or authenticated flows.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | Desktop screenshots under light and prefers-color-scheme: dark are pixel-identical, and the computed root colorScheme is “normal”. 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 confirmed the media query matched while five animations remained running, including four 600ms animations and one 2000ms animation. F02 medium: Animations continue when reduced motion is requested. |
respect-user-preferencesrespects-contrast | issues | high | The prefers-contrast: more screenshot is visually unchanged; axe found 23 color-contrast failures. F03 medium: The interface does not adapt to increased contrast, and existing text contrast failures remain. |
implement-natural-interactionsview-transitions | issues | high | The rendered stylesheet probe found no view-transition rules or names across forecast tabs/routes. F04 low: Forecast state and document changes use abrupt swaps rather than View Transitions. |
implement-natural-interactionsscroll-driven-animations | pass | medium | Rendered CSS and trace inspection found no scroll-linked animation, parallax, or scrollytelling effect, so there is no main-thread scroll-animation anti-pattern on the representative paths. |
implement-natural-interactionsphysical-gestures | pass | medium | The forecast map uses native panning/zoom controls and the remaining navigation is link/button based; no custom swipe/pull gesture fought platform scrolling in the inspected paths. |
provide-guided-navigationscroll-state-aware-chrome | issues | high | The homepage is 7,911 CSS pixels tall on mobile, while CSS inspection found no scroll-state or timeline feature and the captured header remains static. F05 low: Long pages do not expose scroll progress or scroll-state-aware chrome. |
provide-guided-navigationanchored-positioning | issues | high | The DOM contains multiple custom modal/popup containers, while the feature probe found no anchor-name, position-anchor, or position-try usage. F06 low: Menus and overlay surfaces are manually positioned rather than anchored declaratively. |
provide-guided-navigationdirects-attention | pass | medium | Screenshots show a strong pink active forecast tab, breadcrumbs on city detail, descriptive navigation labels, and direct search suggestions that preserve orientation. |
maximize-content-reduce-noiseno-intrusive-interruptions | pass | medium | Fresh-profile desktop and mobile screenshots show forecast content immediately with no consent wall or full-viewport interstitial obscuring it. |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | The DOM probe found repeated .mf_modal and .modal_overlay divs, zero dialog, popover, or details primitives, and axe found focusable content inside aria-hidden UI. F07 medium: Overlay UI is implemented as custom div structures rather than semantic dialog/popover primitives. |
maximize-content-reduce-noisereduced-chrome | issues | high | The 360x800 screenshot shows a crowded, partially overlapping bottom carousel/navigation strip with clipped labels over editorial content. F08 medium: Mobile homepage chrome overlaps and competes with content near the bottom of the first viewport. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | pass | medium | Layout primitives at 360x800 report scrollWidth=clientWidth=360 on home, city, and listing templates; viewport meta is present. |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | high | CSS inspection found no @container rules or container-type declarations across the rendered homepage styles. F09 low: Reusable components rely on viewport styling rather than container-level adaptation. |
adapt-to-the-form-factorinput-modality-aware | issues | high | The focus probe reported outline-style none and no box-shadow for the search input, submit button, menu button, and many navigation links; axe also found non-focusable scroll regions. F10 high: Keyboard focus is not visibly indicated on important controls. |
support-core-task-successclear-purpose-and-primary-action | pass | medium | The first viewport clearly says METEO FRANCE, exposes location search, forecast tabs, a national map, and prominent vigilance status. |
support-core-task-successprimary-flow-completion | pass | medium | Typing Ajaccio exposes a real crawlable Ajaccio result and the destination forecast page loads with location, date tabs, and weather content. |
support-core-task-successclear-system-state-and-recovery | pass | medium | A nonexistent route renders a branded, explanatory 404 with a return-home action and links to popular city forecasts. |
be-fast-and-stablegood-core-web-vitals | issues | high | Lighthouse measured LCP 24.0s, CLS 0.592, FCP 6.6s and TBT 400ms (performance score 24); the independent trace measured LCP 10.02s. F11 critical: The primary forecast page loads far outside good Core Web Vitals ranges. |
be-fast-and-stablevisual-stability | issues | high | The layout primitive measured CLS 0.465 on the mobile homepage and 0.658 on the Ajaccio page; 60 of 64 images lack explicit dimensions. F12 high: Late content causes severe layout movement on the forecast templates. |
be-fast-and-stableefficient-main-thread | pass | medium | The independent trace recorded one 126ms long task and 76ms TBT, a bounded main-thread result despite broader Lighthouse load problems. |
be-fast-and-stableefficient-resource-delivery | issues | high | The HAR records 2.98 MB across 72 requests, four parser-inserted VeryHigh-priority stylesheets, an uncompressed 716 KB first-party script, and 234 KB uncompressed HTML. F13 high: Critical delivery is heavy and render-blocked. |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimated 735,048 bytes of unused JavaScript and 158,107 bytes of unused CSS; third parties transfer another 968,584 bytes. F14 high: Large amounts of shipped JavaScript and CSS are unused on the initial forecast view. |
be-inclusivenames-roles-labels | issues | high | axe found critical missing alt text and unnamed select failures, serious unnamed links and prohibited ARIA, plus aria-hidden focusable content. F15 high: Controls and visual content have missing or invalid accessible names and roles. |
be-inclusivesufficient-contrast | issues | high | axe found 23 color-contrast failure nodes, including dates and article-card copy. F16 high: Text contrast fails WCAG AA in repeated editorial content. |
be-inclusivestructure-and-focus | issues | high | axe found nested banner/contentinfo/complementary landmarks, two keyboard-inaccessible scrollable regions, and focusable elements inside aria-hidden #sidebar_page; the direct focus probe found invisible focus on key controls. F17 high: Landmarks, focus handling, and keyboard access are inconsistent. |
be-inclusivelegible-text | pass | medium | Desktop article and mobile listing screenshots show readable line lengths, clear heading scale, unclipped body text, and comfortable card spacing. |
be-inclusivezoom-reflow-targets-and-media | issues | high | axe’s critical meta-viewport rule failed because the viewport prevents text scaling/zooming. F18 critical: The viewport configuration disables user zoom. |
follow-best-practicesno-console-errors | issues | high | Lighthouse’s errors-in-console audit failed on the homepage. F19 medium: The production page emits console errors. |
follow-best-practicessound-document-and-assets | issues | high | The image primitive found 60 of 64 images without dimensions, five oversized images, three legacy-format images, and three missing alt values. F20 medium: Image asset sizing is unsound despite a valid doctype and UTF-8 charset. |
follow-best-practicesbrowser-platform-hygiene | issues | high | Lighthouse failed valid-source-maps and inspector-issues audits. F21 low: The page ships broken inspection metadata and browser issues. |
be-discoverabletitle-and-description | pass | medium | DOM evidence shows a descriptive homepage title and meta description; the representative article also has a content-specific title and raw meta description. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | Lighthouse failed crawlable-anchors; axe and Lighthouse also failed the meta-viewport zoom audit. F22 medium: Some links are not crawlable and mobile friendliness is weakened by disabled zoom. |
be-discoverablecanonical-and-indexing-signals | pass | medium | The homepage returns 200, has a self-canonical and fr hreflang, robots.txt permits public content, and sitemap.xml lists forecast URLs. |
be-discoverablestructured-and-shareable-metadata | issues | high | The DOM probe found zero JSON-LD blocks and zero Open Graph tags even though the site contains organization, forecast/place, and article entities. F23 medium: Rich pages do not expose structured data or social-preview metadata. |
be-private-and-securesecure-transport-and-headers | issues | high | The headers primitive found no CSP, HSTS, nosniff, frame protection, Referrer-Policy, or Permissions-Policy; didomi_token lacks Secure and mfsession uses SameSite=None. F24 high: HTTPS is used, but baseline security headers and cookie protections are missing. |
be-private-and-securedata-minimisation-and-third-parties | issues | high | The tracker primitive found eight third-party origins including Google Tag Manager and DoubleClick; the HAR attributes 33 requests and 968,584 bytes to third parties. F25 high: The default page load has a large tracking and advertising footprint. |
be-private-and-securein-context-permissions-and-modern-auth | pass | medium | Fresh-load screenshots and runtime probes show no geolocation/notification prompt; no authentication surface exists on representative public paths. |
be-private-and-securedefensive-browser-policies | issues | high | No HSTS, frame-ancestors/X-Frame-Options, Referrer-Policy, Permissions-Policy, or CSP was returned for the main document. F26 high: Browser-enforced defensive policies are absent. |
be-resilientprogressive-enhancement | pass | medium | Discoverability captures show 85% homepage and 100% article content coverage without JavaScript, with title, H1 and description retained. |
be-resilientresilient-runtime-behaviour | issues | high | The DOM reports multiple custom modal shells as geometrically visible while axe finds aria-hidden focusable content; the mobile screenshot shows overlapping carousel chrome. F27 medium: Custom hidden/runtime UI has inconsistent visibility and focus state. |
be-resilientoffline-and-installable | not-applicable | high | Météo-France is a public, network-current content service rather than an installed web app; installability is not required for the audited forecast journey. |
be-resilientnetwork-and-http-failure-states | pass | medium | The tested nonexistent route presents a useful recovery message, home action, and popular destinations instead of a blank shell or infinite spinner. |
be-internationalisedlang-dir-and-logical-properties | issues | high | The DOM probe found html lang=fr and dir=ltr, but no logical-property usage and 450 physical left/right declarations in rendered CSS. F28 medium: The French language is declared correctly, but layout CSS is not writing-mode resilient. |
be-internationalisedlocale-aware-data | pass | medium | Rendered forecast dates, French weekday/month wording, temperatures, and update text are consistently localized for html lang=fr. |
be-internationalisedtime-zone-correctness | pass | medium | The editorial/forecast content explicitly labels UTC where relevant and location-specific forecast dates remain unambiguous on the Ajaccio path. |
be-trustworthyno-dark-patterns | pass | medium | Initial desktop/mobile screenshots expose content and vigilance directly, with no confirmshaming, forced continuity, hidden price, or blocking consent choice. |
be-trustworthyhumane-error-handling | not-applicable | high | The audited site exposes search/navigation but no data-entry form with required or invalid submission states to validate. |
be-trustworthytrustworthy-input-assistance | pass | medium | The search field provides immediate, descriptive Ajaccio place, beach, and marine suggestions that link directly to the corresponding surfaces. |
be-trustworthysafe-commercial-and-account-flows | not-applicable | high | No checkout, subscription, authentication, or account-management flow exists in the representative public surfaces. |
be-sustainableoptimised-assets | issues | high | Of 64 images, 60 lack dimensions, 39 below-fold images are not lazy-loaded, five are oversized, 12 lack srcset, and three use legacy formats. F29 medium: Image delivery wastes bytes and creates layout risk. |
be-sustainableno-wasteful-work | issues | high | Eight third-party origins load on entry; ads, consent, analytics, and wrappers account for 33 requests and 968,584 transferred bytes before user interaction. F30 medium: Non-essential third-party work consumes substantial resources during initial load. |
be-sustainablethird-party-and-media-budget | issues | high | Third parties account for roughly one third of the 2.98 MB load, while the homepage also fetches editorial/video-related resources before they enter the viewport. F31 medium: Third-party scripts and media are disproportionate to the immediate forecast task. |
be-agent-readystructured-agent-capabilities | issues | high | Raw HTML coverage is 85% on the homepage and 100% on the article, but the capability probe found no WebMCP/agentic tool registration or structured action surface. F32 low: Forecast capability is crawler-visible but not exposed as a safe structured agent action. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation or generation task on the audited forecast/content surfaces clearly benefits from on-device inference. |
be-memory-efficientno-leak-under-repeated-interaction | issues | low | After ten today/tomorrow cycles, the summary grew from 44.7 MB/1,211,243 nodes to 48.0 MB/1,275,325 nodes (about +3.25 MB and +64k nodes). Separate fresh-browser baselines reduce confidence, so this requires retained-path confirmation. F33 medium: Repeated forecast-tab interaction increases retained heap and node count. |
be-memory-efficientbounded-footprint | issues | high | The baseline heap summary reports 1,211,243 nodes, 4,955,903 edges, 154,521 closures, and 44.7 MB self-size before extended interaction. F34 medium: The initial page has a large memory footprint for a forecast/content page. |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | Neither readable heap summary lists Detached* constructors among dominant populations after repeated interaction; no direct detached-DOM growth signal was observed. |
Provenance
Canonical report: results/atomic/reports/0341-meteofrance_com.json
Report SHA-256: 822f0bb4850a4e4f113770efa84e43ac6b723f2447e0629f6555ffb3a0e036f7
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/meteofrance_com/2026-07-20T02-01-12-254Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/meteofrance_com/2026-07-20T02-01-12-254Z
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.