govuk_publishing_components 38.2.0 → 38.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/feedback.js +0 -38
  3. data/app/views/govuk_publishing_components/components/_share_links.html.erb +2 -2
  4. data/app/views/govuk_publishing_components/components/feedback/_survey_signup_form.html.erb +7 -45
  5. data/config/locales/ar.yml +1 -1
  6. data/config/locales/az.yml +1 -1
  7. data/config/locales/be.yml +1 -1
  8. data/config/locales/bg.yml +1 -1
  9. data/config/locales/bn.yml +1 -1
  10. data/config/locales/cs.yml +1 -1
  11. data/config/locales/cy.yml +1 -1
  12. data/config/locales/da.yml +1 -1
  13. data/config/locales/de.yml +1 -1
  14. data/config/locales/dr.yml +1 -1
  15. data/config/locales/el.yml +1 -1
  16. data/config/locales/en.yml +1 -1
  17. data/config/locales/es-419.yml +1 -1
  18. data/config/locales/es.yml +1 -1
  19. data/config/locales/et.yml +1 -1
  20. data/config/locales/fa.yml +1 -1
  21. data/config/locales/fi.yml +1 -1
  22. data/config/locales/fr.yml +1 -1
  23. data/config/locales/gd.yml +1 -1
  24. data/config/locales/gu.yml +1 -1
  25. data/config/locales/he.yml +1 -1
  26. data/config/locales/hi.yml +1 -1
  27. data/config/locales/hr.yml +1 -1
  28. data/config/locales/hu.yml +1 -1
  29. data/config/locales/hy.yml +1 -1
  30. data/config/locales/id.yml +1 -1
  31. data/config/locales/is.yml +1 -1
  32. data/config/locales/it.yml +1 -1
  33. data/config/locales/ja.yml +1 -1
  34. data/config/locales/ka.yml +1 -1
  35. data/config/locales/kk.yml +1 -1
  36. data/config/locales/lt.yml +1 -1
  37. data/config/locales/lv.yml +1 -1
  38. data/config/locales/ms.yml +1 -1
  39. data/config/locales/mt.yml +1 -1
  40. data/config/locales/nl.yml +1 -1
  41. data/config/locales/no.yml +1 -1
  42. data/config/locales/pa-pk.yml +1 -1
  43. data/config/locales/pa.yml +1 -1
  44. data/config/locales/pl.yml +1 -1
  45. data/config/locales/ps.yml +1 -1
  46. data/config/locales/pt.yml +1 -1
  47. data/config/locales/ro.yml +1 -1
  48. data/config/locales/ru.yml +1 -1
  49. data/config/locales/si.yml +1 -1
  50. data/config/locales/sk.yml +1 -1
  51. data/config/locales/sl.yml +1 -1
  52. data/config/locales/so.yml +1 -1
  53. data/config/locales/sq.yml +1 -1
  54. data/config/locales/sr.yml +1 -1
  55. data/config/locales/sv.yml +1 -1
  56. data/config/locales/sw.yml +1 -1
  57. data/config/locales/ta.yml +1 -1
  58. data/config/locales/th.yml +1 -1
  59. data/config/locales/tk.yml +1 -1
  60. data/config/locales/tr.yml +1 -1
  61. data/config/locales/uk.yml +1 -1
  62. data/config/locales/ur.yml +1 -1
  63. data/config/locales/uz.yml +1 -1
  64. data/config/locales/vi.yml +1 -1
  65. data/config/locales/zh-hk.yml +1 -1
  66. data/config/locales/zh-tw.yml +1 -1
  67. data/config/locales/zh.yml +1 -1
  68. data/lib/govuk_publishing_components/version.rb +1 -1
  69. data/node_modules/axe-core/README.md +7 -3
  70. data/node_modules/axe-core/axe.js +11587 -10370
  71. data/node_modules/axe-core/axe.min.js +2 -2
  72. data/node_modules/axe-core/locales/_template.json +13 -5
  73. data/node_modules/axe-core/locales/da.json +3 -1
  74. data/node_modules/axe-core/locales/de.json +207 -31
  75. data/node_modules/axe-core/locales/el.json +1069 -0
  76. data/node_modules/axe-core/locales/es.json +3 -1
  77. data/node_modules/axe-core/locales/eu.json +3 -1
  78. data/node_modules/axe-core/locales/fr.json +3 -1
  79. data/node_modules/axe-core/locales/he.json +3 -1
  80. data/node_modules/axe-core/locales/it.json +1108 -0
  81. data/node_modules/axe-core/locales/ja.json +3 -1
  82. data/node_modules/axe-core/locales/ko.json +3 -1
  83. data/node_modules/axe-core/locales/no_NB.json +3 -1
  84. data/node_modules/axe-core/locales/pl.json +3 -1
  85. data/node_modules/axe-core/locales/pt_BR.json +3 -1
  86. data/node_modules/axe-core/locales/zh_CN.json +1116 -0
  87. data/node_modules/axe-core/locales/zh_TW.json +1108 -0
  88. data/node_modules/axe-core/package.json +19 -21
  89. data/node_modules/axe-core/sri-history.json +4 -0
  90. metadata +7 -3
@@ -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.",