Gå direkt till sidans huvudinnehåll

Apotek Hjärtat

Webbplats: www.apotekhjartat.se
Totalbetyg: 3.47 av 5
Kategori: Ehandel

Snittbetyg per kategori

Tillgänglighet: 4.20 av 5
Hastighet: 3.58 av 5
Webbstandard: 3.40 av 5
Integritet & säkerhet: 3.52 av 5

Är något konstigt med dessa värden? Kommentera gärna i vår Slack.


Hoppa till senast genomförda tester för Apotek Hjärtat:

Test­resultat

CSS

Kontrollerar CSS-koden mot Webperf-communityts egna CSS-test, för att se om det följer modern webbstandard.


Betyg: 3.17 av 5

- CSS är ok.

Webbstandard

- `< style>` in: #1: Webbsida , antal grupperade fel: 3 ( 4.40 betyg )
- `< style>` in: #1: Webbsida , antal fel: 18 ( 1.40 betyg )
- Oväntat okänt värde “display” för egenskap “-ms-flexbox” (totalt 14 st)
- Oväntad okänd anpassad egenskap “--font-ica-text” (totalt 3 st)
- Oväntad okänd egenskap “font-smoothing” (totalt 1 st)
- `style=""` in: #1: Webbsida , antal grupperade fel: 5 ( 4.00 betyg )
- `style=""` in: #1: Webbsida , antal fel: 15 ( 2.00 betyg )
- Oväntad okänd anpassad egenskap “--radix-collapsible-content-height” (totalt 4 st)
- Oväntad okänd anpassad egenskap “--radix-collapsible-content-width” (totalt 4 st)
- Oväntad okänd anpassad egenskap “--sidebar-width” (totalt 3 st)
- Oväntad okänd anpassad egenskap “--grid-gap” (totalt 3 st)
- Oväntad okänd anpassad egenskap “--content-width” (totalt 1 st)
- `< link rel="stylesheet">` in: #1: Webbsida , antal grupperade fel: 10 ( 3.00 betyg )
- `< link rel="stylesheet">` in: #1: Webbsida , antal fel: 23 ( 1.00 betyg )
- Oväntad okänd anpassad egenskap “--tw-shadow-color” (totalt 9 st)
- Oväntad okänd anpassad egenskap “--primaryColor” (totalt 2 st)
- Oväntad okänd anpassad egenskap “--radix-accordion-content-height” (totalt 2 st)
- Oväntad okänd anpassad egenskap “--offset-left” (totalt 2 st)
- Oväntad okänd anpassad egenskap “--offset-left-xl” (totalt 2 st)
- Oväntad okänd anpassad egenskap “--offset-right-xl” (totalt 2 st)
- Oväntad okänd anpassad egenskap “--order” (totalt 1 st)
- Oväntad okänd anpassad egenskap “--secondaryColor” (totalt 1 st)
- Oväntad okänd anpassad egenskap “--max-width” (totalt 1 st)
- Oväntad okänd anpassad egenskap “--container-width” (totalt 1 st)
- `content-type=".*css.*"` in: #58: otCommonStyles., antal grupperade fel: 1 ( 4.80 betyg )
- `content-type=".*css.*"` in: #58: otCommonStyles., antal fel: 1 ( 4.80 betyg )
- Unexpected deprecated keyword X for property X (declaration-property-value-keyword-no-deprecated) (totalt 1 st)

Webbprestanda enligt Google Lighthouse

Ett hastighetstest från Google.


Betyg: 3.20 av 5

- Genomsnittlig hastighet.

Webbstandard

- Aktivera textkomprimering ( 1.00 betyg )

Hastighet

- Total Blocking Time: 160 ms ( 4.65 betyg )
- Largest Contentful Paint ( 1.00 betyg )
- Speed Index: 7,1 s ( 1.55 betyg )
- First Contentful Paint: 2,3 s ( 3.75 betyg )
- Minska serverns första svarstid ( 1.00 betyg )
- Time to Interactive: 14,5 s ( 1.00 betyg )
- Föranslut till obligatoriska källor ( 1.00 betyg )
- Element som största uppritningen av innehåll gjordes för ( 1.00 betyg )
- Skjut upp inläsningen av bilder som inte visas på skärmen ( 1.00 betyg )
- Ta bort resurser som blockerar renderingen ( 1.00 betyg )
- Reducera JavaScript som inte används ( 1.00 betyg )
- Skicka bilder i modernare bildformat ( 1.00 betyg )
- Aktivera textkomprimering ( 1.00 betyg )
- Använd bilder med rätt storlek ( 1.00 betyg )
- Skicka statiska tillgångar med en effektiv cachelagringspolicy: 24 resurser hittades ( 2.50 betyg )
- Reducera CSS som inte används: Möjlig databesparing 18 Kibit ( 2.50 betyg )
- Koda bilder effektivt: Möjlig databesparing 5 Kibit ( 2.50 betyg )
- Undvik att skicka äldre JavaScript till moderna webbläsare: Möjlig databesparing 7 Kibit ( 2.50 betyg )
- Undvik ett onödigt stort DOM-träd: 2 999 element ( 2.50 betyg )
- Högsta potentiella fördröjning till första inmatningen: 220 ms ( 2.90 betyg )

Kolla Lighthouse hos web.dev

Spårning och integritet

Kontrollerar om webbplatsen har tredjeparter och molntjänster utanför EU:s jurisdiktion, och om fingerprint-teknik används eller annat som äventyrar användarens integritet?


Betyg: 4.05 av 5

Integritet & säkerhet

##### Dataskyddsförordningen och Schrems II-domen ( 1.00 betyg )
Antal olika länder: 3
Sidan skickades från Sverige: Ja
Länder utan adekvat nivå av dataskydd: 1
US, 15 förfrågningar:
- #8: otSDKStub.js
- #27: baa764d9-a742-4
- #28: gtm.js
- #48: location
- #49: otBannerSdk.js
- Fler än 5 förfrågningar hittade, döljer resten
##### Annonsörer ( 4.27 betyg )
- #48: location - Annonsörs­förfrågan hittad ( 1.00 betyg )
- #49: otBannerSdk.js - Annonsörs­förfrågan hittad ( 1.00 betyg )
- #55: sv.json - Annonsörs­förfrågan hittad ( 1.00 betyg )
- Fler än 5 annonsörs­förfrågningar hittade, döljer resten ( 1.00 betyg )
- Hittade totalt 14 annonsörs­förfrågningar.

HTML

Kontrollerar HTML-koden mot Webperf-communityts egna HTML-test, för att se om det följer modern webbstandard.


Betyg: 2.60 av 5

- HTML är dålig.

Webbstandard

- #1: Webbsida , antal grupperade fel: 4 ( 4.20 betyg )
- #1: Webbsida , antal fel: 156 ( 1.00 betyg )
- X cannot be used on this element (totalt 128 st)
- < div> element is not permitted as content under < button> (totalt 17 st)
- < p> element is not permitted as content under < button> (totalt 6 st)
- < link> is missing required X attribute (totalt 5 st)

Javascript

Kontrollerar ifall Javascript-koden är korrekt enligt Webperf-communityts egna Javascript-test. Testet är ett "lint"-test för att avgöra om det är korrekt Javascript och följer webbstandard.


Betyg: 2.62 av 5

- JS är dålig.

Webbstandard

- `< script>` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `< script>` in: #1: Webbsida , antal fel: 1 ( 4.80 betyg )
- Parsing error: Unexpected token : (totalt 1 st)
- `< script src="...">` in: #1: Webbsida , antal grupperade fel: 4 ( 4.20 betyg )
- `< script src="...">` in: #1: Webbsida , antal fel: 425 ( 1.00 betyg )
- X is defined but never used. (totalt 290 st)
- X is assigned a value but never used. (totalt 56 st)
- Unexpected console statement. (totalt 44 st)
- X is not defined. (totalt 35 st)
- `content-type=".*javascript.*"` in: #28: gtm.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #28: gtm.js, antal fel: 511 ( 1.00 betyg )
- X is defined but never used. (totalt 415 st)
- X is assigned a value but never used. (totalt 79 st)
- X is not defined. (totalt 16 st)
- Unexpected console statement. (totalt 1 st)
- `content-type=".*javascript.*"` in: #49: otBannerSdk.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #49: otBannerSdk.js, antal fel: 576 ( 1.00 betyg )
- X is defined but never used. (totalt 442 st)
- X is assigned a value but never used. (totalt 79 st)
- Unexpected console statement. (totalt 38 st)
- X is not defined. (totalt 17 st)
- `content-type=".*javascript.*"` in: #55: otTCF.js, antal grupperade fel: 4 ( 4.20 betyg )
- `content-type=".*javascript.*"` in: #55: otTCF.js, antal fel: 586 ( 1.00 betyg )
- X is defined but never used. (totalt 452 st)
- X is assigned a value but never used. (totalt 79 st)
- Unexpected console statement. (totalt 38 st)
- X is not defined. (totalt 17 st)

Integritet & säkerhet

- `< script>` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `< script>` in: #1: Webbsida , antal fel: 1 ( 4.80 betyg )
- Parsing error: Unexpected token : (totalt 1 st)
- `< script src="...">` in: #1: Webbsida , antal grupperade fel: 28 ( 1.00 betyg )
- `< script src="...">` in: #1: Webbsida , antal fel: 7994 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 4204 st)
- Expected X and instead saw X. (totalt 3130 st)
- Do not access Object.prototype method X from target object. (totalt 302 st)
- Unnecessary escape character: \.. (totalt 101 st)
- Unnecessary escape character: \/. (totalt 67 st)
- Unnecessary escape character: \-. (totalt 67 st)
- Unnecessary escape character: \). (totalt 18 st)
- Comparing to itself is potentially pointless. (totalt 17 st)
- Async method X has no X expression. (totalt 15 st)
- X is not modified in this loop. (totalt 12 st)
- Unnecessary escape character: \(. (totalt 9 st)
- Unsafe usage of ThrowStatement. (totalt 8 st)
- Async arrow function has no X expression. (totalt 7 st)
- Unnecessary escape character: \+. (totalt 7 st)
- Unnecessary escape character: \$. (totalt 5 st)
- Unnecessary escape character: \*. (totalt 5 st)
- Unnecessary escape character: \:. (totalt 4 st)
- Unnecessary X. (totalt 3 st)
- The Function constructor is eval. (totalt 3 st)
- Redundant use of `await` on a return value. (totalt 2 st)
- Script URL is a form of eval. (totalt 1 st)
- Async function X has no X expression. (totalt 1 st)
- X is assigned to itself. (totalt 1 st)
- Unnecessary escape character: \_. (totalt 1 st)
- Unnecessary escape character: \^. (totalt 1 st)
- Unnecessary escape character: \[. (totalt 1 st)
- Unnecessary escape character: \?. (totalt 1 st)
- Unnecessary escape character: \#. (totalt 1 st)
- `content-type=".*javascript.*"` in: #28: gtm.js, antal grupperade fel: 11 ( 2.80 betyg )
- `content-type=".*javascript.*"` in: #28: gtm.js, antal fel: 1343 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 858 st)
- Expected X and instead saw X. (totalt 204 st)
- Unnecessary escape character: \/. (totalt 176 st)
- Do not access Object.prototype method X from target object. (totalt 91 st)
- Unnecessary escape character: \-. (totalt 4 st)
- X is not modified in this loop. (totalt 3 st)
- X is assigned to itself. (totalt 3 st)
- eval can be harmful. (totalt 1 st)
- Comparing to itself is potentially pointless. (totalt 1 st)
- Unnecessary X. (totalt 1 st)
- Script URL is a form of eval. (totalt 1 st)
- `content-type=".*javascript.*"` in: #49: otBannerSdk.js, antal grupperade fel: 13 ( 2.40 betyg )
- `content-type=".*javascript.*"` in: #49: otBannerSdk.js, antal fel: 2417 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 1764 st)
- Expected X and instead saw X. (totalt 362 st)
- Unnecessary escape character: \/. (totalt 176 st)
- Do not access Object.prototype method X from target object. (totalt 95 st)
- Unnecessary escape character: \-. (totalt 4 st)
- X is assigned to itself. (totalt 4 st)
- X is not modified in this loop. (totalt 3 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- The Function constructor is eval. (totalt 2 st)
- eval can be harmful. (totalt 1 st)
- Unnecessary X. (totalt 1 st)
- Script URL is a form of eval. (totalt 1 st)
- Unnecessary escape character: \_. (totalt 1 st)
- `content-type=".*javascript.*"` in: #55: otTCF.js, antal grupperade fel: 14 ( 2.20 betyg )
- `content-type=".*javascript.*"` in: #55: otTCF.js, antal fel: 2589 ( 1.00 betyg )
- Expected an assignment or function call and instead saw an expression. (totalt 1872 st)
- Expected X and instead saw X. (totalt 420 st)
- Unnecessary escape character: \/. (totalt 176 st)
- Do not access Object.prototype method X from target object. (totalt 98 st)
- Unnecessary escape character: \-. (totalt 4 st)
- X is assigned to itself. (totalt 4 st)
- X is not modified in this loop. (totalt 3 st)
- Comparing to itself is potentially pointless. (totalt 3 st)
- Unnecessary X. (totalt 3 st)
- The Function constructor is eval. (totalt 2 st)
- eval can be harmful. (totalt 1 st)
- Script URL is a form of eval. (totalt 1 st)
- Unnecessary escape character: \_. (totalt 1 st)
- Unsafe usage of ThrowStatement. (totalt 1 st)

Mjukvara

Alpha-versionen av vårt mjukvaratest. Kontrollerar om det finns utdaterade versioner av mjukvara eller ramverk. Det vill säga potentiella säkerhetsrisker.


Betyg: 4.11 av 5

- Webbserver: iis, kestrel
- Operativsystem: windows-server
- Teknik: es6, js, typescript
- Licenser: apache-2.0, mit
- Metadata: apple-touch-icon, canonical, dns-prefetch, icon, open-graph, preload, viewport
- JS-ramverk/bibliotek: core-js, date-fns, mui-x, next.js, postscribe, react, regenerator, trpc, ua-parser-js, util, uuid, zustand
- Språk: sv
- Bildformat: jpg, png, svg, webp

Integritetstest med Webbkoll

5 juli-stiftelsens tjänst Webbkoll kollar hur mycket som gjorts för att skydda besökarnas integritet. Betyg och bedömning är Webperfs.


Betyg: 3.47 av 5

- Ok integritet men borde nog bli bättre.

Integritet & säkerhet

- HTTP Strict Transport Security HSTS är bra, men har 1 varning(ar). ( 4.75 betyg )
- Content Security Policy är dåligt. ( 1.00 betyg )
- Subresource Integrity SRI är dåligt. ( 1.00 betyg )
- Kakor är ok, men har 21 fel och 0 varning(ar). ( 1.00 betyg )

Energieffektivitet

Hur mycket koldioxid produceras genom en sidvisning och hur mycket energi går åt jämfört med andra webbplatser på Webperf?


Betyg: 1.50 av 5

- Webbsidan genererar en hel del koldioxid :/
- Koldioxid per sidvisning: 3.74 gram
- Webbsidan är grönare än 30 % av testade webbplatser på webperf.se (Referens uppdaterad: 2025-01-09).
- Nätverksstorlek: 5.92 MB
( 1.50 betyg )

Tillgänglighet enligt Pa11y

Tillgänglighetstest av webbplatsen för att kolla upp följsamhet till tillgänglighets­riktlinjerna WCAG (Web Content Accessibility Guidelines). Pa11y testar upp till och med nivå AAA av WCAG, vilket är högre än kravet i DOS-lagen.


Betyg: 2.80 av 5

- Väldigt dålig tillgänglighet!

Tillgänglighet

- Antal grupperade fel: 2 ( 4.60 betyg )
- Antal fel: 151 ( 1.00 betyg )

##### Problem:
- aria-roledescription must be on elements with a semantic role (https://dequeuniversity.com/rules/axe/4.8/aria-roledescription?application=axeAPI)
- Elements must only use permitted ARIA attributes (https://dequeuniversity.com/rules/axe/4.8/aria-prohibited-attr?application=axeAPI)

Validerar CSS

Kontrollerar CSS-koden mot W3C för att se om den har rätt syntax och följer webbstandard.


Betyg: 4.28 av 5

- CSS är välbyggd!

Webbstandard

- `< style>` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `< style>` in: #1: Webbsida , antal fel: 1 ( 4.90 betyg )
- CSS: X: Property X doesn't exist. (totalt 1 st)
- `style=""` in: #1: Webbsida , antal grupperade fel: 1 ( 4.80 betyg )
- `style=""` in: #1: Webbsida , antal fel: 65 ( 1.00 betyg )
- CSS: X: X is not a X value. (totalt 65 st)
- `< link rel="stylesheet">` in: #1: Webbsida , antal grupperade fel: 3 ( 4.40 betyg )
- `< link rel="stylesheet">` in: #1: Webbsida , antal fel: 7 ( 4.30 betyg )
- CSS: Parse Error. (totalt 3 st)
- CSS: X: Property X doesn't exist. (totalt 3 st)
- CSS: X: Too many values or values are not recognized. (totalt 1 st)

Standardfiler

Letar efter standardfiler som robots.txt, security.txt, sitemaps och RSS-prenumerationer


Betyg: 3.88 av 5

- RSS-prenumeration saknas i HTML-kodens metadata. ( 4.50 betyg )

Webbstandard

- security.txt har inte förväntat innehåll. ( 1.00 betyg )

Integritet & säkerhet

- security.txt har inte förväntat innehåll. ( 1.00 betyg )

Validerar HTML

Kontrollerar HTML-koden mot W3C för att se om den har rätt syntax och följer webbstandard.


Betyg: 2.50 av 5

- Den testade sidan har 149 st fel i sin HTML-kod. Det är inte så bra.

Webbstandard

- #1: Webbsida - Antal (grupperade fel): 5 ( 4.00 betyg )
- #1: Webbsida - Antal fel: 83 ( 1.00 betyg )
- An X element which has an X attribute whose value is the empty string must not have a X attribute. (totalt 57 st)
- Element X not allowed as child of element X in this context. (Suppressing further errors from this subtree.) (totalt 23 st)
- A X attribute on a X element found after the first 1024 bytes. (totalt 1 st)
- A document must not include more than one X element with a X attribute. (totalt 1 st)
- Bad value X for attribute X on element X. (totalt 1 st)

HTTP statuskod 404

Följer webbplatsen praxis för felsidan 404?


Betyg: 4.20 av 5

- Saknas text som beskriver att ett fel uppstått (på svenska, eller engelska för engelskspråkig webbplats)? ( 1.00 betyg )

Tillgänglighet

- Saknas text som beskriver att ett fel uppstått (på svenska, eller engelska för engelskspråkig webbplats)? ( 1.00 betyg )

E-post

Beta-version av e-postkollen. Utvärderar inställningar som SPF, DNS, MX och mycket mer.
Obs! Detta test ingår inte i totalbetyget, däremot i delbetyget Integritet & säkerhet.


Betyg: 3.55 av 5

Webbstandard

- MX DNS IPv6-post hittades inte ( 1.00 betyg )
- MTA-STS DNS-post hittades inte ( 1.00 betyg )
- MTA-STS TXT hittades inte ( 1.00 betyg )
- SPF DNS-post hittades inte ( 1.00 betyg )

Integritet & säkerhet

- MTA-STS DNS-post hittades inte ( 1.00 betyg )
- MTA-STS TXT hittades inte ( 1.00 betyg )
- SPF DNS-post hittades inte ( 1.00 betyg )

Sökmotoroptimering (SEO) enligt Google Lighthouse

Är webbplatsen bra på sökmotoroptimering/SEO? Alltså att nå ut via sökmotorer, enligt Google Lighthouse kriterier.


Betyg: 4.60 av 5

- Webbsidan kan ändå förbättras inom SEO.
- Länkar har inte beskrivande text ( 1.00 betyg )

Kolla Lighthouse hos web.dev

Webbprestanda enligt Sitespeed.io

Kontroll av hur snabb webbplatsen är, genom opensource-verktyget Sitespeed.io.


Betyg: 3.02 av 5

Hastighet

- [desktop] TTFB (Time to First Byte): 1220.00ms, ±120.00ms ( 1.00 betyg )
- [desktop] DOMContentLoaded: 1626.67ms, ±93.33ms ( 2.75 betyg )
- [desktop] LCP (Largest Contentful Paint): 1413.33ms, ±136.67ms ( 1.00 betyg )
- [desktop] Load: 2180.00ms, ±160.00ms ( 1.64 betyg )
- [desktop] TBT (Total Blocking Time): 447.67ms, ±210.33ms ( 3.00 betyg )
- [desktop] FirstVisualChange: 1400.00ms, ±100.00ms ( 3.20 betyg )
- [desktop] SpeedIndex: 3055.00ms, ±225.00ms ( -0.11 betyg )
- [desktop] VisualComplete85: 3835.00ms, ±165.00ms ( -1.67 betyg )
- [desktop] firstPaint: 1393.33ms, ±116.67ms
- [desktop] LastVisualChange: 6185.00ms, ±2515.00ms
- [mobile] TTFB (Time to First Byte): 1193.33ms, ±36.67ms ( 3.00 betyg )
- [mobile] DOMContentLoaded: 1600.00ms, ±20.00ms ( 4.80 betyg )
- [mobile] LCP (Largest Contentful Paint): 3470.00ms, ±10.00ms ( 1.00 betyg )
- [mobile] Load: 1973.33ms, ±6.67ms ( 4.05 betyg )
- [mobile] TBT (Total Blocking Time): 434.00ms, ±9.00ms ( 3.00 betyg )
- [mobile] SpeedIndex: 2005.00ms, ±5.00ms ( 3.99 betyg )
- [mobile] VisualComplete85: 3835.00ms, ±35.00ms ( 0.33 betyg )
- [mobile] firstPaint: 1340.00ms, ±30.00ms
- [mobile] LastVisualChange: 3870.00ms, ±0.00ms

Kvalitet på frontend

Har webbplatsen bra frontendkod och frontend-prestanda enligt Yellow Lab Tools?


Betyg: 3.65 av 5

- Helt ok och ganska genomsnittligt.
( 3.65 betyg )
- Network ( 3.70 betyg )
- Images ( 2.40 betyg )
- Sidans DOM-komplexitet ( 2.65 betyg )
- Sidans Javascript-komplexitet ( 2.75 betyg )
- Sidans användning av dålig Javascript ( 5.00 betyg )
- Sidans användning av jQuery ( 5.00 betyg )
- Sidans CSS-komplexitet ( 4.85 betyg )
- Sidans användning av dålig CSS ( 4.30 betyg )
- Sidans användning av webbtypsnitt ( 3.75 betyg )
- Server­konfiguration ( 4.10 betyg )

Webbstandard

- CSS-syntax är fel ( 2.50 betyg )
- Gzip/Brotli-komprimering ( 1.00 betyg )

Hastighet

- Exekveringstid för Javascript ( 3.55 betyg )
- DOM-åtkomst ( 1.00 betyg )
- Total vikt ( 3.20 betyg )
- Gzip/Brotli-komprimering ( 1.00 betyg )
- Filminifiering ( 2.90 betyg )
- Identiskt innehåll ( 4.00 betyg )
- Webfonts number ( 2.50 betyg )
- HTTP-protokoll ( 3.40 betyg )
- Caching too short ( 1.00 betyg )

Tillgänglighet enligt Axe

Tillgänglighetstest genom Google Lighthouse om webbplatsen är utformad på ett tillgängligt sätt för funktionsvarierade användare. Mäter med en mobil­användares preferenser.


Betyg: 5 av 5

- Webbplatsen har inga uppenbara fel inom tillgänglighet! Bra, men gör manuella undersökningar för säkerhets skull!

Följs praxis enligt Google Lighthouse

Kollar om webbplatsen följer god praxis för webbutveckling, enligt Google Lighthouse kriterier.


Betyg: 3.75 av 5

- Genomsnittlig efterlevnad till god praxis.
- Utfasade API:er används ( 1.00 betyg )
- Webbläsarfel loggades i konsolen ( 1.00 betyg )
- Dokumentet har inga läsliga teckenstorlekar ( 1.00 betyg )

Kolla Lighthouse hos web.dev