testilo 13.10.3 → 14.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/merge.js CHANGED
@@ -15,17 +15,12 @@ require('dotenv').config();
15
15
  // ########## CONSTANTS
16
16
 
17
17
  const stdRequester = process.env.REQUESTER;
18
- // Tests that alter the page.
18
+ // Tools that alter the page.
19
19
  const contaminantNames = new Set([
20
20
  'axe',
21
21
  'continuum',
22
22
  'htmlcs',
23
- 'ibm',
24
- 'wave'
25
- ]);
26
- // Tests that are immune to page alteration.
27
- const immuneNames = new Set([
28
- 'tenon'
23
+ 'ibm'
29
24
  ]);
30
25
 
31
26
  // ########## FUNCTIONS
@@ -38,7 +33,7 @@ exports.merge = (script, batch, requester, isolate = false) => {
38
33
  // If the requester is unspecified, make it the standard requester.
39
34
  requester ||= stdRequester;
40
35
  // Create a timestamp.
41
- const timeStamp = Math.floor((Date.now() - Date.UTC(2023, 4)) / 2000).toString(36);
36
+ const timeStamp = Math.floor((Date.now() - Date.UTC(2023, 6)) / 2000).toString(36);
42
37
  // Create a time description.
43
38
  const creationTime = (new Date()).toISOString().slice(0, 19);
44
39
  // Initialize a target-independent job.
@@ -76,7 +71,7 @@ exports.merge = (script, batch, requester, isolate = false) => {
76
71
  && contaminantNames.has(act.which)
77
72
  && actIndex < acts.length - 1
78
73
  && nextAct.type !== 'placeholder'
79
- && (nextAct.type !== 'test' || ! immuneNames.has(nextAct.which))
74
+ && (nextAct.type !== 'test')
80
75
  ) {
81
76
  acts[actIndex] = JSON.parse(JSON.stringify([act, lastPlaceholder]));
82
77
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "testilo",
3
- "version": "13.10.3",
3
+ "version": "14.0.0",
4
4
  "description": "Prepares and processes Testaro reports",
5
5
  "main": "aim.js",
6
6
  "scripts": {
@@ -26,7 +26,7 @@
26
26
  <li>Digested by Testilo with procedure <code>__digester__</code></li>
27
27
  <li>Compared by Testilo with procedure <code>__comparer__</code></li>
28
28
  </ol>
29
- <p>Testaro used ten tools (Alfa, Axe, Continuum, Equal Access, HTML CodeSniffer, Nu Html Checker, Tenon, Testaro, and WAVE) to perform about 1350 automated accessibility tests. Testilo used its scoring procedure to assign a score to each page, with 0 being perfect.</p>
29
+ <p>Testaro used nine tools (Alfa, Axe, Continuum, Equal Access, HTML CodeSniffer, Nu Html Checker, Testaro, and WAVE) to perform about 900 automated accessibility tests. Testilo used its scoring procedure to assign a score to each page, with 0 being perfect.</p>
30
30
  <h2>Comparison</h2>
31
31
  <table class="allBorder">
32
32
  <caption>Accessibility scores of web pages</caption>
@@ -8,7 +8,7 @@ const fs = require('fs/promises');
8
8
  // CONSTANTS
9
9
 
10
10
  // Digester ID.
11
- const id = 'tcp28';
11
+ const id = 'tcp31';
12
12
  // Newlines with indentations.
13
13
  const joiner = '\n ';
14
14
  const innerJoiner = '\n ';
@@ -30,7 +30,7 @@
30
30
  </header>
31
31
  <h2>Introduction</h2>
32
32
  <p>This is a digest of results from a battery of <a href="https://www.w3.org/WAI/">web accessibility</a> tests.</p>
33
- <p>Ten different <dfn>tools</dfn> (Alfa, Axe, Continuum, Equal Access, HTML CodeSniffer, Nu Html Checker, QualWeb, Tenon, Testaro, and WAVE) tested the web page of __org__ at __url__ to check its compliance with various <dfn>rules</dfn>. There were a total of about 1350 rules, classified into about 250 accessibility <dfn>issues</dfn>.</p>
33
+ <p>Nine different <dfn>tools</dfn> (Alfa, Axe, Continuum, Equal Access, HTML CodeSniffer, Nu Html Checker, QualWeb, Testaro, and WAVE) tested the web page of __org__ at __url__ to check its compliance with various <dfn>rules</dfn>. There were a total of about 900 rules, classified into about 260 accessibility <dfn>issues</dfn>.</p>
34
34
  <p>The results were interpreted to yield an aggregate score of __total__, where 0 would be <q>perfect</q>.</p>
35
35
  <h2>Total score</h2>
36
36
  <p>The total score is the sum of five components.</p>
@@ -1,8 +1,8 @@
1
1
  /*
2
- tic30
3
- Testilo issue classification 30
2
+ tic31
3
+ Testilo issue classification 31
4
4
 
5
- Classifies rules of the tools of Testaro into issues.
5
+ Classifies 918 rules of the tools of Testaro into 257 issues.
6
6
 
7
7
  Issue properties:
8
8
  wcag: WCAG Principle, Guideline, Success Criterion, or Technique, if any, most closely
@@ -1144,19 +1144,6 @@ exports.issues = {
1144
1144
  }
1145
1145
  }
1146
1146
  },
1147
- keyboardAccess: {
1148
- wcag: '2.1.1',
1149
- weight: 4,
1150
- tools: {
1151
- tenon: {
1152
- 180: {
1153
- variable: false,
1154
- quality: 1,
1155
- what: 'Element is interactive but has a negative tabindex value'
1156
- }
1157
- }
1158
- }
1159
- },
1160
1147
  eventKeyboardRisk: {
1161
1148
  wcag: '2.1.1',
1162
1149
  weight: 1,
@@ -1532,18 +1519,6 @@ exports.issues = {
1532
1519
  what: 'Accessible name is not provided for an image which is the only content in a link'
1533
1520
  }
1534
1521
  },
1535
- tenon: {
1536
- 57: {
1537
- variable: false,
1538
- quality: 1,
1539
- what: 'Link has no text inside it'
1540
- },
1541
- 91: {
1542
- variable: false,
1543
- quality: 1,
1544
- what: 'Link has a background image but no text inside it'
1545
- }
1546
- },
1547
1522
  wave: {
1548
1523
  link_empty: {
1549
1524
  variable: false,
@@ -1591,30 +1566,10 @@ exports.issues = {
1591
1566
  }
1592
1567
  }
1593
1568
  },
1594
- acronymNoTitle: {
1595
- wcag: '3.1.4',
1596
- weight: 4,
1597
- tools: {
1598
- tenon: {
1599
- 117: {
1600
- variable: false,
1601
- quality: 1,
1602
- what: 'acronym element has no useful title value (and is deprecated; use abbr)'
1603
- }
1604
- }
1605
- }
1606
- },
1607
1569
  abbreviationNoTitle: {
1608
1570
  wcag: '3.1.4',
1609
1571
  weight: 4,
1610
1572
  tools: {
1611
- tenon: {
1612
- 233: {
1613
- variable: false,
1614
- quality: 1,
1615
- what: 'abbr element is first for its abbreviation but has no useful title value'
1616
- }
1617
- },
1618
1573
  qualWeb: {
1619
1574
  'QW-WCAG-T7': {
1620
1575
  variable: false,
@@ -1713,24 +1668,11 @@ exports.issues = {
1713
1668
  what: 'Links with identical accessible names and context serve different purposes'
1714
1669
  }
1715
1670
  },
1716
- tenon: {
1717
- 98: {
1718
- variable: false,
1719
- quality: 1,
1720
- what: 'Links have the same text but different destinations'
1721
- }
1722
- }
1723
- }
1724
- },
1725
- areaDestinationsSame: {
1726
- wcag: '2.4.4',
1727
- weight: 2,
1728
- tools: {
1729
- tenon: {
1730
- 132: {
1671
+ testaro: {
1672
+ 'linkAmb': {
1731
1673
  variable: false,
1732
1674
  quality: 1,
1733
- what: 'area element has the same href as another but a different alt'
1675
+ what: 'Links with the same text content have different destinations'
1734
1676
  }
1735
1677
  }
1736
1678
  }
@@ -1777,13 +1719,6 @@ exports.issues = {
1777
1719
  what: 'Consecutive links have the same href and one contains an image'
1778
1720
  }
1779
1721
  },
1780
- tenon: {
1781
- 184: {
1782
- variable: false,
1783
- quality: 1,
1784
- what: 'Adjacent links point to the same destination'
1785
- }
1786
- },
1787
1722
  wave: {
1788
1723
  link_redundant: {
1789
1724
  variable: false,
@@ -1806,32 +1741,6 @@ exports.issues = {
1806
1741
  }
1807
1742
  }
1808
1743
  },
1809
- formNewWindow: {
1810
- wcag: '3.2.5',
1811
- weight: 2,
1812
- tools: {
1813
- tenon: {
1814
- 214: {
1815
- variable: false,
1816
- quality: 1,
1817
- what: 'Form submission opens a new window'
1818
- }
1819
- }
1820
- }
1821
- },
1822
- externalLinkSurprise: {
1823
- wcag: '3.2.5',
1824
- weight: 3,
1825
- tools: {
1826
- tenon: {
1827
- 218: {
1828
- variable: false,
1829
- quality: 1,
1830
- what: 'Link opens in a new window without user control'
1831
- }
1832
- }
1833
- }
1834
- },
1835
1744
  externalLink: {
1836
1745
  wcag: '3.2.5',
1837
1746
  weight: 1,
@@ -2138,19 +2047,6 @@ exports.issues = {
2138
2047
  }
2139
2048
  }
2140
2049
  },
2141
- textRotated: {
2142
- wcag: '1.4.8',
2143
- weight: 2,
2144
- tools: {
2145
- tenon: {
2146
- 271: {
2147
- variable: false,
2148
- quality: 1,
2149
- what: 'Text is needlessly rotated 60+ degrees or more, hurting comprehension'
2150
- }
2151
- }
2152
- }
2153
- },
2154
2050
  metaBansZoom: {
2155
2051
  wcag: '1.4.4',
2156
2052
  weight: 4,
@@ -2233,13 +2129,6 @@ exports.issues = {
2233
2129
  what: 'Font size is smaller than 9 pixels'
2234
2130
  }
2235
2131
  },
2236
- tenon: {
2237
- 134: {
2238
- variable: false,
2239
- quality: 1,
2240
- what: 'Text is very small'
2241
- }
2242
- },
2243
2132
  testaro: {
2244
2133
  miniText: {
2245
2134
  variable: false,
@@ -2306,7 +2195,7 @@ exports.issues = {
2306
2195
  }
2307
2196
  }
2308
2197
  },
2309
- leadingInsufficient: {
2198
+ lineHeightLow: {
2310
2199
  wcag: '1.4.8',
2311
2200
  weight: 2,
2312
2201
  tools: {
@@ -2314,22 +2203,15 @@ exports.issues = {
2314
2203
  r73: {
2315
2204
  variable: false,
2316
2205
  quality: 1,
2317
- what: 'Paragraph of text has insufficient line height'
2206
+ what: 'Text line height is not at least 1.5'
2318
2207
  }
2319
2208
  }
2320
2209
  }
2321
2210
  },
2322
- leadingClipsText: {
2211
+ lineHeightLowForFont: {
2323
2212
  wcag: '1.4.8',
2324
2213
  weight: 2,
2325
2214
  tools: {
2326
- tenon: {
2327
- 144: {
2328
- variable: false,
2329
- quality: 1,
2330
- what: 'Line height is insufficent to properly display the computed font size'
2331
- }
2332
- },
2333
2215
  testaro: {
2334
2216
  lineHeight: {
2335
2217
  variable: false,
@@ -3511,13 +3393,6 @@ exports.issues = {
3511
3393
  quality: 1,
3512
3394
  what: 'Text has less than the enhanced minimum contrast'
3513
3395
  }
3514
- },
3515
- tenon: {
3516
- 95: {
3517
- variable: false,
3518
- quality: 1,
3519
- what: 'Element has insufficient color contrast (Level AAA)'
3520
- }
3521
3396
  }
3522
3397
  }
3523
3398
  },
@@ -3734,13 +3609,6 @@ exports.issues = {
3734
3609
  what: 'Text alternative of the link image duplicates text in the same or an adjacent link'
3735
3610
  }
3736
3611
  },
3737
- tenon: {
3738
- 138: {
3739
- variable: false,
3740
- quality: 1,
3741
- what: 'Image link alternative text repeats text in the link'
3742
- }
3743
- },
3744
3612
  wave: {
3745
3613
  alt_redundant: {
3746
3614
  variable: false,
@@ -3788,11 +3656,11 @@ exports.issues = {
3788
3656
  what: 'Link text content is equal to the title attribute'
3789
3657
  }
3790
3658
  },
3791
- tenon: {
3792
- 79: {
3659
+ testaro: {
3660
+ 'linkTitle': {
3793
3661
  variable: false,
3794
3662
  quality: 1,
3795
- what: 'Link has a title attribute that is the same as the text inside the link'
3663
+ what: 'Link title value is also contained in the link text'
3796
3664
  }
3797
3665
  },
3798
3666
  wave: {
@@ -3960,13 +3828,6 @@ exports.issues = {
3960
3828
  quality: 1,
3961
3829
  what: 'Heading level is incorrect'
3962
3830
  }
3963
- },
3964
- tenon: {
3965
- 155: {
3966
- variable: false,
3967
- quality: 1,
3968
- what: 'Headings are not structured in a hierarchical manner'
3969
- }
3970
3831
  }
3971
3832
  }
3972
3833
  },
@@ -4099,13 +3960,6 @@ exports.issues = {
4099
3960
  what: 'Paragraph text is fully justified'
4100
3961
  }
4101
3962
  },
4102
- tenon: {
4103
- 36: {
4104
- variable: false,
4105
- quality: 1,
4106
- what: 'Text is fully justified'
4107
- }
4108
- },
4109
3963
  qualWeb: {
4110
3964
  'QW-WCAG-T27': {
4111
3965
  variable: false,
@@ -4183,41 +4037,41 @@ exports.issues = {
4183
4037
  }
4184
4038
  }
4185
4039
  },
4186
- pseudoParagraphRisk: {
4040
+ pseudoList: {
4187
4041
  wcag: '1.3.1',
4188
4042
  weight: 1,
4189
4043
  tools: {
4190
- tenon: {
4191
- 242: {
4044
+ qualWeb: {
4045
+ 'QW-BP11': {
4192
4046
  variable: false,
4193
4047
  quality: 1,
4194
- what: 'Multiple consecutive br elements may simulate paragraphs'
4048
+ what: 'br is used to make a list'
4195
4049
  }
4196
4050
  }
4197
4051
  }
4198
4052
  },
4199
- pseudoList: {
4053
+ pseudoCodeRisk: {
4200
4054
  wcag: '1.3.1',
4201
4055
  weight: 1,
4202
4056
  tools: {
4203
- qualWeb: {
4204
- 'QW-BP11': {
4057
+ alfa: {
4058
+ r79: {
4205
4059
  variable: false,
4206
4060
  quality: 1,
4207
- what: 'br is used to make a list'
4061
+ what: 'pre element is not used for a figure or for code, kbd, and samp elements'
4208
4062
  }
4209
4063
  }
4210
4064
  }
4211
4065
  },
4212
- pseudoCodeRisk: {
4066
+ pseudoParagraphRisk: {
4213
4067
  wcag: '1.3.1',
4214
4068
  weight: 1,
4215
4069
  tools: {
4216
- alfa: {
4217
- r79: {
4070
+ testaro: {
4071
+ pseudoP: {
4218
4072
  variable: false,
4219
4073
  quality: 1,
4220
- what: 'pre element is not used for a figure or for code, kbd, and samp elements'
4074
+ what: 'Element contains sequential br elements instead of p'
4221
4075
  }
4222
4076
  }
4223
4077
  }
@@ -4253,13 +4107,6 @@ exports.issues = {
4253
4107
  wcag: '1.3.1',
4254
4108
  weight: 1,
4255
4109
  tools: {
4256
- tenon: {
4257
- 129: {
4258
- variable: false,
4259
- quality: 1,
4260
- what: 'CSS underline on text that is not a link'
4261
- }
4262
- },
4263
4110
  wave: {
4264
4111
  underline: {
4265
4112
  variable: false,
@@ -4499,13 +4346,6 @@ exports.issues = {
4499
4346
  what: 'Accesskey attribute value on an element is not unique for the page'
4500
4347
  }
4501
4348
  },
4502
- tenon: {
4503
- 101: {
4504
- variable: false,
4505
- quality: 1,
4506
- what: 'Duplicate accesskey value'
4507
- }
4508
- },
4509
4349
  wave: {
4510
4350
  accesskey: {
4511
4351
  variable: false,
@@ -5045,13 +4885,6 @@ exports.issues = {
5045
4885
  wcag: '2.5.5',
5046
4886
  weight: 3,
5047
4887
  tools: {
5048
- tenon: {
5049
- 152: {
5050
- variable: false,
5051
- quality: 1,
5052
- what: 'Actionable element is smaller than the minimum required size'
5053
- }
5054
- },
5055
4888
  testaro: {
5056
4889
  targetSize: {
5057
4890
  variable: false,
@@ -5250,11 +5083,11 @@ exports.issues = {
5250
5083
  what: 'Paragraph text is uppercased'
5251
5084
  }
5252
5085
  },
5253
- tenon: {
5254
- 153: {
5086
+ testaro: {
5087
+ allCaps: {
5255
5088
  variable: false,
5256
5089
  quality: 1,
5257
- what: 'Long string of text is in all caps'
5090
+ what: 'Element has a text substring of at least 8 upper-case characters'
5258
5091
  }
5259
5092
  }
5260
5093
  }
@@ -5270,11 +5103,31 @@ exports.issues = {
5270
5103
  what: 'Text of the paragraph is all italic'
5271
5104
  }
5272
5105
  },
5273
- tenon: {
5274
- 154: {
5106
+ testaro: {
5107
+ allSlanted: {
5275
5108
  variable: false,
5276
5109
  quality: 1,
5277
- what: 'Long string of text is italic'
5110
+ what: 'Element has a text substring of at least 40 italic or oblique characters'
5111
+ }
5112
+ }
5113
+ }
5114
+ },
5115
+ textDistortion: {
5116
+ wcag: '3.1.5',
5117
+ weight: 1,
5118
+ tools: {
5119
+ testaro: {
5120
+ distortion: {
5121
+ variable: false,
5122
+ quality: 1,
5123
+ what: 'Element text is distorted by a transform style property'
5124
+ }
5125
+ },
5126
+ testaro: {
5127
+ allCaps: {
5128
+ variable: false,
5129
+ quality: 1,
5130
+ what: 'Element has a text substring of at least 8 upper-case characters'
5278
5131
  }
5279
5132
  }
5280
5133
  }
@@ -5786,7 +5639,7 @@ exports.issues = {
5786
5639
  focOp: {
5787
5640
  variable: false,
5788
5641
  quality: 1,
5789
- what: 'Tab-focusable elements that are inoperable or operable elements that are not focusable'
5642
+ what: 'Tab-focusable elements are inoperable or operable elements are not Tab-focusable'
5790
5643
  }
5791
5644
  }
5792
5645
  }
@@ -5859,18 +5712,6 @@ exports.issues = {
5859
5712
  quality: 1,
5860
5713
  what: 'Element with aria-hidden has focusable content'
5861
5714
  }
5862
- },
5863
- tenon: {
5864
- 189: {
5865
- variable: false,
5866
- quality: 1,
5867
- what: 'Element is typically used for interaction but has a presentation role'
5868
- },
5869
- 194: {
5870
- variable: false,
5871
- quality: 1,
5872
- what: 'Visible element is focusable but has a presentation role or aria-hidden=true attribute'
5873
- }
5874
5715
  }
5875
5716
  }
5876
5717
  },
@@ -6003,7 +5844,7 @@ exports.issues = {
6003
5844
  hovInd: {
6004
5845
  variable: false,
6005
5846
  quality: 1,
6006
- what: 'Hovering changes the page content'
5847
+ what: 'Hovering is unclearly indicated'
6007
5848
  }
6008
5849
  }
6009
5850
  }
@@ -6123,19 +5964,6 @@ exports.issues = {
6123
5964
  }
6124
5965
  }
6125
5966
  },
6126
- linkVague: {
6127
- wcag: '2.4.4',
6128
- weight: 3,
6129
- tools: {
6130
- tenon: {
6131
- 73: {
6132
- variable: false,
6133
- quality: 1,
6134
- what: 'Link text is too generic to communicate the purpose or destination'
6135
- }
6136
- }
6137
- }
6138
- },
6139
5967
  linkIndication: {
6140
5968
  wcag: '1.3.3',
6141
5969
  weight: 2,
@@ -6364,7 +6192,7 @@ exports.issues = {
6364
6192
  zIndex: {
6365
6193
  variable: false,
6366
6194
  quality: 1,
6367
- what: 'Layering with nondefault z-index values'
6195
+ what: 'Element has a nondefault z-index value'
6368
6196
  }
6369
6197
  }
6370
6198
  }
@@ -6417,13 +6245,6 @@ exports.issues = {
6417
6245
  quality: 1,
6418
6246
  what: 'Enabled element with a textbox role has no nonpositive tabindex attribute'
6419
6247
  }
6420
- },
6421
- tenon: {
6422
- 190: {
6423
- variable: false,
6424
- quality: 1,
6425
- what: 'Interactive item is not natively actionable, but has no tabindex=0 attribute'
6426
- }
6427
6248
  }
6428
6249
  }
6429
6250
  },
@@ -6632,19 +6453,6 @@ exports.issues = {
6632
6453
  }
6633
6454
  }
6634
6455
  },
6635
- horizontalScrolling: {
6636
- wcag: '1.4.10',
6637
- weight: 3,
6638
- tools: {
6639
- tenon: {
6640
- 28: {
6641
- variable: false,
6642
- quality: 1,
6643
- what: 'Layout or sizing of the page causes horizontal scrolling'
6644
- }
6645
- }
6646
- }
6647
- },
6648
6456
  scrollRisk: {
6649
6457
  wcag: '1.4.10',
6650
6458
  weight: 1,
@@ -1,18 +1,18 @@
1
1
  /*
2
- tsp28
3
- Testilo score proc 28
2
+ tsp31
3
+ Testilo score proc 31
4
4
 
5
- Computes target score data and adds them to a ts26 report.
5
+ Computes target score data and adds them to a ts31 report.
6
6
  */
7
7
 
8
8
  // IMPORTS
9
9
 
10
- const {issueClasses} = require('./tic28');
10
+ const {issues} = require('./tic31');
11
11
 
12
12
  // CONSTANTS
13
13
 
14
14
  // ID of this proc.
15
- const scoreProcID = 'tsp28';
15
+ const scoreProcID = 'tsp31';
16
16
  // Configuration disclosures.
17
17
  const severityWeights = [1, 2, 3, 4];
18
18
  const toolWeight = 0.1;
@@ -33,14 +33,14 @@ const preventionWeight = 300;
33
33
  // Indexes of issues.
34
34
  const issueIndex = {};
35
35
  const issueMatcher = [];
36
- Object.keys(issueClasses).forEach(issueClassName => {
37
- Object.keys(issueClasses[issueClassName].tools).forEach(toolName => {
38
- Object.keys(issueClasses[issueClassName].tools[toolName]).forEach(issueID => {
36
+ Object.keys(issues).forEach(issueName => {
37
+ Object.keys(issues[issueName].tools).forEach(toolName => {
38
+ Object.keys(issues[issueName].tools[toolName]).forEach(issueID => {
39
39
  if (! issueIndex[toolName]) {
40
40
  issueIndex[toolName] = {};
41
41
  }
42
- issueIndex[toolName][issueID] = issueClassName;
43
- if (issueClasses[issueClassName].tools[toolName][issueID].variable) {
42
+ issueIndex[toolName][issueID] = issueName;
43
+ if (issues[issueName].tools[toolName][issueID].variable) {
44
44
  issueMatcher.push(issueID);
45
45
  }
46
46
  })
@@ -112,7 +112,7 @@ exports.scorer = report => {
112
112
  details.issue[issueID] = {
113
113
  score: 0,
114
114
  maxCount: 0,
115
- weight: issueClasses[issueID].weight,
115
+ weight: issues[issueID].weight,
116
116
  tools: {}
117
117
  };
118
118
  }
@@ -120,7 +120,7 @@ exports.scorer = report => {
120
120
  details.issue[issueID].tools[which] = {};
121
121
  }
122
122
  if (! details.issue[issueID].tools[which][ruleID]) {
123
- const ruleData = issueClasses[issueID].tools[which][ruleID];
123
+ const ruleData = issues[issueID].tools[which][ruleID];
124
124
  details.issue[issueID].tools[which][ruleID] = {
125
125
  quality: ruleData.quality,
126
126
  what: ruleData.what,
@@ -147,7 +147,7 @@ exports.scorer = report => {
147
147
  }
148
148
  }
149
149
  else {
150
- console.log(`ERROR: ${instance.ruleID} of ${which} not found in issueClasses`);
150
+ console.log(`ERROR: ${instance.ruleID} of ${which} not found in issues`);
151
151
  }
152
152
  });
153
153
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- spA11yMessage
2
+ tspA11yMessage
3
3
  Testilo score proc a11yMessage
4
4
 
5
5
  Computes scores from Testaro script tpA11yMessage and adds them to a report.