@hasna/testers 0.0.6 → 0.0.7
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/dist/cli/index.js +1220 -384
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/environments.d.ts +22 -0
- package/dist/db/environments.d.ts.map +1 -0
- package/dist/db/runs.d.ts.map +1 -1
- package/dist/db/scenarios.d.ts.map +1 -1
- package/dist/index.js +216 -161
- package/dist/lib/assertions.d.ts +26 -0
- package/dist/lib/assertions.d.ts.map +1 -0
- package/dist/lib/ci.d.ts +2 -0
- package/dist/lib/ci.d.ts.map +1 -0
- package/dist/lib/openapi-import.d.ts +8 -0
- package/dist/lib/openapi-import.d.ts.map +1 -0
- package/dist/lib/recorder.d.ts +24 -0
- package/dist/lib/recorder.d.ts.map +1 -0
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/visual-diff.d.ts +36 -0
- package/dist/lib/visual-diff.d.ts.map +1 -0
- package/dist/mcp/index.js +156 -7
- package/dist/server/index.js +150 -7
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/mcp/index.js
CHANGED
|
@@ -50,6 +50,7 @@ function scenarioFromRow(row) {
|
|
|
50
50
|
requiresAuth: row.requires_auth === 1,
|
|
51
51
|
authConfig: row.auth_config ? JSON.parse(row.auth_config) : null,
|
|
52
52
|
metadata: row.metadata ? JSON.parse(row.metadata) : null,
|
|
53
|
+
assertions: JSON.parse(row.assertions || "[]"),
|
|
53
54
|
version: row.version,
|
|
54
55
|
createdAt: row.created_at,
|
|
55
56
|
updatedAt: row.updated_at
|
|
@@ -69,7 +70,8 @@ function runFromRow(row) {
|
|
|
69
70
|
failed: row.failed,
|
|
70
71
|
startedAt: row.started_at,
|
|
71
72
|
finishedAt: row.finished_at,
|
|
72
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : null
|
|
73
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : null,
|
|
74
|
+
isBaseline: row.is_baseline === 1
|
|
73
75
|
};
|
|
74
76
|
}
|
|
75
77
|
function resultFromRow(row) {
|
|
@@ -424,6 +426,24 @@ var init_database = __esm(() => {
|
|
|
424
426
|
CREATE INDEX IF NOT EXISTS idx_deps_scenario ON scenario_dependencies(scenario_id);
|
|
425
427
|
CREATE INDEX IF NOT EXISTS idx_deps_depends ON scenario_dependencies(depends_on);
|
|
426
428
|
CREATE INDEX IF NOT EXISTS idx_flows_project ON flows(project_id);
|
|
429
|
+
`,
|
|
430
|
+
`
|
|
431
|
+
ALTER TABLE scenarios ADD COLUMN assertions TEXT DEFAULT '[]';
|
|
432
|
+
`,
|
|
433
|
+
`
|
|
434
|
+
CREATE TABLE IF NOT EXISTS environments (
|
|
435
|
+
id TEXT PRIMARY KEY,
|
|
436
|
+
name TEXT NOT NULL UNIQUE,
|
|
437
|
+
url TEXT NOT NULL,
|
|
438
|
+
auth_preset_name TEXT,
|
|
439
|
+
project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
|
|
440
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
441
|
+
metadata TEXT DEFAULT '{}',
|
|
442
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
443
|
+
);
|
|
444
|
+
`,
|
|
445
|
+
`
|
|
446
|
+
ALTER TABLE runs ADD COLUMN is_baseline INTEGER NOT NULL DEFAULT 0;
|
|
427
447
|
`
|
|
428
448
|
];
|
|
429
449
|
});
|
|
@@ -4577,9 +4597,9 @@ function createScenario(input) {
|
|
|
4577
4597
|
const short_id = nextShortId(input.projectId);
|
|
4578
4598
|
const timestamp = now();
|
|
4579
4599
|
db2.query(`
|
|
4580
|
-
INSERT INTO scenarios (id, short_id, project_id, name, description, steps, tags, priority, model, timeout_ms, target_path, requires_auth, auth_config, metadata, version, created_at, updated_at)
|
|
4581
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)
|
|
4582
|
-
`).run(id, short_id, input.projectId ?? null, input.name, input.description, JSON.stringify(input.steps ?? []), JSON.stringify(input.tags ?? []), input.priority ?? "medium", input.model ?? null, input.timeoutMs ?? null, input.targetPath ?? null, input.requiresAuth ? 1 : 0, input.authConfig ? JSON.stringify(input.authConfig) : null, input.metadata ? JSON.stringify(input.metadata) : null, timestamp, timestamp);
|
|
4600
|
+
INSERT INTO scenarios (id, short_id, project_id, name, description, steps, tags, priority, model, timeout_ms, target_path, requires_auth, auth_config, metadata, assertions, version, created_at, updated_at)
|
|
4601
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)
|
|
4602
|
+
`).run(id, short_id, input.projectId ?? null, input.name, input.description, JSON.stringify(input.steps ?? []), JSON.stringify(input.tags ?? []), input.priority ?? "medium", input.model ?? null, input.timeoutMs ?? null, input.targetPath ?? null, input.requiresAuth ? 1 : 0, input.authConfig ? JSON.stringify(input.authConfig) : null, input.metadata ? JSON.stringify(input.metadata) : null, JSON.stringify(input.assertions ?? []), timestamp, timestamp);
|
|
4583
4603
|
return getScenario(id);
|
|
4584
4604
|
}
|
|
4585
4605
|
function getScenario(id) {
|
|
@@ -4697,6 +4717,10 @@ function updateScenario(id, input, version) {
|
|
|
4697
4717
|
sets.push("metadata = ?");
|
|
4698
4718
|
params.push(JSON.stringify(input.metadata));
|
|
4699
4719
|
}
|
|
4720
|
+
if (input.assertions !== undefined) {
|
|
4721
|
+
sets.push("assertions = ?");
|
|
4722
|
+
params.push(JSON.stringify(input.assertions));
|
|
4723
|
+
}
|
|
4700
4724
|
if (sets.length === 0) {
|
|
4701
4725
|
return existing;
|
|
4702
4726
|
}
|
|
@@ -4827,6 +4851,10 @@ function updateRun(id, updates) {
|
|
|
4827
4851
|
sets.push("metadata = ?");
|
|
4828
4852
|
params.push(updates.metadata);
|
|
4829
4853
|
}
|
|
4854
|
+
if (updates.is_baseline !== undefined) {
|
|
4855
|
+
sets.push("is_baseline = ?");
|
|
4856
|
+
params.push(updates.is_baseline);
|
|
4857
|
+
}
|
|
4830
4858
|
if (sets.length === 0) {
|
|
4831
4859
|
return existing;
|
|
4832
4860
|
}
|
|
@@ -5966,12 +5994,124 @@ function loadConfig() {
|
|
|
5966
5994
|
return config;
|
|
5967
5995
|
}
|
|
5968
5996
|
|
|
5997
|
+
// src/lib/webhooks.ts
|
|
5998
|
+
init_database();
|
|
5999
|
+
function fromRow(row) {
|
|
6000
|
+
return {
|
|
6001
|
+
id: row.id,
|
|
6002
|
+
url: row.url,
|
|
6003
|
+
events: JSON.parse(row.events),
|
|
6004
|
+
projectId: row.project_id,
|
|
6005
|
+
secret: row.secret,
|
|
6006
|
+
active: row.active === 1,
|
|
6007
|
+
createdAt: row.created_at
|
|
6008
|
+
};
|
|
6009
|
+
}
|
|
6010
|
+
function listWebhooks(projectId) {
|
|
6011
|
+
const db2 = getDatabase();
|
|
6012
|
+
let query = "SELECT * FROM webhooks WHERE active = 1";
|
|
6013
|
+
const params = [];
|
|
6014
|
+
if (projectId) {
|
|
6015
|
+
query += " AND (project_id = ? OR project_id IS NULL)";
|
|
6016
|
+
params.push(projectId);
|
|
6017
|
+
}
|
|
6018
|
+
query += " ORDER BY created_at DESC";
|
|
6019
|
+
const rows = db2.query(query).all(...params);
|
|
6020
|
+
return rows.map(fromRow);
|
|
6021
|
+
}
|
|
6022
|
+
function signPayload(body, secret) {
|
|
6023
|
+
const encoder = new TextEncoder;
|
|
6024
|
+
const key = encoder.encode(secret);
|
|
6025
|
+
const data = encoder.encode(body);
|
|
6026
|
+
let hash = 0;
|
|
6027
|
+
for (let i = 0;i < data.length; i++) {
|
|
6028
|
+
hash = (hash << 5) - hash + data[i] + (key[i % key.length] ?? 0) | 0;
|
|
6029
|
+
}
|
|
6030
|
+
return `sha256=${Math.abs(hash).toString(16).padStart(16, "0")}`;
|
|
6031
|
+
}
|
|
6032
|
+
function formatSlackPayload(payload) {
|
|
6033
|
+
const status = payload.run.status === "passed" ? ":white_check_mark:" : ":x:";
|
|
6034
|
+
const color = payload.run.status === "passed" ? "#22c55e" : "#ef4444";
|
|
6035
|
+
return {
|
|
6036
|
+
attachments: [
|
|
6037
|
+
{
|
|
6038
|
+
color,
|
|
6039
|
+
blocks: [
|
|
6040
|
+
{
|
|
6041
|
+
type: "section",
|
|
6042
|
+
text: {
|
|
6043
|
+
type: "mrkdwn",
|
|
6044
|
+
text: `${status} *Test Run ${payload.run.status.toUpperCase()}*
|
|
6045
|
+
` + `URL: ${payload.run.url}
|
|
6046
|
+
` + `Results: ${payload.run.passed}/${payload.run.total} passed` + (payload.run.failed > 0 ? ` (${payload.run.failed} failed)` : "") + (payload.schedule ? `
|
|
6047
|
+
Schedule: ${payload.schedule.name}` : "")
|
|
6048
|
+
}
|
|
6049
|
+
}
|
|
6050
|
+
]
|
|
6051
|
+
}
|
|
6052
|
+
]
|
|
6053
|
+
};
|
|
6054
|
+
}
|
|
6055
|
+
async function dispatchWebhooks(event, run, schedule) {
|
|
6056
|
+
const webhooks = listWebhooks(run.projectId ?? undefined);
|
|
6057
|
+
const payload = {
|
|
6058
|
+
event,
|
|
6059
|
+
run: {
|
|
6060
|
+
id: run.id,
|
|
6061
|
+
url: run.url,
|
|
6062
|
+
status: run.status,
|
|
6063
|
+
passed: run.passed,
|
|
6064
|
+
failed: run.failed,
|
|
6065
|
+
total: run.total
|
|
6066
|
+
},
|
|
6067
|
+
schedule,
|
|
6068
|
+
timestamp: new Date().toISOString()
|
|
6069
|
+
};
|
|
6070
|
+
for (const webhook of webhooks) {
|
|
6071
|
+
if (!webhook.events.includes(event) && !webhook.events.includes("*"))
|
|
6072
|
+
continue;
|
|
6073
|
+
const isSlack = webhook.url.includes("hooks.slack.com");
|
|
6074
|
+
const body = isSlack ? JSON.stringify(formatSlackPayload(payload)) : JSON.stringify(payload);
|
|
6075
|
+
const headers = {
|
|
6076
|
+
"Content-Type": "application/json"
|
|
6077
|
+
};
|
|
6078
|
+
if (webhook.secret) {
|
|
6079
|
+
headers["X-Testers-Signature"] = signPayload(body, webhook.secret);
|
|
6080
|
+
}
|
|
6081
|
+
try {
|
|
6082
|
+
const response = await fetch(webhook.url, {
|
|
6083
|
+
method: "POST",
|
|
6084
|
+
headers,
|
|
6085
|
+
body
|
|
6086
|
+
});
|
|
6087
|
+
if (!response.ok) {
|
|
6088
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
6089
|
+
await fetch(webhook.url, { method: "POST", headers, body });
|
|
6090
|
+
}
|
|
6091
|
+
} catch {}
|
|
6092
|
+
}
|
|
6093
|
+
}
|
|
6094
|
+
|
|
5969
6095
|
// src/lib/runner.ts
|
|
5970
6096
|
var eventHandler = null;
|
|
5971
6097
|
function emit(event) {
|
|
5972
6098
|
if (eventHandler)
|
|
5973
6099
|
eventHandler(event);
|
|
5974
6100
|
}
|
|
6101
|
+
function withTimeout(promise, ms, label) {
|
|
6102
|
+
return new Promise((resolve, reject) => {
|
|
6103
|
+
const timer = setTimeout(() => {
|
|
6104
|
+
reject(new Error(`Scenario timeout after ${ms}ms: ${label}`));
|
|
6105
|
+
}, ms);
|
|
6106
|
+
promise.then((val) => {
|
|
6107
|
+
clearTimeout(timer);
|
|
6108
|
+
resolve(val);
|
|
6109
|
+
}, (err) => {
|
|
6110
|
+
clearTimeout(timer);
|
|
6111
|
+
reject(err);
|
|
6112
|
+
});
|
|
6113
|
+
});
|
|
6114
|
+
}
|
|
5975
6115
|
async function runSingleScenario(scenario, runId, options) {
|
|
5976
6116
|
const config = loadConfig();
|
|
5977
6117
|
const model = resolveModel(options.model ?? scenario.model ?? config.defaultModel);
|
|
@@ -5994,8 +6134,9 @@ async function runSingleScenario(scenario, runId, options) {
|
|
|
5994
6134
|
viewport: config.browser.viewport
|
|
5995
6135
|
});
|
|
5996
6136
|
const targetUrl = scenario.targetPath ? `${options.url.replace(/\/$/, "")}${scenario.targetPath}` : options.url;
|
|
5997
|
-
|
|
5998
|
-
|
|
6137
|
+
const scenarioTimeout = scenario.timeoutMs ?? options.timeout ?? config.browser.timeout ?? 60000;
|
|
6138
|
+
await page.goto(targetUrl, { timeout: Math.min(scenarioTimeout, 30000) });
|
|
6139
|
+
const agentResult = await withTimeout(runAgentLoop({
|
|
5999
6140
|
client,
|
|
6000
6141
|
page,
|
|
6001
6142
|
scenario,
|
|
@@ -6016,7 +6157,7 @@ async function runSingleScenario(scenario, runId, options) {
|
|
|
6016
6157
|
stepNumber: stepEvent.stepNumber
|
|
6017
6158
|
});
|
|
6018
6159
|
}
|
|
6019
|
-
});
|
|
6160
|
+
}), scenarioTimeout, scenario.name);
|
|
6020
6161
|
for (const ss of agentResult.screenshots) {
|
|
6021
6162
|
createScreenshot({
|
|
6022
6163
|
resultId: result.id,
|
|
@@ -6148,6 +6289,8 @@ async function runBatch(scenarios, options) {
|
|
|
6148
6289
|
finished_at: new Date().toISOString()
|
|
6149
6290
|
});
|
|
6150
6291
|
emit({ type: "run:complete", runId: run.id });
|
|
6292
|
+
const eventType = finalRun.status === "failed" ? "failed" : "completed";
|
|
6293
|
+
dispatchWebhooks(eventType, finalRun).catch(() => {});
|
|
6151
6294
|
return { run: finalRun, results };
|
|
6152
6295
|
}
|
|
6153
6296
|
async function runByFilter(options) {
|
|
@@ -6233,6 +6376,9 @@ function startRunAsync(options) {
|
|
|
6233
6376
|
finished_at: new Date().toISOString()
|
|
6234
6377
|
});
|
|
6235
6378
|
emit({ type: "run:complete", runId: run.id });
|
|
6379
|
+
const asyncRun = getRun(run.id);
|
|
6380
|
+
if (asyncRun)
|
|
6381
|
+
dispatchWebhooks(asyncRun.status === "failed" ? "failed" : "completed", asyncRun).catch(() => {});
|
|
6236
6382
|
} catch (error) {
|
|
6237
6383
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
6238
6384
|
updateRun(run.id, {
|
|
@@ -6240,6 +6386,9 @@ function startRunAsync(options) {
|
|
|
6240
6386
|
finished_at: new Date().toISOString()
|
|
6241
6387
|
});
|
|
6242
6388
|
emit({ type: "run:complete", runId: run.id, error: errorMsg });
|
|
6389
|
+
const failedRun = getRun(run.id);
|
|
6390
|
+
if (failedRun)
|
|
6391
|
+
dispatchWebhooks("failed", failedRun).catch(() => {});
|
|
6243
6392
|
}
|
|
6244
6393
|
})();
|
|
6245
6394
|
return { runId: run.id, scenarioCount: scenarios.length };
|
package/dist/server/index.js
CHANGED
|
@@ -29,6 +29,7 @@ function scenarioFromRow(row) {
|
|
|
29
29
|
requiresAuth: row.requires_auth === 1,
|
|
30
30
|
authConfig: row.auth_config ? JSON.parse(row.auth_config) : null,
|
|
31
31
|
metadata: row.metadata ? JSON.parse(row.metadata) : null,
|
|
32
|
+
assertions: JSON.parse(row.assertions || "[]"),
|
|
32
33
|
version: row.version,
|
|
33
34
|
createdAt: row.created_at,
|
|
34
35
|
updatedAt: row.updated_at
|
|
@@ -48,7 +49,8 @@ function runFromRow(row) {
|
|
|
48
49
|
failed: row.failed,
|
|
49
50
|
startedAt: row.started_at,
|
|
50
51
|
finishedAt: row.finished_at,
|
|
51
|
-
metadata: row.metadata ? JSON.parse(row.metadata) : null
|
|
52
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : null,
|
|
53
|
+
isBaseline: row.is_baseline === 1
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
function resultFromRow(row) {
|
|
@@ -397,6 +399,24 @@ var init_database = __esm(() => {
|
|
|
397
399
|
CREATE INDEX IF NOT EXISTS idx_deps_scenario ON scenario_dependencies(scenario_id);
|
|
398
400
|
CREATE INDEX IF NOT EXISTS idx_deps_depends ON scenario_dependencies(depends_on);
|
|
399
401
|
CREATE INDEX IF NOT EXISTS idx_flows_project ON flows(project_id);
|
|
402
|
+
`,
|
|
403
|
+
`
|
|
404
|
+
ALTER TABLE scenarios ADD COLUMN assertions TEXT DEFAULT '[]';
|
|
405
|
+
`,
|
|
406
|
+
`
|
|
407
|
+
CREATE TABLE IF NOT EXISTS environments (
|
|
408
|
+
id TEXT PRIMARY KEY,
|
|
409
|
+
name TEXT NOT NULL UNIQUE,
|
|
410
|
+
url TEXT NOT NULL,
|
|
411
|
+
auth_preset_name TEXT,
|
|
412
|
+
project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
|
|
413
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
414
|
+
metadata TEXT DEFAULT '{}',
|
|
415
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
416
|
+
);
|
|
417
|
+
`,
|
|
418
|
+
`
|
|
419
|
+
ALTER TABLE runs ADD COLUMN is_baseline INTEGER NOT NULL DEFAULT 0;
|
|
400
420
|
`
|
|
401
421
|
];
|
|
402
422
|
});
|
|
@@ -578,9 +598,9 @@ function createScenario(input) {
|
|
|
578
598
|
const short_id = nextShortId(input.projectId);
|
|
579
599
|
const timestamp = now();
|
|
580
600
|
db2.query(`
|
|
581
|
-
INSERT INTO scenarios (id, short_id, project_id, name, description, steps, tags, priority, model, timeout_ms, target_path, requires_auth, auth_config, metadata, version, created_at, updated_at)
|
|
582
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)
|
|
583
|
-
`).run(id, short_id, input.projectId ?? null, input.name, input.description, JSON.stringify(input.steps ?? []), JSON.stringify(input.tags ?? []), input.priority ?? "medium", input.model ?? null, input.timeoutMs ?? null, input.targetPath ?? null, input.requiresAuth ? 1 : 0, input.authConfig ? JSON.stringify(input.authConfig) : null, input.metadata ? JSON.stringify(input.metadata) : null, timestamp, timestamp);
|
|
601
|
+
INSERT INTO scenarios (id, short_id, project_id, name, description, steps, tags, priority, model, timeout_ms, target_path, requires_auth, auth_config, metadata, assertions, version, created_at, updated_at)
|
|
602
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)
|
|
603
|
+
`).run(id, short_id, input.projectId ?? null, input.name, input.description, JSON.stringify(input.steps ?? []), JSON.stringify(input.tags ?? []), input.priority ?? "medium", input.model ?? null, input.timeoutMs ?? null, input.targetPath ?? null, input.requiresAuth ? 1 : 0, input.authConfig ? JSON.stringify(input.authConfig) : null, input.metadata ? JSON.stringify(input.metadata) : null, JSON.stringify(input.assertions ?? []), timestamp, timestamp);
|
|
584
604
|
return getScenario(id);
|
|
585
605
|
}
|
|
586
606
|
function getScenario(id) {
|
|
@@ -698,6 +718,10 @@ function updateScenario(id, input, version) {
|
|
|
698
718
|
sets.push("metadata = ?");
|
|
699
719
|
params.push(JSON.stringify(input.metadata));
|
|
700
720
|
}
|
|
721
|
+
if (input.assertions !== undefined) {
|
|
722
|
+
sets.push("assertions = ?");
|
|
723
|
+
params.push(JSON.stringify(input.assertions));
|
|
724
|
+
}
|
|
701
725
|
if (sets.length === 0) {
|
|
702
726
|
return existing;
|
|
703
727
|
}
|
|
@@ -828,6 +852,10 @@ function updateRun(id, updates) {
|
|
|
828
852
|
sets.push("metadata = ?");
|
|
829
853
|
params.push(updates.metadata);
|
|
830
854
|
}
|
|
855
|
+
if (updates.is_baseline !== undefined) {
|
|
856
|
+
sets.push("is_baseline = ?");
|
|
857
|
+
params.push(updates.is_baseline);
|
|
858
|
+
}
|
|
831
859
|
if (sets.length === 0) {
|
|
832
860
|
return existing;
|
|
833
861
|
}
|
|
@@ -1907,12 +1935,124 @@ function loadConfig() {
|
|
|
1907
1935
|
return config;
|
|
1908
1936
|
}
|
|
1909
1937
|
|
|
1938
|
+
// src/lib/webhooks.ts
|
|
1939
|
+
init_database();
|
|
1940
|
+
function fromRow(row) {
|
|
1941
|
+
return {
|
|
1942
|
+
id: row.id,
|
|
1943
|
+
url: row.url,
|
|
1944
|
+
events: JSON.parse(row.events),
|
|
1945
|
+
projectId: row.project_id,
|
|
1946
|
+
secret: row.secret,
|
|
1947
|
+
active: row.active === 1,
|
|
1948
|
+
createdAt: row.created_at
|
|
1949
|
+
};
|
|
1950
|
+
}
|
|
1951
|
+
function listWebhooks(projectId) {
|
|
1952
|
+
const db2 = getDatabase();
|
|
1953
|
+
let query = "SELECT * FROM webhooks WHERE active = 1";
|
|
1954
|
+
const params = [];
|
|
1955
|
+
if (projectId) {
|
|
1956
|
+
query += " AND (project_id = ? OR project_id IS NULL)";
|
|
1957
|
+
params.push(projectId);
|
|
1958
|
+
}
|
|
1959
|
+
query += " ORDER BY created_at DESC";
|
|
1960
|
+
const rows = db2.query(query).all(...params);
|
|
1961
|
+
return rows.map(fromRow);
|
|
1962
|
+
}
|
|
1963
|
+
function signPayload(body, secret) {
|
|
1964
|
+
const encoder = new TextEncoder;
|
|
1965
|
+
const key = encoder.encode(secret);
|
|
1966
|
+
const data = encoder.encode(body);
|
|
1967
|
+
let hash = 0;
|
|
1968
|
+
for (let i = 0;i < data.length; i++) {
|
|
1969
|
+
hash = (hash << 5) - hash + data[i] + (key[i % key.length] ?? 0) | 0;
|
|
1970
|
+
}
|
|
1971
|
+
return `sha256=${Math.abs(hash).toString(16).padStart(16, "0")}`;
|
|
1972
|
+
}
|
|
1973
|
+
function formatSlackPayload(payload) {
|
|
1974
|
+
const status = payload.run.status === "passed" ? ":white_check_mark:" : ":x:";
|
|
1975
|
+
const color = payload.run.status === "passed" ? "#22c55e" : "#ef4444";
|
|
1976
|
+
return {
|
|
1977
|
+
attachments: [
|
|
1978
|
+
{
|
|
1979
|
+
color,
|
|
1980
|
+
blocks: [
|
|
1981
|
+
{
|
|
1982
|
+
type: "section",
|
|
1983
|
+
text: {
|
|
1984
|
+
type: "mrkdwn",
|
|
1985
|
+
text: `${status} *Test Run ${payload.run.status.toUpperCase()}*
|
|
1986
|
+
` + `URL: ${payload.run.url}
|
|
1987
|
+
` + `Results: ${payload.run.passed}/${payload.run.total} passed` + (payload.run.failed > 0 ? ` (${payload.run.failed} failed)` : "") + (payload.schedule ? `
|
|
1988
|
+
Schedule: ${payload.schedule.name}` : "")
|
|
1989
|
+
}
|
|
1990
|
+
}
|
|
1991
|
+
]
|
|
1992
|
+
}
|
|
1993
|
+
]
|
|
1994
|
+
};
|
|
1995
|
+
}
|
|
1996
|
+
async function dispatchWebhooks(event, run, schedule) {
|
|
1997
|
+
const webhooks = listWebhooks(run.projectId ?? undefined);
|
|
1998
|
+
const payload = {
|
|
1999
|
+
event,
|
|
2000
|
+
run: {
|
|
2001
|
+
id: run.id,
|
|
2002
|
+
url: run.url,
|
|
2003
|
+
status: run.status,
|
|
2004
|
+
passed: run.passed,
|
|
2005
|
+
failed: run.failed,
|
|
2006
|
+
total: run.total
|
|
2007
|
+
},
|
|
2008
|
+
schedule,
|
|
2009
|
+
timestamp: new Date().toISOString()
|
|
2010
|
+
};
|
|
2011
|
+
for (const webhook of webhooks) {
|
|
2012
|
+
if (!webhook.events.includes(event) && !webhook.events.includes("*"))
|
|
2013
|
+
continue;
|
|
2014
|
+
const isSlack = webhook.url.includes("hooks.slack.com");
|
|
2015
|
+
const body = isSlack ? JSON.stringify(formatSlackPayload(payload)) : JSON.stringify(payload);
|
|
2016
|
+
const headers = {
|
|
2017
|
+
"Content-Type": "application/json"
|
|
2018
|
+
};
|
|
2019
|
+
if (webhook.secret) {
|
|
2020
|
+
headers["X-Testers-Signature"] = signPayload(body, webhook.secret);
|
|
2021
|
+
}
|
|
2022
|
+
try {
|
|
2023
|
+
const response = await fetch(webhook.url, {
|
|
2024
|
+
method: "POST",
|
|
2025
|
+
headers,
|
|
2026
|
+
body
|
|
2027
|
+
});
|
|
2028
|
+
if (!response.ok) {
|
|
2029
|
+
await new Promise((r) => setTimeout(r, 5000));
|
|
2030
|
+
await fetch(webhook.url, { method: "POST", headers, body });
|
|
2031
|
+
}
|
|
2032
|
+
} catch {}
|
|
2033
|
+
}
|
|
2034
|
+
}
|
|
2035
|
+
|
|
1910
2036
|
// src/lib/runner.ts
|
|
1911
2037
|
var eventHandler = null;
|
|
1912
2038
|
function emit(event) {
|
|
1913
2039
|
if (eventHandler)
|
|
1914
2040
|
eventHandler(event);
|
|
1915
2041
|
}
|
|
2042
|
+
function withTimeout(promise, ms, label) {
|
|
2043
|
+
return new Promise((resolve, reject) => {
|
|
2044
|
+
const timer = setTimeout(() => {
|
|
2045
|
+
reject(new Error(`Scenario timeout after ${ms}ms: ${label}`));
|
|
2046
|
+
}, ms);
|
|
2047
|
+
promise.then((val) => {
|
|
2048
|
+
clearTimeout(timer);
|
|
2049
|
+
resolve(val);
|
|
2050
|
+
}, (err) => {
|
|
2051
|
+
clearTimeout(timer);
|
|
2052
|
+
reject(err);
|
|
2053
|
+
});
|
|
2054
|
+
});
|
|
2055
|
+
}
|
|
1916
2056
|
async function runSingleScenario(scenario, runId, options) {
|
|
1917
2057
|
const config = loadConfig();
|
|
1918
2058
|
const model = resolveModel(options.model ?? scenario.model ?? config.defaultModel);
|
|
@@ -1935,8 +2075,9 @@ async function runSingleScenario(scenario, runId, options) {
|
|
|
1935
2075
|
viewport: config.browser.viewport
|
|
1936
2076
|
});
|
|
1937
2077
|
const targetUrl = scenario.targetPath ? `${options.url.replace(/\/$/, "")}${scenario.targetPath}` : options.url;
|
|
1938
|
-
|
|
1939
|
-
|
|
2078
|
+
const scenarioTimeout = scenario.timeoutMs ?? options.timeout ?? config.browser.timeout ?? 60000;
|
|
2079
|
+
await page.goto(targetUrl, { timeout: Math.min(scenarioTimeout, 30000) });
|
|
2080
|
+
const agentResult = await withTimeout(runAgentLoop({
|
|
1940
2081
|
client,
|
|
1941
2082
|
page,
|
|
1942
2083
|
scenario,
|
|
@@ -1957,7 +2098,7 @@ async function runSingleScenario(scenario, runId, options) {
|
|
|
1957
2098
|
stepNumber: stepEvent.stepNumber
|
|
1958
2099
|
});
|
|
1959
2100
|
}
|
|
1960
|
-
});
|
|
2101
|
+
}), scenarioTimeout, scenario.name);
|
|
1961
2102
|
for (const ss of agentResult.screenshots) {
|
|
1962
2103
|
createScreenshot({
|
|
1963
2104
|
resultId: result.id,
|
|
@@ -2089,6 +2230,8 @@ async function runBatch(scenarios, options) {
|
|
|
2089
2230
|
finished_at: new Date().toISOString()
|
|
2090
2231
|
});
|
|
2091
2232
|
emit({ type: "run:complete", runId: run.id });
|
|
2233
|
+
const eventType = finalRun.status === "failed" ? "failed" : "completed";
|
|
2234
|
+
dispatchWebhooks(eventType, finalRun).catch(() => {});
|
|
2092
2235
|
return { run: finalRun, results };
|
|
2093
2236
|
}
|
|
2094
2237
|
async function runByFilter(options) {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,13 @@ export type ScenarioPriority = "low" | "medium" | "high" | "critical";
|
|
|
2
2
|
export type RunStatus = "pending" | "running" | "passed" | "failed" | "cancelled";
|
|
3
3
|
export type ResultStatus = "passed" | "failed" | "error" | "skipped";
|
|
4
4
|
export type ModelPreset = "quick" | "thorough" | "deep";
|
|
5
|
+
export type AssertionType = "visible" | "not_visible" | "text_contains" | "text_equals" | "element_count" | "no_console_errors" | "url_contains" | "title_contains";
|
|
6
|
+
export interface Assertion {
|
|
7
|
+
type: AssertionType;
|
|
8
|
+
selector?: string;
|
|
9
|
+
expected?: string | number;
|
|
10
|
+
description?: string;
|
|
11
|
+
}
|
|
5
12
|
export declare const MODEL_MAP: Record<ModelPreset, string>;
|
|
6
13
|
export interface ProjectRow {
|
|
7
14
|
id: string;
|
|
@@ -35,6 +42,7 @@ export interface ScenarioRow {
|
|
|
35
42
|
requires_auth: number;
|
|
36
43
|
auth_config: string | null;
|
|
37
44
|
metadata: string | null;
|
|
45
|
+
assertions: string;
|
|
38
46
|
version: number;
|
|
39
47
|
created_at: string;
|
|
40
48
|
updated_at: string;
|
|
@@ -53,6 +61,7 @@ export interface RunRow {
|
|
|
53
61
|
started_at: string;
|
|
54
62
|
finished_at: string | null;
|
|
55
63
|
metadata: string | null;
|
|
64
|
+
is_baseline: number;
|
|
56
65
|
}
|
|
57
66
|
export interface ResultRow {
|
|
58
67
|
id: string;
|
|
@@ -133,6 +142,7 @@ export interface Scenario {
|
|
|
133
142
|
requiresAuth: boolean;
|
|
134
143
|
authConfig: AuthConfig | null;
|
|
135
144
|
metadata: Record<string, unknown> | null;
|
|
145
|
+
assertions: Assertion[];
|
|
136
146
|
version: number;
|
|
137
147
|
createdAt: string;
|
|
138
148
|
updatedAt: string;
|
|
@@ -151,6 +161,7 @@ export interface Run {
|
|
|
151
161
|
startedAt: string;
|
|
152
162
|
finishedAt: string | null;
|
|
153
163
|
metadata: Record<string, unknown> | null;
|
|
164
|
+
isBaseline: boolean;
|
|
154
165
|
}
|
|
155
166
|
export interface Result {
|
|
156
167
|
id: string;
|
|
@@ -214,6 +225,7 @@ export interface CreateScenarioInput {
|
|
|
214
225
|
targetPath?: string;
|
|
215
226
|
requiresAuth?: boolean;
|
|
216
227
|
authConfig?: AuthConfig;
|
|
228
|
+
assertions?: Assertion[];
|
|
217
229
|
metadata?: Record<string, unknown>;
|
|
218
230
|
projectId?: string;
|
|
219
231
|
}
|
|
@@ -228,6 +240,7 @@ export interface UpdateScenarioInput {
|
|
|
228
240
|
targetPath?: string;
|
|
229
241
|
requiresAuth?: boolean;
|
|
230
242
|
authConfig?: AuthConfig;
|
|
243
|
+
assertions?: Assertion[];
|
|
231
244
|
metadata?: Record<string, unknown>;
|
|
232
245
|
}
|
|
233
246
|
export interface CreateRunInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|