testaro-issues 0.5.0 → 0.5.1
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.
- package/dist/index.cjs +153 -78
- package/dist/index.d.cts +5 -5
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +153 -78
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -10,9 +10,10 @@ const uncertainties = [
|
|
|
10
10
|
"out-of-scope"
|
|
11
11
|
];
|
|
12
12
|
const whyIgnore = [
|
|
13
|
+
"duplicative",
|
|
13
14
|
"invalid",
|
|
14
15
|
"irrelevant",
|
|
15
|
-
"
|
|
16
|
+
"speculative",
|
|
16
17
|
"unreliable"
|
|
17
18
|
];
|
|
18
19
|
const issuesData = {
|
|
@@ -2260,18 +2261,21 @@ const rulesData = {
|
|
|
2260
2261
|
"cantTellTextContrast": {
|
|
2261
2262
|
"issueID": "ignorable",
|
|
2262
2263
|
"quality": 1,
|
|
2263
|
-
"what": "Test of text contrast could not give a conclusive result
|
|
2264
|
+
"what": "Test of text contrast could not give a conclusive result",
|
|
2265
|
+
"whyIgnore": "invalid",
|
|
2264
2266
|
"supersededBy": null
|
|
2265
2267
|
},
|
|
2266
2268
|
"r73": {
|
|
2267
2269
|
"issueID": "ignorable",
|
|
2268
2270
|
"quality": 1,
|
|
2269
|
-
"what": "Text line height is not at least 1.5
|
|
2271
|
+
"what": "Text line height is not at least 1.5",
|
|
2272
|
+
"whyIgnore": "invalid"
|
|
2270
2273
|
},
|
|
2271
2274
|
"r87": {
|
|
2272
2275
|
"issueID": "ignorable",
|
|
2273
2276
|
"quality": .5,
|
|
2274
|
-
"what": "First focusable element is not a link to the main content
|
|
2277
|
+
"what": "First focusable element is not a link to the main content",
|
|
2278
|
+
"whyIgnore": "invalid"
|
|
2275
2279
|
},
|
|
2276
2280
|
"r3": {
|
|
2277
2281
|
"issueID": "duplicateID",
|
|
@@ -2587,87 +2591,104 @@ const rulesData = {
|
|
|
2587
2591
|
"capital_letters_words": {
|
|
2588
2592
|
"issueID": "ignorable",
|
|
2589
2593
|
"quality": 1,
|
|
2590
|
-
"what": "Element or its title has entirely upper-case words
|
|
2594
|
+
"what": "Element or its title has entirely upper-case words",
|
|
2595
|
+
"whyIgnore": "invalid"
|
|
2591
2596
|
},
|
|
2592
2597
|
"color_contrast_aa": {
|
|
2593
2598
|
"issueID": "ignorable",
|
|
2594
2599
|
"quality": 0,
|
|
2595
|
-
"what": "Text has contrast less than 4.5:1
|
|
2600
|
+
"what": "Text has contrast less than 4.5:1",
|
|
2601
|
+
"whyIgnore": "speculative"
|
|
2596
2602
|
},
|
|
2597
2603
|
"color_contrast_aaa": {
|
|
2598
2604
|
"issueID": "ignorable",
|
|
2599
2605
|
"quality": 1,
|
|
2600
|
-
"what": "Text contrast may be less than enhanced but the element is invisible
|
|
2606
|
+
"what": "Text contrast may be less than enhanced but the element is invisible",
|
|
2607
|
+
"whyIgnore": "invalid"
|
|
2601
2608
|
},
|
|
2602
2609
|
"css_images_convey_information": {
|
|
2603
2610
|
"issueID": "ignorable",
|
|
2604
2611
|
"quality": 1,
|
|
2605
|
-
"what": "Background image may be informative
|
|
2612
|
+
"what": "Background image may be informative",
|
|
2613
|
+
"whyIgnore": "speculative"
|
|
2606
2614
|
},
|
|
2607
2615
|
"empty_link_element": {
|
|
2608
2616
|
"issueID": "ignorable",
|
|
2609
2617
|
"quality": 1,
|
|
2610
|
-
"what": "Element has no visible and accessible name
|
|
2618
|
+
"what": "Element has no visible and accessible name",
|
|
2619
|
+
"whyIgnore": "invalid"
|
|
2611
2620
|
},
|
|
2612
2621
|
"fieldset_no_legend": {
|
|
2613
2622
|
"issueID": "ignorable",
|
|
2614
2623
|
"quality": 1,
|
|
2615
|
-
"what": "First child element of the element is not a legend
|
|
2624
|
+
"what": "First child element of the element is not a legend",
|
|
2625
|
+
"whyIgnore": "duplicative"
|
|
2616
2626
|
},
|
|
2617
2627
|
"flickering": {
|
|
2618
2628
|
"issueID": "ignorable",
|
|
2619
2629
|
"quality": 0,
|
|
2620
|
-
"what": "Excessive flashing may exist
|
|
2630
|
+
"what": "Excessive flashing may exist",
|
|
2631
|
+
"whyIgnore": "speculative"
|
|
2621
2632
|
},
|
|
2622
2633
|
"links_language_destination": {
|
|
2623
2634
|
"issueID": "ignorable",
|
|
2624
2635
|
"quality": 1,
|
|
2625
|
-
"what": "Link destination has a named host and may be in an unexpected language
|
|
2636
|
+
"what": "Link destination has a named host and may be in an unexpected language",
|
|
2637
|
+
"whyIgnore": "speculative"
|
|
2626
2638
|
},
|
|
2627
2639
|
"links_not_visually_evident_without_color_vision": {
|
|
2628
2640
|
"issueID": "ignorable",
|
|
2629
2641
|
"quality": 1,
|
|
2630
|
-
"what": "Element is a link, but its style properties do not differentiate it from its parent
|
|
2642
|
+
"what": "Element is a link, but its style properties do not differentiate it from its parent",
|
|
2643
|
+
"whyIgnore": "irrelevant"
|
|
2631
2644
|
},
|
|
2632
2645
|
"links_same_content_different_url": {
|
|
2633
2646
|
"issueID": "ignorable",
|
|
2634
2647
|
"quality": 1,
|
|
2635
|
-
"what": "Links with the same text content have different destination URLs
|
|
2648
|
+
"what": "Links with the same text content have different destination URLs",
|
|
2649
|
+
"whyIgnore": "invalid"
|
|
2636
2650
|
},
|
|
2637
2651
|
"meaningful_content_sequence": {
|
|
2638
2652
|
"issueID": "ignorable",
|
|
2639
2653
|
"quality": 0,
|
|
2640
|
-
"what": "The content sequence may fail to be meaningful
|
|
2654
|
+
"what": "The content sequence may fail to be meaningful",
|
|
2655
|
+
"whyIgnore": "speculative"
|
|
2641
2656
|
},
|
|
2642
2657
|
"missing_alt_attribute": {
|
|
2643
2658
|
"issueID": "ignorable",
|
|
2644
2659
|
"quality": 1,
|
|
2645
|
-
"what": "Image has no alt attribute
|
|
2660
|
+
"what": "Image has no alt attribute",
|
|
2661
|
+
"whyIgnore": "invalid"
|
|
2646
2662
|
},
|
|
2647
2663
|
"motion_actuation": {
|
|
2648
2664
|
"issueID": "ignorable",
|
|
2649
2665
|
"quality": 0,
|
|
2650
|
-
"what": "Document listens for device motion or rotation
|
|
2666
|
+
"what": "Document listens for device motion or rotation",
|
|
2667
|
+
"whyIgnore": "speculative"
|
|
2651
2668
|
},
|
|
2652
2669
|
"overlay": {
|
|
2653
2670
|
"issueID": "ignorable",
|
|
2654
2671
|
"quality": 0,
|
|
2655
|
-
"what": "Document contains a commercial overlay modifier that may fail or invalidate test results
|
|
2672
|
+
"what": "Document contains a commercial overlay modifier that may fail or invalidate test results",
|
|
2673
|
+
"whyIgnore": "unreliable"
|
|
2656
2674
|
},
|
|
2657
2675
|
"object_missing_body": {
|
|
2658
2676
|
"issueID": "ignorable",
|
|
2659
2677
|
"quality": 0,
|
|
2660
|
-
"what": "object element has no body to act as a text alternative
|
|
2678
|
+
"what": "object element has no body to act as a text alternative",
|
|
2679
|
+
"whyIgnore": "invalid"
|
|
2661
2680
|
},
|
|
2662
2681
|
"reflow": {
|
|
2663
2682
|
"issueID": "ignorable",
|
|
2664
2683
|
"quality": 0,
|
|
2665
|
-
"what": "Page may require horizontal scrolling
|
|
2684
|
+
"what": "Page may require horizontal scrolling",
|
|
2685
|
+
"whyIgnore": "speculative"
|
|
2666
2686
|
},
|
|
2667
2687
|
"text_color_convey_information": {
|
|
2668
2688
|
"issueID": "ignorable",
|
|
2669
2689
|
"quality": 1,
|
|
2670
|
-
"what": "Color may give information not given also by text
|
|
2690
|
+
"what": "Color may give information not given also by text",
|
|
2691
|
+
"whyIgnore": "speculative"
|
|
2671
2692
|
},
|
|
2672
2693
|
"duplicated_id_attribute": {
|
|
2673
2694
|
"issueID": "duplicateID",
|
|
@@ -3287,17 +3308,20 @@ const rulesData = {
|
|
|
3287
3308
|
"css-orientation-lock": {
|
|
3288
3309
|
"issueID": "ignorable",
|
|
3289
3310
|
"quality": 0,
|
|
3290
|
-
"what": "CSS media query locks display orientation
|
|
3311
|
+
"what": "CSS media query locks display orientation",
|
|
3312
|
+
"whyIgnore": "unreliable"
|
|
3291
3313
|
},
|
|
3292
3314
|
"frame-tested": {
|
|
3293
3315
|
"issueID": "ignorable",
|
|
3294
3316
|
"quality": 0,
|
|
3295
|
-
"what": "Some content is in an iframe and so may not be testable for accessibility
|
|
3317
|
+
"what": "Some content is in an iframe and so may not be testable for accessibility",
|
|
3318
|
+
"whyIgnore": "speculative"
|
|
3296
3319
|
},
|
|
3297
3320
|
"hidden-content": {
|
|
3298
3321
|
"issueID": "ignorable",
|
|
3299
3322
|
"quality": 0,
|
|
3300
|
-
"what": "Some content is hidden and so may not be testable for accessibility
|
|
3323
|
+
"what": "Some content is hidden and so may not be testable for accessibility",
|
|
3324
|
+
"whyIgnore": "speculative"
|
|
3301
3325
|
},
|
|
3302
3326
|
"duplicate-id": {
|
|
3303
3327
|
"issueID": "duplicateID",
|
|
@@ -3717,37 +3741,44 @@ const rulesData = {
|
|
|
3717
3741
|
"altNull": {
|
|
3718
3742
|
"issueID": "ignorable",
|
|
3719
3743
|
"quality": 0,
|
|
3720
|
-
"what": "img element not inside a link has an empty alt attribute
|
|
3744
|
+
"what": "img element not inside a link has an empty alt attribute",
|
|
3745
|
+
"whyIgnore": "speculative"
|
|
3721
3746
|
},
|
|
3722
3747
|
"altPartOfLinkWithText": {
|
|
3723
3748
|
"issueID": "ignorable",
|
|
3724
3749
|
"quality": 0,
|
|
3725
|
-
"what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear
|
|
3750
|
+
"what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear",
|
|
3751
|
+
"whyIgnore": "speculative"
|
|
3726
3752
|
},
|
|
3727
3753
|
"embedAudio": {
|
|
3728
3754
|
"issueID": "ignorable",
|
|
3729
3755
|
"quality": 0,
|
|
3730
|
-
"what": "Element is audio, so may lack an accurate transcript
|
|
3756
|
+
"what": "Element is audio, so may lack an accurate transcript",
|
|
3757
|
+
"whyIgnore": "speculative"
|
|
3731
3758
|
},
|
|
3732
3759
|
"embedCustom": {
|
|
3733
3760
|
"issueID": "ignorable",
|
|
3734
3761
|
"quality": 0,
|
|
3735
|
-
"what": "Embedded custom element may fail to be accessible
|
|
3762
|
+
"what": "Embedded custom element may fail to be accessible",
|
|
3763
|
+
"whyIgnore": "speculative"
|
|
3736
3764
|
},
|
|
3737
3765
|
"embedTwitter": {
|
|
3738
3766
|
"issueID": "ignorable",
|
|
3739
3767
|
"quality": 0,
|
|
3740
|
-
"what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard
|
|
3768
|
+
"what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard",
|
|
3769
|
+
"whyIgnore": "speculative"
|
|
3741
3770
|
},
|
|
3742
3771
|
"embedVideo": {
|
|
3743
3772
|
"issueID": "ignorable",
|
|
3744
3773
|
"quality": 0,
|
|
3745
|
-
"what": "Element is video, so may lack captions
|
|
3774
|
+
"what": "Element is video, so may lack captions",
|
|
3775
|
+
"whyIgnore": "speculative"
|
|
3746
3776
|
},
|
|
3747
3777
|
"embedVisualization": {
|
|
3748
3778
|
"issueID": "ignorable",
|
|
3749
3779
|
"quality": 0,
|
|
3750
|
-
"what": "Element is a visualization, so may lack a nonvisual equivalent
|
|
3780
|
+
"what": "Element is a visualization, so may lack a nonvisual equivalent",
|
|
3781
|
+
"whyIgnore": "speculative"
|
|
3751
3782
|
},
|
|
3752
3783
|
"altMissing": {
|
|
3753
3784
|
"issueID": "imageNoText",
|
|
@@ -3892,7 +3923,8 @@ const rulesData = {
|
|
|
3892
3923
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48": {
|
|
3893
3924
|
"issueID": "ignorable",
|
|
3894
3925
|
"quality": 1,
|
|
3895
|
-
"what": "If element contains a navigation section, it is recommended that it be marked up as a list
|
|
3926
|
+
"what": "If element contains a navigation section, it is recommended that it be marked up as a list",
|
|
3927
|
+
"whyIgnore": "speculative"
|
|
3896
3928
|
},
|
|
3897
3929
|
"E-AAA.4_1_1.F77": {
|
|
3898
3930
|
"issueID": "duplicateID",
|
|
@@ -4797,22 +4829,26 @@ const rulesData = {
|
|
|
4797
4829
|
"aria_child_valid": {
|
|
4798
4830
|
"issueID": "ignorable",
|
|
4799
4831
|
"quality": 1,
|
|
4800
|
-
"what": "Child element has a role not allowed for the role of the parent
|
|
4832
|
+
"what": "Child element has a role not allowed for the role of the parent",
|
|
4833
|
+
"whyIgnore": "invalid"
|
|
4801
4834
|
},
|
|
4802
4835
|
"aria_landmark_name_unique": {
|
|
4803
4836
|
"issueID": "ignorable",
|
|
4804
4837
|
"quality": 1,
|
|
4805
|
-
"what": "Multiple landmarks with the same parent region are not distinguished from one another
|
|
4838
|
+
"what": "Multiple landmarks with the same parent region are not distinguished from one another (invalid on invisible elements)",
|
|
4839
|
+
"whyIgnore": "invalid"
|
|
4806
4840
|
},
|
|
4807
4841
|
"html_lang_exists": {
|
|
4808
4842
|
"issueID": "ignorable",
|
|
4809
4843
|
"quality": 1,
|
|
4810
|
-
"what": "Page detected as HTML, but has no lang attribute
|
|
4844
|
+
"what": "Page detected as HTML, but has no lang attribute",
|
|
4845
|
+
"whyIgnore": "invalid"
|
|
4811
4846
|
},
|
|
4812
4847
|
"style_background_decorative": {
|
|
4813
4848
|
"issueID": "ignorable",
|
|
4814
4849
|
"quality": 1,
|
|
4815
|
-
"what": "CSS background image may be informative
|
|
4850
|
+
"what": "CSS background image may be informative",
|
|
4851
|
+
"whyIgnore": "speculative"
|
|
4816
4852
|
},
|
|
4817
4853
|
"element_id_unique": {
|
|
4818
4854
|
"issueID": "duplicateID",
|
|
@@ -5418,22 +5454,26 @@ const rulesData = {
|
|
|
5418
5454
|
"Element head is missing a required instance of child element title.": {
|
|
5419
5455
|
"issueID": "ignorable",
|
|
5420
5456
|
"quality": 1,
|
|
5421
|
-
"what": "head element has no child title element
|
|
5457
|
+
"what": "head element has no child title element",
|
|
5458
|
+
"whyIgnore": "invalid"
|
|
5422
5459
|
},
|
|
5423
5460
|
"Element img is missing required attribute src.": {
|
|
5424
5461
|
"issueID": "ignorable",
|
|
5425
5462
|
"quality": 1,
|
|
5426
|
-
"what": "img element has no src attribute
|
|
5463
|
+
"what": "img element has no src attribute",
|
|
5464
|
+
"whyIgnore": "invalid"
|
|
5427
5465
|
},
|
|
5428
5466
|
"Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
|
|
5429
5467
|
"issueID": "ignorable",
|
|
5430
5468
|
"quality": 0,
|
|
5431
|
-
"what": "Element contains a prohibited mediaelementwrapper element
|
|
5469
|
+
"what": "Element contains a prohibited mediaelementwrapper element",
|
|
5470
|
+
"whyIgnore": "invalid"
|
|
5432
5471
|
},
|
|
5433
5472
|
"Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
|
|
5434
5473
|
"issueID": "ignorable",
|
|
5435
5474
|
"quality": 1,
|
|
5436
|
-
"what": "Void element has a useless trailing slash.
|
|
5475
|
+
"what": "Void element has a useless trailing slash.",
|
|
5476
|
+
"whyIgnore": "invalid"
|
|
5437
5477
|
},
|
|
5438
5478
|
"The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
|
|
5439
5479
|
"issueID": "placeholderPlusAria",
|
|
@@ -6964,22 +7004,26 @@ const rulesData = {
|
|
|
6964
7004
|
"Element head is missing a required instance of child element title.": {
|
|
6965
7005
|
"issueID": "ignorable",
|
|
6966
7006
|
"quality": 1,
|
|
6967
|
-
"what": "head element has no child title element
|
|
7007
|
+
"what": "head element has no child title element",
|
|
7008
|
+
"whyIgnore": "invalid"
|
|
6968
7009
|
},
|
|
6969
7010
|
"Element img is missing required attribute src.": {
|
|
6970
7011
|
"issueID": "ignorable",
|
|
6971
7012
|
"quality": 1,
|
|
6972
|
-
"what": "img element has no src attribute
|
|
7013
|
+
"what": "img element has no src attribute",
|
|
7014
|
+
"whyIgnore": "invalid"
|
|
6973
7015
|
},
|
|
6974
7016
|
"Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
|
|
6975
7017
|
"issueID": "ignorable",
|
|
6976
7018
|
"quality": 0,
|
|
6977
|
-
"what": "Element contains a prohibited mediaelementwrapper element
|
|
7019
|
+
"what": "Element contains a prohibited mediaelementwrapper element",
|
|
7020
|
+
"whyIgnore": "invalid"
|
|
6978
7021
|
},
|
|
6979
7022
|
"Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
|
|
6980
7023
|
"issueID": "ignorable",
|
|
6981
7024
|
"quality": 1,
|
|
6982
|
-
"what": "Void element has a useless trailing slash.
|
|
7025
|
+
"what": "Void element has a useless trailing slash.",
|
|
7026
|
+
"whyIgnore": "invalid"
|
|
6983
7027
|
},
|
|
6984
7028
|
"The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
|
|
6985
7029
|
"issueID": "placeholderPlusAria",
|
|
@@ -8510,157 +8554,188 @@ const rulesData = {
|
|
|
8510
8554
|
"QW-ACT-R10": {
|
|
8511
8555
|
"issueID": "ignorable",
|
|
8512
8556
|
"quality": 1,
|
|
8513
|
-
"what": "iframe elements with identical accessible names have different purposes
|
|
8557
|
+
"what": "iframe elements with identical accessible names have different purposes (on invisible elements)",
|
|
8558
|
+
"whyIgnore": "invalid"
|
|
8514
8559
|
},
|
|
8515
8560
|
"QW-ACT-R13": {
|
|
8516
8561
|
"issueID": "ignorable",
|
|
8517
8562
|
"quality": 1,
|
|
8518
|
-
"what": "Element with aria-hidden has focusable content
|
|
8563
|
+
"what": "Element with aria-hidden has focusable content",
|
|
8564
|
+
"whyIgnore": "invalid"
|
|
8519
8565
|
},
|
|
8520
8566
|
"QW-ACT-R41": {
|
|
8521
8567
|
"issueID": "ignorable",
|
|
8522
8568
|
"quality": 1,
|
|
8523
|
-
"what": "Error message describes no invalid form field value
|
|
8569
|
+
"what": "Error message describes no invalid form field value",
|
|
8570
|
+
"whyIgnore": "speculative"
|
|
8524
8571
|
},
|
|
8525
8572
|
"QW-ACT-R52": {
|
|
8526
8573
|
"issueID": "ignorable",
|
|
8527
8574
|
"quality": 0,
|
|
8528
|
-
"what": "video element visual-only content has no description track
|
|
8575
|
+
"what": "video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)",
|
|
8576
|
+
"whyIgnore": "irrelevant"
|
|
8529
8577
|
},
|
|
8530
8578
|
"QW-ACT-R57": {
|
|
8531
8579
|
"issueID": "ignorable",
|
|
8532
8580
|
"quality": 0,
|
|
8533
|
-
"what": "video element visual content has no description track
|
|
8581
|
+
"what": "video element visual content has no description track (description tracks and this ACT rule have been deprecated)",
|
|
8582
|
+
"whyIgnore": "irrelevant"
|
|
8534
8583
|
},
|
|
8535
8584
|
"QW-ACT-R62": {
|
|
8536
8585
|
"issueID": "ignorable",
|
|
8537
8586
|
"quality": 0,
|
|
8538
|
-
"what": "Element in the sequential focus order may have no visible focus
|
|
8587
|
+
"what": "Element in the sequential focus order may have no visible focus",
|
|
8588
|
+
"whyIgnore": "speculative"
|
|
8539
8589
|
},
|
|
8540
8590
|
"QW-ACT-R63": {
|
|
8541
8591
|
"issueID": "ignorable",
|
|
8542
8592
|
"quality": 0,
|
|
8543
|
-
"what": "Document has no landmark with non-repeated content
|
|
8593
|
+
"what": "Document has no landmark with non-repeated content",
|
|
8594
|
+
"whyIgnore": "invalid"
|
|
8544
8595
|
},
|
|
8545
8596
|
"QW-ACT-R64": {
|
|
8546
8597
|
"issueID": "ignorable",
|
|
8547
8598
|
"quality": 0,
|
|
8548
|
-
"what": "Document has no heading for non-repeated content
|
|
8599
|
+
"what": "Document has no heading for non-repeated content",
|
|
8600
|
+
"whyIgnore": "invalid"
|
|
8549
8601
|
},
|
|
8550
8602
|
"QW-ACT-R73": {
|
|
8551
8603
|
"issueID": "ignorable",
|
|
8552
8604
|
"quality": 0,
|
|
8553
|
-
"what": "Block of repeated content is not collapsible
|
|
8605
|
+
"what": "Block of repeated content is not collapsible",
|
|
8606
|
+
"whyIgnore": "invalid"
|
|
8554
8607
|
},
|
|
8555
8608
|
"QW-ACT-R74": {
|
|
8556
8609
|
"issueID": "ignorable",
|
|
8557
8610
|
"quality": 0,
|
|
8558
|
-
"what": "Document has no instrument to move focus to non-repeated content
|
|
8611
|
+
"what": "Document has no instrument to move focus to non-repeated content",
|
|
8612
|
+
"whyIgnore": "invalid"
|
|
8559
8613
|
},
|
|
8560
8614
|
"QW-ACT-R75": {
|
|
8561
8615
|
"issueID": "ignorable",
|
|
8562
8616
|
"quality": 0,
|
|
8563
|
-
"what": "Blocks of repeated content cannot be bypassed
|
|
8617
|
+
"what": "Blocks of repeated content cannot be bypassed",
|
|
8618
|
+
"whyIgnore": "invalid"
|
|
8564
8619
|
},
|
|
8565
8620
|
"QW-BP1": {
|
|
8566
8621
|
"issueID": "ignorable",
|
|
8567
8622
|
"quality": 0,
|
|
8568
|
-
"what": "h1-h6 may fail to be used to identify headings
|
|
8623
|
+
"what": "h1-h6 may fail to be used to identify headings",
|
|
8624
|
+
"whyIgnore": "speculative"
|
|
8569
8625
|
},
|
|
8570
8626
|
"QW-BP2": {
|
|
8571
8627
|
"issueID": "ignorable",
|
|
8572
8628
|
"quality": 1,
|
|
8573
|
-
"what": "Image text alternative is not concise
|
|
8629
|
+
"what": "Image text alternative is not concise",
|
|
8630
|
+
"whyIgnore": "invalid"
|
|
8574
8631
|
},
|
|
8575
8632
|
"QW-BP17": {
|
|
8576
8633
|
"issueID": "ignorable",
|
|
8577
8634
|
"quality": 1,
|
|
8578
|
-
"what": "No link at the beginning of a block of repeated content goes to the end of the block
|
|
8635
|
+
"what": "No link at the beginning of a block of repeated content goes to the end of the block",
|
|
8636
|
+
"whyIgnore": "invalid"
|
|
8579
8637
|
},
|
|
8580
8638
|
"QW-BP20": {
|
|
8581
8639
|
"issueID": "ignorable",
|
|
8582
8640
|
"quality": 1,
|
|
8583
|
-
"what": "Document has more than 1 banner landmark
|
|
8641
|
+
"what": "Document has more than 1 banner landmark (counts hidden elements)",
|
|
8642
|
+
"whyIgnore": "invalid"
|
|
8584
8643
|
},
|
|
8585
8644
|
"QW-BP22": {
|
|
8586
8645
|
"issueID": "ignorable",
|
|
8587
8646
|
"quality": 1,
|
|
8588
|
-
"what": "Document has more than 1 element with a main role
|
|
8647
|
+
"what": "Document has more than 1 element with a main role",
|
|
8648
|
+
"whyIgnore": "invalid"
|
|
8589
8649
|
},
|
|
8590
8650
|
"QW-BP23": {
|
|
8591
8651
|
"issueID": "ignorable",
|
|
8592
8652
|
"quality": .1,
|
|
8593
|
-
"what": "Element is not in a true list
|
|
8653
|
+
"what": "Element is not in a true list",
|
|
8654
|
+
"whyIgnore": "invalid"
|
|
8594
8655
|
},
|
|
8595
8656
|
"QW-BP24": {
|
|
8596
8657
|
"issueID": "ignorable",
|
|
8597
8658
|
"quality": 1,
|
|
8598
|
-
"what": "ul or ol element has a child other than li, script, or template
|
|
8659
|
+
"what": "ul or ol element has a child other than li, script, or template",
|
|
8660
|
+
"whyIgnore": "invalid"
|
|
8599
8661
|
},
|
|
8600
8662
|
"QW-BP28": {
|
|
8601
8663
|
"issueID": "ignorable",
|
|
8602
8664
|
"quality": 1,
|
|
8603
|
-
"what": "h1 element missing or used more than once
|
|
8665
|
+
"what": "h1 element missing or used more than once",
|
|
8666
|
+
"whyIgnore": "invalid"
|
|
8604
8667
|
},
|
|
8605
8668
|
"QW-BP29": {
|
|
8606
8669
|
"issueID": "ignorable",
|
|
8607
8670
|
"quality": 0,
|
|
8608
|
-
"what": "lang and xml:lang attribute of html element differ
|
|
8671
|
+
"what": "lang and xml:lang attribute of html element differ",
|
|
8672
|
+
"whyIgnore": "invalid"
|
|
8609
8673
|
},
|
|
8610
8674
|
"QW-WCAG-T4": {
|
|
8611
8675
|
"issueID": "ignorable",
|
|
8612
8676
|
"quality": 0,
|
|
8613
|
-
"what": "summary attribute is not used to give an overview of a data table
|
|
8677
|
+
"what": "summary attribute is not used to give an overview of a data table",
|
|
8678
|
+
"whyIgnore": "invalid"
|
|
8614
8679
|
},
|
|
8615
8680
|
"QW-WCAG-T8": {
|
|
8616
8681
|
"issueID": "ignorable",
|
|
8617
8682
|
"quality": 1,
|
|
8618
|
-
"what": "Text alternative is suspect
|
|
8683
|
+
"what": "Text alternative is suspect",
|
|
8684
|
+
"whyIgnore": "invalid"
|
|
8619
8685
|
},
|
|
8620
8686
|
"QW-WCAG-T9": {
|
|
8621
8687
|
"issueID": "ignorable",
|
|
8622
8688
|
"quality": 0,
|
|
8623
|
-
"what": "Page may fail to be organized using headings
|
|
8689
|
+
"what": "Page may fail to be organized using headings",
|
|
8690
|
+
"whyIgnore": "speculative"
|
|
8624
8691
|
},
|
|
8625
8692
|
"QW-WCAG-T15": {
|
|
8626
8693
|
"issueID": "ignorable",
|
|
8627
8694
|
"quality": 0,
|
|
8628
|
-
"what": "link element may be used for navigation but not in the head
|
|
8695
|
+
"what": "link element may be used for navigation but not in the head",
|
|
8696
|
+
"whyIgnore": "invalid"
|
|
8629
8697
|
},
|
|
8630
8698
|
"QW-WCAG-T20": {
|
|
8631
8699
|
"issueID": "ignorable",
|
|
8632
8700
|
"quality": 0,
|
|
8633
|
-
"what": "Link title may fail to describe the link correctly
|
|
8701
|
+
"what": "Link title may fail to describe the link correctly",
|
|
8702
|
+
"whyIgnore": "speculative"
|
|
8634
8703
|
},
|
|
8635
8704
|
"QW-WCAG-T23": {
|
|
8636
8705
|
"issueID": "ignorable",
|
|
8637
8706
|
"quality": 0,
|
|
8638
|
-
"what": "No link at the top of the page goes directly to the main content area
|
|
8707
|
+
"what": "No link at the top of the page goes directly to the main content area",
|
|
8708
|
+
"whyIgnore": "invalid"
|
|
8639
8709
|
},
|
|
8640
8710
|
"QW-WCAG-T24": {
|
|
8641
8711
|
"issueID": "ignorable",
|
|
8642
8712
|
"quality": .5,
|
|
8643
|
-
"what": "Script removes the focus when focus is received
|
|
8713
|
+
"what": "Script removes the focus when focus is received",
|
|
8714
|
+
"whyIgnore": "invalid"
|
|
8644
8715
|
},
|
|
8645
8716
|
"QW-WCAG-T28": {
|
|
8646
8717
|
"issueID": "ignorable",
|
|
8647
8718
|
"quality": .8,
|
|
8648
|
-
"what": "Font size set to an absolute unit value
|
|
8719
|
+
"what": "Font size set to an absolute unit value",
|
|
8720
|
+
"whyIgnore": "invalid"
|
|
8649
8721
|
},
|
|
8650
8722
|
"QW-WCAG-T31": {
|
|
8651
8723
|
"issueID": "ignorable",
|
|
8652
8724
|
"quality": 1,
|
|
8653
|
-
"what": "Foreground or background color is specified but not both
|
|
8725
|
+
"what": "Foreground or background color is specified but not both (on invisible elements)",
|
|
8726
|
+
"whyIgnore": "invalid"
|
|
8654
8727
|
},
|
|
8655
8728
|
"QW-WCAG-T32": {
|
|
8656
8729
|
"issueID": "ignorable",
|
|
8657
8730
|
"quality": 1,
|
|
8658
|
-
"what": "ol, ul or dl may fail to be used for a list or group of links
|
|
8731
|
+
"what": "ol, ul or dl may fail to be used for a list or group of links",
|
|
8732
|
+
"whyIgnore": "speculative"
|
|
8659
8733
|
},
|
|
8660
8734
|
"QW-WCAG-T35": {
|
|
8661
8735
|
"issueID": "ignorable",
|
|
8662
8736
|
"quality": 1,
|
|
8663
|
-
"what": "Several elements have this id attribute value
|
|
8737
|
+
"what": "Several elements have this id attribute value",
|
|
8738
|
+
"whyIgnore": "invalid"
|
|
8664
8739
|
},
|
|
8665
8740
|
"QW-ACT-R18": {
|
|
8666
8741
|
"issueID": "duplicateID",
|
|
@@ -9762,7 +9837,7 @@ const rules = deepFreeze(rulesData);
|
|
|
9762
9837
|
const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
9763
9838
|
const errors = [];
|
|
9764
9839
|
const checkEntry = (engineID, variabilityName, ruleID, entry, engineRuleIDs) => {
|
|
9765
|
-
const { issueID, quality, what, supersededBy, outcome, uncertainty,
|
|
9840
|
+
const { issueID, quality, what, supersededBy, outcome, uncertainty, toCheck, whyIgnore: entryWhyIgnore } = entry;
|
|
9766
9841
|
if (!ruleID.length) errors.push(`${engineID}.${variabilityName} has a rule with an empty ruleID`);
|
|
9767
9842
|
if (typeof issueID !== "string" || !issueID.length || !(issueID in issueTable)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid issueID (${JSON.stringify(issueID)})`);
|
|
9768
9843
|
if (typeof quality !== "number") errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-numeric quality (${JSON.stringify(quality)})`);
|
|
@@ -9774,8 +9849,8 @@ const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
|
9774
9849
|
}
|
|
9775
9850
|
if (outcome !== void 0 && !outcomes.includes(outcome)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid outcome (${JSON.stringify(outcome)})`);
|
|
9776
9851
|
if (uncertainty !== void 0 && !uncertainties.includes(uncertainty)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid uncertainty (${JSON.stringify(uncertainty)})`);
|
|
9777
|
-
if (
|
|
9778
|
-
if (
|
|
9852
|
+
if (toCheck !== void 0 && (typeof toCheck !== "string" || !toCheck.length)) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string or empty toCheck (${JSON.stringify(toCheck)})`);
|
|
9853
|
+
if (entryWhyIgnore !== void 0 && !whyIgnore.includes(entryWhyIgnore)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid whyIgnore (${JSON.stringify(entryWhyIgnore)})`);
|
|
9779
9854
|
if (variabilityName === "variable") {
|
|
9780
9855
|
if (!/[.*+?^${}()|[\]\\]/.test(ruleID)) errors.push(`${engineID}.${variabilityName}.${ruleID} has no regex metacharacters, so it should be an invariant rule`);
|
|
9781
9856
|
else try {
|
package/dist/index.d.cts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
2
|
declare const outcomes: readonly ['failed', 'cantTell'];
|
|
3
3
|
declare const uncertainties: readonly ['not-computable', 'judgement-required', 'runtime-dependent', 'spec-only', 'equivalence-unknown', 'out-of-scope'];
|
|
4
|
-
declare const whyIgnore: readonly ['invalid', 'irrelevant', '
|
|
4
|
+
declare const whyIgnore: readonly ['duplicative', 'invalid', 'irrelevant', 'speculative', 'unreliable'];
|
|
5
5
|
type IssueID = keyof typeof issuesData;
|
|
6
6
|
type IssueEngineRuleCounts = Record<string, number>;
|
|
7
7
|
type Outcome = typeof outcomes[number];
|
|
8
8
|
type Uncertainty = typeof uncertainties[number];
|
|
9
|
-
type
|
|
9
|
+
type WhyIgnore = typeof whyIgnore[number];
|
|
10
10
|
interface Issue {
|
|
11
11
|
summary: string;
|
|
12
12
|
why: string;
|
|
@@ -25,8 +25,8 @@ interface RuleEntry {
|
|
|
25
25
|
supersededBy?: string | null;
|
|
26
26
|
outcome?: Outcome;
|
|
27
27
|
uncertainty?: Uncertainty;
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
toCheck?: string;
|
|
29
|
+
whyIgnore?: WhyIgnore;
|
|
30
30
|
}
|
|
31
31
|
interface EngineRules {
|
|
32
32
|
invariant: Record<string, RuleEntry>;
|
|
@@ -2289,4 +2289,4 @@ declare const getEngineRuleCounts: (ruleTable?: Record<string, EngineRules>) =>
|
|
|
2289
2289
|
declare const issueRules: Record<string, Record<string, ruleIDsByType>>;
|
|
2290
2290
|
declare const issueStats: Record<string, IssueEngineRuleCounts>;
|
|
2291
2291
|
//#endregion
|
|
2292
|
-
export {
|
|
2292
|
+
export { IssueEngineRuleCounts, Outcome, Uncertainty, WhyIgnore, getEditableData, getEngineRuleCounts, getSingleEngineIssues, issueRules, issueStats, issues, makeIssueRules, makeIssueStats, ruleIDsByType, rules };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
//#region src/index.d.ts
|
|
2
2
|
declare const outcomes: readonly ['failed', 'cantTell'];
|
|
3
3
|
declare const uncertainties: readonly ['not-computable', 'judgement-required', 'runtime-dependent', 'spec-only', 'equivalence-unknown', 'out-of-scope'];
|
|
4
|
-
declare const whyIgnore: readonly ['invalid', 'irrelevant', '
|
|
4
|
+
declare const whyIgnore: readonly ['duplicative', 'invalid', 'irrelevant', 'speculative', 'unreliable'];
|
|
5
5
|
type IssueID = keyof typeof issuesData;
|
|
6
6
|
type IssueEngineRuleCounts = Record<string, number>;
|
|
7
7
|
type Outcome = typeof outcomes[number];
|
|
8
8
|
type Uncertainty = typeof uncertainties[number];
|
|
9
|
-
type
|
|
9
|
+
type WhyIgnore = typeof whyIgnore[number];
|
|
10
10
|
interface Issue {
|
|
11
11
|
summary: string;
|
|
12
12
|
why: string;
|
|
@@ -25,8 +25,8 @@ interface RuleEntry {
|
|
|
25
25
|
supersededBy?: string | null;
|
|
26
26
|
outcome?: Outcome;
|
|
27
27
|
uncertainty?: Uncertainty;
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
toCheck?: string;
|
|
29
|
+
whyIgnore?: WhyIgnore;
|
|
30
30
|
}
|
|
31
31
|
interface EngineRules {
|
|
32
32
|
invariant: Record<string, RuleEntry>;
|
|
@@ -2289,4 +2289,4 @@ declare const getEngineRuleCounts: (ruleTable?: Record<string, EngineRules>) =>
|
|
|
2289
2289
|
declare const issueRules: Record<string, Record<string, ruleIDsByType>>;
|
|
2290
2290
|
declare const issueStats: Record<string, IssueEngineRuleCounts>;
|
|
2291
2291
|
//#endregion
|
|
2292
|
-
export {
|
|
2292
|
+
export { IssueEngineRuleCounts, Outcome, Uncertainty, WhyIgnore, getEditableData, getEngineRuleCounts, getSingleEngineIssues, issueRules, issueStats, issues, makeIssueRules, makeIssueStats, ruleIDsByType, rules };
|
package/dist/index.mjs
CHANGED
|
@@ -9,9 +9,10 @@ const uncertainties = [
|
|
|
9
9
|
"out-of-scope"
|
|
10
10
|
];
|
|
11
11
|
const whyIgnore = [
|
|
12
|
+
"duplicative",
|
|
12
13
|
"invalid",
|
|
13
14
|
"irrelevant",
|
|
14
|
-
"
|
|
15
|
+
"speculative",
|
|
15
16
|
"unreliable"
|
|
16
17
|
];
|
|
17
18
|
const issuesData = {
|
|
@@ -2259,18 +2260,21 @@ const rulesData = {
|
|
|
2259
2260
|
"cantTellTextContrast": {
|
|
2260
2261
|
"issueID": "ignorable",
|
|
2261
2262
|
"quality": 1,
|
|
2262
|
-
"what": "Test of text contrast could not give a conclusive result
|
|
2263
|
+
"what": "Test of text contrast could not give a conclusive result",
|
|
2264
|
+
"whyIgnore": "invalid",
|
|
2263
2265
|
"supersededBy": null
|
|
2264
2266
|
},
|
|
2265
2267
|
"r73": {
|
|
2266
2268
|
"issueID": "ignorable",
|
|
2267
2269
|
"quality": 1,
|
|
2268
|
-
"what": "Text line height is not at least 1.5
|
|
2270
|
+
"what": "Text line height is not at least 1.5",
|
|
2271
|
+
"whyIgnore": "invalid"
|
|
2269
2272
|
},
|
|
2270
2273
|
"r87": {
|
|
2271
2274
|
"issueID": "ignorable",
|
|
2272
2275
|
"quality": .5,
|
|
2273
|
-
"what": "First focusable element is not a link to the main content
|
|
2276
|
+
"what": "First focusable element is not a link to the main content",
|
|
2277
|
+
"whyIgnore": "invalid"
|
|
2274
2278
|
},
|
|
2275
2279
|
"r3": {
|
|
2276
2280
|
"issueID": "duplicateID",
|
|
@@ -2586,87 +2590,104 @@ const rulesData = {
|
|
|
2586
2590
|
"capital_letters_words": {
|
|
2587
2591
|
"issueID": "ignorable",
|
|
2588
2592
|
"quality": 1,
|
|
2589
|
-
"what": "Element or its title has entirely upper-case words
|
|
2593
|
+
"what": "Element or its title has entirely upper-case words",
|
|
2594
|
+
"whyIgnore": "invalid"
|
|
2590
2595
|
},
|
|
2591
2596
|
"color_contrast_aa": {
|
|
2592
2597
|
"issueID": "ignorable",
|
|
2593
2598
|
"quality": 0,
|
|
2594
|
-
"what": "Text has contrast less than 4.5:1
|
|
2599
|
+
"what": "Text has contrast less than 4.5:1",
|
|
2600
|
+
"whyIgnore": "speculative"
|
|
2595
2601
|
},
|
|
2596
2602
|
"color_contrast_aaa": {
|
|
2597
2603
|
"issueID": "ignorable",
|
|
2598
2604
|
"quality": 1,
|
|
2599
|
-
"what": "Text contrast may be less than enhanced but the element is invisible
|
|
2605
|
+
"what": "Text contrast may be less than enhanced but the element is invisible",
|
|
2606
|
+
"whyIgnore": "invalid"
|
|
2600
2607
|
},
|
|
2601
2608
|
"css_images_convey_information": {
|
|
2602
2609
|
"issueID": "ignorable",
|
|
2603
2610
|
"quality": 1,
|
|
2604
|
-
"what": "Background image may be informative
|
|
2611
|
+
"what": "Background image may be informative",
|
|
2612
|
+
"whyIgnore": "speculative"
|
|
2605
2613
|
},
|
|
2606
2614
|
"empty_link_element": {
|
|
2607
2615
|
"issueID": "ignorable",
|
|
2608
2616
|
"quality": 1,
|
|
2609
|
-
"what": "Element has no visible and accessible name
|
|
2617
|
+
"what": "Element has no visible and accessible name",
|
|
2618
|
+
"whyIgnore": "invalid"
|
|
2610
2619
|
},
|
|
2611
2620
|
"fieldset_no_legend": {
|
|
2612
2621
|
"issueID": "ignorable",
|
|
2613
2622
|
"quality": 1,
|
|
2614
|
-
"what": "First child element of the element is not a legend
|
|
2623
|
+
"what": "First child element of the element is not a legend",
|
|
2624
|
+
"whyIgnore": "duplicative"
|
|
2615
2625
|
},
|
|
2616
2626
|
"flickering": {
|
|
2617
2627
|
"issueID": "ignorable",
|
|
2618
2628
|
"quality": 0,
|
|
2619
|
-
"what": "Excessive flashing may exist
|
|
2629
|
+
"what": "Excessive flashing may exist",
|
|
2630
|
+
"whyIgnore": "speculative"
|
|
2620
2631
|
},
|
|
2621
2632
|
"links_language_destination": {
|
|
2622
2633
|
"issueID": "ignorable",
|
|
2623
2634
|
"quality": 1,
|
|
2624
|
-
"what": "Link destination has a named host and may be in an unexpected language
|
|
2635
|
+
"what": "Link destination has a named host and may be in an unexpected language",
|
|
2636
|
+
"whyIgnore": "speculative"
|
|
2625
2637
|
},
|
|
2626
2638
|
"links_not_visually_evident_without_color_vision": {
|
|
2627
2639
|
"issueID": "ignorable",
|
|
2628
2640
|
"quality": 1,
|
|
2629
|
-
"what": "Element is a link, but its style properties do not differentiate it from its parent
|
|
2641
|
+
"what": "Element is a link, but its style properties do not differentiate it from its parent",
|
|
2642
|
+
"whyIgnore": "irrelevant"
|
|
2630
2643
|
},
|
|
2631
2644
|
"links_same_content_different_url": {
|
|
2632
2645
|
"issueID": "ignorable",
|
|
2633
2646
|
"quality": 1,
|
|
2634
|
-
"what": "Links with the same text content have different destination URLs
|
|
2647
|
+
"what": "Links with the same text content have different destination URLs",
|
|
2648
|
+
"whyIgnore": "invalid"
|
|
2635
2649
|
},
|
|
2636
2650
|
"meaningful_content_sequence": {
|
|
2637
2651
|
"issueID": "ignorable",
|
|
2638
2652
|
"quality": 0,
|
|
2639
|
-
"what": "The content sequence may fail to be meaningful
|
|
2653
|
+
"what": "The content sequence may fail to be meaningful",
|
|
2654
|
+
"whyIgnore": "speculative"
|
|
2640
2655
|
},
|
|
2641
2656
|
"missing_alt_attribute": {
|
|
2642
2657
|
"issueID": "ignorable",
|
|
2643
2658
|
"quality": 1,
|
|
2644
|
-
"what": "Image has no alt attribute
|
|
2659
|
+
"what": "Image has no alt attribute",
|
|
2660
|
+
"whyIgnore": "invalid"
|
|
2645
2661
|
},
|
|
2646
2662
|
"motion_actuation": {
|
|
2647
2663
|
"issueID": "ignorable",
|
|
2648
2664
|
"quality": 0,
|
|
2649
|
-
"what": "Document listens for device motion or rotation
|
|
2665
|
+
"what": "Document listens for device motion or rotation",
|
|
2666
|
+
"whyIgnore": "speculative"
|
|
2650
2667
|
},
|
|
2651
2668
|
"overlay": {
|
|
2652
2669
|
"issueID": "ignorable",
|
|
2653
2670
|
"quality": 0,
|
|
2654
|
-
"what": "Document contains a commercial overlay modifier that may fail or invalidate test results
|
|
2671
|
+
"what": "Document contains a commercial overlay modifier that may fail or invalidate test results",
|
|
2672
|
+
"whyIgnore": "unreliable"
|
|
2655
2673
|
},
|
|
2656
2674
|
"object_missing_body": {
|
|
2657
2675
|
"issueID": "ignorable",
|
|
2658
2676
|
"quality": 0,
|
|
2659
|
-
"what": "object element has no body to act as a text alternative
|
|
2677
|
+
"what": "object element has no body to act as a text alternative",
|
|
2678
|
+
"whyIgnore": "invalid"
|
|
2660
2679
|
},
|
|
2661
2680
|
"reflow": {
|
|
2662
2681
|
"issueID": "ignorable",
|
|
2663
2682
|
"quality": 0,
|
|
2664
|
-
"what": "Page may require horizontal scrolling
|
|
2683
|
+
"what": "Page may require horizontal scrolling",
|
|
2684
|
+
"whyIgnore": "speculative"
|
|
2665
2685
|
},
|
|
2666
2686
|
"text_color_convey_information": {
|
|
2667
2687
|
"issueID": "ignorable",
|
|
2668
2688
|
"quality": 1,
|
|
2669
|
-
"what": "Color may give information not given also by text
|
|
2689
|
+
"what": "Color may give information not given also by text",
|
|
2690
|
+
"whyIgnore": "speculative"
|
|
2670
2691
|
},
|
|
2671
2692
|
"duplicated_id_attribute": {
|
|
2672
2693
|
"issueID": "duplicateID",
|
|
@@ -3286,17 +3307,20 @@ const rulesData = {
|
|
|
3286
3307
|
"css-orientation-lock": {
|
|
3287
3308
|
"issueID": "ignorable",
|
|
3288
3309
|
"quality": 0,
|
|
3289
|
-
"what": "CSS media query locks display orientation
|
|
3310
|
+
"what": "CSS media query locks display orientation",
|
|
3311
|
+
"whyIgnore": "unreliable"
|
|
3290
3312
|
},
|
|
3291
3313
|
"frame-tested": {
|
|
3292
3314
|
"issueID": "ignorable",
|
|
3293
3315
|
"quality": 0,
|
|
3294
|
-
"what": "Some content is in an iframe and so may not be testable for accessibility
|
|
3316
|
+
"what": "Some content is in an iframe and so may not be testable for accessibility",
|
|
3317
|
+
"whyIgnore": "speculative"
|
|
3295
3318
|
},
|
|
3296
3319
|
"hidden-content": {
|
|
3297
3320
|
"issueID": "ignorable",
|
|
3298
3321
|
"quality": 0,
|
|
3299
|
-
"what": "Some content is hidden and so may not be testable for accessibility
|
|
3322
|
+
"what": "Some content is hidden and so may not be testable for accessibility",
|
|
3323
|
+
"whyIgnore": "speculative"
|
|
3300
3324
|
},
|
|
3301
3325
|
"duplicate-id": {
|
|
3302
3326
|
"issueID": "duplicateID",
|
|
@@ -3716,37 +3740,44 @@ const rulesData = {
|
|
|
3716
3740
|
"altNull": {
|
|
3717
3741
|
"issueID": "ignorable",
|
|
3718
3742
|
"quality": 0,
|
|
3719
|
-
"what": "img element not inside a link has an empty alt attribute
|
|
3743
|
+
"what": "img element not inside a link has an empty alt attribute",
|
|
3744
|
+
"whyIgnore": "speculative"
|
|
3720
3745
|
},
|
|
3721
3746
|
"altPartOfLinkWithText": {
|
|
3722
3747
|
"issueID": "ignorable",
|
|
3723
3748
|
"quality": 0,
|
|
3724
|
-
"what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear
|
|
3749
|
+
"what": "Name of the link enclosing the img element includes its alt attribute, so may be unclear",
|
|
3750
|
+
"whyIgnore": "speculative"
|
|
3725
3751
|
},
|
|
3726
3752
|
"embedAudio": {
|
|
3727
3753
|
"issueID": "ignorable",
|
|
3728
3754
|
"quality": 0,
|
|
3729
|
-
"what": "Element is audio, so may lack an accurate transcript
|
|
3755
|
+
"what": "Element is audio, so may lack an accurate transcript",
|
|
3756
|
+
"whyIgnore": "speculative"
|
|
3730
3757
|
},
|
|
3731
3758
|
"embedCustom": {
|
|
3732
3759
|
"issueID": "ignorable",
|
|
3733
3760
|
"quality": 0,
|
|
3734
|
-
"what": "Embedded custom element may fail to be accessible
|
|
3761
|
+
"what": "Embedded custom element may fail to be accessible",
|
|
3762
|
+
"whyIgnore": "speculative"
|
|
3735
3763
|
},
|
|
3736
3764
|
"embedTwitter": {
|
|
3737
3765
|
"issueID": "ignorable",
|
|
3738
3766
|
"quality": 0,
|
|
3739
|
-
"what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard
|
|
3767
|
+
"what": "Element is a Twitter feed, so may add many items on scroll and thus be impractical to exit by keyboard",
|
|
3768
|
+
"whyIgnore": "speculative"
|
|
3740
3769
|
},
|
|
3741
3770
|
"embedVideo": {
|
|
3742
3771
|
"issueID": "ignorable",
|
|
3743
3772
|
"quality": 0,
|
|
3744
|
-
"what": "Element is video, so may lack captions
|
|
3773
|
+
"what": "Element is video, so may lack captions",
|
|
3774
|
+
"whyIgnore": "speculative"
|
|
3745
3775
|
},
|
|
3746
3776
|
"embedVisualization": {
|
|
3747
3777
|
"issueID": "ignorable",
|
|
3748
3778
|
"quality": 0,
|
|
3749
|
-
"what": "Element is a visualization, so may lack a nonvisual equivalent
|
|
3779
|
+
"what": "Element is a visualization, so may lack a nonvisual equivalent",
|
|
3780
|
+
"whyIgnore": "speculative"
|
|
3750
3781
|
},
|
|
3751
3782
|
"altMissing": {
|
|
3752
3783
|
"issueID": "imageNoText",
|
|
@@ -3891,7 +3922,8 @@ const rulesData = {
|
|
|
3891
3922
|
"W-WCAG2AAA.Principle1.Guideline1_3.1_3_1.H48": {
|
|
3892
3923
|
"issueID": "ignorable",
|
|
3893
3924
|
"quality": 1,
|
|
3894
|
-
"what": "If element contains a navigation section, it is recommended that it be marked up as a list
|
|
3925
|
+
"what": "If element contains a navigation section, it is recommended that it be marked up as a list",
|
|
3926
|
+
"whyIgnore": "speculative"
|
|
3895
3927
|
},
|
|
3896
3928
|
"E-AAA.4_1_1.F77": {
|
|
3897
3929
|
"issueID": "duplicateID",
|
|
@@ -4796,22 +4828,26 @@ const rulesData = {
|
|
|
4796
4828
|
"aria_child_valid": {
|
|
4797
4829
|
"issueID": "ignorable",
|
|
4798
4830
|
"quality": 1,
|
|
4799
|
-
"what": "Child element has a role not allowed for the role of the parent
|
|
4831
|
+
"what": "Child element has a role not allowed for the role of the parent",
|
|
4832
|
+
"whyIgnore": "invalid"
|
|
4800
4833
|
},
|
|
4801
4834
|
"aria_landmark_name_unique": {
|
|
4802
4835
|
"issueID": "ignorable",
|
|
4803
4836
|
"quality": 1,
|
|
4804
|
-
"what": "Multiple landmarks with the same parent region are not distinguished from one another
|
|
4837
|
+
"what": "Multiple landmarks with the same parent region are not distinguished from one another (invalid on invisible elements)",
|
|
4838
|
+
"whyIgnore": "invalid"
|
|
4805
4839
|
},
|
|
4806
4840
|
"html_lang_exists": {
|
|
4807
4841
|
"issueID": "ignorable",
|
|
4808
4842
|
"quality": 1,
|
|
4809
|
-
"what": "Page detected as HTML, but has no lang attribute
|
|
4843
|
+
"what": "Page detected as HTML, but has no lang attribute",
|
|
4844
|
+
"whyIgnore": "invalid"
|
|
4810
4845
|
},
|
|
4811
4846
|
"style_background_decorative": {
|
|
4812
4847
|
"issueID": "ignorable",
|
|
4813
4848
|
"quality": 1,
|
|
4814
|
-
"what": "CSS background image may be informative
|
|
4849
|
+
"what": "CSS background image may be informative",
|
|
4850
|
+
"whyIgnore": "speculative"
|
|
4815
4851
|
},
|
|
4816
4852
|
"element_id_unique": {
|
|
4817
4853
|
"issueID": "duplicateID",
|
|
@@ -5417,22 +5453,26 @@ const rulesData = {
|
|
|
5417
5453
|
"Element head is missing a required instance of child element title.": {
|
|
5418
5454
|
"issueID": "ignorable",
|
|
5419
5455
|
"quality": 1,
|
|
5420
|
-
"what": "head element has no child title element
|
|
5456
|
+
"what": "head element has no child title element",
|
|
5457
|
+
"whyIgnore": "invalid"
|
|
5421
5458
|
},
|
|
5422
5459
|
"Element img is missing required attribute src.": {
|
|
5423
5460
|
"issueID": "ignorable",
|
|
5424
5461
|
"quality": 1,
|
|
5425
|
-
"what": "img element has no src attribute
|
|
5462
|
+
"what": "img element has no src attribute",
|
|
5463
|
+
"whyIgnore": "invalid"
|
|
5426
5464
|
},
|
|
5427
5465
|
"Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
|
|
5428
5466
|
"issueID": "ignorable",
|
|
5429
5467
|
"quality": 0,
|
|
5430
|
-
"what": "Element contains a prohibited mediaelementwrapper element
|
|
5468
|
+
"what": "Element contains a prohibited mediaelementwrapper element",
|
|
5469
|
+
"whyIgnore": "invalid"
|
|
5431
5470
|
},
|
|
5432
5471
|
"Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
|
|
5433
5472
|
"issueID": "ignorable",
|
|
5434
5473
|
"quality": 1,
|
|
5435
|
-
"what": "Void element has a useless trailing slash.
|
|
5474
|
+
"what": "Void element has a useless trailing slash.",
|
|
5475
|
+
"whyIgnore": "invalid"
|
|
5436
5476
|
},
|
|
5437
5477
|
"The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
|
|
5438
5478
|
"issueID": "placeholderPlusAria",
|
|
@@ -6963,22 +7003,26 @@ const rulesData = {
|
|
|
6963
7003
|
"Element head is missing a required instance of child element title.": {
|
|
6964
7004
|
"issueID": "ignorable",
|
|
6965
7005
|
"quality": 1,
|
|
6966
|
-
"what": "head element has no child title element
|
|
7006
|
+
"what": "head element has no child title element",
|
|
7007
|
+
"whyIgnore": "invalid"
|
|
6967
7008
|
},
|
|
6968
7009
|
"Element img is missing required attribute src.": {
|
|
6969
7010
|
"issueID": "ignorable",
|
|
6970
7011
|
"quality": 1,
|
|
6971
|
-
"what": "img element has no src attribute
|
|
7012
|
+
"what": "img element has no src attribute",
|
|
7013
|
+
"whyIgnore": "invalid"
|
|
6972
7014
|
},
|
|
6973
7015
|
"Element mediaelementwrapper not allowed as child of element div in this context. (Suppressing further errors from this subtree.)": {
|
|
6974
7016
|
"issueID": "ignorable",
|
|
6975
7017
|
"quality": 0,
|
|
6976
|
-
"what": "Element contains a prohibited mediaelementwrapper element
|
|
7018
|
+
"what": "Element contains a prohibited mediaelementwrapper element",
|
|
7019
|
+
"whyIgnore": "invalid"
|
|
6977
7020
|
},
|
|
6978
7021
|
"Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.": {
|
|
6979
7022
|
"issueID": "ignorable",
|
|
6980
7023
|
"quality": 1,
|
|
6981
|
-
"what": "Void element has a useless trailing slash.
|
|
7024
|
+
"what": "Void element has a useless trailing slash.",
|
|
7025
|
+
"whyIgnore": "invalid"
|
|
6982
7026
|
},
|
|
6983
7027
|
"The aria-placeholder attribute must not be specified on elements that have a placeholder attribute.": {
|
|
6984
7028
|
"issueID": "placeholderPlusAria",
|
|
@@ -8509,157 +8553,188 @@ const rulesData = {
|
|
|
8509
8553
|
"QW-ACT-R10": {
|
|
8510
8554
|
"issueID": "ignorable",
|
|
8511
8555
|
"quality": 1,
|
|
8512
|
-
"what": "iframe elements with identical accessible names have different purposes
|
|
8556
|
+
"what": "iframe elements with identical accessible names have different purposes (on invisible elements)",
|
|
8557
|
+
"whyIgnore": "invalid"
|
|
8513
8558
|
},
|
|
8514
8559
|
"QW-ACT-R13": {
|
|
8515
8560
|
"issueID": "ignorable",
|
|
8516
8561
|
"quality": 1,
|
|
8517
|
-
"what": "Element with aria-hidden has focusable content
|
|
8562
|
+
"what": "Element with aria-hidden has focusable content",
|
|
8563
|
+
"whyIgnore": "invalid"
|
|
8518
8564
|
},
|
|
8519
8565
|
"QW-ACT-R41": {
|
|
8520
8566
|
"issueID": "ignorable",
|
|
8521
8567
|
"quality": 1,
|
|
8522
|
-
"what": "Error message describes no invalid form field value
|
|
8568
|
+
"what": "Error message describes no invalid form field value",
|
|
8569
|
+
"whyIgnore": "speculative"
|
|
8523
8570
|
},
|
|
8524
8571
|
"QW-ACT-R52": {
|
|
8525
8572
|
"issueID": "ignorable",
|
|
8526
8573
|
"quality": 0,
|
|
8527
|
-
"what": "video element visual-only content has no description track
|
|
8574
|
+
"what": "video element visual-only content has no description track (description tracks and this ACT rule have been deprecated)",
|
|
8575
|
+
"whyIgnore": "irrelevant"
|
|
8528
8576
|
},
|
|
8529
8577
|
"QW-ACT-R57": {
|
|
8530
8578
|
"issueID": "ignorable",
|
|
8531
8579
|
"quality": 0,
|
|
8532
|
-
"what": "video element visual content has no description track
|
|
8580
|
+
"what": "video element visual content has no description track (description tracks and this ACT rule have been deprecated)",
|
|
8581
|
+
"whyIgnore": "irrelevant"
|
|
8533
8582
|
},
|
|
8534
8583
|
"QW-ACT-R62": {
|
|
8535
8584
|
"issueID": "ignorable",
|
|
8536
8585
|
"quality": 0,
|
|
8537
|
-
"what": "Element in the sequential focus order may have no visible focus
|
|
8586
|
+
"what": "Element in the sequential focus order may have no visible focus",
|
|
8587
|
+
"whyIgnore": "speculative"
|
|
8538
8588
|
},
|
|
8539
8589
|
"QW-ACT-R63": {
|
|
8540
8590
|
"issueID": "ignorable",
|
|
8541
8591
|
"quality": 0,
|
|
8542
|
-
"what": "Document has no landmark with non-repeated content
|
|
8592
|
+
"what": "Document has no landmark with non-repeated content",
|
|
8593
|
+
"whyIgnore": "invalid"
|
|
8543
8594
|
},
|
|
8544
8595
|
"QW-ACT-R64": {
|
|
8545
8596
|
"issueID": "ignorable",
|
|
8546
8597
|
"quality": 0,
|
|
8547
|
-
"what": "Document has no heading for non-repeated content
|
|
8598
|
+
"what": "Document has no heading for non-repeated content",
|
|
8599
|
+
"whyIgnore": "invalid"
|
|
8548
8600
|
},
|
|
8549
8601
|
"QW-ACT-R73": {
|
|
8550
8602
|
"issueID": "ignorable",
|
|
8551
8603
|
"quality": 0,
|
|
8552
|
-
"what": "Block of repeated content is not collapsible
|
|
8604
|
+
"what": "Block of repeated content is not collapsible",
|
|
8605
|
+
"whyIgnore": "invalid"
|
|
8553
8606
|
},
|
|
8554
8607
|
"QW-ACT-R74": {
|
|
8555
8608
|
"issueID": "ignorable",
|
|
8556
8609
|
"quality": 0,
|
|
8557
|
-
"what": "Document has no instrument to move focus to non-repeated content
|
|
8610
|
+
"what": "Document has no instrument to move focus to non-repeated content",
|
|
8611
|
+
"whyIgnore": "invalid"
|
|
8558
8612
|
},
|
|
8559
8613
|
"QW-ACT-R75": {
|
|
8560
8614
|
"issueID": "ignorable",
|
|
8561
8615
|
"quality": 0,
|
|
8562
|
-
"what": "Blocks of repeated content cannot be bypassed
|
|
8616
|
+
"what": "Blocks of repeated content cannot be bypassed",
|
|
8617
|
+
"whyIgnore": "invalid"
|
|
8563
8618
|
},
|
|
8564
8619
|
"QW-BP1": {
|
|
8565
8620
|
"issueID": "ignorable",
|
|
8566
8621
|
"quality": 0,
|
|
8567
|
-
"what": "h1-h6 may fail to be used to identify headings
|
|
8622
|
+
"what": "h1-h6 may fail to be used to identify headings",
|
|
8623
|
+
"whyIgnore": "speculative"
|
|
8568
8624
|
},
|
|
8569
8625
|
"QW-BP2": {
|
|
8570
8626
|
"issueID": "ignorable",
|
|
8571
8627
|
"quality": 1,
|
|
8572
|
-
"what": "Image text alternative is not concise
|
|
8628
|
+
"what": "Image text alternative is not concise",
|
|
8629
|
+
"whyIgnore": "invalid"
|
|
8573
8630
|
},
|
|
8574
8631
|
"QW-BP17": {
|
|
8575
8632
|
"issueID": "ignorable",
|
|
8576
8633
|
"quality": 1,
|
|
8577
|
-
"what": "No link at the beginning of a block of repeated content goes to the end of the block
|
|
8634
|
+
"what": "No link at the beginning of a block of repeated content goes to the end of the block",
|
|
8635
|
+
"whyIgnore": "invalid"
|
|
8578
8636
|
},
|
|
8579
8637
|
"QW-BP20": {
|
|
8580
8638
|
"issueID": "ignorable",
|
|
8581
8639
|
"quality": 1,
|
|
8582
|
-
"what": "Document has more than 1 banner landmark
|
|
8640
|
+
"what": "Document has more than 1 banner landmark (counts hidden elements)",
|
|
8641
|
+
"whyIgnore": "invalid"
|
|
8583
8642
|
},
|
|
8584
8643
|
"QW-BP22": {
|
|
8585
8644
|
"issueID": "ignorable",
|
|
8586
8645
|
"quality": 1,
|
|
8587
|
-
"what": "Document has more than 1 element with a main role
|
|
8646
|
+
"what": "Document has more than 1 element with a main role",
|
|
8647
|
+
"whyIgnore": "invalid"
|
|
8588
8648
|
},
|
|
8589
8649
|
"QW-BP23": {
|
|
8590
8650
|
"issueID": "ignorable",
|
|
8591
8651
|
"quality": .1,
|
|
8592
|
-
"what": "Element is not in a true list
|
|
8652
|
+
"what": "Element is not in a true list",
|
|
8653
|
+
"whyIgnore": "invalid"
|
|
8593
8654
|
},
|
|
8594
8655
|
"QW-BP24": {
|
|
8595
8656
|
"issueID": "ignorable",
|
|
8596
8657
|
"quality": 1,
|
|
8597
|
-
"what": "ul or ol element has a child other than li, script, or template
|
|
8658
|
+
"what": "ul or ol element has a child other than li, script, or template",
|
|
8659
|
+
"whyIgnore": "invalid"
|
|
8598
8660
|
},
|
|
8599
8661
|
"QW-BP28": {
|
|
8600
8662
|
"issueID": "ignorable",
|
|
8601
8663
|
"quality": 1,
|
|
8602
|
-
"what": "h1 element missing or used more than once
|
|
8664
|
+
"what": "h1 element missing or used more than once",
|
|
8665
|
+
"whyIgnore": "invalid"
|
|
8603
8666
|
},
|
|
8604
8667
|
"QW-BP29": {
|
|
8605
8668
|
"issueID": "ignorable",
|
|
8606
8669
|
"quality": 0,
|
|
8607
|
-
"what": "lang and xml:lang attribute of html element differ
|
|
8670
|
+
"what": "lang and xml:lang attribute of html element differ",
|
|
8671
|
+
"whyIgnore": "invalid"
|
|
8608
8672
|
},
|
|
8609
8673
|
"QW-WCAG-T4": {
|
|
8610
8674
|
"issueID": "ignorable",
|
|
8611
8675
|
"quality": 0,
|
|
8612
|
-
"what": "summary attribute is not used to give an overview of a data table
|
|
8676
|
+
"what": "summary attribute is not used to give an overview of a data table",
|
|
8677
|
+
"whyIgnore": "invalid"
|
|
8613
8678
|
},
|
|
8614
8679
|
"QW-WCAG-T8": {
|
|
8615
8680
|
"issueID": "ignorable",
|
|
8616
8681
|
"quality": 1,
|
|
8617
|
-
"what": "Text alternative is suspect
|
|
8682
|
+
"what": "Text alternative is suspect",
|
|
8683
|
+
"whyIgnore": "invalid"
|
|
8618
8684
|
},
|
|
8619
8685
|
"QW-WCAG-T9": {
|
|
8620
8686
|
"issueID": "ignorable",
|
|
8621
8687
|
"quality": 0,
|
|
8622
|
-
"what": "Page may fail to be organized using headings
|
|
8688
|
+
"what": "Page may fail to be organized using headings",
|
|
8689
|
+
"whyIgnore": "speculative"
|
|
8623
8690
|
},
|
|
8624
8691
|
"QW-WCAG-T15": {
|
|
8625
8692
|
"issueID": "ignorable",
|
|
8626
8693
|
"quality": 0,
|
|
8627
|
-
"what": "link element may be used for navigation but not in the head
|
|
8694
|
+
"what": "link element may be used for navigation but not in the head",
|
|
8695
|
+
"whyIgnore": "invalid"
|
|
8628
8696
|
},
|
|
8629
8697
|
"QW-WCAG-T20": {
|
|
8630
8698
|
"issueID": "ignorable",
|
|
8631
8699
|
"quality": 0,
|
|
8632
|
-
"what": "Link title may fail to describe the link correctly
|
|
8700
|
+
"what": "Link title may fail to describe the link correctly",
|
|
8701
|
+
"whyIgnore": "speculative"
|
|
8633
8702
|
},
|
|
8634
8703
|
"QW-WCAG-T23": {
|
|
8635
8704
|
"issueID": "ignorable",
|
|
8636
8705
|
"quality": 0,
|
|
8637
|
-
"what": "No link at the top of the page goes directly to the main content area
|
|
8706
|
+
"what": "No link at the top of the page goes directly to the main content area",
|
|
8707
|
+
"whyIgnore": "invalid"
|
|
8638
8708
|
},
|
|
8639
8709
|
"QW-WCAG-T24": {
|
|
8640
8710
|
"issueID": "ignorable",
|
|
8641
8711
|
"quality": .5,
|
|
8642
|
-
"what": "Script removes the focus when focus is received
|
|
8712
|
+
"what": "Script removes the focus when focus is received",
|
|
8713
|
+
"whyIgnore": "invalid"
|
|
8643
8714
|
},
|
|
8644
8715
|
"QW-WCAG-T28": {
|
|
8645
8716
|
"issueID": "ignorable",
|
|
8646
8717
|
"quality": .8,
|
|
8647
|
-
"what": "Font size set to an absolute unit value
|
|
8718
|
+
"what": "Font size set to an absolute unit value",
|
|
8719
|
+
"whyIgnore": "invalid"
|
|
8648
8720
|
},
|
|
8649
8721
|
"QW-WCAG-T31": {
|
|
8650
8722
|
"issueID": "ignorable",
|
|
8651
8723
|
"quality": 1,
|
|
8652
|
-
"what": "Foreground or background color is specified but not both
|
|
8724
|
+
"what": "Foreground or background color is specified but not both (on invisible elements)",
|
|
8725
|
+
"whyIgnore": "invalid"
|
|
8653
8726
|
},
|
|
8654
8727
|
"QW-WCAG-T32": {
|
|
8655
8728
|
"issueID": "ignorable",
|
|
8656
8729
|
"quality": 1,
|
|
8657
|
-
"what": "ol, ul or dl may fail to be used for a list or group of links
|
|
8730
|
+
"what": "ol, ul or dl may fail to be used for a list or group of links",
|
|
8731
|
+
"whyIgnore": "speculative"
|
|
8658
8732
|
},
|
|
8659
8733
|
"QW-WCAG-T35": {
|
|
8660
8734
|
"issueID": "ignorable",
|
|
8661
8735
|
"quality": 1,
|
|
8662
|
-
"what": "Several elements have this id attribute value
|
|
8736
|
+
"what": "Several elements have this id attribute value",
|
|
8737
|
+
"whyIgnore": "invalid"
|
|
8663
8738
|
},
|
|
8664
8739
|
"QW-ACT-R18": {
|
|
8665
8740
|
"issueID": "duplicateID",
|
|
@@ -9761,7 +9836,7 @@ const rules = deepFreeze(rulesData);
|
|
|
9761
9836
|
const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
9762
9837
|
const errors = [];
|
|
9763
9838
|
const checkEntry = (engineID, variabilityName, ruleID, entry, engineRuleIDs) => {
|
|
9764
|
-
const { issueID, quality, what, supersededBy, outcome, uncertainty,
|
|
9839
|
+
const { issueID, quality, what, supersededBy, outcome, uncertainty, toCheck, whyIgnore: entryWhyIgnore } = entry;
|
|
9765
9840
|
if (!ruleID.length) errors.push(`${engineID}.${variabilityName} has a rule with an empty ruleID`);
|
|
9766
9841
|
if (typeof issueID !== "string" || !issueID.length || !(issueID in issueTable)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid issueID (${JSON.stringify(issueID)})`);
|
|
9767
9842
|
if (typeof quality !== "number") errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-numeric quality (${JSON.stringify(quality)})`);
|
|
@@ -9773,8 +9848,8 @@ const makeIssueRules = (ruleTable, issueTable = issues) => {
|
|
|
9773
9848
|
}
|
|
9774
9849
|
if (outcome !== void 0 && !outcomes.includes(outcome)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid outcome (${JSON.stringify(outcome)})`);
|
|
9775
9850
|
if (uncertainty !== void 0 && !uncertainties.includes(uncertainty)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid uncertainty (${JSON.stringify(uncertainty)})`);
|
|
9776
|
-
if (
|
|
9777
|
-
if (
|
|
9851
|
+
if (toCheck !== void 0 && (typeof toCheck !== "string" || !toCheck.length)) errors.push(`${engineID}.${variabilityName}.${ruleID} has a non-string or empty toCheck (${JSON.stringify(toCheck)})`);
|
|
9852
|
+
if (entryWhyIgnore !== void 0 && !whyIgnore.includes(entryWhyIgnore)) errors.push(`${engineID}.${variabilityName}.${ruleID} has an invalid whyIgnore (${JSON.stringify(entryWhyIgnore)})`);
|
|
9778
9853
|
if (variabilityName === "variable") {
|
|
9779
9854
|
if (!/[.*+?^${}()|[\]\\]/.test(ruleID)) errors.push(`${engineID}.${variabilityName}.${ruleID} has no regex metacharacters, so it should be an invariant rule`);
|
|
9780
9855
|
else try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "testaro-issues",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A classification of about 1500 rules of 10 rule engines into about 400 issues. The rule engines are those in the ensemble of Testaro, which tests web pages for front-end quality (accessibility, usability, and standards conformance).",
|
|
6
6
|
"main": "./dist/index.cjs",
|