Manifest position 96 · CrUX rank bucket 1000
https://groww.in
Coverage complete
Public, pre-auth representative templates audited. Account opening was inspected to the credential boundary; regulated KYC/trading after authentication was intentionally outside public-scope coverage.
All 58 atomic check outcomes
| Principle / check | Status | Confidence | Evidence or reason |
|---|---|---|---|
respect-user-preferencesrespects-color-scheme | issues | high | The dark-condition screenshot remains white and the rendered root is data-theme="light" with color-scheme:light. F01 medium: Dark mode ignores the user preference |
respect-user-preferencesrespects-reduced-motion | issues | high | The preference matched, but five animations remained, including four indefinitely running 30s–200s animations, and no reduced-motion CSS rule was found. F02 high: Reduced-motion users still receive indefinite motion |
respect-user-preferencesrespects-contrast | pass | high | Forced-colors rendered navigation, search, and ticker text visibly in system black/white colors; ordinary-mode contrast failures are recorded separately under sufficient-contrast. |
implement-natural-interactionsview-transitions | issues | medium | The browser supports View Transitions, but no view-transition CSS was present on any representative template and route changes use abrupt full swaps. F03 low: Route changes are abrupt despite View Transition support |
implement-natural-interactionsscroll-driven-animations | pass | medium | No scrollytelling, parallax, or scroll-linked reveal was observed on the representative pages, so no main-thread scroll-linked animation anti-pattern was found. |
implement-natural-interactionsphysical-gestures | not-applicable | high | No gesture-driven removal, pull-to-reveal, draggable carousel, or comparable physical gesture was present on the audited public templates. |
provide-guided-navigationscroll-state-aware-chrome | issues | medium | Long pages retain a clipped desktop-style header and provide no progress or scroll-state adaptation; no scroll-state/container CSS was detected. F04 medium: Long-page navigation chrome does not adapt on mobile |
provide-guided-navigationanchored-positioning | not-applicable | high | No open tooltip, popover, or edge-sensitive anchored menu was exposed in the representative public flows. |
provide-guided-navigationdirects-attention | issues | medium | Route changes and the 404-to-home path provide no directional transition or focus/attention cue; view-transition/highlight styles were absent. F05 low: Navigation does not cue moved focus or direction |
maximize-content-reduce-noiseno-intrusive-interruptions | issues | high | The demat route opens with a viewport-covering signup overlay before interaction and no visible close action. F06 high: Account page is obscured by an unsolicited signup overlay |
maximize-content-reduce-noisesemantic-dismissible-primitives | issues | high | The covering signup modal is a fixed DIV (.rodal) with no dialog role; representative pages reported zero <dialog> and zero popover elements. F07 high: Signup modal is a non-semantic fixed DIV |
maximize-content-reduce-noisereduced-chrome | pass | medium | The home, stock detail, calculator, and blog templates use restrained borders and keep their primary content visually dominant once no overlay is present. |
adapt-to-the-form-factorresponsive-no-horizontal-scroll | issues | high | Every sampled template overflowed horizontally: home/stocks/mutual funds by about 6.7k px, stock detail by 442 px, calculator by 384 px, demat by 347 px, and blog by 682 px. F08 critical: All representative mobile templates overflow horizontally |
adapt-to-the-form-factorcomponent-level-responsiveness | issues | medium | No @container rules were found, while shared header/ticker and cards visibly remain desktop-sized and clipped at mobile widths. F09 medium: Shared components do not adapt to their containers |
adapt-to-the-form-factorinput-modality-aware | issues | high | Each template exposes more than 400 visible targets below 24px in at least one dimension; sampled pre-rendered anchors did not accept focus or show an outline. F10 high: Hundreds of targets are undersized and keyboard focus is unreliable |
support-core-task-successclear-purpose-and-primary-action | pass | high | Home, stocks, mutual funds, stock detail, calculator, and blog all state their purpose with a clear H1 and an obvious next action or content object. |
support-core-task-successprimary-flow-completion | pass | medium | The representative public flow, open SIP calculator, adjust investment/return/time inputs, and read updated totals, was available without a dead end; investment/account execution correctly requires authentication. |
support-core-task-successclear-system-state-and-recovery | pass | high | The stock detail explains delayed prices and offers LOGIN; an invalid route renders a clear 404 with a Go to Home Page recovery link. |
be-fast-and-stablegood-core-web-vitals | issues | high | Mobile Lighthouse measured LCP 10.6s, TBT 7,020ms and performance 0.33; trace corroborated LCP 2.44s and 445ms TBT in a lighter desktop run. F11 critical: Mobile performance misses the Core Web Vitals load bar |
be-fast-and-stablevisual-stability | pass | high | Both the mobile layout observer and Lighthouse recorded CLS 0 on the home load. |
be-fast-and-stableefficient-main-thread | issues | high | Trace recorded 9 long tasks (longest 232ms, TBT 445ms); mobile Lighthouse measured 7,020ms TBT. F12 high: Long tasks block the main thread |
be-fast-and-stableefficient-resource-delivery | issues | high | Home loaded 360 requests and 4.14MB transferred, including 138 scripts; Lighthouse failed LCP discovery and network-dependency insights. F13 high: The home load ships 360 requests and 4.14MB |
be-fast-and-stabletrim-unused-and-duplicate-code | issues | high | Lighthouse estimated 776KiB unused JS and 16KiB unused CSS; analytics and app chunks dominate the request weight. F14 high: At least 776KiB of JavaScript is unused on load |
be-inclusivenames-roles-labels | issues | high | Lighthouse found an accessible-name mismatch; calculator has three unlabeled inputs, the account overlay input has no label/ARIA name, and image audit found two missing alt attributes. F15 high: Controls and links lack robust accessible names |
be-inclusivesufficient-contrast | issues | high | Ticker text measured 2.51:1, positive values 2.66:1, and the white-on-green Get started control 2.66:1, below WCAG AA. F16 high: Key ticker and CTA colors fail contrast |
be-inclusivestructure-and-focus | issues | high | Representative probes found no main/nav/header/footer landmarks, while sampled links had outline-style none and many empty accessible names, making focus orientation unreliable. F17 high: Landmarks and focus orientation are weak |
be-inclusivelegible-text | pass | medium | Primary headings and body text on stock, calculator, and blog templates are comfortably sized and not clipped vertically. |
be-inclusivezoom-reflow-targets-and-media | issues | high | Mobile Lighthouse found a second viewport declaration with maximum-scale=1/user-scalable=no; every template overflowed horizontally and hundreds of targets were under 24px. F18 critical: Zoom is disabled and content fails mobile reflow |
follow-best-practicesno-console-errors | issues | high | Console logged FedCM concurrency/network errors and multiple CSP-blocked scripts, images, and analytics requests. F19 medium: The page logs runtime, FedCM, and CSP errors |
follow-best-practicessound-document-and-assets | issues | high | Doctype/charset are valid, but 4 images lack dimensions, 29 are oversized, 18 use legacy formats, and 2 lack alt text. F20 medium: Image dimensions and delivery are inconsistent |
follow-best-practicesbrowser-platform-hygiene | issues | medium | The page failed BFCache for three no-store reasons, emitted inspector issues, and large first-party bundles referenced missing source maps. F21 low: BFCache, source maps, and inspector hygiene regressions remain |
be-discoverabletitle-and-description | pass | high | Every representative page had a unique descriptive title and meta description. |
be-discoverablecrawlable-and-mobile-friendly | issues | high | URLs and robots are crawlable, but 326–330 anchors per template have no descriptive text/accessible name, and mobile Lighthouse found zoom disabled by a second viewport meta. F22 high: Hundreds of links have no descriptive text and mobile zoom is blocked |
be-discoverablecanonical-and-indexing-signals | pass | high | All sampled pages returned index signals and self-referential canonicals; robots.txt and sitemap.xml were reachable. |
be-discoverablestructured-and-shareable-metadata | pass | high | All sampled entity/content templates exposed 2–4 JSON-LD blocks and seven Open Graph tags consistent with visible titles. |
be-private-and-securesecure-transport-and-headers | issues | high | HTTPS/HSTS/nosniff/frame protection are present, but the desktop response lacked CSP, 7 of 8 cookies were flagged insecure, and the mobile CSP blocked several configured integrations. F23 high: Cookie and CSP policy is inconsistent across variants |
be-private-and-securedata-minimisation-and-third-parties | issues | high | Load contacted 14 third-party origins including four known trackers; HAR captured 347 third-party-classified requests and 4.07MB transferred (including first-party asset subdomains classified by origin). F24 high: Tracking and third-party collection is heavy by default |
be-private-and-securein-context-permissions-and-modern-auth | pass | medium | No browser permission prompt appeared on load; authentication offers Google FedCM and an email continuation rather than exposing a password-only form. |
be-private-and-securedefensive-browser-policies | issues | high | Referrer-Policy and Permissions-Policy are absent; desktop CSP was absent while mobile CSP produced blocked-resource violations, indicating inconsistent defensive policy deployment. F25 high: Referrer and Permissions policies are absent |
be-resilientprogressive-enhancement | pass | high | Raw HTML retained 85–99% of rendered content on every template and none was a JS shell, so core public content remains reachable without JavaScript. |
be-resilientresilient-runtime-behaviour | pass | medium | Stock data, calculator, signup overlay, and blog all reached stable rendered states; no cut-off menu or broken asynchronous shell was observed beyond separately reported reflow. |
be-resilientoffline-and-installable | issues | medium | A valid standalone manifest exists, but navigator.serviceWorker.getRegistrations() returned no registration, so the app has no demonstrated offline fallback. F26 medium: Installable metadata has no offline service worker |
be-resilientnetwork-and-http-failure-states | pass | high | An invalid URL renders an intentional, readable 404 state with a direct home recovery action instead of a blank shell. |
be-internationalisedlang-dir-and-logical-properties | issues | medium | Pages declare lang=en but no dir; the public site claims multilingual finance yet exposes no hreflang/language choice in sampled metadata, and severe fixed-width overflow gives no evidence that translated expansion or bidi layouts survive. F27 medium: Multilingual/bidi readiness is not demonstrated |
be-internationalisedlocale-aware-data | pass | medium | Calculator and stock templates consistently render Indian currency and lakh grouping (for example ₹30,00,000 and ₹335.60), appropriate for the stated Indian locale. |
be-internationalisedtime-zone-correctness | not-applicable | high | No public audited template exposed a date/time scheduling or recurring-event workflow whose time-zone or DST behavior could apply. |
be-trustworthyno-dark-patterns | issues | high | The demat route forces an undismissible full-screen signup DIV before users can inspect the page; there is no visible cancel/close affordance and consent copy is compressed into the continuation UI. F28 high: Account opening starts with an undismissible commitment UI |
be-trustworthyhumane-error-handling | issues | high | The signup control is not a semantic form, its text input is unlabeled, and no accessible error-announcement surface or declarative validation semantics were present. F29 high: Signup validation lacks semantic, accessible error handling |
be-trustworthytrustworthy-input-assistance | issues | high | The signup field has autocomplete="on" instead of a purpose-specific email token and no label/ARIA name; three calculator inputs are also unlabeled. F30 medium: Inputs do not expose purpose-specific autofill semantics |
be-trustworthysafe-commercial-and-account-flows | issues | high | The account route immediately traps the page behind a modal-like signup layer with no visible cancellation, weakening reversibility before the user can review account details. F31 high: The account flow is not visibly reversible |
be-sustainableoptimised-assets | issues | high | 29 of 31 images were over 2x displayed resolution, 18 used legacy formats, 7 lacked srcset, and 26 below-fold images were not lazy-loaded. F32 high: Most images are oversized or delivered inefficiently |
be-sustainableno-wasteful-work | issues | high | The home load makes 360 requests with 138 scripts; Lighthouse estimated 776KiB unused JS and the trace recorded nine long tasks. F33 high: Background scripts and requests waste client resources |
be-sustainablethird-party-and-media-budget | issues | high | Known ad/analytics trackers and WebEngage contribute hundreds of kilobytes; Google Tag Manager/gtag alone account for roughly 487KB transferred. F34 high: Third-party scripts consume a disproportionate budget |
be-agent-readystructured-agent-capabilities | not-applicable | high | No agent-facing capability is claimed by the public site, and the runtime probe found no WebMCP registration; this emerging capability is contextual and therefore not penalised. |
be-agent-readyon-device-inference | not-applicable | high | No summarisation or language-model experience is offered on the audited public templates, so on-device inference is not applicable. |
be-memory-efficientno-leak-under-repeated-interaction | pass | medium | After ten representative calculator updates, node count fell from 833,097 to 831,736 and self size from 49,888,433 to 49,813,933 bytes; no retained growth was observed. |
be-memory-efficientbounded-footprint | issues | medium | A simple calculator retained about 833k heap nodes and 49.9MB self size at baseline, a large footprint for this surface even though it did not grow under repetition. F35 medium: A simple calculator has a large baseline heap/DOM footprint |
be-memory-efficientno-detached-dom-or-unbounded-listeners | pass | medium | The repeated interaction ended with 1,361 fewer heap nodes and 74,500 fewer self-size bytes than baseline, providing no signal of accumulating detached DOM/listeners in this bounded test. |
Provenance
Canonical report: results/atomic/reports/0096-groww_in.json
Report SHA-256: 84d552ae90d1d858c2899ea1d5ac4ee62adc88d77fdc0d29c2b41d8a24b940e0
Local retained report: runs/2026-07-17T17-27-24-856Z/atomic-reports/groww_in/2026-07-18T09-26-45-809Z/report.json
Local evidence root: runs/2026-07-17T17-27-24-856Z/atomic-reports/groww_in/2026-07-18T09-26-45-809Z
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.