@jrpool/kilotest 41.0.0 → 41.1.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/.devin/config.local.json +6 -1
- package/README.md +13 -1
- package/docs/AI-TOOLS.md +3 -1
- package/llms-full.txt +63 -55
- package/llms.txt +19 -13
- package/mcp.js +2 -2
- package/package.json +1 -1
package/.devin/config.local.json
CHANGED
package/README.md
CHANGED
|
@@ -47,4 +47,16 @@ See the `SERVICE.md` file for instructions on how to make Kilotest a service.
|
|
|
47
47
|
|
|
48
48
|
## Using Kilotest as an AI tool
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
Kilotest is not only a web application but also an API and an MCP server. AI platforms and models can use Kilotest via those interfaces.
|
|
51
|
+
|
|
52
|
+
The URL for models using the MCP server is `http://kilotest.com/mcp`. The MCP server is listed at these services:
|
|
53
|
+
|
|
54
|
+
- [Smithery](https://smithery.ai/servers/pool/kilotest)
|
|
55
|
+
- [Glama](https://glama.ai/mcp/connectors/com.kilotest/kilotest)
|
|
56
|
+
|
|
57
|
+
There is additional documentation at:
|
|
58
|
+
|
|
59
|
+
- [AI-TOOLS.md](AI-TOOLS.md)
|
|
60
|
+
- [llms.txt](llms.txt)
|
|
61
|
+
- [llms-full.txt](llms-full.txt)
|
|
62
|
+
- [QAI](https://kilotest.com/qai)
|
package/docs/AI-TOOLS.md
CHANGED
|
@@ -43,9 +43,11 @@ The internal changes that have been made in the Kilotest codebase to support the
|
|
|
43
43
|
The external actions that have been taken to support the use of Kilotest as a collection of AI tools are:
|
|
44
44
|
|
|
45
45
|
- A [pull request](https://github.com/public-apis/public-apis/pull/6346/changes) to add Kilotest to the list of public APIs in the `public-apis` repository.
|
|
46
|
-
- A [request](https://rapidapi.com/studio/api_91f2ce07-2572-48bd-a34d-ff01ed6cd039/publish/general) to add Kilotest to the Rapid API Hub.
|
|
47
46
|
- An [issue](https://github.com/APIs-guru/openapi-directory/issues/2677) to add Kilotest to `openapi-directory`.
|
|
48
47
|
- A [pull request](https://github.com/w3c/wai-evaluation-tools-list/pull/1153) to add Kilotest to the WAI evaluation tools list.
|
|
48
|
+
- Registration of Kilotest with the [Smithery](https://smithery.ai/servers/pool/kilotest) MCP server registry.
|
|
49
|
+
- Registration of Kilotest with the [Glama](https://glama.ai/mcp/connectors/com.kilotest/kilotest) MCP server registry.
|
|
50
|
+
- Registration of Kilotest with the [RapidAPI](https://rapidapi.com/jrpool/api/kilotest/playground/apiendpoint_0f03577a-ff9a-472a-a0ed-533bd198981a) Hub.
|
|
49
51
|
- Deployment of an MCP server in HTTP mode on the Kilotest service host.
|
|
50
52
|
- Configuration of Claude Desktop on the local development host and the `claude.ai` web application to connect Claude Desktop models to the Kilotest MCP server. The configuration was performed in the UI of each platform with the addition of Kilotest as a _connector_. The user used the `Customize/Connectors/Add connector/Add custom connector` interface, providing these data before activating the `Add` button:
|
|
51
53
|
|
package/llms-full.txt
CHANGED
|
@@ -6,18 +6,18 @@ Kilotest is an application that performs ensemble testing of web pages for front
|
|
|
6
6
|
|
|
7
7
|
## What Kilotest does for language models
|
|
8
8
|
|
|
9
|
-
Kilotest is deployed on the public Internet as a service at `kilotest.com`. Kilotest can test only web pages that can be accessed from the public Internet and that are not protected by authentication or other access controls. Kilotest has not implemented any mechanism for testing private, internal, password-protected, or otherwise restricted pages.
|
|
9
|
+
Kilotest is deployed on the public Internet as a service at `https://kilotest.com`. Kilotest can test only web pages that can be accessed from the public Internet and that are not protected by authentication or other access controls. Kilotest has not implemented any mechanism for testing private, internal, password-protected, or otherwise restricted pages.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Without calling any tool, an LLM can, under some conditions, load web pages and use its knowledge to assess successes and failures of front-end quality. But such an assessment is almost always:
|
|
12
12
|
|
|
13
13
|
- expensive, substituting inference for deterministic rule application
|
|
14
14
|
- fragmentary, because of capability limitations, such as inability to run browsers and interact with web pages
|
|
15
15
|
- inaccurate, because of the tendency to replace missing information with hallucinations
|
|
16
16
|
|
|
17
|
-
To provide a more inexpensive, thorough, and accurate assessment, the agent could ask an ensemble of specialized rule engines to test the page. However, selecting and running such rule engines and consolidating their results is itself expensive and difficult. Kilotest assumes responsibility for
|
|
17
|
+
To provide a more inexpensive, thorough, and accurate assessment, the agent could, in principle, ask an ensemble of specialized rule engines to test the page. However, selecting and running such rule engines and consolidating their results is itself expensive and difficult, and most available rule engines are not callable as MCP tools. Kilotest assumes responsibility for assembling, integrating, and running several rule engines. Kilotest:
|
|
18
18
|
|
|
19
|
-
- defines
|
|
20
|
-
- defines tools that report the test results
|
|
19
|
+
- defines an MCP tool that tests web pages for front-end quality
|
|
20
|
+
- defines MCP tools that report the test results
|
|
21
21
|
- defines connectors to those tools, compatible with major AI platforms
|
|
22
22
|
|
|
23
23
|
The tool that tests web pages for front-end quality has attributes that no other such tool has. It:
|
|
@@ -27,7 +27,7 @@ The tool that tests web pages for front-end quality has attributes that no other
|
|
|
27
27
|
- combines the reports of the rule engines into a single integrated report
|
|
28
28
|
- consolidates the 1000+ rules having 10 different naming systems into 300+ “issues” with a uniform naming system
|
|
29
29
|
|
|
30
|
-
The tools that report test results extract from reports statistics and details at various levels of granularity, as required by an agent to fulfill particular requests.
|
|
30
|
+
The tools that report test results extract from reports statistics and details at various levels of granularity, as required by an agent to fulfill particular user requests.
|
|
31
31
|
|
|
32
32
|
## What Kilotest does **not** do for language models
|
|
33
33
|
|
|
@@ -48,7 +48,7 @@ The rule engines in the Kilotest ensemble take responsibility for determining wh
|
|
|
48
48
|
|
|
49
49
|
In the marketplace for MCP servers that test for front-end quality, all servers other than that of Kilotest leverage at most 1 rule engine, most often `axe-core`. The Kilotest testing tool leverages `axe-core` plus 9 other rule engines. This has these main effects:
|
|
50
50
|
|
|
51
|
-
- For web pages that have not yet been tested, a single-rule-engine MCP can provide faster results than Kilotest. A tool running only the `axe-core` tests can complete its work in about 5 seconds or less. The testing tool of Kilotest usually completes its work in 2 to 3 minutes, because all 10 rule engines are run, and some of the tests involve navigation and interaction with the page and LLM inference. Moreover,
|
|
51
|
+
- For web pages that have not yet been tested, a single-rule-engine MCP can provide faster results than Kilotest. A tool running only the `axe-core` tests can complete its work in about 5 seconds or less. The testing tool of Kilotest usually completes its work in 2 to 3 minutes, because all 10 rule engines are run, and some of the tests involve navigation and interaction with the page and LLM inference. Moreover, Kilotest currently allows users (both humans and models) to **recommend** new pages for testing but authorizes only Kilotest managers to make the tool proceed with the testing. The wait for manager action can take up to a day. A feature permitting immediate testing ordered by AI agents is planned, but, until it is implemented, Kilotest will be useful for not-yet-tested pages only in long-running (multi-day) workflows.
|
|
52
52
|
- For web pages about which reports are already available, Kilotest can provide faster results than a single-rule-engine MCP server, because Kilotest stores test results for subsequent retrieval. A retrieval from a Kilotest reporting tool can be completed in less than 2 seconds.
|
|
53
53
|
- Kilotest results are more comprehensive than single-rule-engine MCP server results. Every rule engine provides limited coverage of front-end quality, so false negatives (missed defects) are more common with single-rule-engine MCP servers. This difference [has been documented in research](https://arxiv.org/pdf/2304.07591).
|
|
54
54
|
|
|
@@ -68,83 +68,90 @@ Kilotest offers a comprehensive suite of capabilities to users via its web UI:
|
|
|
68
68
|
- [Get statistics about frequently reported issues across all pages](https://kilotest.com/issues.html)
|
|
69
69
|
- [Get a list of the operations that Kilotest managers are authorized to request](https://kilotest.com/manage.html)
|
|
70
70
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
|
|
71
|
+
- [Tutorial, “QAI tutorial”](https://kilotest.com/qai/)
|
|
71
72
|
|
|
72
73
|
### API
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
In the specifications below, the term `report` refers to the records of one session in which a web page is tested.
|
|
75
76
|
|
|
76
|
-
|
|
77
|
+
Kilotest offers these tools:
|
|
77
78
|
|
|
78
|
-
- `
|
|
79
|
-
- method: `POST`
|
|
80
|
-
- purpose: summarize front-end quality test results from available reports about web pages whose descriptions or hostnames match those that you specify
|
|
81
|
-
- path: `/api/target`
|
|
82
|
-
- payload properties
|
|
83
|
-
- `description of the web page`: all or part of a description of the page
|
|
84
|
-
- `hostname of the web page`: all or part of the hostname of the page
|
|
85
|
-
- `listAllAvailableReports`
|
|
79
|
+
- `listReports`
|
|
86
80
|
- method: `GET`
|
|
87
81
|
- purpose: list all available reports
|
|
88
|
-
- path: `/api/
|
|
82
|
+
- path: `/api/listReports`
|
|
89
83
|
- caveat: Cached results are likely to be stale and should not be used
|
|
90
|
-
- `
|
|
84
|
+
- `listIssues`
|
|
91
85
|
- method: `GET`
|
|
92
|
-
- purpose:
|
|
93
|
-
- path: `/api/
|
|
86
|
+
- purpose: list all issues in one report
|
|
87
|
+
- path: `/api/listIssues/{timeStamp}/{jobID}`
|
|
94
88
|
- parameters
|
|
95
89
|
- `timeStamp`: initial segment of report identifier
|
|
96
90
|
- `jobID`: final segment of report identifier
|
|
97
|
-
- source of parameters: response to a `
|
|
98
|
-
- `
|
|
91
|
+
- source of parameters: response to a `listReports` request
|
|
92
|
+
- `listViolators`
|
|
99
93
|
- method: `GET`
|
|
100
|
-
- purpose:
|
|
101
|
-
- path: `/api/
|
|
94
|
+
- purpose: list all elements exhibiting one issue in one report
|
|
95
|
+
- path: `/api/listViolators/{issueID}/{timeStamp}/{jobID}`
|
|
102
96
|
- parameters
|
|
103
97
|
- `issueID`: identifier of the issue
|
|
104
98
|
- `timeStamp`: initial segment of report identifier
|
|
105
99
|
- `jobID`: final segment of report identifier
|
|
106
|
-
- source of parameters: response to a `
|
|
107
|
-
- `
|
|
100
|
+
- source of parameters: response to a `listIssues` request
|
|
101
|
+
- `listDiagnoses`
|
|
108
102
|
- method: `GET`
|
|
109
|
-
- purpose:
|
|
110
|
-
- path: `/api/
|
|
103
|
+
- purpose: list all diagnoses of one issue exhibited by one element in one report
|
|
104
|
+
- path: `/api/listDiagnoses/{catalogIndex}/{issueID}/{timeStamp}/{jobID}`
|
|
111
105
|
- parameters
|
|
106
|
+
- `catalogIndex`: index of the catalog entry of the element
|
|
112
107
|
- `issueID`: identifier of the issue
|
|
113
108
|
- `timeStamp`: initial segment of report identifier
|
|
114
109
|
- `jobID`: final segment of report identifier
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
- `recommendQualityTestingOfOneWebPage`
|
|
110
|
+
- source of parameters: response to a `listViolators` request
|
|
111
|
+
- `requestTest`
|
|
118
112
|
- method: `POST`
|
|
119
|
-
- purpose:
|
|
120
|
-
- path: `/api/
|
|
113
|
+
- purpose: request testing of one web page about which no report is available
|
|
114
|
+
- path: `/api/requestTest`
|
|
121
115
|
- payload properties
|
|
116
|
+
- `description`: description of the page to be tested
|
|
117
|
+
- `URL`: URL of the page to be tested
|
|
118
|
+
- `reason`: reason for testing the page
|
|
119
|
+
- `requestRetest`
|
|
120
|
+
- method: `POST`
|
|
121
|
+
- purpose: request retesting of one web page about which a report is available
|
|
122
|
+
- path: `/api/requestRetest/{timeStamp}/{jobID}`
|
|
123
|
+
- parameters
|
|
124
|
+
- `timeStamp`: initial segment of report identifier
|
|
125
|
+
- `jobID`: final segment of report identifier
|
|
126
|
+
- source of parameters: response to a `listIssues` request
|
|
127
|
+
- payload properties
|
|
128
|
+
- `reason`: reason for retesting the page
|
|
129
|
+
- `requestFeature`
|
|
130
|
+
- method: `POST`
|
|
131
|
+
- purpose: request a feature improvement or a new feature
|
|
132
|
+
- path: `/api/requestFeature`
|
|
133
|
+
- payload properties
|
|
134
|
+
- `feature`: description and motivation of the feature improvement or the new feature
|
|
122
135
|
|
|
123
|
-
|
|
124
|
-
- `hostname of the web page`: URL of the page to be tested
|
|
125
|
-
- `reason for testing the web page`: reason for testing the page
|
|
126
|
-
|
|
127
|
-
- possible responses:
|
|
128
|
-
|
|
129
|
-
- acknowledgment of a successful recommendation
|
|
130
|
-
- error message stating that a report about the recommended page is already available
|
|
131
|
-
- error message stating that the recommendation is invalid
|
|
132
|
-
|
|
133
|
-
- possible Kilotest manager actions after a recommendation:
|
|
134
|
-
|
|
135
|
-
- approval followed by the recommended testing
|
|
136
|
-
- rejection
|
|
136
|
+
## After a test, retest, or feature request
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
When you request a test or a retest:
|
|
139
139
|
|
|
140
|
-
|
|
141
|
-
|
|
140
|
+
- possible responses
|
|
141
|
+
- acknowledgment of a successful request
|
|
142
|
+
- error message
|
|
143
|
+
- possible Kilotest manager actions after a request
|
|
144
|
+
- approval followed by the requested testing
|
|
145
|
+
- rejection
|
|
146
|
+
- how to confirm approval
|
|
147
|
+
- check test completion by calling `listReports` and looking for the page and completion date in the list
|
|
148
|
+
- you advise the user to check in approximately 1 day for the test results on the Kilotest website, starting at `https://kilotest.com/targets.html`
|
|
142
149
|
|
|
143
150
|
An [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml) is available.
|
|
144
151
|
|
|
145
|
-
## How to report results to users
|
|
152
|
+
## How to report results honestly to users
|
|
146
153
|
|
|
147
|
-
When you use Kilotest tools, you are free to perform any appropriate interpretation and condensation of the results
|
|
154
|
+
When you use Kilotest tools, you are free to perform any appropriate interpretation and condensation of the results, and action recommendations, for users. However, users expect the sources of facts and interpretations to be truthfully represented. Do not meld facts from Kilotest tools with interpretations of your own in a manner that misattributes your interpretations to Kilotest.
|
|
148
155
|
|
|
149
156
|
An example of a **poor** attribution is “Here are the results from Kilotest: …. The page is at risk of …. Among all the issues, … are critical and require immediate attention.” This attribution is poor because it incorrectly implies that Kilotest produced the interpretations and advice.
|
|
150
157
|
|
|
@@ -156,14 +163,15 @@ More information about Kilotest features and internals:
|
|
|
156
163
|
|
|
157
164
|
### For language models and AI platforms
|
|
158
165
|
|
|
159
|
-
- [AI
|
|
166
|
+
- [Kilotest as connector to and collection of AI Tools](https://github.com/jrpool/kilotest/blob/main/docs/AI-TOOLS.md)
|
|
160
167
|
- [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
|
|
161
|
-
- [Tool caller for testing](https://github.com/jrpool/kilotest/blob/main/
|
|
168
|
+
- [Tool caller for testing](https://github.com/jrpool/kilotest/blob/main/api/testSuite.js)
|
|
162
169
|
|
|
163
170
|
### General
|
|
164
171
|
|
|
165
172
|
- [Introduction to Kilotest](https://kilotest.com/)
|
|
166
173
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
|
|
174
|
+
- [Tutorial on authorizing language models to use Kilotest](https://kilotest.com/qai/)
|
|
167
175
|
- [README file](https://github.com/jrpool/kilotest/blob/main/README.md)
|
|
168
176
|
- [Testaro rule-engine orchestrator](https://github.com/jrpool/testaro)
|
|
169
177
|
- [Testilo rule classifier](https://github.com/jrpool/testilo/blob/main/procs/score/tic.js)
|
package/llms.txt
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
# Kilotest
|
|
2
2
|
|
|
3
|
-
Kilotest helps language models and AI platforms to give thorough, accurate and truthful answers when users ask about the front-end quality (i.e. accessibility, usability, and standards conformity) of web pages. Kilotest integrates
|
|
3
|
+
Kilotest helps language models and AI platforms to give thorough, accurate and truthful answers when users ask about the front-end quality (i.e. accessibility, usability, and standards conformity) of web pages. Kilotest integrates an ensemble often independent rule engines to test any public web page. Kilotest creates a structured report of the results and saves the report for future reference. Kilotest API endpoints and MCP tools can provide multipage, single-page, and element-level test results.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## API
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- [List all available reports](/api/listReports) (`GET`)
|
|
8
|
+
- List all issues in one report: `/api/listIssues/{timeStamp}/{jobID}` (`GET`)
|
|
9
|
+
- List all elements exhibiting one issue in one report: `/api/listViolators/{issueID}/{timeStamp}/{jobID}` (`GET`)
|
|
10
|
+
- List all diagnoses of one element exhibiting one issue in one report: `/api/listDiagnoses/{catalogIndex}/{issueID}/{timeStamp}/{jobID}` (`GET`)
|
|
11
|
+
- Get one full report in JSON: `/api/getReport/{timeStamp}/{jobID}` (`GET`)
|
|
12
|
+
- Request testing of a web page: `/api/requestTest` (`POST`)
|
|
13
|
+
- Request retesting of a web page: `/api/requestRetest/{timeStamp}/{jobID}` (`POST`)
|
|
14
|
+
- Request adding or improving a feature: `/api/requestFeature` (`POST`)
|
|
8
15
|
|
|
9
|
-
##
|
|
16
|
+
## MCP Server
|
|
10
17
|
|
|
11
|
-
- [
|
|
12
|
-
- List all issues in one report: `/api/listIssues/{timeStamp}/{jobID}`
|
|
13
|
-
- List all elements exhibiting one issue in one report: `/api/listViolators/{issueID}/{timeStamp}/{jobID}`
|
|
14
|
-
- List all diagnoses of one element exhibiting one issue in one report: `/api/listDiagnoses/{catalogIndex}/{issueID}/{timeStamp}/{jobID}`
|
|
15
|
-
- Get one full report in JSON: `/api/getReport/{timeStamp}/{jobID}`
|
|
16
|
-
- Request testing of a web page: `/api/requestTest` (requires `POST` request)
|
|
17
|
-
- Request retesting of a web page: `/api/requestRetest/{timeStamp}/{jobID}` (requires `POST` request)
|
|
18
|
-
- Request adding or improving a feature: `/api/requestFeature` (requires `POST` request)
|
|
19
|
-
- [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
|
|
18
|
+
- [MCP server for Kilotest](https://kilotest.com/mcp)
|
|
20
19
|
|
|
21
20
|
## Web UI
|
|
22
21
|
|
|
@@ -30,3 +29,10 @@ There is a [detailed explanation of Kilotest and its capabilities for LLMs](http
|
|
|
30
29
|
- [List the operations that Kilotest managers are authorized to request](https://kilotest.com/manage.html)
|
|
31
30
|
- [Provide statistics about frequently reported issues across all pages](https://kilotest.com/issues.html)
|
|
32
31
|
- [Tutorial, “Accessibility testing strategies”](https://kilotest.com/tutorial.html)
|
|
32
|
+
|
|
33
|
+
## More documents
|
|
34
|
+
|
|
35
|
+
- [Detailed explanation of Kilotest and its capabilities for LLMs](https://kilotest.com/llms-full.txt)
|
|
36
|
+
- [OpenAPI specification for Kilotest](https://kilotest.com/openapi.yaml)
|
|
37
|
+
- [Kilotest as connector to and collection of AI Tools](https://github.com/jrpool/kilotest/blob/main/docs/AI-TOOLS.md)
|
|
38
|
+
- [Tutorial on authorizing language models to use Kilotest](https://kilotest.com/qai/)
|
package/mcp.js
CHANGED
|
@@ -199,8 +199,8 @@ const createMCPServer = () => {
|
|
|
199
199
|
openWorldHint: false
|
|
200
200
|
}
|
|
201
201
|
},
|
|
202
|
-
async ({
|
|
203
|
-
const result = await requestFeatureAPI.response([
|
|
202
|
+
async ({feature}) => {
|
|
203
|
+
const result = await requestFeatureAPI.response([feature]);
|
|
204
204
|
return {content: [{type: 'text', text: JSON.stringify(result)}], structuredContent: result};
|
|
205
205
|
}
|
|
206
206
|
);
|