@markuplint/ml-spec 3.0.0-alpha.82 → 3.0.0-dev.176

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 (138) hide show
  1. package/README.md +8 -3
  2. package/lib/constant/aria-version.d.ts +2 -0
  3. package/lib/constant/aria-version.js +5 -0
  4. package/lib/dom-traverse/accname-computation.js +3 -1
  5. package/lib/dom-traverse/get-attr-specs.d.ts +1 -1
  6. package/lib/dom-traverse/get-attr-specs.js +3 -1
  7. package/lib/dom-traverse/get-computed-aria-props.d.ts +12 -0
  8. package/lib/dom-traverse/get-computed-aria-props.js +108 -0
  9. package/lib/dom-traverse/get-computed-role.d.ts +6 -1
  10. package/lib/dom-traverse/get-computed-role.js +54 -35
  11. package/lib/dom-traverse/get-content-model.d.ts +29 -0
  12. package/lib/dom-traverse/get-content-model.js +30 -0
  13. package/lib/dom-traverse/get-explicit-role.js +9 -4
  14. package/lib/dom-traverse/get-implicit-role.d.ts +6 -2
  15. package/lib/dom-traverse/get-implicit-role.js +6 -2
  16. package/lib/dom-traverse/get-non-presentational-ancestor.d.ts +10 -4
  17. package/lib/dom-traverse/get-non-presentational-ancestor.js +10 -2
  18. package/lib/dom-traverse/get-permitted-roles.d.ts +7 -3
  19. package/lib/dom-traverse/get-permitted-roles.js +3 -1
  20. package/lib/dom-traverse/get-spec.d.ts +5 -2
  21. package/lib/dom-traverse/get-spec.js +4 -2
  22. package/lib/dom-traverse/has-required-owned-elements.d.ts +8 -2
  23. package/lib/dom-traverse/has-required-owned-elements.js +26 -8
  24. package/lib/dom-traverse/is-exposed.d.ts +11 -0
  25. package/lib/dom-traverse/is-exposed.js +217 -0
  26. package/lib/dom-traverse/matches-context-role.d.ts +7 -0
  27. package/lib/dom-traverse/matches-context-role.js +27 -0
  28. package/lib/dom-traverse/may-be-focusable.d.ts +2 -0
  29. package/lib/dom-traverse/may-be-focusable.js +24 -0
  30. package/lib/index.d.ts +11 -1
  31. package/lib/index.js +11 -1
  32. package/lib/specs/aria-specs.d.ts +7 -4
  33. package/lib/specs/content-model-category-to-tag-names.d.ts +5 -2
  34. package/lib/specs/content-model-category-to-tag-names.js +2 -2
  35. package/lib/specs/get-aria.d.ts +8 -1
  36. package/lib/specs/get-aria.js +11 -5
  37. package/lib/specs/get-attr-specs.d.ts +7 -3
  38. package/lib/specs/get-attr-specs.js +2 -14
  39. package/lib/specs/get-implicit-role.d.ts +7 -1
  40. package/lib/specs/get-permitted-roles.d.ts +9 -3
  41. package/lib/specs/get-permitted-roles.js +19 -15
  42. package/lib/specs/get-role-spec.d.ts +10 -3
  43. package/lib/specs/get-role-spec.js +2 -2
  44. package/lib/specs/get-selectors-by-content-model-category.d.ts +2 -2
  45. package/lib/specs/get-selectors-by-content-model-category.js +1 -1
  46. package/lib/specs/get-spec-by-tag-name.d.ts +6 -2
  47. package/lib/specs/get-spec-by-tag-name.js +3 -2
  48. package/lib/specs/is-nothing-content-model.d.ts +5 -0
  49. package/lib/specs/is-nothing-content-model.js +14 -0
  50. package/lib/specs/is-palpable-elements.d.ts +9 -0
  51. package/lib/specs/is-palpable-elements.js +49 -0
  52. package/lib/specs/is-void-element.d.ts +1 -0
  53. package/lib/specs/is-void-element.js +27 -0
  54. package/lib/specs/resolve-version.d.ts +5 -1
  55. package/lib/specs/resolve-version.js +1 -1
  56. package/lib/specs/schema-to-spec.d.ts +4 -4
  57. package/lib/specs/schema-to-spec.js +29 -18
  58. package/lib/types/aria.d.ts +150 -109
  59. package/lib/types/attributes.d.ts +1507 -73
  60. package/lib/types/index.d.ts +195 -166
  61. package/{src/types/permitted-structres.ts → lib/types/permitted-structures.d.ts} +24 -35
  62. package/lib/utils/get-ns.d.ts +2 -1
  63. package/lib/utils/get-ns.js +3 -0
  64. package/lib/utils/merge-array.d.ts +9 -4
  65. package/lib/utils/resolve-namespace.d.ts +7 -7
  66. package/lib/utils/resolve-namespace.js +19 -13
  67. package/lib/utils/validateAriaVersion.d.ts +2 -0
  68. package/lib/utils/validateAriaVersion.js +8 -0
  69. package/package.json +13 -8
  70. package/schema.json +6 -6
  71. package/{src/dom-traverse/accname-computation.spec.ts → test/dom-traverse/accname-computation.spec.js} +8 -8
  72. package/test/dom-traverse/get-computed-aria-props.spec.js +758 -0
  73. package/test/dom-traverse/get-computed-role.spec.js +294 -0
  74. package/test/dom-traverse/get-implicit-role.spec.js +40 -0
  75. package/{src/dom-traverse/has-required-owned-elements.spec.ts → test/dom-traverse/has-required-owned-elements.spec.js} +7 -9
  76. package/test/dom-traverse/is-exposed.spec.js +70 -0
  77. package/test/dom-traverse/matches-context-role.spec.js +60 -0
  78. package/{src/specs/get-attr-specs.spec.ts → test/specs/get-attr-specs.spec.js} +2 -8
  79. package/{src/specs/get-implicit-role.spec.ts → test/specs/get-implicit-role.spec.js} +9 -11
  80. package/{src/specs/get-permitted-roles.spec.ts → test/specs/get-permitted-roles.spec.js} +8 -10
  81. package/{src/specs/get-role-spec.spec.ts → test/specs/get-role-spec.spec.js} +4 -4
  82. package/{src/specs/get-spec-by-tag-name.spec.ts → test/specs/get-spec-by-tag-name.spec.js} +11 -11
  83. package/test/specs/resolve-version.spec.js +34 -0
  84. package/test/specs/schema-to-spec.spec.js +61 -0
  85. package/test/utils/resolve-namespace.spec.js +37 -0
  86. package/lib/dom-traverse/focusability-computation.d.ts +0 -1
  87. package/lib/dom-traverse/focusability-computation.js +0 -8
  88. package/lib/dom-traverse/get-aria.d.ts +0 -9
  89. package/lib/dom-traverse/get-aria.js +0 -54
  90. package/lib/specs/aria-spec.d.ts +0 -5
  91. package/lib/specs/aria-spec.js +0 -12
  92. package/lib/specs/get-spec.d.ts +0 -13
  93. package/lib/specs/get-spec.js +0 -85
  94. package/lib/specs/html-spec.d.ts +0 -6
  95. package/lib/specs/html-spec.js +0 -16
  96. package/lib/specs/resolve-namespace.d.ts +0 -9
  97. package/lib/specs/resolve-namespace.js +0 -26
  98. package/lib/types/permitted-structres.d.ts +0 -64
  99. package/lib/utils.d.ts +0 -8
  100. package/lib/utils.js +0 -50
  101. package/schemas/aria.schema.json +0 -258
  102. package/schemas/attributes.schema.json +0 -204
  103. package/schemas/content-models.schema.json +0 -215
  104. package/schemas/element.schema.json +0 -11
  105. package/schemas/global-attributes.schema.json +0 -761
  106. package/src/dom-traverse/accname-computation.ts +0 -5
  107. package/src/dom-traverse/get-attr-specs.ts +0 -8
  108. package/src/dom-traverse/get-computed-role.spec.ts +0 -134
  109. package/src/dom-traverse/get-computed-role.ts +0 -193
  110. package/src/dom-traverse/get-explicit-role.ts +0 -112
  111. package/src/dom-traverse/get-implicit-role.ts +0 -36
  112. package/src/dom-traverse/get-non-presentational-ancestor.ts +0 -20
  113. package/src/dom-traverse/get-permitted-roles.ts +0 -7
  114. package/src/dom-traverse/get-spec.ts +0 -7
  115. package/src/dom-traverse/has-required-owned-elements.ts +0 -72
  116. package/src/index.ts +0 -17
  117. package/src/specs/aria-specs.ts +0 -6
  118. package/src/specs/content-model-category-to-tag-names.ts +0 -15
  119. package/src/specs/get-aria.ts +0 -85
  120. package/src/specs/get-attr-specs.ts +0 -116
  121. package/src/specs/get-implicit-role.ts +0 -17
  122. package/src/specs/get-permitted-roles.ts +0 -87
  123. package/src/specs/get-role-spec.ts +0 -72
  124. package/src/specs/get-selectors-by-content-model-category.ts +0 -10
  125. package/src/specs/get-spec-by-tag-name.ts +0 -16
  126. package/src/specs/is-presentational.ts +0 -6
  127. package/src/specs/resolve-version.ts +0 -20
  128. package/src/specs/schema-to-spec.spec.ts +0 -39
  129. package/src/specs/schema-to-spec.ts +0 -103
  130. package/src/types/aria.ts +0 -147
  131. package/src/types/attributes.ts +0 -1418
  132. package/src/types/index.ts +0 -255
  133. package/src/utils/get-ns.ts +0 -13
  134. package/src/utils/merge-array.ts +0 -35
  135. package/src/utils/resolve-namespace.ts +0 -36
  136. package/tsconfig.test.json +0 -3
  137. package/tsconfig.tsbuildinfo +0 -1
  138. /package/lib/types/{permitted-structres.js → permitted-structures.js} +0 -0
@@ -0,0 +1,758 @@
1
+ const specs = require('@markuplint/html-spec');
2
+ const { createSelector } = require('@markuplint/selector');
3
+ const { createJSDOMElement } = require('@markuplint/test-tools');
4
+
5
+ const { getComputedAriaProps } = require('../../lib/dom-traverse/get-computed-aria-props');
6
+
7
+ function _(html, selector) {
8
+ return createJSDOMElement(html, selector, function (selector) {
9
+ // JSDOM supports no level 4 selectors yet.
10
+ return createSelector(selector, specs).match(this) !== false;
11
+ });
12
+ }
13
+
14
+ function c(html, version, selector) {
15
+ return getComputedAriaProps(specs, _(html, selector), version);
16
+ }
17
+
18
+ describe('1.2', () => {
19
+ test('the link role', () => {
20
+ expect(c('<a href></a>', '1.2')).toStrictEqual({
21
+ 'aria-atomic': {
22
+ name: 'aria-atomic',
23
+ value: 'false',
24
+ deprecated: false,
25
+ required: false,
26
+ from: 'default',
27
+ },
28
+ 'aria-busy': {
29
+ name: 'aria-busy',
30
+ value: 'false',
31
+ deprecated: false,
32
+ required: false,
33
+ from: 'default',
34
+ },
35
+ 'aria-controls': {
36
+ name: 'aria-controls',
37
+ value: undefined,
38
+ deprecated: false,
39
+ required: false,
40
+ from: 'default',
41
+ },
42
+ 'aria-current': {
43
+ name: 'aria-current',
44
+ value: 'false',
45
+ deprecated: false,
46
+ required: false,
47
+ from: 'default',
48
+ },
49
+ 'aria-describedby': {
50
+ name: 'aria-describedby',
51
+ value: undefined,
52
+ deprecated: false,
53
+ required: false,
54
+ from: 'default',
55
+ },
56
+ 'aria-details': {
57
+ name: 'aria-details',
58
+ value: undefined,
59
+ deprecated: false,
60
+ required: false,
61
+ from: 'default',
62
+ },
63
+ 'aria-disabled': {
64
+ name: 'aria-disabled',
65
+ value: 'false',
66
+ deprecated: false,
67
+ required: false,
68
+ from: 'default',
69
+ },
70
+ 'aria-dropeffect': {
71
+ name: 'aria-dropeffect',
72
+ value: 'none',
73
+ deprecated: true,
74
+ required: false,
75
+ from: 'default',
76
+ },
77
+ 'aria-errormessage': {
78
+ name: 'aria-errormessage',
79
+ value: undefined,
80
+ deprecated: false,
81
+ required: false,
82
+ from: 'default',
83
+ },
84
+ 'aria-expanded': {
85
+ name: 'aria-expanded',
86
+ value: 'undefined',
87
+ deprecated: false,
88
+ required: false,
89
+ from: 'default',
90
+ },
91
+ 'aria-flowto': {
92
+ name: 'aria-flowto',
93
+ value: undefined,
94
+ deprecated: false,
95
+ required: false,
96
+ from: 'default',
97
+ },
98
+ 'aria-grabbed': {
99
+ name: 'aria-grabbed',
100
+ value: 'undefined',
101
+ deprecated: true,
102
+ required: false,
103
+ from: 'default',
104
+ },
105
+ 'aria-haspopup': {
106
+ name: 'aria-haspopup',
107
+ value: 'false',
108
+ deprecated: false,
109
+ required: false,
110
+ from: 'default',
111
+ },
112
+ 'aria-hidden': {
113
+ name: 'aria-hidden',
114
+ value: 'undefined',
115
+ deprecated: false,
116
+ required: false,
117
+ from: 'default',
118
+ },
119
+ 'aria-invalid': {
120
+ name: 'aria-invalid',
121
+ value: 'false',
122
+ deprecated: false,
123
+ required: false,
124
+ from: 'default',
125
+ },
126
+ 'aria-keyshortcuts': {
127
+ name: 'aria-keyshortcuts',
128
+ value: undefined,
129
+ deprecated: false,
130
+ required: false,
131
+ from: 'default',
132
+ },
133
+ 'aria-label': {
134
+ name: 'aria-label',
135
+ value: undefined,
136
+ deprecated: false,
137
+ required: false,
138
+ from: 'default',
139
+ },
140
+ 'aria-labelledby': {
141
+ name: 'aria-labelledby',
142
+ value: undefined,
143
+ deprecated: false,
144
+ required: false,
145
+ from: 'default',
146
+ },
147
+ 'aria-live': {
148
+ name: 'aria-live',
149
+ value: 'off',
150
+ deprecated: false,
151
+ required: false,
152
+ from: 'default',
153
+ },
154
+ 'aria-owns': {
155
+ name: 'aria-owns',
156
+ value: undefined,
157
+ deprecated: false,
158
+ required: false,
159
+ from: 'default',
160
+ },
161
+ 'aria-relevant': {
162
+ name: 'aria-relevant',
163
+ value: 'additions text',
164
+ deprecated: false,
165
+ required: false,
166
+ from: 'default',
167
+ },
168
+ 'aria-roledescription': {
169
+ name: 'aria-roledescription',
170
+ value: undefined,
171
+ deprecated: false,
172
+ required: false,
173
+ from: 'default',
174
+ },
175
+ });
176
+ });
177
+
178
+ test('the heading role', () => {
179
+ expect(c('<h1></h1>', '1.2')).toStrictEqual({
180
+ 'aria-atomic': {
181
+ name: 'aria-atomic',
182
+ value: 'false',
183
+ deprecated: false,
184
+ required: false,
185
+ from: 'default',
186
+ },
187
+ 'aria-busy': {
188
+ name: 'aria-busy',
189
+ value: 'false',
190
+ deprecated: false,
191
+ required: false,
192
+ from: 'default',
193
+ },
194
+ 'aria-controls': {
195
+ name: 'aria-controls',
196
+ value: undefined,
197
+ deprecated: false,
198
+ required: false,
199
+ from: 'default',
200
+ },
201
+ 'aria-current': {
202
+ name: 'aria-current',
203
+ value: 'false',
204
+ deprecated: false,
205
+ required: false,
206
+ from: 'default',
207
+ },
208
+ 'aria-describedby': {
209
+ name: 'aria-describedby',
210
+ value: undefined,
211
+ deprecated: false,
212
+ required: false,
213
+ from: 'default',
214
+ },
215
+ 'aria-details': {
216
+ name: 'aria-details',
217
+ value: undefined,
218
+ deprecated: false,
219
+ required: false,
220
+ from: 'default',
221
+ },
222
+ 'aria-disabled': {
223
+ name: 'aria-disabled',
224
+ value: 'false',
225
+ deprecated: false,
226
+ required: false,
227
+ from: 'default',
228
+ },
229
+ 'aria-dropeffect': {
230
+ name: 'aria-dropeffect',
231
+ value: 'none',
232
+ deprecated: true,
233
+ required: false,
234
+ from: 'default',
235
+ },
236
+ 'aria-errormessage': {
237
+ name: 'aria-errormessage',
238
+ value: undefined,
239
+ deprecated: false,
240
+ required: false,
241
+ from: 'default',
242
+ },
243
+ 'aria-flowto': {
244
+ name: 'aria-flowto',
245
+ value: undefined,
246
+ deprecated: false,
247
+ required: false,
248
+ from: 'default',
249
+ },
250
+ 'aria-grabbed': {
251
+ name: 'aria-grabbed',
252
+ value: 'undefined',
253
+ deprecated: true,
254
+ required: false,
255
+ from: 'default',
256
+ },
257
+ 'aria-haspopup': {
258
+ name: 'aria-haspopup',
259
+ value: 'false',
260
+ deprecated: false,
261
+ required: false,
262
+ from: 'default',
263
+ },
264
+ 'aria-hidden': {
265
+ name: 'aria-hidden',
266
+ value: 'undefined',
267
+ deprecated: false,
268
+ required: false,
269
+ from: 'default',
270
+ },
271
+ 'aria-invalid': {
272
+ name: 'aria-invalid',
273
+ value: 'false',
274
+ deprecated: false,
275
+ required: false,
276
+ from: 'default',
277
+ },
278
+ 'aria-keyshortcuts': {
279
+ name: 'aria-keyshortcuts',
280
+ value: undefined,
281
+ deprecated: false,
282
+ required: false,
283
+ from: 'default',
284
+ },
285
+ 'aria-label': {
286
+ name: 'aria-label',
287
+ value: undefined,
288
+ deprecated: false,
289
+ required: false,
290
+ from: 'default',
291
+ },
292
+ 'aria-labelledby': {
293
+ name: 'aria-labelledby',
294
+ value: undefined,
295
+ deprecated: false,
296
+ required: false,
297
+ from: 'default',
298
+ },
299
+ 'aria-level': {
300
+ name: 'aria-level',
301
+ value: '1',
302
+ deprecated: false,
303
+ required: true,
304
+ from: 'default',
305
+ },
306
+ 'aria-live': {
307
+ name: 'aria-live',
308
+ value: 'off',
309
+ deprecated: false,
310
+ required: false,
311
+ from: 'default',
312
+ },
313
+ 'aria-owns': {
314
+ name: 'aria-owns',
315
+ value: undefined,
316
+ deprecated: false,
317
+ required: false,
318
+ from: 'default',
319
+ },
320
+ 'aria-relevant': {
321
+ name: 'aria-relevant',
322
+ value: 'additions text',
323
+ deprecated: false,
324
+ required: false,
325
+ from: 'default',
326
+ },
327
+ 'aria-roledescription': {
328
+ name: 'aria-roledescription',
329
+ value: undefined,
330
+ deprecated: false,
331
+ required: false,
332
+ from: 'default',
333
+ },
334
+ });
335
+ });
336
+
337
+ test('from html-attr', () => {
338
+ expect(c('<input type="checkbox" checked>', '1.2')['aria-checked']).toStrictEqual({
339
+ name: 'aria-checked',
340
+ value: 'true',
341
+ deprecated: false,
342
+ required: true,
343
+ from: 'html-attr',
344
+ });
345
+ });
346
+
347
+ test('overwrite aria-attr', () => {
348
+ expect(c('<input type="checkbox" checked aria-checked="false">', '1.2')['aria-checked']).toStrictEqual({
349
+ name: 'aria-checked',
350
+ value: 'false',
351
+ deprecated: false,
352
+ required: true,
353
+ from: 'aria-attr',
354
+ });
355
+ });
356
+
357
+ test('overwrite aria-attr', () => {
358
+ expect(c('<input type="checkbox" checked aria-checked="mixed">', '1.2')['aria-checked']).toStrictEqual({
359
+ name: 'aria-checked',
360
+ value: 'mixed',
361
+ deprecated: false,
362
+ required: true,
363
+ from: 'aria-attr',
364
+ });
365
+ });
366
+ });
367
+
368
+ describe('1.3', () => {
369
+ test('the link role', () => {
370
+ expect(c('<a href></a>', '1.3')).toStrictEqual({
371
+ 'aria-atomic': {
372
+ name: 'aria-atomic',
373
+ value: 'false',
374
+ deprecated: false,
375
+ required: false,
376
+ from: 'default',
377
+ },
378
+ 'aria-braillelabel': {
379
+ name: 'aria-braillelabel',
380
+ value: undefined,
381
+ deprecated: false,
382
+ required: false,
383
+ from: 'default',
384
+ },
385
+ 'aria-brailleroledescription': {
386
+ name: 'aria-brailleroledescription',
387
+ value: undefined,
388
+ deprecated: false,
389
+ required: false,
390
+ from: 'default',
391
+ },
392
+ 'aria-busy': {
393
+ name: 'aria-busy',
394
+ value: 'false',
395
+ deprecated: false,
396
+ required: false,
397
+ from: 'default',
398
+ },
399
+ 'aria-controls': {
400
+ name: 'aria-controls',
401
+ value: undefined,
402
+ deprecated: false,
403
+ required: false,
404
+ from: 'default',
405
+ },
406
+ 'aria-current': {
407
+ name: 'aria-current',
408
+ value: 'false',
409
+ deprecated: false,
410
+ required: false,
411
+ from: 'default',
412
+ },
413
+ 'aria-describedby': {
414
+ name: 'aria-describedby',
415
+ value: undefined,
416
+ deprecated: false,
417
+ required: false,
418
+ from: 'default',
419
+ },
420
+ 'aria-description': {
421
+ name: 'aria-description',
422
+ deprecated: false,
423
+ value: undefined,
424
+ required: false,
425
+ from: 'default',
426
+ },
427
+ 'aria-details': {
428
+ name: 'aria-details',
429
+ value: undefined,
430
+ deprecated: false,
431
+ required: false,
432
+ from: 'default',
433
+ },
434
+ 'aria-disabled': {
435
+ name: 'aria-disabled',
436
+ value: 'false',
437
+ deprecated: false,
438
+ required: false,
439
+ from: 'default',
440
+ },
441
+ 'aria-dropeffect': {
442
+ name: 'aria-dropeffect',
443
+ value: 'none',
444
+ deprecated: true,
445
+ required: false,
446
+ from: 'default',
447
+ },
448
+ 'aria-errormessage': {
449
+ name: 'aria-errormessage',
450
+ value: undefined,
451
+ deprecated: false,
452
+ required: false,
453
+ from: 'default',
454
+ },
455
+ 'aria-expanded': {
456
+ name: 'aria-expanded',
457
+ value: 'undefined',
458
+ deprecated: false,
459
+ required: false,
460
+ from: 'default',
461
+ },
462
+ 'aria-flowto': {
463
+ name: 'aria-flowto',
464
+ value: undefined,
465
+ deprecated: false,
466
+ required: false,
467
+ from: 'default',
468
+ },
469
+ 'aria-grabbed': {
470
+ name: 'aria-grabbed',
471
+ value: 'undefined',
472
+ deprecated: true,
473
+ required: false,
474
+ from: 'default',
475
+ },
476
+ 'aria-haspopup': {
477
+ name: 'aria-haspopup',
478
+ value: 'false',
479
+ deprecated: false,
480
+ required: false,
481
+ from: 'default',
482
+ },
483
+ 'aria-hidden': {
484
+ name: 'aria-hidden',
485
+ value: 'undefined',
486
+ deprecated: false,
487
+ required: false,
488
+ from: 'default',
489
+ },
490
+ 'aria-invalid': {
491
+ name: 'aria-invalid',
492
+ value: 'false',
493
+ deprecated: false,
494
+ required: false,
495
+ from: 'default',
496
+ },
497
+ 'aria-keyshortcuts': {
498
+ name: 'aria-keyshortcuts',
499
+ value: undefined,
500
+ deprecated: false,
501
+ required: false,
502
+ from: 'default',
503
+ },
504
+ 'aria-label': {
505
+ name: 'aria-label',
506
+ value: undefined,
507
+ deprecated: false,
508
+ required: false,
509
+ from: 'default',
510
+ },
511
+ 'aria-labelledby': {
512
+ name: 'aria-labelledby',
513
+ value: undefined,
514
+ deprecated: false,
515
+ required: false,
516
+ from: 'default',
517
+ },
518
+ 'aria-live': {
519
+ name: 'aria-live',
520
+ value: 'off',
521
+ deprecated: false,
522
+ required: false,
523
+ from: 'default',
524
+ },
525
+ 'aria-owns': {
526
+ name: 'aria-owns',
527
+ value: undefined,
528
+ deprecated: false,
529
+ required: false,
530
+ from: 'default',
531
+ },
532
+ 'aria-relevant': {
533
+ name: 'aria-relevant',
534
+ value: 'additions text',
535
+ deprecated: false,
536
+ required: false,
537
+ from: 'default',
538
+ },
539
+ 'aria-roledescription': {
540
+ name: 'aria-roledescription',
541
+ value: undefined,
542
+ deprecated: false,
543
+ required: false,
544
+ from: 'default',
545
+ },
546
+ });
547
+ });
548
+
549
+ test('the heading role', () => {
550
+ expect(c('<h1></h1>', '1.3')).toStrictEqual({
551
+ 'aria-atomic': {
552
+ name: 'aria-atomic',
553
+ value: 'false',
554
+ deprecated: false,
555
+ required: false,
556
+ from: 'default',
557
+ },
558
+ 'aria-braillelabel': {
559
+ name: 'aria-braillelabel',
560
+ value: undefined,
561
+ deprecated: false,
562
+ required: false,
563
+ from: 'default',
564
+ },
565
+ 'aria-brailleroledescription': {
566
+ name: 'aria-brailleroledescription',
567
+ value: undefined,
568
+ deprecated: false,
569
+ required: false,
570
+ from: 'default',
571
+ },
572
+ 'aria-busy': {
573
+ name: 'aria-busy',
574
+ value: 'false',
575
+ deprecated: false,
576
+ required: false,
577
+ from: 'default',
578
+ },
579
+ 'aria-controls': {
580
+ name: 'aria-controls',
581
+ value: undefined,
582
+ deprecated: false,
583
+ required: false,
584
+ from: 'default',
585
+ },
586
+ 'aria-current': {
587
+ name: 'aria-current',
588
+ value: 'false',
589
+ deprecated: false,
590
+ required: false,
591
+ from: 'default',
592
+ },
593
+ 'aria-describedby': {
594
+ name: 'aria-describedby',
595
+ value: undefined,
596
+ deprecated: false,
597
+ required: false,
598
+ from: 'default',
599
+ },
600
+ 'aria-description': {
601
+ name: 'aria-description',
602
+ deprecated: false,
603
+ value: undefined,
604
+ required: false,
605
+ from: 'default',
606
+ },
607
+ 'aria-details': {
608
+ name: 'aria-details',
609
+ value: undefined,
610
+ deprecated: false,
611
+ required: false,
612
+ from: 'default',
613
+ },
614
+ 'aria-disabled': {
615
+ name: 'aria-disabled',
616
+ value: 'false',
617
+ deprecated: false,
618
+ required: false,
619
+ from: 'default',
620
+ },
621
+ 'aria-dropeffect': {
622
+ name: 'aria-dropeffect',
623
+ value: 'none',
624
+ deprecated: true,
625
+ required: false,
626
+ from: 'default',
627
+ },
628
+ 'aria-errormessage': {
629
+ name: 'aria-errormessage',
630
+ value: undefined,
631
+ deprecated: false,
632
+ required: false,
633
+ from: 'default',
634
+ },
635
+ 'aria-flowto': {
636
+ name: 'aria-flowto',
637
+ value: undefined,
638
+ deprecated: false,
639
+ required: false,
640
+ from: 'default',
641
+ },
642
+ 'aria-grabbed': {
643
+ name: 'aria-grabbed',
644
+ value: 'undefined',
645
+ deprecated: true,
646
+ required: false,
647
+ from: 'default',
648
+ },
649
+ 'aria-haspopup': {
650
+ name: 'aria-haspopup',
651
+ value: 'false',
652
+ deprecated: false,
653
+ required: false,
654
+ from: 'default',
655
+ },
656
+ 'aria-hidden': {
657
+ name: 'aria-hidden',
658
+ value: 'undefined',
659
+ deprecated: false,
660
+ required: false,
661
+ from: 'default',
662
+ },
663
+ 'aria-invalid': {
664
+ name: 'aria-invalid',
665
+ value: 'false',
666
+ deprecated: false,
667
+ required: false,
668
+ from: 'default',
669
+ },
670
+ 'aria-keyshortcuts': {
671
+ name: 'aria-keyshortcuts',
672
+ value: undefined,
673
+ deprecated: false,
674
+ required: false,
675
+ from: 'default',
676
+ },
677
+ 'aria-label': {
678
+ name: 'aria-label',
679
+ value: undefined,
680
+ deprecated: false,
681
+ required: false,
682
+ from: 'default',
683
+ },
684
+ 'aria-labelledby': {
685
+ name: 'aria-labelledby',
686
+ value: undefined,
687
+ deprecated: false,
688
+ required: false,
689
+ from: 'default',
690
+ },
691
+ 'aria-level': {
692
+ name: 'aria-level',
693
+ value: '1',
694
+ deprecated: false,
695
+ required: true,
696
+ from: 'default',
697
+ },
698
+ 'aria-live': {
699
+ name: 'aria-live',
700
+ value: 'off',
701
+ deprecated: false,
702
+ required: false,
703
+ from: 'default',
704
+ },
705
+ 'aria-owns': {
706
+ name: 'aria-owns',
707
+ value: undefined,
708
+ deprecated: false,
709
+ required: false,
710
+ from: 'default',
711
+ },
712
+ 'aria-relevant': {
713
+ name: 'aria-relevant',
714
+ value: 'additions text',
715
+ deprecated: false,
716
+ required: false,
717
+ from: 'default',
718
+ },
719
+ 'aria-roledescription': {
720
+ name: 'aria-roledescription',
721
+ value: undefined,
722
+ deprecated: false,
723
+ required: false,
724
+ from: 'default',
725
+ },
726
+ });
727
+ });
728
+
729
+ test('from html-attr', () => {
730
+ expect(c('<input type="checkbox" checked>', '1.3')['aria-checked']).toStrictEqual({
731
+ name: 'aria-checked',
732
+ value: 'true',
733
+ deprecated: false,
734
+ required: true,
735
+ from: 'html-attr',
736
+ });
737
+ });
738
+
739
+ test('overwrite aria-attr', () => {
740
+ expect(c('<input type="checkbox" checked aria-checked="false">', '1.3')['aria-checked']).toStrictEqual({
741
+ name: 'aria-checked',
742
+ value: 'false',
743
+ deprecated: false,
744
+ required: true,
745
+ from: 'aria-attr',
746
+ });
747
+ });
748
+
749
+ test('overwrite aria-attr', () => {
750
+ expect(c('<input type="checkbox" checked aria-checked="mixed">', '1.3')['aria-checked']).toStrictEqual({
751
+ name: 'aria-checked',
752
+ value: 'mixed',
753
+ deprecated: false,
754
+ required: true,
755
+ from: 'aria-attr',
756
+ });
757
+ });
758
+ });