@jrpool/kilotest 59.1.4 → 60.0.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/README.md +2 -5
- package/api/awaitTest.test.ts +9 -9
- package/api/awaitTest.ts +12 -12
- package/api/getReport.test.ts +4 -4
- package/api/getReport.ts +9 -9
- package/api/listDiagnoses.test.ts +14 -14
- package/api/listDiagnoses.ts +8 -8
- package/api/listIssues.test.ts +15 -15
- package/api/listIssues.ts +18 -20
- package/api/listPages.test.ts +2 -2
- package/api/listPages.ts +4 -4
- package/api/listViolators.test.ts +10 -10
- package/api/listViolators.ts +10 -10
- package/api/orderNewTest.test.ts +1 -2
- package/api/orderNewTest.ts +3 -4
- package/api/orderRetest.test.ts +10 -10
- package/api/orderRetest.ts +13 -14
- package/api/requestRetest.test.ts +11 -11
- package/api/requestRetest.ts +11 -11
- package/api/routes.ts +9 -11
- package/api/schemas.ts +18 -28
- package/api/util.test.ts +2 -2
- package/api/util.ts +7 -7
- package/capability.md +4 -4
- package/docs/AI-TOOLS.md +43 -1
- package/docs/decisions/009-report-id.md +16 -0
- package/index.test.ts +91 -41
- package/index.ts +66 -15
- package/lhm.plugin.json +33 -119
- package/llms-full.txt +18 -24
- package/llms.txt +12 -12
- package/mcp.test.ts +11 -20
- package/mcp.ts +18 -18
- package/openapi-3.0.yaml +1847 -0
- package/openapi.yaml +38 -97
- package/package.json +1 -1
- package/routing.test.ts +1 -1
- package/scripts/generate-openapi.ts +83 -1
- package/server.json +1 -1
- package/util.test.ts +32 -33
- package/util.ts +47 -43
- package/web/hideReportForm/index.ts +5 -6
- package/web/listDiagnoses/index.ts +4 -5
- package/web/listDiagnoses/listDiagnoses.test.ts +13 -13
- package/web/listIssues/index.ts +11 -12
- package/web/listIssues/listIssues.test.ts +24 -24
- package/web/listPages/index.ts +2 -2
- package/web/listPages/listPages.test.ts +2 -2
- package/web/listTopIssues/index.ts +2 -2
- package/web/listViolators/index.ts +5 -6
- package/web/listViolators/listViolators.test.ts +12 -12
- package/web/reannotate/index.ts +3 -3
- package/web/reannotateForm/index.ts +1 -2
- package/web/reportDeletion.ts +9 -12
- package/web/requestRetest/index.ts +2 -2
- package/web/requestRetest/requestRetest.test.ts +7 -7
- package/web/requestRetestForm/index.html +2 -2
- package/web/requestRetestForm/index.ts +3 -4
- package/web/requestRetestForm/requestRetestForm.test.ts +7 -8
- package/web/unhideReportForm/index.ts +4 -6
- package/web/util.test.ts +29 -29
- package/web/util.ts +1 -1
package/lhm.plugin.json
CHANGED
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"properties": {
|
|
126
126
|
"identifier": {
|
|
127
127
|
"type": "string",
|
|
128
|
-
"description": "
|
|
128
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)."
|
|
129
129
|
},
|
|
130
130
|
"completion date and time": {
|
|
131
131
|
"type": "string"
|
|
@@ -419,18 +419,13 @@
|
|
|
419
419
|
"inputSchema": {
|
|
420
420
|
"type": "object",
|
|
421
421
|
"properties": {
|
|
422
|
-
"
|
|
422
|
+
"reportID": {
|
|
423
423
|
"type": "string",
|
|
424
|
-
"description": "
|
|
425
|
-
},
|
|
426
|
-
"jobID": {
|
|
427
|
-
"type": "string",
|
|
428
|
-
"description": "Job identifier of the report (example: x9z)"
|
|
424
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)"
|
|
429
425
|
}
|
|
430
426
|
},
|
|
431
427
|
"required": [
|
|
432
|
-
"
|
|
433
|
-
"jobID"
|
|
428
|
+
"reportID"
|
|
434
429
|
],
|
|
435
430
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
436
431
|
},
|
|
@@ -496,7 +491,7 @@
|
|
|
496
491
|
"properties": {
|
|
497
492
|
"identifier": {
|
|
498
493
|
"type": "string",
|
|
499
|
-
"description": "
|
|
494
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)."
|
|
500
495
|
},
|
|
501
496
|
"completion date and time": {
|
|
502
497
|
"type": "string"
|
|
@@ -1073,7 +1068,7 @@
|
|
|
1073
1068
|
"properties": {
|
|
1074
1069
|
"identifier": {
|
|
1075
1070
|
"type": "string",
|
|
1076
|
-
"description": "
|
|
1071
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)."
|
|
1077
1072
|
},
|
|
1078
1073
|
"completion date and time": {
|
|
1079
1074
|
"type": "string"
|
|
@@ -1162,19 +1157,14 @@
|
|
|
1162
1157
|
"type": "string",
|
|
1163
1158
|
"description": "Issue identifier (example: contrastPoor)"
|
|
1164
1159
|
},
|
|
1165
|
-
"
|
|
1166
|
-
"type": "string",
|
|
1167
|
-
"description": "Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)"
|
|
1168
|
-
},
|
|
1169
|
-
"jobID": {
|
|
1160
|
+
"reportID": {
|
|
1170
1161
|
"type": "string",
|
|
1171
|
-
"description": "
|
|
1162
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)"
|
|
1172
1163
|
}
|
|
1173
1164
|
},
|
|
1174
1165
|
"required": [
|
|
1175
1166
|
"issueID",
|
|
1176
|
-
"
|
|
1177
|
-
"jobID"
|
|
1167
|
+
"reportID"
|
|
1178
1168
|
],
|
|
1179
1169
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
1180
1170
|
},
|
|
@@ -1512,7 +1502,7 @@
|
|
|
1512
1502
|
"properties": {
|
|
1513
1503
|
"identifier": {
|
|
1514
1504
|
"type": "string",
|
|
1515
|
-
"description": "
|
|
1505
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)."
|
|
1516
1506
|
},
|
|
1517
1507
|
"completion date and time": {
|
|
1518
1508
|
"type": "string"
|
|
@@ -1672,20 +1662,15 @@
|
|
|
1672
1662
|
"type": "string",
|
|
1673
1663
|
"description": "Issue identifier (example: contrastPoor)"
|
|
1674
1664
|
},
|
|
1675
|
-
"
|
|
1665
|
+
"reportID": {
|
|
1676
1666
|
"type": "string",
|
|
1677
|
-
"description": "
|
|
1678
|
-
},
|
|
1679
|
-
"jobID": {
|
|
1680
|
-
"type": "string",
|
|
1681
|
-
"description": "Job identifier of the report (example: x9z)"
|
|
1667
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)"
|
|
1682
1668
|
}
|
|
1683
1669
|
},
|
|
1684
1670
|
"required": [
|
|
1685
1671
|
"catalogIndex",
|
|
1686
1672
|
"issueID",
|
|
1687
|
-
"
|
|
1688
|
-
"jobID"
|
|
1673
|
+
"reportID"
|
|
1689
1674
|
],
|
|
1690
1675
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
1691
1676
|
},
|
|
@@ -2062,7 +2047,7 @@
|
|
|
2062
2047
|
"properties": {
|
|
2063
2048
|
"identifier": {
|
|
2064
2049
|
"type": "string",
|
|
2065
|
-
"description": "
|
|
2050
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)."
|
|
2066
2051
|
},
|
|
2067
2052
|
"completion date and time": {
|
|
2068
2053
|
"type": "string"
|
|
@@ -2188,18 +2173,13 @@
|
|
|
2188
2173
|
"inputSchema": {
|
|
2189
2174
|
"type": "object",
|
|
2190
2175
|
"properties": {
|
|
2191
|
-
"
|
|
2176
|
+
"reportID": {
|
|
2192
2177
|
"type": "string",
|
|
2193
|
-
"description": "
|
|
2194
|
-
},
|
|
2195
|
-
"jobID": {
|
|
2196
|
-
"type": "string",
|
|
2197
|
-
"description": "Job identifier of the report (example: x9z)"
|
|
2178
|
+
"description": "Identifier of the report (example: 260503T0432-x9z)"
|
|
2198
2179
|
}
|
|
2199
2180
|
},
|
|
2200
2181
|
"required": [
|
|
2201
|
-
"
|
|
2202
|
-
"jobID"
|
|
2182
|
+
"reportID"
|
|
2203
2183
|
],
|
|
2204
2184
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
2205
2185
|
},
|
|
@@ -2810,13 +2790,9 @@
|
|
|
2810
2790
|
"inputSchema": {
|
|
2811
2791
|
"type": "object",
|
|
2812
2792
|
"properties": {
|
|
2813
|
-
"
|
|
2814
|
-
"type": "string",
|
|
2815
|
-
"description": "Timestamp of the latest report about the page in YYMMDDTHHmm format (example: 260503T0432)"
|
|
2816
|
-
},
|
|
2817
|
-
"jobID": {
|
|
2793
|
+
"reportID": {
|
|
2818
2794
|
"type": "string",
|
|
2819
|
-
"description": "
|
|
2795
|
+
"description": "Identifier of the latest report about the page (example: 260503T0432-x9z)"
|
|
2820
2796
|
},
|
|
2821
2797
|
"reason": {
|
|
2822
2798
|
"type": "string",
|
|
@@ -2824,8 +2800,7 @@
|
|
|
2824
2800
|
}
|
|
2825
2801
|
},
|
|
2826
2802
|
"required": [
|
|
2827
|
-
"
|
|
2828
|
-
"jobID",
|
|
2803
|
+
"reportID",
|
|
2829
2804
|
"reason"
|
|
2830
2805
|
],
|
|
2831
2806
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -3603,7 +3578,8 @@
|
|
|
3603
3578
|
"report identifier": {
|
|
3604
3579
|
"anyOf": [
|
|
3605
3580
|
{
|
|
3606
|
-
"
|
|
3581
|
+
"type": "string",
|
|
3582
|
+
"description": "Identifier of the report, to pass to listIssues once the report is ready (example: 260503T0432-x9z)."
|
|
3607
3583
|
},
|
|
3608
3584
|
{
|
|
3609
3585
|
"type": "null"
|
|
@@ -3779,24 +3755,6 @@
|
|
|
3779
3755
|
"date and time"
|
|
3780
3756
|
],
|
|
3781
3757
|
"additionalProperties": false
|
|
3782
|
-
},
|
|
3783
|
-
"ReportIdentifier": {
|
|
3784
|
-
"type": "object",
|
|
3785
|
-
"properties": {
|
|
3786
|
-
"timeStamp": {
|
|
3787
|
-
"type": "string",
|
|
3788
|
-
"description": "Timestamp to pass to listIssues once the report is ready."
|
|
3789
|
-
},
|
|
3790
|
-
"jobID": {
|
|
3791
|
-
"type": "string",
|
|
3792
|
-
"description": "Job identifier to pass to listIssues once the report is ready."
|
|
3793
|
-
}
|
|
3794
|
-
},
|
|
3795
|
-
"required": [
|
|
3796
|
-
"timeStamp",
|
|
3797
|
-
"jobID"
|
|
3798
|
-
],
|
|
3799
|
-
"additionalProperties": false
|
|
3800
3758
|
}
|
|
3801
3759
|
}
|
|
3802
3760
|
},
|
|
@@ -3817,13 +3775,9 @@
|
|
|
3817
3775
|
"inputSchema": {
|
|
3818
3776
|
"type": "object",
|
|
3819
3777
|
"properties": {
|
|
3820
|
-
"
|
|
3778
|
+
"reportID": {
|
|
3821
3779
|
"type": "string",
|
|
3822
|
-
"description": "
|
|
3823
|
-
},
|
|
3824
|
-
"jobID": {
|
|
3825
|
-
"type": "string",
|
|
3826
|
-
"description": "Job identifier of the latest report about the page (example: x9z)"
|
|
3780
|
+
"description": "Identifier of the latest report about the page (example: 260503T0432-x9z)"
|
|
3827
3781
|
},
|
|
3828
3782
|
"reason": {
|
|
3829
3783
|
"type": "string",
|
|
@@ -3831,8 +3785,7 @@
|
|
|
3831
3785
|
}
|
|
3832
3786
|
},
|
|
3833
3787
|
"required": [
|
|
3834
|
-
"
|
|
3835
|
-
"jobID",
|
|
3788
|
+
"reportID",
|
|
3836
3789
|
"reason"
|
|
3837
3790
|
],
|
|
3838
3791
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
@@ -3977,7 +3930,8 @@
|
|
|
3977
3930
|
"report identifier": {
|
|
3978
3931
|
"anyOf": [
|
|
3979
3932
|
{
|
|
3980
|
-
"
|
|
3933
|
+
"type": "string",
|
|
3934
|
+
"description": "Identifier of the report, to pass to listIssues once the report is ready (example: 260503T0432-x9z)."
|
|
3981
3935
|
},
|
|
3982
3936
|
{
|
|
3983
3937
|
"type": "null"
|
|
@@ -4153,24 +4107,6 @@
|
|
|
4153
4107
|
"date and time"
|
|
4154
4108
|
],
|
|
4155
4109
|
"additionalProperties": false
|
|
4156
|
-
},
|
|
4157
|
-
"ReportIdentifier": {
|
|
4158
|
-
"type": "object",
|
|
4159
|
-
"properties": {
|
|
4160
|
-
"timeStamp": {
|
|
4161
|
-
"type": "string",
|
|
4162
|
-
"description": "Timestamp to pass to listIssues once the report is ready."
|
|
4163
|
-
},
|
|
4164
|
-
"jobID": {
|
|
4165
|
-
"type": "string",
|
|
4166
|
-
"description": "Job identifier to pass to listIssues once the report is ready."
|
|
4167
|
-
}
|
|
4168
|
-
},
|
|
4169
|
-
"required": [
|
|
4170
|
-
"timeStamp",
|
|
4171
|
-
"jobID"
|
|
4172
|
-
],
|
|
4173
|
-
"additionalProperties": false
|
|
4174
4110
|
}
|
|
4175
4111
|
}
|
|
4176
4112
|
},
|
|
@@ -4191,18 +4127,13 @@
|
|
|
4191
4127
|
"inputSchema": {
|
|
4192
4128
|
"type": "object",
|
|
4193
4129
|
"properties": {
|
|
4194
|
-
"
|
|
4195
|
-
"type": "string",
|
|
4196
|
-
"description": "Timestamp of the ordered job, from the report identifier returned by orderNewTest, in YYMMDDTHHmm format (example: 260503T0432)"
|
|
4197
|
-
},
|
|
4198
|
-
"jobID": {
|
|
4130
|
+
"reportID": {
|
|
4199
4131
|
"type": "string",
|
|
4200
|
-
"description": "
|
|
4132
|
+
"description": "Report identifier returned by orderNewTest or orderRetest (example: 260503T0432-x9z)"
|
|
4201
4133
|
}
|
|
4202
4134
|
},
|
|
4203
4135
|
"required": [
|
|
4204
|
-
"
|
|
4205
|
-
"jobID"
|
|
4136
|
+
"reportID"
|
|
4206
4137
|
],
|
|
4207
4138
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
4208
4139
|
},
|
|
@@ -4285,7 +4216,8 @@
|
|
|
4285
4216
|
"type": "object",
|
|
4286
4217
|
"properties": {
|
|
4287
4218
|
"report identifier": {
|
|
4288
|
-
"
|
|
4219
|
+
"type": "string",
|
|
4220
|
+
"description": "Identifier of the report, to pass to listIssues once the report is ready (example: 260503T0432-x9z)."
|
|
4289
4221
|
}
|
|
4290
4222
|
},
|
|
4291
4223
|
"required": [
|
|
@@ -4476,24 +4408,6 @@
|
|
|
4476
4408
|
"date and time"
|
|
4477
4409
|
],
|
|
4478
4410
|
"additionalProperties": false
|
|
4479
|
-
},
|
|
4480
|
-
"ReportIdentifier": {
|
|
4481
|
-
"type": "object",
|
|
4482
|
-
"properties": {
|
|
4483
|
-
"timeStamp": {
|
|
4484
|
-
"type": "string",
|
|
4485
|
-
"description": "Timestamp to pass to listIssues once the report is ready."
|
|
4486
|
-
},
|
|
4487
|
-
"jobID": {
|
|
4488
|
-
"type": "string",
|
|
4489
|
-
"description": "Job identifier to pass to listIssues once the report is ready."
|
|
4490
|
-
}
|
|
4491
|
-
},
|
|
4492
|
-
"required": [
|
|
4493
|
-
"timeStamp",
|
|
4494
|
-
"jobID"
|
|
4495
|
-
],
|
|
4496
|
-
"additionalProperties": false
|
|
4497
4411
|
}
|
|
4498
4412
|
}
|
|
4499
4413
|
},
|
|
@@ -4509,5 +4423,5 @@
|
|
|
4509
4423
|
}
|
|
4510
4424
|
}
|
|
4511
4425
|
],
|
|
4512
|
-
"version": "59.1.
|
|
4426
|
+
"version": "59.1.4"
|
|
4513
4427
|
}
|
package/llms-full.txt
CHANGED
|
@@ -56,11 +56,11 @@ Kilotest offers a comprehensive suite of capabilities to users via its web UI:
|
|
|
56
56
|
|
|
57
57
|
- [Home page](https://kilotest.com/)
|
|
58
58
|
- [Get a list of all tested pages, each linked to its latest report](https://kilotest.com/listPages.html)
|
|
59
|
-
- Get statistics about issues reported in one report, and a history of all reports about the same page: `https://kilotest.com/listIssues.html/{
|
|
60
|
-
- Get details about one issue reported in one report: `https://kilotest.com/listViolators.html/{issueID}/{
|
|
61
|
-
- Get diagnoses by rule engines of rule violations for one HTML element exhibiting one issue in one report: `https://kilotest.com/listDiagnoses.html/{issueID}/{
|
|
59
|
+
- Get statistics about issues reported in one report, and a history of all reports about the same page: `https://kilotest.com/listIssues.html/{reportID}`
|
|
60
|
+
- Get details about one issue reported in one report: `https://kilotest.com/listViolators.html/{issueID}/{reportID}`
|
|
61
|
+
- Get diagnoses by rule engines of rule violations for one HTML element exhibiting one issue in one report: `https://kilotest.com/listDiagnoses.html/{issueID}/{reportID}/{catalogIndex}`
|
|
62
62
|
- [Request the testing of a not-yet-tested page](https://kilotest.com/requestNewTestForm.html)
|
|
63
|
-
- Request the retesting of a previously tested page: `https://kilotest.com/requestRetestForm.html/{
|
|
63
|
+
- Request the retesting of a previously tested page: `https://kilotest.com/requestRetestForm.html/{reportID}`
|
|
64
64
|
- [Get statistics about frequently reported issues across all pages](https://kilotest.com/listTopIssues.html)
|
|
65
65
|
- [Get a list of the operations that Kilotest managers are authorized to request](https://kilotest.com/manage.html)
|
|
66
66
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorialWeb.html)
|
|
@@ -80,29 +80,26 @@ Kilotest offers these tools:
|
|
|
80
80
|
- `listIssues`
|
|
81
81
|
- method: `GET`
|
|
82
82
|
- purpose: list all issues in one report, and all reports about the same page, from oldest to latest
|
|
83
|
-
- path: `/api/listIssues/{
|
|
83
|
+
- path: `/api/listIssues/{reportID}`
|
|
84
84
|
- parameters
|
|
85
|
-
- `
|
|
86
|
-
- `jobID`: final segment of report identifier
|
|
85
|
+
- `reportID`: identifier of the report, with YYMMDDTHHmm format for its initial segment (example: 260503T0432-x9z)
|
|
87
86
|
- source of parameters: response to a `listPages` request, or the history of reports about the page in the response to a `listIssues` request
|
|
88
87
|
- `listViolators`
|
|
89
88
|
- method: `GET`
|
|
90
89
|
- purpose: list all elements exhibiting one issue in one report
|
|
91
|
-
- path: `/api/listViolators/{issueID}/{
|
|
90
|
+
- path: `/api/listViolators/{issueID}/{reportID}`
|
|
92
91
|
- parameters
|
|
93
92
|
- `issueID`: identifier of the issue
|
|
94
|
-
- `
|
|
95
|
-
- `jobID`: final segment of report identifier
|
|
93
|
+
- `reportID`: identifier of the report, with YYMMDDTHHmm format for its initial segment (example: 260503T0432-x9z)
|
|
96
94
|
- source of parameters: response to a `listIssues` request
|
|
97
95
|
- `listDiagnoses`
|
|
98
96
|
- method: `GET`
|
|
99
97
|
- purpose: list all diagnoses of one issue exhibited by one element in one report
|
|
100
|
-
- path: `/api/listDiagnoses/{catalogIndex}/{issueID}/{
|
|
98
|
+
- path: `/api/listDiagnoses/{catalogIndex}/{issueID}/{reportID}`
|
|
101
99
|
- parameters
|
|
102
100
|
- `catalogIndex`: index of the catalog entry of the element
|
|
103
101
|
- `issueID`: identifier of the issue
|
|
104
|
-
- `
|
|
105
|
-
- `jobID`: final segment of report identifier
|
|
102
|
+
- `reportID`: identifier of the report, with YYMMDDTHHmm format for its initial segment (example: 260503T0432-x9z)
|
|
106
103
|
- source of parameters: response to a `listViolators` request
|
|
107
104
|
- `requestNewTest`
|
|
108
105
|
- method: `POST`
|
|
@@ -115,10 +112,9 @@ Kilotest offers these tools:
|
|
|
115
112
|
- `requestRetest`
|
|
116
113
|
- method: `POST`
|
|
117
114
|
- purpose: request retesting of one web page about which a report is available
|
|
118
|
-
- path: `/api/requestRetest/{
|
|
115
|
+
- path: `/api/requestRetest/{reportID}`
|
|
119
116
|
- parameters
|
|
120
|
-
- `
|
|
121
|
-
- `jobID`: final segment of report identifier
|
|
117
|
+
- `reportID`: identifier of the report, with YYMMDDTHHmm format for its initial segment (example: 260503T0432-x9z)
|
|
122
118
|
- source of parameters: response to a `listIssues` request
|
|
123
119
|
- payload properties
|
|
124
120
|
- `reason`: reason for retesting the page
|
|
@@ -136,25 +132,23 @@ Kilotest offers these tools:
|
|
|
136
132
|
- `description`: description of the page to be tested
|
|
137
133
|
- `URL`: URL of the page to be tested
|
|
138
134
|
- `reason`: reason for testing the page
|
|
139
|
-
- response includes a report identifier (`
|
|
135
|
+
- response includes a report identifier (`reportID`) once the job is enqueued
|
|
140
136
|
- `orderRetest`
|
|
141
137
|
- method: `POST`
|
|
142
138
|
- purpose: order immediate, automatically approved retesting of one web page about which a report is available, instead of waiting for manual approval
|
|
143
|
-
- path: `/api/orderRetest/{
|
|
139
|
+
- path: `/api/orderRetest/{reportID}`
|
|
144
140
|
- parameters
|
|
145
|
-
- `
|
|
146
|
-
- `jobID`: final segment of report identifier
|
|
141
|
+
- `reportID`: identifier of the report, with YYMMDDTHHmm format for its initial segment (example: 260503T0432-x9z)
|
|
147
142
|
- source of parameters: response to a `listIssues` request
|
|
148
143
|
- payload properties
|
|
149
144
|
- `reason`: reason for retesting the page
|
|
150
|
-
- response includes a report identifier (`
|
|
145
|
+
- response includes a report identifier (`reportID`) once the job is enqueued
|
|
151
146
|
- `awaitTest`
|
|
152
147
|
- method: `POST`
|
|
153
148
|
- purpose: wait for a job ordered via `orderNewTest` or `orderRetest` to complete; blocks until the report is ready, the job fails, or a maximum wait time elapses, then returns
|
|
154
|
-
- path: `/api/awaitTest/{
|
|
149
|
+
- path: `/api/awaitTest/{reportID}`
|
|
155
150
|
- parameters
|
|
156
|
-
- `
|
|
157
|
-
- `jobID`: final segment of the report identifier returned by `orderNewTest` or `orderRetest`
|
|
151
|
+
- `reportID`: the report identifier returned by `orderNewTest` or `orderRetest` (example: 260503T0432-x9z)
|
|
158
152
|
- source of parameters: response to an `orderNewTest` or `orderRetest` request
|
|
159
153
|
- caveat: testing typically takes 2 to 4 minutes; sends no interim notices while waiting
|
|
160
154
|
|
package/llms.txt
CHANGED
|
@@ -5,16 +5,16 @@ Kilotest integrates an ensemble of 12 rule engines, with about 1,300 rules, to t
|
|
|
5
5
|
## API
|
|
6
6
|
|
|
7
7
|
- [List all tested pages, each with its latest report](/api/listPages) (`GET`)
|
|
8
|
-
- List all issues in one report, and all reports about the same page: `/api/listIssues/{
|
|
9
|
-
- List all elements exhibiting one issue in one report: `/api/listViolators/{issueID}/{
|
|
10
|
-
- List all diagnoses of one element exhibiting one issue in one report: `/api/listDiagnoses/{catalogIndex}/{issueID}/{
|
|
11
|
-
- Get one full report in JSON: `/api/getReport/{
|
|
8
|
+
- List all issues in one report, and all reports about the same page: `/api/listIssues/{reportID}` (`GET`)
|
|
9
|
+
- List all elements exhibiting one issue in one report: `/api/listViolators/{issueID}/{reportID}` (`GET`)
|
|
10
|
+
- List all diagnoses of one element exhibiting one issue in one report: `/api/listDiagnoses/{catalogIndex}/{issueID}/{reportID}` (`GET`)
|
|
11
|
+
- Get one full report in JSON: `/api/getReport/{reportID}` (`GET`)
|
|
12
12
|
- Request testing of a web page: `/api/requestNewTest` (`POST`)
|
|
13
|
-
- Request retesting of a web page: `/api/requestRetest/{
|
|
13
|
+
- Request retesting of a web page: `/api/requestRetest/{reportID}` (`POST`)
|
|
14
14
|
- Request adding or improving a feature: `/api/requestFeature` (`POST`)
|
|
15
15
|
- Order immediate, automatically approved testing of a web page: `/api/orderNewTest` (`POST`)
|
|
16
|
-
- Order immediate, automatically approved retesting of a web page: `/api/orderRetest/{
|
|
17
|
-
- Wait for a job ordered via orderNewTest or orderRetest to complete: `/api/awaitTest/{
|
|
16
|
+
- Order immediate, automatically approved retesting of a web page: `/api/orderRetest/{reportID}` (`POST`)
|
|
17
|
+
- Wait for a job ordered via orderNewTest or orderRetest to complete: `/api/awaitTest/{reportID}` (`POST`)
|
|
18
18
|
|
|
19
19
|
## MCP Server
|
|
20
20
|
|
|
@@ -23,12 +23,12 @@ Kilotest integrates an ensemble of 12 rule engines, with about 1,300 rules, to t
|
|
|
23
23
|
## Web UI
|
|
24
24
|
|
|
25
25
|
- [List all tested pages, each linked to its latest report](https://kilotest.com/listPages.html)
|
|
26
|
-
- List all issues in one report, and all reports about the same page: `https://kilotest.com/listIssues.html/{
|
|
27
|
-
- List all elements exhibiting one issue in one report: `https://kilotest.com/listViolators.html/{issueID}/{
|
|
28
|
-
- List all diagnoses of one element exhibiting one issue in one report: `https://kilotest.com/listDiagnoses.html/{issueID}/{
|
|
29
|
-
- Get one full report in JSON: `https://kilotest.com/fullReport.json/{
|
|
26
|
+
- List all issues in one report, and all reports about the same page: `https://kilotest.com/listIssues.html/{reportID}`
|
|
27
|
+
- List all elements exhibiting one issue in one report: `https://kilotest.com/listViolators.html/{issueID}/{reportID}`
|
|
28
|
+
- List all diagnoses of one element exhibiting one issue in one report: `https://kilotest.com/listDiagnoses.html/{issueID}/{reportID}/{catalogIndex}`
|
|
29
|
+
- Get one full report in JSON: `https://kilotest.com/fullReport.json/{reportID}`
|
|
30
30
|
- [Request testing of a web page](https://kilotest.com/requestNewTestForm.html)
|
|
31
|
-
- Request retesting of a web page: `https://kilotest.com/requestRetestForm.html/{
|
|
31
|
+
- Request retesting of a web page: `https://kilotest.com/requestRetestForm.html/{reportID}`
|
|
32
32
|
- [List the operations that Kilotest managers are authorized to request](https://kilotest.com/manage.html)
|
|
33
33
|
- [Provide statistics about frequently reported issues across all pages](https://kilotest.com/listTopIssues.html)
|
|
34
34
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
|
package/mcp.test.ts
CHANGED
|
@@ -111,8 +111,7 @@ test('listIssues handler returns content and structuredContent for a valid repor
|
|
|
111
111
|
const server = createMCPServer();
|
|
112
112
|
const countBefore = getToolCallCount('listIssues');
|
|
113
113
|
const result = await (server as any)._registeredTools.listIssues.handler({
|
|
114
|
-
|
|
115
|
-
jobID: 'mix'
|
|
114
|
+
reportID: '260101T0000-mix'
|
|
116
115
|
});
|
|
117
116
|
assert.ok(result.content);
|
|
118
117
|
assert.equal(result.content[0].type, 'text');
|
|
@@ -125,8 +124,7 @@ test('listViolators handler returns content and structuredContent for a valid is
|
|
|
125
124
|
const countBefore = getToolCallCount('listViolators');
|
|
126
125
|
const result = await (server as any)._registeredTools.listViolators.handler({
|
|
127
126
|
issueID: 'linkNoText',
|
|
128
|
-
|
|
129
|
-
jobID: 'mix'
|
|
127
|
+
reportID: '260101T0000-mix'
|
|
130
128
|
});
|
|
131
129
|
assert.ok(result.content);
|
|
132
130
|
assert.equal(result.content[0].type, 'text');
|
|
@@ -140,8 +138,7 @@ test('listDiagnoses handler returns content and structuredContent for a valid di
|
|
|
140
138
|
const result = await (server as any)._registeredTools.listDiagnoses.handler({
|
|
141
139
|
catalogIndex: '0',
|
|
142
140
|
issueID: 'linkNoText',
|
|
143
|
-
|
|
144
|
-
jobID: 'mix'
|
|
141
|
+
reportID: '260101T0000-mix'
|
|
145
142
|
});
|
|
146
143
|
assert.ok(result.content);
|
|
147
144
|
assert.equal(result.content[0].type, 'text');
|
|
@@ -153,8 +150,7 @@ test('getReport handler returns content and structuredContent for a valid report
|
|
|
153
150
|
const server = createMCPServer();
|
|
154
151
|
const countBefore = getToolCallCount('getReport');
|
|
155
152
|
const result = await (server as any)._registeredTools.getReport.handler({
|
|
156
|
-
|
|
157
|
-
jobID: 'mix'
|
|
153
|
+
reportID: '260101T0000-mix'
|
|
158
154
|
});
|
|
159
155
|
assert.ok(result.content);
|
|
160
156
|
assert.equal(result.content[0].type, 'text');
|
|
@@ -180,8 +176,7 @@ test('requestRetest handler returns content and structuredContent for a valid re
|
|
|
180
176
|
const server = createMCPServer();
|
|
181
177
|
const countBefore = getToolCallCount('requestRetest');
|
|
182
178
|
const result = await (server as any)._registeredTools.requestRetest.handler({
|
|
183
|
-
|
|
184
|
-
jobID: 'mix',
|
|
179
|
+
reportID: '260101T0000-mix',
|
|
185
180
|
reason: 'Because the report is obsolete'
|
|
186
181
|
});
|
|
187
182
|
assert.ok(result.content);
|
|
@@ -217,7 +212,7 @@ test('orderNewTest handler returns content and structuredContent, and enqueues a
|
|
|
217
212
|
assert.equal(getToolCallCount('orderNewTest'), countBefore + 1);
|
|
218
213
|
const reportIdentifier = result.structuredContent['response content']['disposition of your order']['report identifier'];
|
|
219
214
|
assert.ok(reportIdentifier);
|
|
220
|
-
const queuedPath = `${jobsPath()}/queue/${reportIdentifier
|
|
215
|
+
const queuedPath = `${jobsPath()}/queue/${reportIdentifier}.json`;
|
|
221
216
|
fs.unlinkSync(queuedPath);
|
|
222
217
|
});
|
|
223
218
|
|
|
@@ -228,8 +223,7 @@ test('orderRetest handler returns content and structuredContent, and enqueues a
|
|
|
228
223
|
// 260202T0000-new is the latest report of "Mixed Outcomes" (260101T0000-mix is an
|
|
229
224
|
// earlier, superseded report of the same page), so this order is accepted.
|
|
230
225
|
const result = await (server as any)._registeredTools.orderRetest.handler({
|
|
231
|
-
|
|
232
|
-
jobID: 'new',
|
|
226
|
+
reportID: '260202T0000-new',
|
|
233
227
|
reason: 'Because the report is obsolete'
|
|
234
228
|
});
|
|
235
229
|
assert.ok(result.content);
|
|
@@ -238,7 +232,7 @@ test('orderRetest handler returns content and structuredContent, and enqueues a
|
|
|
238
232
|
assert.equal(getToolCallCount('orderRetest'), countBefore + 1);
|
|
239
233
|
const reportIdentifier = result.structuredContent['response content']['disposition of your order']['report identifier'];
|
|
240
234
|
assert.ok(reportIdentifier);
|
|
241
|
-
const queuedPath = `${jobsPath()}/queue/${reportIdentifier
|
|
235
|
+
const queuedPath = `${jobsPath()}/queue/${reportIdentifier}.json`;
|
|
242
236
|
fs.unlinkSync(queuedPath);
|
|
243
237
|
});
|
|
244
238
|
|
|
@@ -246,8 +240,7 @@ test('awaitTest handler returns content and structuredContent for an already-com
|
|
|
246
240
|
const server = createMCPServer();
|
|
247
241
|
const countBefore = getToolCallCount('awaitTest');
|
|
248
242
|
const result = await (server as any)._registeredTools.awaitTest.handler({
|
|
249
|
-
|
|
250
|
-
jobID: 'mix'
|
|
243
|
+
reportID: '260101T0000-mix'
|
|
251
244
|
});
|
|
252
245
|
assert.ok(result.content);
|
|
253
246
|
assert.equal(result.content[0].type, 'text');
|
|
@@ -259,8 +252,7 @@ test('awaitTest handler returns content and structuredContent for an already-com
|
|
|
259
252
|
test('listIssues handler returns an error for a nonexistent report', async () => {
|
|
260
253
|
const server = createMCPServer();
|
|
261
254
|
const result = await (server as any)._registeredTools.listIssues.handler({
|
|
262
|
-
|
|
263
|
-
jobID: 'xxx'
|
|
255
|
+
reportID: '990101T0000-xxx'
|
|
264
256
|
});
|
|
265
257
|
const reportBasics = result.structuredContent['response content']['basics about the report'];
|
|
266
258
|
assert.ok(reportBasics.error);
|
|
@@ -270,8 +262,7 @@ test('listViolators handler returns an error for an unknown issue', async () =>
|
|
|
270
262
|
const server = createMCPServer();
|
|
271
263
|
const result = await (server as any)._registeredTools.listViolators.handler({
|
|
272
264
|
issueID: 'nonexistentIssue',
|
|
273
|
-
|
|
274
|
-
jobID: 'mix'
|
|
265
|
+
reportID: '260101T0000-mix'
|
|
275
266
|
});
|
|
276
267
|
const issueBasics = result.structuredContent['response content']['basics about the issue'];
|
|
277
268
|
assert.ok(issueBasics.error);
|