@hasna/testers 0.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/LICENSE +21 -0
- package/README.md +196 -0
- package/dashboard/dist/assets/index-CDcHt94n.css +1 -0
- package/dashboard/dist/assets/index-DCNDCh61.js +49 -0
- package/dashboard/dist/index.html +13 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +4112 -0
- package/dist/db/agents.d.ts +10 -0
- package/dist/db/agents.d.ts.map +1 -0
- package/dist/db/database.d.ts +10 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/projects.d.ts +11 -0
- package/dist/db/projects.d.ts.map +1 -0
- package/dist/db/results.d.ts +20 -0
- package/dist/db/results.d.ts.map +1 -0
- package/dist/db/runs.d.ts +9 -0
- package/dist/db/runs.d.ts.map +1 -0
- package/dist/db/scenarios.d.ts +8 -0
- package/dist/db/scenarios.d.ts.map +1 -0
- package/dist/db/screenshots.d.ts +13 -0
- package/dist/db/screenshots.d.ts.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2515 -0
- package/dist/lib/ai-client.d.ts +66 -0
- package/dist/lib/ai-client.d.ts.map +1 -0
- package/dist/lib/browser.d.ts +64 -0
- package/dist/lib/browser.d.ts.map +1 -0
- package/dist/lib/config.d.ts +18 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/reporter.d.ts +18 -0
- package/dist/lib/reporter.d.ts.map +1 -0
- package/dist/lib/runner.d.ts +36 -0
- package/dist/lib/runner.d.ts.map +1 -0
- package/dist/lib/screenshotter.d.ts +60 -0
- package/dist/lib/screenshotter.d.ts.map +1 -0
- package/dist/lib/todos-connector.d.ts +32 -0
- package/dist/lib/todos-connector.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5903 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +1654 -0
- package/dist/types/index.d.ts +276 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
export type ScenarioPriority = "low" | "medium" | "high" | "critical";
|
|
2
|
+
export type RunStatus = "pending" | "running" | "passed" | "failed" | "cancelled";
|
|
3
|
+
export type ResultStatus = "passed" | "failed" | "error" | "skipped";
|
|
4
|
+
export type ModelPreset = "quick" | "thorough" | "deep";
|
|
5
|
+
export declare const MODEL_MAP: Record<ModelPreset, string>;
|
|
6
|
+
export interface ProjectRow {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
path: string | null;
|
|
10
|
+
description: string | null;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentRow {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
description: string | null;
|
|
18
|
+
role: string | null;
|
|
19
|
+
metadata: string | null;
|
|
20
|
+
created_at: string;
|
|
21
|
+
last_seen_at: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ScenarioRow {
|
|
24
|
+
id: string;
|
|
25
|
+
short_id: string;
|
|
26
|
+
project_id: string | null;
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
steps: string;
|
|
30
|
+
tags: string;
|
|
31
|
+
priority: ScenarioPriority;
|
|
32
|
+
model: string | null;
|
|
33
|
+
timeout_ms: number | null;
|
|
34
|
+
target_path: string | null;
|
|
35
|
+
requires_auth: number;
|
|
36
|
+
auth_config: string | null;
|
|
37
|
+
metadata: string | null;
|
|
38
|
+
version: number;
|
|
39
|
+
created_at: string;
|
|
40
|
+
updated_at: string;
|
|
41
|
+
}
|
|
42
|
+
export interface RunRow {
|
|
43
|
+
id: string;
|
|
44
|
+
project_id: string | null;
|
|
45
|
+
status: RunStatus;
|
|
46
|
+
url: string;
|
|
47
|
+
model: string;
|
|
48
|
+
headed: number;
|
|
49
|
+
parallel: number;
|
|
50
|
+
total: number;
|
|
51
|
+
passed: number;
|
|
52
|
+
failed: number;
|
|
53
|
+
started_at: string;
|
|
54
|
+
finished_at: string | null;
|
|
55
|
+
metadata: string | null;
|
|
56
|
+
}
|
|
57
|
+
export interface ResultRow {
|
|
58
|
+
id: string;
|
|
59
|
+
run_id: string;
|
|
60
|
+
scenario_id: string;
|
|
61
|
+
status: ResultStatus;
|
|
62
|
+
reasoning: string | null;
|
|
63
|
+
error: string | null;
|
|
64
|
+
steps_completed: number;
|
|
65
|
+
steps_total: number;
|
|
66
|
+
duration_ms: number;
|
|
67
|
+
model: string;
|
|
68
|
+
tokens_used: number;
|
|
69
|
+
cost_cents: number;
|
|
70
|
+
metadata: string | null;
|
|
71
|
+
created_at: string;
|
|
72
|
+
}
|
|
73
|
+
export interface ScreenshotRow {
|
|
74
|
+
id: string;
|
|
75
|
+
result_id: string;
|
|
76
|
+
step_number: number;
|
|
77
|
+
action: string;
|
|
78
|
+
file_path: string;
|
|
79
|
+
width: number;
|
|
80
|
+
height: number;
|
|
81
|
+
timestamp: string;
|
|
82
|
+
}
|
|
83
|
+
export interface Project {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
path: string | null;
|
|
87
|
+
description: string | null;
|
|
88
|
+
createdAt: string;
|
|
89
|
+
updatedAt: string;
|
|
90
|
+
}
|
|
91
|
+
export interface Agent {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
description: string | null;
|
|
95
|
+
role: string | null;
|
|
96
|
+
metadata: Record<string, unknown> | null;
|
|
97
|
+
createdAt: string;
|
|
98
|
+
lastSeenAt: string;
|
|
99
|
+
}
|
|
100
|
+
export interface Scenario {
|
|
101
|
+
id: string;
|
|
102
|
+
shortId: string;
|
|
103
|
+
projectId: string | null;
|
|
104
|
+
name: string;
|
|
105
|
+
description: string;
|
|
106
|
+
steps: string[];
|
|
107
|
+
tags: string[];
|
|
108
|
+
priority: ScenarioPriority;
|
|
109
|
+
model: string | null;
|
|
110
|
+
timeoutMs: number | null;
|
|
111
|
+
targetPath: string | null;
|
|
112
|
+
requiresAuth: boolean;
|
|
113
|
+
authConfig: AuthConfig | null;
|
|
114
|
+
metadata: Record<string, unknown> | null;
|
|
115
|
+
version: number;
|
|
116
|
+
createdAt: string;
|
|
117
|
+
updatedAt: string;
|
|
118
|
+
}
|
|
119
|
+
export interface Run {
|
|
120
|
+
id: string;
|
|
121
|
+
projectId: string | null;
|
|
122
|
+
status: RunStatus;
|
|
123
|
+
url: string;
|
|
124
|
+
model: string;
|
|
125
|
+
headed: boolean;
|
|
126
|
+
parallel: number;
|
|
127
|
+
total: number;
|
|
128
|
+
passed: number;
|
|
129
|
+
failed: number;
|
|
130
|
+
startedAt: string;
|
|
131
|
+
finishedAt: string | null;
|
|
132
|
+
metadata: Record<string, unknown> | null;
|
|
133
|
+
}
|
|
134
|
+
export interface Result {
|
|
135
|
+
id: string;
|
|
136
|
+
runId: string;
|
|
137
|
+
scenarioId: string;
|
|
138
|
+
status: ResultStatus;
|
|
139
|
+
reasoning: string | null;
|
|
140
|
+
error: string | null;
|
|
141
|
+
stepsCompleted: number;
|
|
142
|
+
stepsTotal: number;
|
|
143
|
+
durationMs: number;
|
|
144
|
+
model: string;
|
|
145
|
+
tokensUsed: number;
|
|
146
|
+
costCents: number;
|
|
147
|
+
metadata: Record<string, unknown> | null;
|
|
148
|
+
createdAt: string;
|
|
149
|
+
}
|
|
150
|
+
export interface Screenshot {
|
|
151
|
+
id: string;
|
|
152
|
+
resultId: string;
|
|
153
|
+
stepNumber: number;
|
|
154
|
+
action: string;
|
|
155
|
+
filePath: string;
|
|
156
|
+
width: number;
|
|
157
|
+
height: number;
|
|
158
|
+
timestamp: string;
|
|
159
|
+
}
|
|
160
|
+
export interface CreateScenarioInput {
|
|
161
|
+
name: string;
|
|
162
|
+
description: string;
|
|
163
|
+
steps?: string[];
|
|
164
|
+
tags?: string[];
|
|
165
|
+
priority?: ScenarioPriority;
|
|
166
|
+
model?: string;
|
|
167
|
+
timeoutMs?: number;
|
|
168
|
+
targetPath?: string;
|
|
169
|
+
requiresAuth?: boolean;
|
|
170
|
+
authConfig?: AuthConfig;
|
|
171
|
+
metadata?: Record<string, unknown>;
|
|
172
|
+
projectId?: string;
|
|
173
|
+
}
|
|
174
|
+
export interface UpdateScenarioInput {
|
|
175
|
+
name?: string;
|
|
176
|
+
description?: string;
|
|
177
|
+
steps?: string[];
|
|
178
|
+
tags?: string[];
|
|
179
|
+
priority?: ScenarioPriority;
|
|
180
|
+
model?: string;
|
|
181
|
+
timeoutMs?: number;
|
|
182
|
+
targetPath?: string;
|
|
183
|
+
requiresAuth?: boolean;
|
|
184
|
+
authConfig?: AuthConfig;
|
|
185
|
+
metadata?: Record<string, unknown>;
|
|
186
|
+
}
|
|
187
|
+
export interface CreateRunInput {
|
|
188
|
+
url: string;
|
|
189
|
+
scenarioIds?: string[];
|
|
190
|
+
tags?: string[];
|
|
191
|
+
priority?: ScenarioPriority;
|
|
192
|
+
model?: string;
|
|
193
|
+
headed?: boolean;
|
|
194
|
+
parallel?: number;
|
|
195
|
+
timeout?: number;
|
|
196
|
+
projectId?: string;
|
|
197
|
+
}
|
|
198
|
+
export interface ScenarioFilter {
|
|
199
|
+
projectId?: string;
|
|
200
|
+
tags?: string[];
|
|
201
|
+
priority?: ScenarioPriority;
|
|
202
|
+
search?: string;
|
|
203
|
+
limit?: number;
|
|
204
|
+
offset?: number;
|
|
205
|
+
}
|
|
206
|
+
export interface RunFilter {
|
|
207
|
+
projectId?: string;
|
|
208
|
+
status?: RunStatus;
|
|
209
|
+
limit?: number;
|
|
210
|
+
offset?: number;
|
|
211
|
+
}
|
|
212
|
+
export interface AuthConfig {
|
|
213
|
+
email?: string;
|
|
214
|
+
password?: string;
|
|
215
|
+
loginPath?: string;
|
|
216
|
+
tokenHeader?: string;
|
|
217
|
+
token?: string;
|
|
218
|
+
}
|
|
219
|
+
export interface BrowserConfig {
|
|
220
|
+
headless: boolean;
|
|
221
|
+
viewport: {
|
|
222
|
+
width: number;
|
|
223
|
+
height: number;
|
|
224
|
+
};
|
|
225
|
+
userAgent?: string;
|
|
226
|
+
locale?: string;
|
|
227
|
+
timeout: number;
|
|
228
|
+
}
|
|
229
|
+
export interface ScreenshotConfig {
|
|
230
|
+
dir: string;
|
|
231
|
+
format: "png" | "jpeg";
|
|
232
|
+
quality: number;
|
|
233
|
+
fullPage: boolean;
|
|
234
|
+
}
|
|
235
|
+
export interface TestersConfig {
|
|
236
|
+
defaultModel: string;
|
|
237
|
+
models: Record<ModelPreset, string>;
|
|
238
|
+
browser: BrowserConfig;
|
|
239
|
+
screenshots: ScreenshotConfig;
|
|
240
|
+
anthropicApiKey?: string;
|
|
241
|
+
todosDbPath?: string;
|
|
242
|
+
}
|
|
243
|
+
export declare function projectFromRow(row: ProjectRow): Project;
|
|
244
|
+
export declare function agentFromRow(row: AgentRow): Agent;
|
|
245
|
+
export declare function scenarioFromRow(row: ScenarioRow): Scenario;
|
|
246
|
+
export declare function runFromRow(row: RunRow): Run;
|
|
247
|
+
export declare function resultFromRow(row: ResultRow): Result;
|
|
248
|
+
export declare function screenshotFromRow(row: ScreenshotRow): Screenshot;
|
|
249
|
+
export declare class ScenarioNotFoundError extends Error {
|
|
250
|
+
constructor(id: string);
|
|
251
|
+
}
|
|
252
|
+
export declare class RunNotFoundError extends Error {
|
|
253
|
+
constructor(id: string);
|
|
254
|
+
}
|
|
255
|
+
export declare class ResultNotFoundError extends Error {
|
|
256
|
+
constructor(id: string);
|
|
257
|
+
}
|
|
258
|
+
export declare class VersionConflictError extends Error {
|
|
259
|
+
constructor(entity: string, id: string);
|
|
260
|
+
}
|
|
261
|
+
export declare class BrowserError extends Error {
|
|
262
|
+
constructor(message: string);
|
|
263
|
+
}
|
|
264
|
+
export declare class AIClientError extends Error {
|
|
265
|
+
constructor(message: string);
|
|
266
|
+
}
|
|
267
|
+
export declare class TodosConnectionError extends Error {
|
|
268
|
+
constructor(message: string);
|
|
269
|
+
}
|
|
270
|
+
export declare class ProjectNotFoundError extends Error {
|
|
271
|
+
constructor(id: string);
|
|
272
|
+
}
|
|
273
|
+
export declare class AgentNotFoundError extends Error {
|
|
274
|
+
constructor(id: string);
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hasna/testers",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "AI-powered QA testing CLI — spawns cheap AI agents to test web apps with headless browsers",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"testers": "dist/cli/index.js",
|
|
10
|
+
"testers-mcp": "dist/mcp/index.js",
|
|
11
|
+
"testers-serve": "dist/server/index.js"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist/",
|
|
21
|
+
"dashboard/dist/",
|
|
22
|
+
"LICENSE",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "bun run build:dashboard && bun run build:cli && bun run build:mcp && bun run build:server && bun run build:lib && bun run build:types",
|
|
27
|
+
"build:cli": "bun build src/cli/index.tsx --outdir dist/cli --target bun --external ink --external react --external chalk --external @modelcontextprotocol/sdk --external @anthropic-ai/sdk --external playwright",
|
|
28
|
+
"build:mcp": "bun build src/mcp/index.ts --outdir dist/mcp --target bun --external @modelcontextprotocol/sdk --external @anthropic-ai/sdk --external playwright",
|
|
29
|
+
"build:server": "bun build src/server/index.ts --outdir dist/server --target bun --external @anthropic-ai/sdk --external playwright",
|
|
30
|
+
"build:lib": "bun build src/index.ts --outdir dist --target bun --external playwright --external @anthropic-ai/sdk --external @modelcontextprotocol/sdk",
|
|
31
|
+
"build:types": "tsc --emitDeclarationOnly --outDir dist",
|
|
32
|
+
"build:dashboard": "cd dashboard && bun run build",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"test": "bun test",
|
|
35
|
+
"dev:cli": "bun run src/cli/index.tsx",
|
|
36
|
+
"dev:mcp": "bun run src/mcp/index.ts",
|
|
37
|
+
"dev:serve": "bun run src/server/index.ts",
|
|
38
|
+
"prepublishOnly": "bun run build"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@anthropic-ai/sdk": "^0.52.0",
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
43
|
+
"chalk": "^5.4.1",
|
|
44
|
+
"commander": "^13.1.0",
|
|
45
|
+
"ink": "^5.2.0",
|
|
46
|
+
"playwright": "^1.50.0",
|
|
47
|
+
"react": "^18.3.1",
|
|
48
|
+
"zod": "^3.24.2"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/bun": "latest",
|
|
52
|
+
"@types/react": "^18.3.18",
|
|
53
|
+
"typescript": "^5.7.3"
|
|
54
|
+
},
|
|
55
|
+
"engines": {
|
|
56
|
+
"bun": ">=1.0.0"
|
|
57
|
+
},
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"access": "public",
|
|
60
|
+
"registry": "https://registry.npmjs.org/"
|
|
61
|
+
},
|
|
62
|
+
"repository": {
|
|
63
|
+
"type": "git",
|
|
64
|
+
"url": "https://github.com/hasna/open-testers.git"
|
|
65
|
+
},
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"keywords": [
|
|
68
|
+
"testing",
|
|
69
|
+
"qa",
|
|
70
|
+
"ai",
|
|
71
|
+
"playwright",
|
|
72
|
+
"browser",
|
|
73
|
+
"screenshot",
|
|
74
|
+
"automation",
|
|
75
|
+
"cli",
|
|
76
|
+
"mcp"
|
|
77
|
+
]
|
|
78
|
+
}
|