govuk_publishing_components 38.1.1 → 38.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/govuk_publishing_components/crests/no10_crest_18px_x2.png +0 -0
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +14 -7
  4. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +0 -38
  5. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-measurer.js +1 -1
  6. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js +143 -84
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_organisation-logo.scss +4 -0
  8. data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +5 -0
  9. data/app/views/govuk_publishing_components/components/_share_links.html.erb +2 -2
  10. data/app/views/govuk_publishing_components/components/docs/layout_for_public.yml +16 -0
  11. data/app/views/govuk_publishing_components/components/docs/organisation_logo.yml +9 -2
  12. data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +7 -45
  13. data/config/locales/ar.yml +1 -1
  14. data/config/locales/az.yml +1 -1
  15. data/config/locales/be.yml +1 -1
  16. data/config/locales/bg.yml +1 -1
  17. data/config/locales/bn.yml +1 -1
  18. data/config/locales/cs.yml +1 -1
  19. data/config/locales/cy.yml +1 -1
  20. data/config/locales/da.yml +1 -1
  21. data/config/locales/de.yml +1 -1
  22. data/config/locales/dr.yml +1 -1
  23. data/config/locales/el.yml +1 -1
  24. data/config/locales/en.yml +1 -1
  25. data/config/locales/es-419.yml +1 -1
  26. data/config/locales/es.yml +1 -1
  27. data/config/locales/et.yml +1 -1
  28. data/config/locales/fa.yml +1 -1
  29. data/config/locales/fi.yml +1 -1
  30. data/config/locales/fr.yml +1 -1
  31. data/config/locales/gd.yml +1 -1
  32. data/config/locales/gu.yml +1 -1
  33. data/config/locales/he.yml +1 -1
  34. data/config/locales/hi.yml +1 -1
  35. data/config/locales/hr.yml +1 -1
  36. data/config/locales/hu.yml +1 -1
  37. data/config/locales/hy.yml +1 -1
  38. data/config/locales/id.yml +1 -1
  39. data/config/locales/is.yml +1 -1
  40. data/config/locales/it.yml +1 -1
  41. data/config/locales/ja.yml +1 -1
  42. data/config/locales/ka.yml +1 -1
  43. data/config/locales/kk.yml +1 -1
  44. data/config/locales/lt.yml +1 -1
  45. data/config/locales/lv.yml +1 -1
  46. data/config/locales/ms.yml +1 -1
  47. data/config/locales/mt.yml +1 -1
  48. data/config/locales/nl.yml +1 -1
  49. data/config/locales/no.yml +1 -1
  50. data/config/locales/pa-pk.yml +1 -1
  51. data/config/locales/pa.yml +1 -1
  52. data/config/locales/pl.yml +1 -1
  53. data/config/locales/ps.yml +1 -1
  54. data/config/locales/pt.yml +1 -1
  55. data/config/locales/ro.yml +1 -1
  56. data/config/locales/ru.yml +1 -1
  57. data/config/locales/si.yml +1 -1
  58. data/config/locales/sk.yml +1 -1
  59. data/config/locales/sl.yml +1 -1
  60. data/config/locales/so.yml +1 -1
  61. data/config/locales/sq.yml +1 -1
  62. data/config/locales/sr.yml +1 -1
  63. data/config/locales/sv.yml +1 -1
  64. data/config/locales/sw.yml +1 -1
  65. data/config/locales/ta.yml +1 -1
  66. data/config/locales/th.yml +1 -1
  67. data/config/locales/tk.yml +1 -1
  68. data/config/locales/tr.yml +1 -1
  69. data/config/locales/uk.yml +1 -1
  70. data/config/locales/ur.yml +1 -1
  71. data/config/locales/uz.yml +1 -1
  72. data/config/locales/vi.yml +1 -1
  73. data/config/locales/zh-hk.yml +1 -1
  74. data/config/locales/zh-tw.yml +1 -1
  75. data/config/locales/zh.yml +1 -1
  76. data/lib/govuk_publishing_components/version.rb +1 -1
  77. data/node_modules/axe-core/README.md +7 -3
  78. data/node_modules/axe-core/axe.js +11587 -10370
  79. data/node_modules/axe-core/axe.min.js +2 -2
  80. data/node_modules/axe-core/locales/_template.json +13 -5
  81. data/node_modules/axe-core/locales/da.json +3 -1
  82. data/node_modules/axe-core/locales/de.json +207 -31
  83. data/node_modules/axe-core/locales/el.json +1069 -0
  84. data/node_modules/axe-core/locales/es.json +3 -1
  85. data/node_modules/axe-core/locales/eu.json +3 -1
  86. data/node_modules/axe-core/locales/fr.json +3 -1
  87. data/node_modules/axe-core/locales/he.json +3 -1
  88. data/node_modules/axe-core/locales/it.json +1108 -0
  89. data/node_modules/axe-core/locales/ja.json +3 -1
  90. data/node_modules/axe-core/locales/ko.json +3 -1
  91. data/node_modules/axe-core/locales/no_NB.json +3 -1
  92. data/node_modules/axe-core/locales/pl.json +3 -1
  93. data/node_modules/axe-core/locales/pt_BR.json +3 -1
  94. data/node_modules/axe-core/locales/zh_CN.json +1116 -0
  95. data/node_modules/axe-core/locales/zh_TW.json +1108 -0
  96. data/node_modules/axe-core/package.json +19 -21
  97. data/node_modules/axe-core/sri-history.json +4 -0
  98. metadata +9 -4
@@ -497,7 +497,10 @@
497
497
  }
498
498
  },
499
499
  "aria-required-children": {
500
- "pass": "Required ARIA children are present",
500
+ "pass": {
501
+ "default": "Required ARIA children are present",
502
+ "aria-busy": "Element has an aria-busy attribute, so it is allowed to omit required children"
503
+ },
501
504
  "fail": {
502
505
  "singular": "Required ARIA child role not present: ${data.values}",
503
506
  "plural": "Required ARIA children role not present: ${data.values}",
@@ -819,7 +822,7 @@
819
822
  "pass": "List item has a <ul>, <ol> or role=\"list\" parent element",
820
823
  "fail": {
821
824
  "default": "List item does not have a <ul>, <ol> parent element",
822
- "roleNotValid": "List item does not have a <ul>, <ol> parent element without a role, or a role=\"list\""
825
+ "roleNotValid": "List item parent element has a role that is not role=\"list\""
823
826
  }
824
827
  },
825
828
  "only-dlitems": {
@@ -862,7 +865,10 @@
862
865
  "fail": "${data} on <meta> tag disables zooming on mobile devices"
863
866
  },
864
867
  "target-offset": {
865
- "pass": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px which is at least ${data.minOffset}px.",
868
+ "pass": {
869
+ "default": "Target has sufficient space from its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px which is at least ${data.minOffset}px.",
870
+ "large": "Target far exceeds the minimum size of ${data.minOffset}px."
871
+ },
866
872
  "fail": "Target has insufficient space to its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px instead of at least ${data.minOffset}px.",
867
873
  "incomplete": {
868
874
  "default": "Element with negative tabindex has insufficient space to its closest neighbors. Safe clickable space has a diameter of ${data.closestOffset}px instead of at least ${data.minOffset}px. Is this a target?",
@@ -872,7 +878,8 @@
872
878
  "target-size": {
873
879
  "pass": {
874
880
  "default": "Control has sufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",
875
- "obscured": "Control is ignored because it is fully obscured and thus not clickable"
881
+ "obscured": "Control is ignored because it is fully obscured and thus not clickable",
882
+ "large": "Target far exceeds the minimum size of ${data.minSize}px."
876
883
  },
877
884
  "fail": {
878
885
  "default": "Target has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px)",
@@ -882,7 +889,8 @@
882
889
  "default": "Element with negative tabindex has insufficient size (${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",
883
890
  "contentOverflow": "Element size could not be accurately determined due to overflow content",
884
891
  "partiallyObscured": "Element with negative tabindex has insufficient size because it is partially obscured (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is this a target?",
885
- "partiallyObscuredNonTabbable": "Target has insufficient size because it is partially obscured by a neighbor with negative tabindex (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is the neighbor a target?"
892
+ "partiallyObscuredNonTabbable": "Target has insufficient size because it is partially obscured by a neighbor with negative tabindex (smallest space is ${data.width}px by ${data.height}px, should be at least ${data.minSize}px by ${data.minSize}px). Is the neighbor a target?",
893
+ "tooManyRects": "Could not get the target size because there are too many overlapping elements"
886
894
  }
887
895
  },
888
896
  "header-present": {
@@ -385,7 +385,9 @@
385
385
  }
386
386
  },
387
387
  "aria-required-children": {
388
- "pass": "Krævet ARIA-under-elementer er til stede",
388
+ "pass": {
389
+ "default": "Krævet ARIA-under-elementer er til stede"
390
+ },
389
391
  "fail": {
390
392
  "singular": "Krævet ARIA-under-elementers rolle er ikke til stede: ${data.values}",
391
393
  "plural": "Krævet ARIA-under-elements rolle er ikke til stede: ${data.values}"
@@ -17,10 +17,22 @@
17
17
  "description": "Stellt sicher, dass der Wert des role-Attributes für dieses Element geeignet ist.",
18
18
  "help": "Der Wert des role-Attributes muss für dieses Element geeignet sein."
19
19
  },
20
+ "aria-braille-equivalent": {
21
+ "description": "Stellt sicher, dass aria-braillelabel und aria-brailleroledescription ein non-braille Äquivalent haben.",
22
+ "help": "aria-braille Attribute müssen ein non-braille Äquivalent haben."
23
+ },
20
24
  "aria-command-name": {
21
25
  "description": "Stellt sicher, dass jeder ARIA-button, -link und jedes -menuitem einen zugänglichen Namen (accessible name) hat.",
22
26
  "help": "ARIA Befehle müssen einen zugänglichen Namen (accessible name) besitzen."
23
27
  },
28
+ "aria-conditional-attr": {
29
+ "description": "Stellt sicher, dass ARIA-Attribute wie in der Spezifikation der Rolle des Elements beschrieben verwendet werden.",
30
+ "help": "ARIA-Attribute müssen entsprechend der Rolle des Elements verwendet werden."
31
+ },
32
+ "aria-deprecated-role": {
33
+ "description": "Stellt sicher, dass die Elemente keine veralteten Rollen verwenden.",
34
+ "help": "Veraltete ARIA-Rollen dürfen nicht verwendet werden."
35
+ },
24
36
  "aria-dialog-name": {
25
37
  "description": "Stellt sicher, dass jeder ARIA-dialog und -alertdialog Knoten einen zugänglichen Namen (accessible name) hat.",
26
38
  "help": "ARIA-dialog und -alertdialog Knoten müssen einen zugänglichen Namen (accessible name) besitzen."
@@ -45,6 +57,10 @@
45
57
  "description": "Stellt sicher, dass jeder ARIA-progressbar Knoten einen zugänglichen Namen (accessible name) besitzt.",
46
58
  "help": "ARIA-progressbar Knoten müssen einen zugänglichen Namen (accessible name) besitzen."
47
59
  },
60
+ "aria-prohibited-attr": {
61
+ "description": "Stellt sicher, dass ARIA-Attribute für die Rolle eines Elements nicht verboten sind.",
62
+ "help": "Elemente dürfen nur erlaubte ARIA-Attribute verwenden."
63
+ },
48
64
  "aria-required-attr": {
49
65
  "description": "Stellt sicher, dass Elemente mit ARIA-Rollen alle erforderlichen ARIA-Attribute besitzen.",
50
66
  "help": "Erforderliche ARIA-Attribute müssen bereitgestellt werden."
@@ -65,6 +81,10 @@
65
81
  "description": "Stellt sicher, dass alle Elemente mit einer ARIA-Rolle auch einen gültigen Wert verwenden.",
66
82
  "help": "Verwendete ARIA-Rollen müssen gültigen Werten entsprechen."
67
83
  },
84
+ "aria-text": {
85
+ "description": "Stellt sicher, dass role=\"text\" für Elemente verwendet wird, die keine fokussierbaren Nachkommen (descendants) haben.",
86
+ "help": "\"role=text\" sollte keine fokussierbaren Nachkommen (descendants) haben."
87
+ },
68
88
  "aria-toggle-field-name": {
69
89
  "description": "Stellt sicher, dass jedes ARIA-toggle-Feld ein zugänglichen Namen (accessible name) besitzt.",
70
90
  "help": "ARIA-toggle-Felder benötigen einen zugänglichen Namen (accessible name)."
@@ -109,14 +129,14 @@
109
129
  "description": "Stellt sicher, dass jede Seite mindestens ein Mittel bereitstellt, welches dem Nutzer erlaubt direkt zum Inhalt der Seite zu springen.",
110
130
  "help": "Wiederholende Blöcke müssen vom Nutzer mit Hilfe von der Seite bereitgestellten Mitteln übersprungen werden können."
111
131
  },
112
- "color-contrast": {
113
- "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AA ausgewiesenen Kontrastgrenzwerten entspricht.",
114
- "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
115
- },
116
132
  "color-contrast-enhanced": {
117
133
  "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AAA ausgewiesenen Kontrastgrenzwerten entspricht.",
118
134
  "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
119
135
  },
136
+ "color-contrast": {
137
+ "description": "Stellt sicher, dass der Kontrast zwischen Vorder- und Hintergrundfarbe den in der WCAG 2 als AA ausgewiesenen Kontrastgrenzwerten entspricht.",
138
+ "help": "Elemente müssen einen ausreichenden Farbkontrast haben."
139
+ },
120
140
  "css-orientation-lock": {
121
141
  "description": "Stellt sicher, dass der Inhalt nicht nur auf einer sondern auf allen spezifischen Bildschirmausrichtungen angezeigt werden kann.",
122
142
  "help": "CSS Media Queries dürfen nicht genutzt werden um die Bildschirmausrichtung zu sperren."
@@ -149,6 +169,10 @@
149
169
  "description": "Stellt sicher, dass Überschriften einen wahrnehmbaren Text beinhalten.",
150
170
  "help": "Überschriften dürfen nichtleer sein."
151
171
  },
172
+ "empty-table-header": {
173
+ "description": "Stellt sicher, dass Tabellenkopfzeilen einen wahrnehmbaren Text beinhalten.",
174
+ "help": "Tabellenkopfzeilen sollten nicht leer sein."
175
+ },
152
176
  "focus-order-semantics": {
153
177
  "description": "Stellt sicher, dass Elemente in der Fokusreihenfolge eine geeignete Rolle besitzen.",
154
178
  "help": "Elemente in der Fokusreihenfolge benötigen eine Rolle, die für interaktive Elemente geeignet ist."
@@ -157,6 +181,10 @@
157
181
  "description": "Stellt sicher, dass ein form-Feld nur ein label-Element besitzt.",
158
182
  "help": "form-Felder sollten nur ein label-Element besitzen."
159
183
  },
184
+ "frame-focusable-content": {
185
+ "description": "Stellt sicher, dass <frame>- und <iframe>-Elemente mit fokussierbarem Inhalt keinen tabindex=-1 haben.",
186
+ "help": "Frames mit fokussierbarem Inhalt dürfen keinen tabindex=-1 haben."
187
+ },
160
188
  "frame-tested": {
161
189
  "description": "Stellt sicher, dass <iframe> und <frame>-Elemente das axe-core Script beinhalten.",
162
190
  "help": "Frames müssen mit axe-core getestet werden."
@@ -202,8 +230,8 @@
202
230
  "help": "Der Alternativtext von Bildern sollte nicht als Text wiederholt werden."
203
231
  },
204
232
  "input-button-name": {
205
- "description": "Stellt sicher, dass Eingabeschaltflächen sichtbaren Text beinhalten.",
206
- "help": "Eingabeschaltflächen müssen sichtbaren Text beinhalten."
233
+ "description": "Stellt sicher, dass Eingabeschaltflächen wahrnehmbaren Text beinhalten.",
234
+ "help": "Eingabeschaltflächen müssen wahrnehmbaren Text beinhalten."
207
235
  },
208
236
  "input-image-alt": {
209
237
  "description": "Stellt sicher, dass <input type=\"image\">-Elemente einen Alternativtext besitzen.",
@@ -254,16 +282,16 @@
254
282
  "help": "Seite muss eine main landmark enthalten."
255
283
  },
256
284
  "landmark-unique": {
257
- "description": "Stellt sicher, dass landmarks einzigartig sind.",
258
- "help": "Landmarks müssen eine einzigartige role oder role/label/title Kombination (bzw. zugänglicher Name / accessible name) besitzen."
285
+ "help": "Stellt sicher, dass landmarks einzigartig sind.",
286
+ "description": "Landmarks müssen eine einzigartige role oder role/label/title Kombination (bzw. zugänglicher Name / accessible name) besitzen."
259
287
  },
260
288
  "link-in-text-block": {
261
289
  "description": "Stellt sicher, dass Links vom umgebenden Text nicht allein durch die Farbe unterschieden werden können.",
262
290
  "help": "Links müssen vom umgebenden Text auf eine Weise unterschieden werden können, die nicht allein auf Farbe beruht."
263
291
  },
264
292
  "link-name": {
265
- "description": "Stellt sicher, dass Links wahrnehmbaren Text enthalten.",
266
- "help": "Links müssen wahrnehmbaren Text enthalten."
293
+ "description": "Stellt sicher, dass Links wahrnehmbaren Text beinhalten.",
294
+ "help": "Links müssen wahrnehmbaren Text beinhalten."
267
295
  },
268
296
  "list": {
269
297
  "description": "Stellt sicher, dass Listen korrekt strukturiert sind.",
@@ -277,6 +305,10 @@
277
305
  "description": "Stellt sicher, dass <marquee>-Elemente nicht verwendet werden.",
278
306
  "help": "<marquee>-Elemente sind veraltet und dürfen nicht verwendet werden."
279
307
  },
308
+ "meta-refresh-no-exceptions": {
309
+ "description": "Stellt sicher, dass <meta http-equiv=\"refresh\"> nicht für die verzögerte Aktualisierung verwendet wird.",
310
+ "help": "Die verzögerte Aktualisierung darf nicht verwendet werden."
311
+ },
280
312
  "meta-refresh": {
281
313
  "description": "Stellt sicher, dass <meta http-equiv=\"refresh\"> nicht verwendet werden.",
282
314
  "help": "Eine zeitgesteuerte Aktualisierung (refresh) sollte nicht verwendet werden."
@@ -289,6 +321,10 @@
289
321
  "description": "Stellt sicher, dass <meta name=\"viewport\"> Textskalierung und -zoom nicht verhindert werden.",
290
322
  "help": "Zoomen und Skalieren darf nicht deaktiviert werden."
291
323
  },
324
+ "nested-interactive": {
325
+ "description": "Stellt sicher, dass interaktive Steuerelemente nicht verschachtelt (nested) sind, da sie nicht immer von Bildschirmlesegeräten angezeigt werden oder Probleme bei der Fokussierung von Hilfstechnologien verursachen können.",
326
+ "help": "Interaktive Steuerelemente dürfen nicht verschachtelt (nested) werden."
327
+ },
292
328
  "no-autoplay-audio": {
293
329
  "description": "Stellt sicher, dass <video> oder <audio> Elemente keine Töne automatisch abspielen für mehr als 3 Sekunden (autoplay) ohne eine Möglichkeit dies zu stoppen.",
294
330
  "help": "<video> oder <audio> Elemente geben keine Töne automatisch aus."
@@ -353,6 +389,10 @@
353
389
  "description": "Stellt sicher, dass Tabellen mit einer Beschriftung auch das <caption>-Element verwenden.",
354
390
  "help": "Daten- oder Kopfzellen sollten nicht verwendet werden, um einer Datentabelle eine Überschrift zu geben."
355
391
  },
392
+ "target-size": {
393
+ "description": "Stellt sicher, dass Berührungsobjekte (touch targets) ausreichend groß sind und genügend Platz bieteen.",
394
+ "help": "Alle Berührungsobjekte (touch targets) müssen 24 Pixel groß sein oder ausreichend Platz lassen."
395
+ },
356
396
  "td-has-header": {
357
397
  "description": "Stellt sicher, dass jede nichtleere Zelle einer Tabelle ein oder mehrere Tabellenköpfe haben.",
358
398
  "help": "In Tabellen, die größer als 3 mal 3 sind, müssen alle nichtleeren <td>-Elemente einen zugehörigen Tabellenkopf haben."
@@ -387,7 +427,8 @@
387
427
  "fail": {
388
428
  "singular": "Folgendes ARIA Attribut ist nicht erlaubt: ${data.values}",
389
429
  "plural": "Folgende ARIA Attribute sind nicht erlaubt: ${data.values}"
390
- }
430
+ },
431
+ "incomplete": "Prüfe, dass es kein Problem gibt, wenn das ARIA-Attribut bei diesem Element ignoriert wird: ${data.values}"
391
432
  },
392
433
  "aria-allowed-role": {
393
434
  "pass": "ARIA Rolle ist für dieses Element erlaubt.",
@@ -400,21 +441,54 @@
400
441
  "plural": "ARIA Rollen ${data.values} müssen entfernt werden, wenn das Element sichtbar wird, da sie nicht für dieses Element erlaubt sind."
401
442
  }
402
443
  },
444
+ "aria-busy": {
445
+ "pass": "Element hat ein aria-busy-Attribut.",
446
+ "fail": "Element verwendet aria-busy=\"true\" bei der Anzeige eines Ladevorgangs (loader)."
447
+ },
448
+ "aria-conditional-attr": {
449
+ "pass": "ARIA-Attribut ist erlaubt.",
450
+ "fail": {
451
+ "checkbox": "Entferne aria-checked, oder setze es auf \"${data.checkState}\", damit es dem tatsächlichen Zustand des Kontrollkästchens entspricht.",
452
+ "rowSingular": "Dieses Attribut wird bei treegrid-Zeilen unterstützt, aber nicht bei ${data.ownerRole}: ${data.invalidAttrs}.",
453
+ "rowPlural": "Diese Attribute werden von treegrid-Zeilen unterstützt, aber nicht von ${data.ownerRole}: ${data.invalidAttrs}"
454
+ }
455
+ },
403
456
  "aria-errormessage": {
404
457
  "pass": "aria-errormessage Attribut existiert und referenziert Elemente, die sichtbar für Screen Reader sind, welche die entsprechende Technologie unterstützen.",
405
458
  "fail": {
406
459
  "singular": "aria-errormessage Wert `${data.values}` benötigt eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.).",
407
- "plural": "aria-errormessage Werte `${data.values}` benötigen eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.)."
460
+ "plural": "aria-errormessage Werte `${data.values}` benötigen eine Möglichkeit um entsprechend vorgeschlagen zu werden (z.B. aria-live, aria-describedby, role=alert, usw.).",
461
+ "hidden": "aria-errormessage Wert `${data.values}` kann nicht auf ein verstecktes Element verweisen."
408
462
  },
409
463
  "incomplete": {
410
464
  "singular": "Stellt sicher, dass aria-errormessage Wert `${data.values}` zu einem existierendem Element verweist.",
411
- "plural": "Stellt sicher, dass aria-errormessage Werte `${data.values}` zu existierenden Elementen verweisen."
465
+ "plural": "Stellt sicher, dass aria-errormessage Werte `${data.values}` zu existierenden Elementen verweisen.",
466
+ "idrefs": "Es konnte nicht festgestellt werden, ob das Element aria-errormessage auf der Seite existiert: ${data.values}"
412
467
  }
413
468
  },
414
469
  "aria-hidden-body": {
415
470
  "pass": "Kein aria-hidden Attribut ist im <body>-Element des Dokuments vorhanden.",
416
471
  "fail": "Das <body>-Element des Dokumentes darf nicht das Attribut aria-hidden=\"true\" besitzen."
417
472
  },
473
+ "aria-level": {
474
+ "pass": "aria-level Werte sind gültig.",
475
+ "incomplete": "Aria-Level Werte größer als 6 werden nicht von allen Screenreader- und Browser-Kombinationen unterstützt."
476
+ },
477
+ "aria-prohibited-attr": {
478
+ "pass": "ARIA-Attribut ist erlaubt",
479
+ "fail": {
480
+ "hasRolePlural": "${data.prohibited} Attribute können nicht mit der Rolle \"${data.role}\" verwendet werden.",
481
+ "hasRoleSingular": "${data.prohibited} Attribut kann nicht mit der Rolle \"${data.role}\" verwendet werden.",
482
+ "noRolePlural": "${data.prohibited} Attribute können nicht auf ${data.nodeName} ohne gültiges role Attribut verwendet werden.",
483
+ "noRoleSingular": "${data.prohibited} Attribut kann nicht auf ${data.nodeName} ohne gültiges role Attribut verwendet werden."
484
+ },
485
+ "incomplete": {
486
+ "hasRoleSingular": "${data.prohibited} Attribut wird von der Rolle \"${data.role}\" nicht gut unterstützt.",
487
+ "hasRolePlural": "${data.prohibited} Attribute werden von der Rolle \"${data.role}\" nicht gut unterstützt.",
488
+ "noRoleSingular": "${data.prohibited} Attribut wird bei ${data.nodeName} ohne gültiges role Attribute nicht gut unterstützt.",
489
+ "noRolePlural": "${data.prohibited} Attribute werdeb bei ${data.nodeName} ohne gültiges role Attribute nicht gut unterstützt."
490
+ }
491
+ },
418
492
  "aria-required-attr": {
419
493
  "pass": "Alle benötigten ARIA-Attribute sind vorhanden.",
420
494
  "fail": {
@@ -423,10 +497,13 @@
423
497
  }
424
498
  },
425
499
  "aria-required-children": {
426
- "pass": "Alle benötigten ARIA Kinder sind vorhanden.",
500
+ "pass": {
501
+ "default": "Alle benötigten ARIA Kinder sind vorhanden."
502
+ },
427
503
  "fail": {
428
504
  "singular": "Benötigte ARIA Kindrolle nicht vorhanden: ${data.values}",
429
- "plural": "Benötigte ARIA Kindrollen nicht vorhanden: ${data.values}"
505
+ "plural": "Benötigte ARIA Kindrollen nicht vorhanden: ${data.values}",
506
+ "unallowed": "Element hat Kinder, die nicht erlaubt sind: ${data.values}"
430
507
  },
431
508
  "incomplete": {
432
509
  "singular": "Entsprechende ARIA Kindrolle muss hinzugefügt werden: ${data.values}",
@@ -457,7 +534,10 @@
457
534
  },
458
535
  "incomplete": {
459
536
  "noId": "Verwendete ID im ARIA Attribut existiert nicht auf der Seite: ${data.needsReview}",
460
- "ariaCurrent": "Folgendes ARIA Attributwert ist ungültig und wird wie \"aria-current=true\" gesehen: ${data.needsReview}"
537
+ "noIdShadow": "ARIA-Attribut Element-ID existiert nicht auf der Seite oder ist ein Nachkomme (descendant) eines anderen Schatten-DOM-tree: ${data.needsReview}",
538
+ "ariaCurrent": "Folgendes ARIA Attributwert ist ungültig und wird wie \"aria-current=true\" gesehen: ${data.needsReview}",
539
+ "idrefs": "Es konnte nicht festgestellt werden, ob das ARIA-Attribut element ID auf der Seite existiert: ${data.needsReview}",
540
+ "empty": "ARIA-Attributwert wird ignoriert, wenn leer: ${data.needsReview}"
461
541
  }
462
542
  },
463
543
  "aria-valid-attr": {
@@ -467,9 +547,26 @@
467
547
  "plural": "Ungültige ARIA Attribut Namen: ${data.values}"
468
548
  }
469
549
  },
550
+ "braille-label-equivalent": {
551
+ "pass": "aria-braillelabel wird für ein Element mit zugänglichem Text verwendet.",
552
+ "fail": "aria-braillelabel wird für ein Element ohne zugänglichen Text verwendet.",
553
+ "incomplete": "Zugänglicher Text kann nicht berechnet werden."
554
+ },
555
+ "braille-roledescription-equivalent": {
556
+ "pass": "aria-brailleroledescription wird für ein Element mit aria-roledescription verwendet.",
557
+ "fail": {
558
+ "noRoleDescription": "aria-brailleroledescription wird für ein Element ohne aria-roledescription verwendet.",
559
+ "emptyRoleDescription": "aria-brailleroledescription wird für ein Element mit einer leeren aria-roledescription verwendet."
560
+ }
561
+ },
562
+ "deprecatedrole": {
563
+ "pass": "ARIA Rolle ist nicht veraltet.",
564
+ "fail": "Die verwendete Rolle ist veraltet: ${data}"
565
+ },
470
566
  "fallbackrole": {
471
567
  "pass": "Nur ein Wert für role genutzt.",
472
- "fail": "Es sollte nur ein Wert für role benutzt werden, da Fallback-Werte in älteren Browsern nicht unterstützt werden."
568
+ "fail": "Es sollte nur ein Wert für role benutzt werden, da Fallback-Werte in älteren Browsern nicht unterstützt werden.",
569
+ "incomplete": "Verwende nur die Rolle 'presentation' oder 'none', da sie synonym sind."
473
570
  },
474
571
  "has-global-aria-attribute": {
475
572
  "pass": {
@@ -505,9 +602,13 @@
505
602
  "pass": "Das Element hat eine gültige Semantik für ein Element in der Fokusreihenfolge.",
506
603
  "fail": "Das Element hat eine ungültige Semantik für ein Element in der Fokusreihenfolge."
507
604
  },
508
- "color-contrast": {
605
+ "color-contrast-enhanced": {
509
606
  "pass": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
510
- "fail": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}).",
607
+ "fail": {
608
+ "default": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
609
+ "fgOnShadowColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Vordergrund- und der Schattenfarbe (Vordergrundfarbe: ${data.fgColor}, Textschattenfarbe: ${data.shadowColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
610
+ "shadowOnBgColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Schattenfarbe und der Hintergrundfarbe (Textschattenfarbe: ${data.shadowColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}"
611
+ },
511
612
  "incomplete": {
512
613
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
513
614
  "bgImage": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
@@ -524,15 +625,23 @@
524
625
  "pseudoContent": "Die Hintergrundfarbe konnte aufgrund eines pseudo Elementes nicht bestimmt werden."
525
626
  }
526
627
  },
527
- "color-contrast-enhanced": {
528
- "pass": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
529
- "fail": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}).",
628
+ "color-contrast": {
629
+ "pass": {
630
+ "default": "Das Element hat einen ausreichenden Kontrast von ${data.contrastRatio}.",
631
+ "hidden": "Das Element ist verstec"
632
+ },
633
+ "fail": {
634
+ "default": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} (Vordergrundfarbe: ${data.fgColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
635
+ "fgOnShadowColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Vordergrund- und der Schattenfarbe (Vordergrundfarbe: ${data.fgColor}, Textschattenfarbe: ${data.shadowColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}",
636
+ "shadowOnBgColor": "Das Element hat einen unzureichenden Kontrast von ${data.contrastRatio} zwischen der Schattenfarbe und der Hintergrundfarbe (Textschattenfarbe: ${data.shadowColor}, Hintergrundfarbe: ${data.bgColor}, Schriftgröße: ${data.fontSize}, Schriftstärke: ${data.fontWeight}). Erwartetes Kontrastverhältnis von ${data.expectedContrastRatio}"
637
+ },
530
638
  "incomplete": {
531
639
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
532
640
  "bgImage": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundbildes nicht bestimmt werden.",
533
641
  "bgGradient": "Die Hintergrundfarbe des Elementes konnte aufgrund eines Hintergrundfarbverlaufes nicht bestimmt werden.",
534
642
  "imgNode": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da das Element einen Image Node enthält.",
535
643
  "bgOverlap": "Die Hintergrundfarbe des Elementes konnte nicht bestimmt werden, da es von einem anderen Element überlagert wird.",
644
+ "complexTextShadows": "Der Kontrast des Elements konnte nicht bestimmt werden, da es komplexe Textschatten verwendet.",
536
645
  "fgAlpha": "Die Vordergrundfarbe des Elementes konnte aufgrund der Alpha-Transparenz nicht ermittelt werden.",
537
646
  "elmPartiallyObscured": "Die Hintergrundfarbe des Elements konnte nicht bestimmt werden, da es teilweise von anderen Elementen überdeckt wird.",
538
647
  "elmPartiallyObscuring": "Die Hintergrundfarbe des Elements konnte nicht bestimmt werden, da es teilweise andere Elemente überdeckt.",
@@ -543,9 +652,20 @@
543
652
  "pseudoContent": "Die Hintergrundfarbe konnte aufgrund eines pseudo Elementes nicht bestimmt werden."
544
653
  }
545
654
  },
655
+ "link-in-text-block-style": {
656
+ "pass": "Links können durch visuelle Gestaltung vom umgebenden Text unterschieden werden.",
657
+ "incomplete": {
658
+ "default": "Prüfe, ob der Link ein Styling benötigt, um sich vom umgebenden Text zu unterscheiden.",
659
+ "pseudoContent": "Prüfe, ob der Pseudostil des Links ausreicht, um ihn vom umgebenden Text zu unterscheiden."
660
+ },
661
+ "fail": "Der Link hat kein Styling (z.B. Unterstreichung), um ihn vom umgebenden Text zu unterscheiden."
662
+ },
546
663
  "link-in-text-block": {
547
664
  "pass": "Links können vom umgebenenden Text auf unterschiedliche Art und Weise unterschieden werden.",
548
- "fail": "Links können (abgesehen von einer farblichen Kennzeichnung) nicht vom umgebenden Text unterschieden werden.",
665
+ "fail": {
666
+ "fgContrast": "Der Link hat einen unzureichenden Kontrast von ${data.contrastRatio}:1 mit dem umgebenden Text (Mindestkontrast ist ${data.requiredContrastRatio}:1, Linktext: ${data.nodeColor}, umgebender Text: ${data.parentColor}).",
667
+ "bgContrast": "Der Link-Hintergrund hat einen unzureichenden Kontrast von ${data.contrastRatio} (Mindestkontrast ist ${data.requiredContrastRatio}:1, Link-Hintergrundfarbe: ${data.nodeBackgroundColor}, umgebende Hintergrundfarbe: ${data.parentBackgroundColor})."
668
+ },
549
669
  "incomplete": {
550
670
  "default": "Das Kontrastverhältnis konnte nicht ermittelt werden.",
551
671
  "bgContrast": "Das Kontrastverhältnis des Elements konnte nicht bestimmt werden. Suchen Sie nach einem bestimmten Hover/Fokus-Stil.",
@@ -573,6 +693,7 @@
573
693
  },
574
694
  "focusable-disabled": {
575
695
  "pass": "Das Element beeinhaltet keinen fokussierbaren Inhalt.",
696
+ "incomplete": "Prüfe, ob die fokussierbaren Elemente den Fokusindikator sofort bewegen.",
576
697
  "fail": "Fokussierbarer Inhalt sollte deaktiviert oder vom DOM entfernt werden."
577
698
  },
578
699
  "focusable-element": {
@@ -590,12 +711,26 @@
590
711
  },
591
712
  "focusable-not-tabbable": {
592
713
  "pass": "Keine fokussierbaren Elemente innerhalb des Elements.",
714
+ "incomplete": "Prüfe, ob die fokussierbaren Elemente den Fokusindikator sofort bewegen.",
593
715
  "fail": "Fokussierbare Elemente sollten mit tabindex='-1' versehen oder vom DOM entfernt werden."
594
716
  },
717
+ "frame-focusable-content": {
718
+ "pass": "Element hat keine fokussierbaren Nachkommen (descendants).",
719
+ "fail": "Element hat fokussierbare Nachkommen (descendants).",
720
+ "incomplete": "Es konnte nicht festgestellt werden, ob das Element Nachkommen (descendants) hat."
721
+ },
595
722
  "landmark-is-top-level": {
596
723
  "pass": "Die ${data.role} landmark befindet sich auf höchster Ebene.",
597
724
  "fail": "Die ${data.role} landmark befindet sich innerhalb einer anderen landmark."
598
725
  },
726
+ "no-focusable-content": {
727
+ "pass": "Element hat keine fokussierbaren Nachkommen (descendants).",
728
+ "fail": {
729
+ "default": "Element hat fokussierbare Nachkommen (descendants).",
730
+ "notHidden": "Die Verwendung eines negativen Tabindex für ein Element innerhalb eines interaktiven Steuerelements verhindert nicht, dass assistive Technologien das Element fokussieren (selbst bei aria-hidden=\"true\")"
731
+ },
732
+ "incomplete": "Es konnte nicht festgestellt werden, ob das Element Nachkommen (descendants) hat."
733
+ },
599
734
  "page-has-heading-one": {
600
735
  "pass": "Die Seite besitzt mindestens eine Überschrift der ersten Ebene.",
601
736
  "fail": "Die Seite muss eine Überschrift erster Ebene besitzen."
@@ -695,10 +830,7 @@
695
830
  },
696
831
  "only-listitems": {
697
832
  "pass": "Das Aufzählungselement besitzt Kinder, welche innerhalb eines <li>-Elements erlaubt sind.",
698
- "fail": {
699
- "default": "Aufzählungselement besitzt Kinder, welche innerhalb eines <li>-Elements nicht erlaubt sind.",
700
- "roleNotValid": "Aufzählungselement besitzt Kinder, welche folgende nicht erlaubte Rollen besitzen: ${data.roles}"
701
- }
833
+ "fail": "Das Aufzählungselement besitzt Kinder, die nicht erlaubt sind: ${data.values}"
702
834
  },
703
835
  "structured-dlitems": {
704
836
  "pass": "Das Definitionslisten-Element enthält sowohl <dt> als auch <dd>-Elemente, falls es nichtleer sein sollte.",
@@ -731,13 +863,38 @@
731
863
  "pass": "Der <meta>-Tag blockiert das Zoomen auf mobilen Geräten nicht.",
732
864
  "fail": "Die viewport-Einstellungen im <meta>-Tag blockieren das Zoomen auf mobilen Geräten."
733
865
  },
866
+ "target-offset": {
867
+ "pass": "Das Ziel hat genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px, der mindestens ${data.minOffset}px beträgt.",
868
+ "fail": "Das Ziel hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px.",
869
+ "incomplete": {
870
+ "default": "Element mit negativem Tabindex hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px. Ist dies ein Ziel?",
871
+ "nonTabbableNeighbor": "Das Ziel hat nicht genügend Abstand zu seinen nächsten Nachbarn. Der sichere klickbare Bereich hat einen Durchmesser von ${data.closestOffset}px statt mindestens ${data.minOffset}px. Ist der Nachbar ein Ziel?"
872
+ }
873
+ },
874
+ "target-size": {
875
+ "pass": {
876
+ "default": "Das Steuerelement hat eine ausreichende Größe (${data.width}px x ${data.height}px, sollte mindestens ${data.minSize}px x ${data.minSize}px sein).",
877
+ "obscured": "Das Steuerelement wird ignoriert, da es vollständig verdeckt ist und daher nicht angeklickt werden kann."
878
+ },
879
+ "fail": {
880
+ "default": "Das Ziel hat eine unzureichende Größe (${data.width}px x ${data.height}px, sollte mindestens ${data.minSize}px x ${data.minSize}px sein).",
881
+ "partiallyObscured": "Das Ziel hat eine unzureichende Größe, weil es teilweise verdeckt ist (der kleinste Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein)."
882
+ },
883
+ "incomplete": {
884
+ "default": "Element mit negativem Tabindex hat unzureichende Größe (${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist dies ein Ziel?",
885
+ "contentOverflow": "Elementgröße konnte aufgrund von Überlaufinhalten nicht genau bestimmt werden",
886
+ "partiallyObscured": "Element mit negativem Tabindex hat unzureichende Größe, weil es teilweise verdeckt ist (kleinster Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist dies ein Ziel?",
887
+ "partiallyObscuredNonTabbable": "Das Ziel hat eine unzureichende Größe, weil es teilweise von einem Nachbarn mit negativem Tabindex verdeckt wird (der kleinste Platz ist ${data.width}px mal ${data.height}px, sollte mindestens ${data.minSize}px mal ${data.minSize}px sein). Ist der Nachbar ein Ziel?"
888
+ }
889
+ },
734
890
  "header-present": {
735
891
  "pass": "Die Seite besitzt eine Seitenüberschrift.",
736
892
  "fail": "Die Seite besitzt keine Seitenüberschrift."
737
893
  },
738
894
  "heading-order": {
739
895
  "pass": "Die Überschriftenstruktur ist gültig.",
740
- "fail": "Die Überschriftenstruktur ist nicht valide."
896
+ "fail": "Die Überschriftenstruktur ist nicht valide.",
897
+ "incomplete": "Vorherige Überschrift kann nicht ermittelt werden."
741
898
  },
742
899
  "identical-links-same-purpose": {
743
900
  "pass": "Es befinden sich keine Links auf der Seite, welche mit demselben Namen auf dasselbe Ziel verweisen.",
@@ -751,13 +908,18 @@
751
908
  "pass": "Die Seite besitzt eine landmark region.",
752
909
  "fail": "Die Seite besitzt keine landmark region."
753
910
  },
911
+ "meta-refresh-no-exceptions": {
912
+ "pass": "<meta> Tag aktualisiert die Seite nicht sofort.",
913
+ "fail": "<meta> Tag erzwingt eine zeitgesteuerte Aktualisierung der Seite."
914
+ },
754
915
  "meta-refresh": {
755
916
  "pass": "Der <meta>-Tag erzwingt keine sofortige Aktualisierung der Seite.",
756
917
  "fail": "Der <meta>-Tag erzwingt eine zeitgesteuerte Aktualisierung der Seite."
757
918
  },
758
919
  "p-as-heading": {
759
920
  "pass": "<p>-Elemente werden nicht als Überschriftenelement zweckentfremdet.",
760
- "fail": "Anstelle eines Überschriftenelementes wird lediglich ein durch Formatierungen hervorgehobenes <p>-Element verwendet."
921
+ "fail": "Anstelle eines Überschriftenelementes wird lediglich ein durch Formatierungen hervorgehobenes <p>-Element verwendet.",
922
+ "incomplete": "Es kann nicht festgestellt werden, ob <p>-Elemente als Überschriften gestylt sind."
761
923
  },
762
924
  "region": {
763
925
  "pass": "Jeglicher Inhalt der Seite befindet sich in einer landmark.",
@@ -822,6 +984,18 @@
822
984
  "fail": "Das Element besitzt keinen Text, der für Screenreader sichtbar ist.",
823
985
  "incomplete": "Es ist nicht möglich zu ermitteln, ob das Element Kinder besitzt."
824
986
  },
987
+ "important-letter-spacing": {
988
+ "pass": "letter-spacing im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
989
+ "fail": "letter-spacing im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
990
+ },
991
+ "important-line-height": {
992
+ "pass": "line-height im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
993
+ "fail": "line-height im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
994
+ },
995
+ "important-word-spacing": {
996
+ "pass": "word-spacing im style-Attribut ist nicht auf !important gesetzt oder entspricht dem Minimum.",
997
+ "fail": "word-spacing im style-Attribut darf nicht !important sein oder muss ${data.minValue}em (aktuell ${data.value}em) entsprechen."
998
+ },
825
999
  "is-on-screen": {
826
1000
  "pass": "Das Element ist nicht sichtbar.",
827
1001
  "fail": "Das Element ist sichtbar."
@@ -867,7 +1041,8 @@
867
1041
  "default": "Die Standardsemantik des Elements wurden nicht mit der Rolle role=\"none\" oder role=\"presentation\" überschrieben.",
868
1042
  "globalAria": "Die Rolle des Elements ist nicht präsentativ aufgrund des globalen ARIA Attributs.",
869
1043
  "focusable": "Die Rolle des Elements ist nicht präsentativ aufgrund der Möglichkeit es zu fokussieren.",
870
- "both": "Die Rolle des Elements ist nicht präsentativ aufgrund des zugewiesenen globalen ARIA Attributs und der Möglichkeit es zu fokussieren."
1044
+ "both": "Die Rolle des Elements ist nicht präsentativ aufgrund des zugewiesenen globalen ARIA Attributs und der Möglichkeit es zu fokussieren.",
1045
+ "iframe": "Die Verwendung des \"title\"-Attributs auf einem ${data.nodeName}-Element mit einer Präsentationsrolle verhält sich inkonsistent zwischen Screenreadern."
871
1046
  }
872
1047
  },
873
1048
  "role-none": {
@@ -896,7 +1071,8 @@
896
1071
  },
897
1072
  "same-caption-summary": {
898
1073
  "pass": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind nicht identisch.",
899
- "fail": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind identisch."
1074
+ "fail": "Die Inhalte des summary-Attributes und des <caption>-Elementes sind identisch.",
1075
+ "incomplete": "Es kann nicht festgestellt werden, ob das <table>-Element eine Überschrift hat."
900
1076
  },
901
1077
  "scope-value": {
902
1078
  "pass": "Das scope-Attribut wird korrekt verwendet.",