Spring til indhold

Platforme

Tilgængelighed på Magento: typiske WCAG-fejl og hvem der retter dem

Opdateret 10. september 2026

Magento Open Source og Adobe Commerce bruges af større shops med egne udviklere eller et bureau. Fejlene sidder i temaet, i tredjepartsmoduler og i det JavaScript-tunge checkout, og de gentages på tværs af tusindvis af produktsider.

Hvad loven kræver

Sælger shoppen til private forbrugere i Danmark, er den en e-handelstjeneste efter tilgængelighedsloven (LOV nr. 801/2022), som har været i kraft siden 28. juni 2025. Kravet er WCAG 2.1 AA via EN 301 549, en offentliggjort tilgængelighedserklæring og dokumentation, som Sikkerhedsstyrelsen kan bede om at se. Mikrovirksomheder (under 10 årsværk og under 2 mio. EUR i omsætning eller balance) er undtaget. Shops på Magento ligger typisk langt over mikrovirksomhedsgrænsen og er omfattet. Da alt kan tilpasses, er der ingen platformleverandør at pege på: tema, moduler og checkout er jeres udviklers eller bureauets ansvar.

Det finder vi typisk på Magento

Temaer baseret på Luma arver en række kendte fejl: ikonknapper uden navn i header og minikurv, ARIA-attributter, der ikke passer til elementets rolle, og widgets, der gentager samme id på tværs af produktlister. Tredjepartsmoduler til lagfiltrering, mega-menu, anmeldelser og hurtig-kurv tilføjer egen markup, ofte med felter uden etiket. Checkout er bygget i Knockout.js, og moduler, der tilføjer trin eller felter, mister tit label-koblingen. Produktbilleder uden alt-tekst kommer fra PIM eller import, hvor alt-feltet er tomt eller sat til filnavnet. Kontrastfejl sidder i temaets Less/CSS, ikke i indstillinger, og kan kun rettes af en udvikler.

På Magento kommer fundene typisk fra Luma-baserede temaer, tredjepartsmoduler og checkout, og de gentages på tusindvis af sider.

  • image-alt1.1.1 Ikke-tekstbaseret indhold · A

    Billeder uden alt-attribut har intet tekstalternativ. Skærmlæserbrugere hører enten filnavnet (fx 'IMG_2043.jpg') eller ingenting og går glip af indholdet — fx et produktbillede, et kampagnebanner eller et betalingskort-ikon.

    Giv alle <img> en alt-attribut. Beskriv billedets indhold eller funktion i én kort sætning (uden 'billede af'). Er billedet rent dekorativt (rammer, skygger, spacer-gifs), så brug tom alt="" — så springer skærmlæseren det over. Et billede i et link skal beskrive linkets mål, ikke billedet. I webshops: produktbilleder bør nævne produktnavn og variant ('Sort uldfrakke, model Nora, set forfra'), og logoer bør have firmanavnet som alt.

    Før

    <img src="/img/frakke-nora-sort.jpg">

    Efter

    <img src="/img/frakke-nora-sort.jpg" alt="Sort uldfrakke, model Nora, set forfra">
    <img src="/img/border.gif" alt="">
  • color-contrast1.4.3 Kontrast (minimum) · AA

    Tekstens kontrast mod baggrunden er under 4,5:1 (3:1 for stor tekst ≥ 18 pt eller ≥ 14 pt fed). Brugere med nedsat syn eller farvesynsdefekt — og alle på en mobil i sollys — kan ikke læse teksten. Rammer typisk lysegrå hjælpetekst, placeholder-tekst, priser på farvet baggrund og hvid tekst på pastelfarvede knapper.

    Mørkn tekstfarven eller lysn baggrunden, til kontrasten er mindst 4,5:1 (3:1 for stor tekst). axe angiver den målte kontrast og de præcise farver i fejlbeskrivelsen. Ret farven i design-tokens/CSS-variabler frem for pr. element, så det slår igennem overalt. Tjek også hover-, fokus- og disabled-tilstande (disabled-tekst er undtaget, men bør stadig kunne læses).

    Før

    .hint { color: #9ca3af; background: #ffffff; } /* 2,5:1 */

    Efter

    .hint { color: #4b5563; background: #ffffff; } /* 7,6:1 */
  • link-name2.4.4 Formål med links (i kontekst) · A4.1.2 Navn, rolle, værdi · A

    Linket har ingen tilgængelig tekst. Skærmlæsere oplæser 'link' uden mål — brugeren ved ikke, hvor det fører hen. Typisk et link, der kun indeholder et ikon eller et billede uden alt, fx logo, kurv-ikon eller sociale medier-ikoner.

    Giv linket en tekst: enten synlig tekst, alt på billedet inde i linket, eller aria-label på <a>. Teksten skal beskrive målet ('Gå til kurv', 'Nordally — forside'), ikke 'klik her'. Har linket ingen href, er det ikke et link — brug en <button>.

    Før

    <a href="/kurv"><svg>…</svg></a>

    Efter

    <a href="/kurv" aria-label="Indkøbskurv, 2 varer"><svg aria-hidden="true">…</svg></a>
  • aria-valid-attr4.1.2 Navn, rolle, værdi · A

    Elementet bruger en aria-*-attribut, der ikke findes (typisk en stavefejl som aria-lable eller aria-labeledby).

    Ret stavefejlen: aria-label, aria-labelledby, aria-describedby, aria-hidden, aria-expanded. Slå navnet op i ARIA-specifikationen.

    Før

    <button aria-lable="Luk">×</button>

    Efter

    <button aria-label="Luk">×</button>
  • aria-required-attr4.1.2 Navn, rolle, værdi · A

    En ARIA-rolle mangler en attribut, som rollen kræver (fx role="checkbox" uden aria-checked, role="slider" uden aria-valuenow). Skærmlæseren kan ikke formidle elementets tilstand.

    Tilføj den påkrævede attribut og hold den opdateret via JavaScript, når tilstanden ændrer sig. Overvej det native element (<input type="checkbox">, <input type="range">), som håndterer det automatisk.

    Før

    <div role="checkbox">Nyhedsbrev</div>

    Efter

    <div role="checkbox" aria-checked="false" tabindex="0">Nyhedsbrev</div>
  • meta-viewport1.4.4 Ændring af tekststørrelse · AA

    <meta name="viewport"> slår zoom fra (user-scalable=no eller maximum-scale=1). Brugere med nedsat syn kan ikke pinch-zoome på mobil — en meget almindelig og alvorlig fejl i webshops.

    Fjern user-scalable=no og maximum-scale. Standardværdien width=device-width, initial-scale=1 er alt, der behøves.

    Før

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

    Efter

    <meta name="viewport" content="width=device-width, initial-scale=1">

Sådan tilføjer I sitet i Nordally

  • Base-URL: den store view, kunderne bruger, fx https://www.dinbutik.dk. Har I flere store views på egne domæner, tilføjes de som separate sites.
  • Sitemap: Magento genererer ikke et sitemap, før det er sat op. I admin: Marketing → SEO & Search → Site Map → Add Sitemap, vælg filnavn (typisk sitemap.xml) og sti (/), gem og generér. Adressen bliver så https://www.dinbutik.dk/sitemap.xml.
  • Automatisk opdatering: slå Generation Settings til under Stores → Configuration → Catalog → XML Sitemap, så filen genereres af cron, og nye produkter kommer med i næste scan.
  • Uden sitemap: svarer adressen ikke, scanner Nordally kun forsiden. Det er sjældent nok på en Magento-shop med mange produkttyper, så generér sitemappet; det er indbygget og tager fem minutter.
  • Nordally scanner kun offentlige sider. Kundegruppe-priser, B2B-kataloger og andet bag login dækkes af den manuelle gennemgang eller af CI-integrationen mod et testmiljø uden login.

Hvem retter hvad

Hvem retter hvad på Magento
FejlKan shopejeren rette selv?Kræver udvikler/leverandør?
Alt-tekster på produktbillederJa, på produktet i admin eller i PIM/importfilenNej
Kontrast i temaets farverNejUdvikler (temaets Less/CSS)
Ikonknapper uden navn (header, minikurv, filtre)NejUdvikler (temaets templates)
Felter uden etiket i checkoutNejUdvikler eller modul-leverandør
Ugyldige ARIA-attributter fra modulerNejModul-leverandør eller udvikler
Gentagne id'er i produktlister og widgetsNejUdvikler

Hvad automatisk test ikke finder

Scanneren finder de strukturelle fejl, men ikke om lagfiltrene og checkout kan betjenes med tastatur alene, om fokus flyttes til fejlen, når et trin afvises, om alt-teksterne fra PIM faktisk beskriver produktet, eller om mega-menuen kan lukkes uden mus. Det går udviklerne igennem med tjeklisten i manuel gennemgang, og resultatet indgår i erklæringen.

Tjek én side af jeres Magento-shop nu

Indsæt en produktside eller en kategoriside med filtre, og se de automatisk målbare fund med selektor og dansk vejledning. Ingen konto, ingen installation. Tjek én side gratis.

Spørgsmål og svar

Kan vi bruge en tilgængeligheds-app i stedet for at rette Magento-shoppen?

Nej. En overlay-widget lægger et script oven på siden i kundens browser; temaet, produktkortene og checkout er uændrede, og det er dem, tilsynet og kunderne møder. Widgeten dokumenterer heller ikke noget over for Sikkerhedsstyrelsen. Ret fejlene i koden og indholdet, og brug eventuelt en widget som tilvalg for brugerindstillinger. Se overlay-widget eller scanner.

Vi er skiftet til Hyvä eller et andet moderne tema. Er fejlene så væk?

Færre, ikke væk. Moderne temaer starter med langt færre strukturelle fejl end Luma, men moduler, indhold og checkout-tilpasninger følger med. Scan efter skiftet, og brug resultatet som baseline i CI, så nye moduler ikke indfører fejlene igen.

Kan Nordally scanne vores B2B-shop bag login?

Nej, Nordally scanner kun offentlige sider fra sitemappet. Sider bag login tester I med den manuelle tjekliste, eller ved at køre scanneren i CI mod et testmiljø, hvor siderne er åbne. Erklæringen skal dække hele tjenesten, så beskriv, hvordan de lukkede dele er testet.

Kilder

Nordally hjælper med compliance og giver ikke juridisk rådgivning. Om jeres virksomhed er omfattet, og om jeres løsning er dækkende, er en vurdering, I selv eller en rådgiver må tage.