@jrpool/kilotest 60.9.1 → 62.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/openapi-3.0.yaml CHANGED
@@ -2,7 +2,7 @@ openapi: 3.0.3
2
2
  info:
3
3
  title: Kilotest API
4
4
  description: 'Kilotest is an ensemble testing and reporting service for front-end web quality. It uses an ensemble of 12 rule engines to test web pages for front-end quality (accessibility, usability, and web standards, including HTML, CSS, ARIA, and WCAG). Kilotest acts as a web server for human users, an MCP server for AI platforms, and an API for programmatic access. With this API you can request that a page be tested or retested, discover available reports, incrementally retrieve facts from a report: from what reports are available, to what issues were reported in one report, to what elements violated one issue, to what diagnoses rule engines gave for one violation.'
5
- version: 60.9.1
5
+ version: 62.0.0
6
6
  license:
7
7
  name: MIT
8
8
  url: https://github.com/jrpool/kilotest/blob/main/LICENSE
@@ -60,61 +60,39 @@ paths:
60
60
  response content:
61
61
  type: object
62
62
  properties:
63
+ how to get test results about a page:
64
+ type: object
65
+ properties:
66
+ method:
67
+ type: string
68
+ enum:
69
+ - GET
70
+ URL:
71
+ type: string
72
+ description: URL template; replace {identifier} with the identifier of the latest report about the page.
73
+ required:
74
+ - method
75
+ - URL
76
+ additionalProperties: false
77
+ web users can get test results about a page at:
78
+ type: string
79
+ description: URL template; replace {identifier} with the identifier of the latest report about the page.
63
80
  basics about all tested pages:
64
81
  type: array
65
82
  items:
66
83
  type: object
67
84
  properties:
68
- tested web page:
69
- type: object
70
- properties:
71
- description:
72
- type: string
73
- URL:
74
- type: string
75
- required:
76
- - description
77
- - URL
78
- additionalProperties: false
79
- number of reports about the page:
80
- type: number
81
- basics about the latest report:
82
- type: object
83
- properties:
84
- identifier:
85
- type: string
86
- description: 'Identifier of the report (example: 260503T0432-x9z).'
87
- completion date and time:
88
- type: string
89
- days since the report was completed:
90
- type: number
91
- nullable: true
92
- required:
93
- - identifier
94
- - completion date and time
95
- - days since the report was completed
96
- additionalProperties: false
97
- how to get details about the latest report:
98
- type: object
99
- properties:
100
- method:
101
- type: string
102
- enum:
103
- - GET
104
- URL:
105
- type: string
106
- required:
107
- - method
108
- - URL
109
- additionalProperties: false
110
- web users can get details about the latest report at:
85
+ description:
86
+ type: string
87
+ URL:
88
+ type: string
89
+ identifier:
111
90
  type: string
91
+ description: 'Identifier of the latest report about the page (example: 260503T0432-x9z).'
112
92
  required:
113
- - tested web page
114
- - number of reports about the page
115
- - basics about the latest report
116
- - how to get details about the latest report
117
- - web users can get details about the latest report at
93
+ - description
94
+ - URL
95
+ - identifier
118
96
  additionalProperties: false
119
97
  how to request that a page with no report be tested:
120
98
  type: object
@@ -156,6 +134,8 @@ paths:
156
134
  - URL
157
135
  additionalProperties: false
158
136
  required:
137
+ - how to get test results about a page
138
+ - web users can get test results about a page at
159
139
  - basics about all tested pages
160
140
  - how to request that a page with no report be tested
161
141
  - how a web user can request that the page be tested
@@ -580,15 +560,15 @@ paths:
580
560
  how to get details about the element:
581
561
  type: object
582
562
  properties:
583
- URL:
584
- type: string
585
- request method:
563
+ method:
586
564
  type: string
587
565
  enum:
588
566
  - GET
567
+ URL:
568
+ type: string
589
569
  required:
570
+ - method
590
571
  - URL
591
- - request method
592
572
  additionalProperties: false
593
573
  web users can get details about the element at:
594
574
  type: string
@@ -733,6 +713,8 @@ paths:
733
713
  items:
734
714
  type: object
735
715
  properties:
716
+ identifier of the rule engine:
717
+ description: Copied from the report act (which); type not guaranteed.
736
718
  identifier of the violated rule:
737
719
  description: Copied from the report instance (ruleID); type not guaranteed.
738
720
  description of the violation:
@@ -741,11 +723,41 @@ paths:
741
723
  description: Copied from the report instance (ordinalSeverity); type not guaranteed.
742
724
  count of violations of the rule by the element:
743
725
  type: number
726
+ how to report that you disagree with this diagnosis:
727
+ type: object
728
+ properties:
729
+ method:
730
+ type: string
731
+ enum:
732
+ - POST
733
+ URL:
734
+ type: string
735
+ request body:
736
+ type: object
737
+ properties:
738
+ engineID:
739
+ type: string
740
+ ruleID:
741
+ type: string
742
+ reason:
743
+ type: string
744
+ required:
745
+ - engineID
746
+ - ruleID
747
+ - reason
748
+ additionalProperties: false
749
+ required:
750
+ - method
751
+ - URL
752
+ - request body
753
+ additionalProperties: false
744
754
  required:
755
+ - identifier of the rule engine
745
756
  - identifier of the violated rule
746
757
  - description of the violation
747
758
  - severity of the violation on a 0-to-3 scale
748
759
  - count of violations of the rule by the element
760
+ - how to report that you disagree with this diagnosis
749
761
  additionalProperties: false
750
762
  - type: object
751
763
  properties:
@@ -1211,6 +1223,156 @@ paths:
1211
1223
  - response metadata
1212
1224
  - response content
1213
1225
  additionalProperties: false
1226
+ /api/reportDisagreement/{issueID}/{reportID}/{catalogIndex}:
1227
+ post:
1228
+ operationId: reportDisagreement
1229
+ summary: Report disagreement with a diagnosis
1230
+ parameters:
1231
+ - in: path
1232
+ name: issueID
1233
+ schema:
1234
+ type: string
1235
+ description: 'Issue identifier (example: contrastPoor)'
1236
+ required: true
1237
+ description: 'Issue identifier (example: contrastPoor)'
1238
+ - in: path
1239
+ name: reportID
1240
+ schema:
1241
+ type: string
1242
+ description: 'Identifier of the report (example: 260503T0432-x9z)'
1243
+ required: true
1244
+ description: 'Identifier of the report (example: 260503T0432-x9z)'
1245
+ - in: path
1246
+ name: catalogIndex
1247
+ schema:
1248
+ type: string
1249
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
1250
+ required: true
1251
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
1252
+ requestBody:
1253
+ content:
1254
+ application/json:
1255
+ schema:
1256
+ type: object
1257
+ properties:
1258
+ engineID:
1259
+ type: string
1260
+ description: 'Identifier of the rule engine that produced the disputed diagnosis (example: axe), as shown in the listDiagnoses output'
1261
+ ruleID:
1262
+ type: string
1263
+ description: 'Identifier of the rule whose diagnosis is disputed, as shown in the listDiagnoses output (example: color-contrast); if that output shows null for the rule identifier, use its description of the violation instead'
1264
+ reason:
1265
+ type: string
1266
+ description: 20- to 1000-character explanation of why the diagnosis is disputed
1267
+ required:
1268
+ - engineID
1269
+ - ruleID
1270
+ - reason
1271
+ responses:
1272
+ '200':
1273
+ description: Report disagreement with a diagnosis
1274
+ content:
1275
+ application/json:
1276
+ schema:
1277
+ type: object
1278
+ properties:
1279
+ tool collection:
1280
+ $ref: '#/components/schemas/ToolsFacts'
1281
+ tool name:
1282
+ type: string
1283
+ this request:
1284
+ type: object
1285
+ properties:
1286
+ description:
1287
+ type: string
1288
+ method:
1289
+ type: string
1290
+ enum:
1291
+ - POST
1292
+ URL:
1293
+ type: string
1294
+ body:
1295
+ type: object
1296
+ properties:
1297
+ engineID:
1298
+ type: string
1299
+ description: 'Identifier of the rule engine that produced the disputed diagnosis (example: axe), as shown in the listDiagnoses output'
1300
+ ruleID:
1301
+ type: string
1302
+ description: 'Identifier of the rule whose diagnosis is disputed, as shown in the listDiagnoses output (example: color-contrast); if that output shows null for the rule identifier, use its description of the violation instead'
1303
+ reason:
1304
+ type: string
1305
+ description: 20- to 1000-character explanation of why the diagnosis is disputed
1306
+ required:
1307
+ - engineID
1308
+ - ruleID
1309
+ - reason
1310
+ additionalProperties: false
1311
+ closest ancestor request:
1312
+ allOf:
1313
+ - $ref: '#/components/schemas/RequestReference'
1314
+ type: object
1315
+ nullable: true
1316
+ required:
1317
+ - description
1318
+ - method
1319
+ - URL
1320
+ - body
1321
+ - closest ancestor request
1322
+ additionalProperties: false
1323
+ URLs of similar requests for web users:
1324
+ type: object
1325
+ nullable: true
1326
+ response metadata:
1327
+ $ref: '#/components/schemas/ResponseMetadata'
1328
+ response content:
1329
+ type: object
1330
+ properties:
1331
+ details about your request:
1332
+ anyOf:
1333
+ - type: object
1334
+ properties:
1335
+ error:
1336
+ type: string
1337
+ required:
1338
+ - error
1339
+ additionalProperties: false
1340
+ - type: object
1341
+ properties:
1342
+ date and time received:
1343
+ type: string
1344
+ diagnosis you disagree with:
1345
+ type: object
1346
+ properties:
1347
+ issue identifier:
1348
+ type: string
1349
+ identifier of the rule engine:
1350
+ type: string
1351
+ identifier of the violated rule:
1352
+ type: string
1353
+ required:
1354
+ - issue identifier
1355
+ - identifier of the rule engine
1356
+ - identifier of the violated rule
1357
+ additionalProperties: false
1358
+ disposition:
1359
+ type: string
1360
+ required:
1361
+ - date and time received
1362
+ - diagnosis you disagree with
1363
+ - disposition
1364
+ additionalProperties: false
1365
+ required:
1366
+ - details about your request
1367
+ additionalProperties: false
1368
+ required:
1369
+ - tool collection
1370
+ - tool name
1371
+ - this request
1372
+ - URLs of similar requests for web users
1373
+ - response metadata
1374
+ - response content
1375
+ additionalProperties: false
1214
1376
  /api/orderNewTest:
1215
1377
  post:
1216
1378
  operationId: orderNewTest
package/openapi.yaml CHANGED
@@ -2,7 +2,7 @@ openapi: 3.1.0
2
2
  info:
3
3
  title: Kilotest API
4
4
  description: 'Kilotest is an ensemble testing and reporting service for front-end web quality. It uses an ensemble of 12 rule engines to test web pages for front-end quality (accessibility, usability, and web standards, including HTML, CSS, ARIA, and WCAG). Kilotest acts as a web server for human users, an MCP server for AI platforms, and an API for programmatic access. With this API you can request that a page be tested or retested, discover available reports, incrementally retrieve facts from a report: from what reports are available, to what issues were reported in one report, to what elements violated one issue, to what diagnoses rule engines gave for one violation.'
5
- version: 60.9.1
5
+ version: 62.0.0
6
6
  license:
7
7
  name: MIT
8
8
  identifier: MIT
@@ -58,61 +58,38 @@ paths:
58
58
  response content:
59
59
  type: object
60
60
  properties:
61
+ how to get test results about a page:
62
+ type: object
63
+ properties:
64
+ method:
65
+ type: string
66
+ const: GET
67
+ URL:
68
+ type: string
69
+ description: URL template; replace {identifier} with the identifier of the latest report about the page.
70
+ required:
71
+ - method
72
+ - URL
73
+ additionalProperties: false
74
+ web users can get test results about a page at:
75
+ type: string
76
+ description: URL template; replace {identifier} with the identifier of the latest report about the page.
61
77
  basics about all tested pages:
62
78
  type: array
63
79
  items:
64
80
  type: object
65
81
  properties:
66
- tested web page:
67
- type: object
68
- properties:
69
- description:
70
- type: string
71
- URL:
72
- type: string
73
- required:
74
- - description
75
- - URL
76
- additionalProperties: false
77
- number of reports about the page:
78
- type: number
79
- basics about the latest report:
80
- type: object
81
- properties:
82
- identifier:
83
- type: string
84
- description: 'Identifier of the report (example: 260503T0432-x9z).'
85
- completion date and time:
86
- type: string
87
- days since the report was completed:
88
- type:
89
- - number
90
- - 'null'
91
- required:
92
- - identifier
93
- - completion date and time
94
- - days since the report was completed
95
- additionalProperties: false
96
- how to get details about the latest report:
97
- type: object
98
- properties:
99
- method:
100
- type: string
101
- const: GET
102
- URL:
103
- type: string
104
- required:
105
- - method
106
- - URL
107
- additionalProperties: false
108
- web users can get details about the latest report at:
82
+ description:
83
+ type: string
84
+ URL:
85
+ type: string
86
+ identifier:
109
87
  type: string
88
+ description: 'Identifier of the latest report about the page (example: 260503T0432-x9z).'
110
89
  required:
111
- - tested web page
112
- - number of reports about the page
113
- - basics about the latest report
114
- - how to get details about the latest report
115
- - web users can get details about the latest report at
90
+ - description
91
+ - URL
92
+ - identifier
116
93
  additionalProperties: false
117
94
  how to request that a page with no report be tested:
118
95
  type: object
@@ -153,6 +130,8 @@ paths:
153
130
  - URL
154
131
  additionalProperties: false
155
132
  required:
133
+ - how to get test results about a page
134
+ - web users can get test results about a page at
156
135
  - basics about all tested pages
157
136
  - how to request that a page with no report be tested
158
137
  - how a web user can request that the page be tested
@@ -580,14 +559,14 @@ paths:
580
559
  how to get details about the element:
581
560
  type: object
582
561
  properties:
583
- URL:
584
- type: string
585
- request method:
562
+ method:
586
563
  type: string
587
564
  const: GET
565
+ URL:
566
+ type: string
588
567
  required:
568
+ - method
589
569
  - URL
590
- - request method
591
570
  additionalProperties: false
592
571
  web users can get details about the element at:
593
572
  type: string
@@ -730,6 +709,8 @@ paths:
730
709
  items:
731
710
  type: object
732
711
  properties:
712
+ identifier of the rule engine:
713
+ description: Copied from the report act (which); type not guaranteed.
733
714
  identifier of the violated rule:
734
715
  description: Copied from the report instance (ruleID); type not guaranteed.
735
716
  description of the violation:
@@ -738,11 +719,40 @@ paths:
738
719
  description: Copied from the report instance (ordinalSeverity); type not guaranteed.
739
720
  count of violations of the rule by the element:
740
721
  type: number
722
+ how to report that you disagree with this diagnosis:
723
+ type: object
724
+ properties:
725
+ method:
726
+ type: string
727
+ const: POST
728
+ URL:
729
+ type: string
730
+ request body:
731
+ type: object
732
+ properties:
733
+ engineID:
734
+ type: string
735
+ ruleID:
736
+ type: string
737
+ reason:
738
+ type: string
739
+ required:
740
+ - engineID
741
+ - ruleID
742
+ - reason
743
+ additionalProperties: false
744
+ required:
745
+ - method
746
+ - URL
747
+ - request body
748
+ additionalProperties: false
741
749
  required:
750
+ - identifier of the rule engine
742
751
  - identifier of the violated rule
743
752
  - description of the violation
744
753
  - severity of the violation on a 0-to-3 scale
745
754
  - count of violations of the rule by the element
755
+ - how to report that you disagree with this diagnosis
746
756
  additionalProperties: false
747
757
  - type: object
748
758
  properties:
@@ -1200,6 +1210,153 @@ paths:
1200
1210
  - response metadata
1201
1211
  - response content
1202
1212
  additionalProperties: false
1213
+ /api/reportDisagreement/{issueID}/{reportID}/{catalogIndex}:
1214
+ post:
1215
+ operationId: reportDisagreement
1216
+ summary: Report disagreement with a diagnosis
1217
+ parameters:
1218
+ - in: path
1219
+ name: issueID
1220
+ schema:
1221
+ type: string
1222
+ description: 'Issue identifier (example: contrastPoor)'
1223
+ required: true
1224
+ description: 'Issue identifier (example: contrastPoor)'
1225
+ - in: path
1226
+ name: reportID
1227
+ schema:
1228
+ type: string
1229
+ description: 'Identifier of the report (example: 260503T0432-x9z)'
1230
+ required: true
1231
+ description: 'Identifier of the report (example: 260503T0432-x9z)'
1232
+ - in: path
1233
+ name: catalogIndex
1234
+ schema:
1235
+ type: string
1236
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
1237
+ required: true
1238
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
1239
+ requestBody:
1240
+ content:
1241
+ application/json:
1242
+ schema:
1243
+ type: object
1244
+ properties:
1245
+ engineID:
1246
+ type: string
1247
+ description: 'Identifier of the rule engine that produced the disputed diagnosis (example: axe), as shown in the listDiagnoses output'
1248
+ ruleID:
1249
+ type: string
1250
+ description: 'Identifier of the rule whose diagnosis is disputed, as shown in the listDiagnoses output (example: color-contrast); if that output shows null for the rule identifier, use its description of the violation instead'
1251
+ reason:
1252
+ type: string
1253
+ description: 20- to 1000-character explanation of why the diagnosis is disputed
1254
+ required:
1255
+ - engineID
1256
+ - ruleID
1257
+ - reason
1258
+ responses:
1259
+ '200':
1260
+ description: Report disagreement with a diagnosis
1261
+ content:
1262
+ application/json:
1263
+ schema:
1264
+ type: object
1265
+ properties:
1266
+ tool collection:
1267
+ $ref: '#/components/schemas/ToolsFacts'
1268
+ tool name:
1269
+ type: string
1270
+ this request:
1271
+ type: object
1272
+ properties:
1273
+ description:
1274
+ type: string
1275
+ method:
1276
+ type: string
1277
+ const: POST
1278
+ URL:
1279
+ type: string
1280
+ body:
1281
+ type: object
1282
+ properties:
1283
+ engineID:
1284
+ type: string
1285
+ description: 'Identifier of the rule engine that produced the disputed diagnosis (example: axe), as shown in the listDiagnoses output'
1286
+ ruleID:
1287
+ type: string
1288
+ description: 'Identifier of the rule whose diagnosis is disputed, as shown in the listDiagnoses output (example: color-contrast); if that output shows null for the rule identifier, use its description of the violation instead'
1289
+ reason:
1290
+ type: string
1291
+ description: 20- to 1000-character explanation of why the diagnosis is disputed
1292
+ required:
1293
+ - engineID
1294
+ - ruleID
1295
+ - reason
1296
+ additionalProperties: false
1297
+ closest ancestor request:
1298
+ anyOf:
1299
+ - $ref: '#/components/schemas/RequestReference'
1300
+ - type: 'null'
1301
+ required:
1302
+ - description
1303
+ - method
1304
+ - URL
1305
+ - body
1306
+ - closest ancestor request
1307
+ additionalProperties: false
1308
+ URLs of similar requests for web users:
1309
+ type: 'null'
1310
+ response metadata:
1311
+ $ref: '#/components/schemas/ResponseMetadata'
1312
+ response content:
1313
+ type: object
1314
+ properties:
1315
+ details about your request:
1316
+ anyOf:
1317
+ - type: object
1318
+ properties:
1319
+ error:
1320
+ type: string
1321
+ required:
1322
+ - error
1323
+ additionalProperties: false
1324
+ - type: object
1325
+ properties:
1326
+ date and time received:
1327
+ type: string
1328
+ diagnosis you disagree with:
1329
+ type: object
1330
+ properties:
1331
+ issue identifier:
1332
+ type: string
1333
+ identifier of the rule engine:
1334
+ type: string
1335
+ identifier of the violated rule:
1336
+ type: string
1337
+ required:
1338
+ - issue identifier
1339
+ - identifier of the rule engine
1340
+ - identifier of the violated rule
1341
+ additionalProperties: false
1342
+ disposition:
1343
+ type: string
1344
+ required:
1345
+ - date and time received
1346
+ - diagnosis you disagree with
1347
+ - disposition
1348
+ additionalProperties: false
1349
+ required:
1350
+ - details about your request
1351
+ additionalProperties: false
1352
+ required:
1353
+ - tool collection
1354
+ - tool name
1355
+ - this request
1356
+ - URLs of similar requests for web users
1357
+ - response metadata
1358
+ - response content
1359
+ additionalProperties: false
1203
1360
  /api/orderNewTest:
1204
1361
  post:
1205
1362
  operationId: orderNewTest
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jrpool/kilotest",
3
- "version": "60.9.1",
3
+ "version": "62.0.0",
4
4
  "description": "Ensemble testing for front-end web quality",
5
5
  "type": "module",
6
6
  "main": "index.ts",
package/robots.txt CHANGED
@@ -14,4 +14,7 @@ Disallow: /rewindReportsForm.html
14
14
  Disallow: /expungeReportsForm.html
15
15
  Disallow: /renewWCAGForm.html
16
16
  Disallow: /renewWCAG.html
17
+ # JSON endpoints, whose contents are not indexable pages; crawling them is pointless.
18
+ Disallow: /api/
19
+ Disallow: /fullReport.json
17
20
  Sitemap: https://kilotest.com/sitemap.xml