testilo 44.2.1 → 44.2.3

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 (2) hide show
  1. package/package.json +1 -1
  2. package/procs/score/tic.js +146 -42
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "44.2.1",
3
+ "version": "44.2.3",
4
4
  "description": "Prepares Testaro jobs and processes Testaro reports",
5
5
  "main": "call.js",
6
6
  "scripts": {
@@ -209,6 +209,11 @@ exports.issues = {
209
209
  quality: 1,
210
210
  what: 'Multiple landmarks with the same parent region are not distinguished from one another [invalid on invisible elements]'
211
211
  },
212
+ html_lang_exists: {
213
+ variable: false,
214
+ quality: 1,
215
+ what: 'Page detected as HTML, but has no lang attribute [invalid]'
216
+ },
212
217
  style_background_decorative: {
213
218
  variable: false,
214
219
  quality: 1,
@@ -1376,6 +1381,11 @@ exports.issues = {
1376
1381
  variable: false,
1377
1382
  quality: 1,
1378
1383
  what: 'img element with alt="" has a role attribute'
1384
+ },
1385
+ 'An img element with a role attribute must not have an alt attribute whose value is the empty string.': {
1386
+ variable: false,
1387
+ quality: 1,
1388
+ what: 'img element with a role attribute has alt=""'
1379
1389
  }
1380
1390
  },
1381
1391
  nuVnu: {
@@ -1383,6 +1393,11 @@ exports.issues = {
1383
1393
  variable: false,
1384
1394
  quality: 1,
1385
1395
  what: 'img element with alt="" has a role attribute'
1396
+ },
1397
+ 'An img element with a role attribute must not have an alt attribute whose value is the empty string.': {
1398
+ variable: false,
1399
+ quality: 1,
1400
+ what: 'img element with a role attribute has alt=""'
1386
1401
  }
1387
1402
  },
1388
1403
  qualWeb: {
@@ -1434,13 +1449,6 @@ exports.issues = {
1434
1449
  what: 'html element has no lang or xml:lang attribute'
1435
1450
  }
1436
1451
  },
1437
- ibm: {
1438
- html_lang_exists: {
1439
- variable: false,
1440
- quality: 1,
1441
- what: 'Page detected as HTML, but has no lang attribute'
1442
- }
1443
- },
1444
1452
  nuVal: {
1445
1453
  'Consider adding a lang attribute to the html start tag to declare the language of this document.': {
1446
1454
  variable: false,
@@ -4040,6 +4048,16 @@ exports.issues = {
4040
4048
  variable: false,
4041
4049
  quality: 1,
4042
4050
  what: 'Element is script and has a src attribute but its type is not empty, a JS MIME type, or module'
4051
+ },
4052
+ 'A script element with a type attribute whose value is neither a JavaScript MIME type, module, importmap, nor speculationrules (i.e., a data block) must not have a defer attribute.': {
4053
+ variable: false,
4054
+ quality: 1,
4055
+ what: 'Element is not eligible for a defer attribute but has one'
4056
+ },
4057
+ 'A script element with a type attribute whose value is neither a JavaScript MIME type, module, importmap, nor speculationrules (i.e., a data block) must not have an async attribute.': {
4058
+ variable: false,
4059
+ quality: 1,
4060
+ what: 'Element is not eligible for an async attribute but has one'
4043
4061
  }
4044
4062
  },
4045
4063
  nuVnu: {
@@ -4057,6 +4075,38 @@ exports.issues = {
4057
4075
  variable: false,
4058
4076
  quality: 1,
4059
4077
  what: 'Element is script and has a src attribute but its type is not empty, a JS MIME type, or module'
4078
+ },
4079
+ 'A script element with a type attribute whose value is neither a JavaScript MIME type, module, importmap, nor speculationrules (i.e., a data block) must not have a defer attribute.': {
4080
+ variable: false,
4081
+ quality: 1,
4082
+ what: 'Element is not eligible for a defer attribute but has one'
4083
+ },
4084
+ 'A script element with a type attribute whose value is neither a JavaScript MIME type, module, importmap, nor speculationrules (i.e., a data block) must not have an async attribute.': {
4085
+ variable: false,
4086
+ quality: 1,
4087
+ what: 'Element is not eligible for an async attribute but has one'
4088
+ }
4089
+ }
4090
+ }
4091
+ },
4092
+ specRulesScriptBad: {
4093
+ summary: 'speculation rules script element invalid',
4094
+ why: 'Document navigation performs poorly',
4095
+ wcag: '1.3.1',
4096
+ weight: 1,
4097
+ tools: {
4098
+ nuVal: {
4099
+ 'The href_matches property in a document rule must be a string.': {
4100
+ variable: false,
4101
+ quality: 1,
4102
+ what: 'Element is script with type=speculationrules but its href_matches value is not a string'
4103
+ }
4104
+ },
4105
+ nuVnu: {
4106
+ 'The href_matches property in a document rule must be a string.': {
4107
+ variable: false,
4108
+ quality: 1,
4109
+ what: 'Element is script with type=speculationrules but its href_matches value is not a string'
4060
4110
  }
4061
4111
  }
4062
4112
  }
@@ -4515,35 +4565,10 @@ exports.issues = {
4515
4565
  quality: 1,
4516
4566
  what: 'Page includes more than one autofocus attribute'
4517
4567
  },
4518
- 'A link element with a sizes attribute must have a rel attribute that contains the value icon or the value apple-touch-icon or the value apple-touch-icon-precomposed.': {
4519
- variable: false,
4520
- quality: 1,
4521
- what: 'link element has a sizes attribute but no icon-type rel attribute'
4522
- },
4523
4568
  'An input element with a type attribute whose value is hidden must not have any aria-* attributes.': {
4524
4569
  variable: false,
4525
4570
  quality: 1,
4526
4571
  what: 'hidden-type input element has an ARIA attribute'
4527
- },
4528
- 'The sizes attribute may be specified only if the srcset attribute is also present.': {
4529
- variable: false,
4530
- quality: 1,
4531
- what: 'Element has a sizes attribute but no srcset attribute'
4532
- },
4533
- 'The sizes attribute must only be specified if the srcset attribute is also specified.': {
4534
- variable: false,
4535
- quality: 1,
4536
- what: 'Element has a sizes attribute but no srcset attribute'
4537
- },
4538
- 'When the srcset attribute has any image candidate string with a width descriptor, the sizes attribute must also be present.': {
4539
- variable: false,
4540
- quality: 1,
4541
- what: 'Element with a srcset attribute with a width has no sizes attribute'
4542
- },
4543
- 'When the srcset attribute has any image candidate string with a width descriptor, the sizes attribute must also be specified.': {
4544
- variable: false,
4545
- quality: 1,
4546
- what: 'Element with a srcset attribute with a width has no valid sizes attribute'
4547
4572
  }
4548
4573
  },
4549
4574
  nuVnu: {
@@ -4582,15 +4607,37 @@ exports.issues = {
4582
4607
  quality: 1,
4583
4608
  what: 'Page includes more than one autofocus attribute'
4584
4609
  },
4585
- 'A link element with a sizes attribute must have a rel attribute that contains the value icon or the value apple-touch-icon or the value apple-touch-icon-precomposed.': {
4610
+ 'An input element with a type attribute whose value is hidden must not have any aria-* attributes.': {
4586
4611
  variable: false,
4587
4612
  quality: 1,
4588
- what: 'link element has a sizes attribute but no icon-type rel attribute'
4613
+ what: 'hidden-type input element has an ARIA attribute'
4614
+ }
4615
+ },
4616
+ wax: {
4617
+ 'Elements must only use allowed ARIA attributes': {
4618
+ variable: false,
4619
+ quality: 1,
4620
+ what: 'Element has an ARIA attribute that is not allowed'
4589
4621
  },
4590
- 'An input element with a type attribute whose value is hidden must not have any aria-* attributes.': {
4622
+ 'Ensure ARIA attributes used are permitted for the element\'s role.': {
4591
4623
  variable: false,
4592
4624
  quality: 1,
4593
- what: 'hidden-type input element has an ARIA attribute'
4625
+ what: 'Element has an ARIA attribute that is invalid for the role of the element'
4626
+ }
4627
+ }
4628
+ }
4629
+ },
4630
+ sizesAttributeBad: {
4631
+ summary: 'sizes attribute invalid',
4632
+ why: 'Item behaves improperly',
4633
+ wcag: '1.3.1',
4634
+ weight: 4,
4635
+ tools: {
4636
+ nuVal: {
4637
+ 'A link element with a sizes attribute must have a rel attribute that contains the value icon or the value apple-touch-icon or the value apple-touch-icon-precomposed.': {
4638
+ variable: false,
4639
+ quality: 1,
4640
+ what: 'link element has a sizes attribute but no icon-type rel attribute'
4594
4641
  },
4595
4642
  'The sizes attribute may be specified only if the srcset attribute is also present.': {
4596
4643
  variable: false,
@@ -4611,20 +4658,45 @@ exports.issues = {
4611
4658
  variable: false,
4612
4659
  quality: 1,
4613
4660
  what: 'Element with a srcset attribute with a width has no valid sizes attribute'
4661
+ },
4662
+ 'The sizes attribute value starting with auto is only valid for lazy-loaded images. Add loading=lazy to this element.': {
4663
+ variable: false,
4664
+ quality: 1,
4665
+ what: 'Element with a sizes=auto… attribute has no loading=lazy attribute'
4614
4666
  }
4615
4667
  },
4616
- wax: {
4617
- 'Elements must only use allowed ARIA attributes': {
4668
+ nuVnu: {
4669
+ 'A link element with a sizes attribute must have a rel attribute that contains the value icon or the value apple-touch-icon or the value apple-touch-icon-precomposed.': {
4618
4670
  variable: false,
4619
4671
  quality: 1,
4620
- what: 'Element has an ARIA attribute that is not allowed'
4672
+ what: 'link element has a sizes attribute but no icon-type rel attribute'
4621
4673
  },
4622
- 'Ensure ARIA attributes used are permitted for the element\'s role.': {
4674
+ 'The sizes attribute may be specified only if the srcset attribute is also present.': {
4623
4675
  variable: false,
4624
4676
  quality: 1,
4625
- what: 'Element has an ARIA attribute that is invalid for the role of the element'
4677
+ what: 'Element has a sizes attribute but no srcset attribute'
4678
+ },
4679
+ 'The sizes attribute must only be specified if the srcset attribute is also specified.': {
4680
+ variable: false,
4681
+ quality: 1,
4682
+ what: 'Element has a sizes attribute but no srcset attribute'
4683
+ },
4684
+ 'When the srcset attribute has any image candidate string with a width descriptor, the sizes attribute must also be present.': {
4685
+ variable: false,
4686
+ quality: 1,
4687
+ what: 'Element with a srcset attribute with a width has no sizes attribute'
4688
+ },
4689
+ 'When the srcset attribute has any image candidate string with a width descriptor, the sizes attribute must also be specified.': {
4690
+ variable: false,
4691
+ quality: 1,
4692
+ what: 'Element with a srcset attribute with a width has no valid sizes attribute'
4693
+ },
4694
+ 'The sizes attribute value starting with auto is only valid for lazy-loaded images. Add loading=lazy to this element.': {
4695
+ variable: false,
4696
+ quality: 1,
4697
+ what: 'Element with a sizes=auto… attribute has no loading=lazy attribute'
4626
4698
  }
4627
- },
4699
+ }
4628
4700
  }
4629
4701
  },
4630
4702
  attributeValueBad: {
@@ -4703,6 +4775,28 @@ exports.issues = {
4703
4775
  }
4704
4776
  }
4705
4777
  },
4778
+ attributeValueRisk: {
4779
+ summary: 'attribute value bad?',
4780
+ why: 'Item may behave improperly',
4781
+ wcag: '4.1.2',
4782
+ weight: 1,
4783
+ tools: {
4784
+ nuVal: {
4785
+ '^Potentially bad value .+ for attribute .+ on element .+Typo for .+\?.*$': {
4786
+ variable: true,
4787
+ quality: 1,
4788
+ what: 'Attribute value may be a typographical error'
4789
+ }
4790
+ },
4791
+ nuVnu: {
4792
+ '^Potentially bad value .+ for attribute .+ on element .+Typo for .+\?.*$': {
4793
+ variable: true,
4794
+ quality: 1,
4795
+ what: 'Attribute value may be a typographical error'
4796
+ }
4797
+ }
4798
+ }
4799
+ },
4706
4800
  attributeMissing: {
4707
4801
  summary: 'attribute missing',
4708
4802
  why: 'Item behaves improperly',
@@ -6353,6 +6447,11 @@ exports.issues = {
6353
6447
  variable: false,
6354
6448
  quality: 1,
6355
6449
  what: 'Page contains more than 1 h1 element'
6450
+ },
6451
+ 'Consider using the h1 element as a top-level heading only — or else use the headingoffset attribute (otherwise, all h1 elements are treated as top-level headings by many screen readers and other tools).': {
6452
+ variable: false,
6453
+ quality: 1,
6454
+ what: 'Page contains more than 1 h1 element'
6356
6455
  }
6357
6456
  },
6358
6457
  nuVnu: {
@@ -6360,6 +6459,11 @@ exports.issues = {
6360
6459
  variable: false,
6361
6460
  quality: 1,
6362
6461
  what: 'Page contains more than 1 h1 element'
6462
+ },
6463
+ 'Consider using the h1 element as a top-level heading only — or else use the headingoffset attribute (otherwise, all h1 elements are treated as top-level headings by many screen readers and other tools).': {
6464
+ variable: false,
6465
+ quality: 1,
6466
+ what: 'Page contains more than 1 h1 element'
6363
6467
  }
6364
6468
  },
6365
6469
  wave: {