@sudobility/testomniac_runner_service 0.1.39 → 0.1.42
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/CLAUDE.md +85 -331
- package/README.md +4 -8
- package/dist/analyzer/page-analyzer.d.ts +25 -19
- package/dist/analyzer/page-analyzer.d.ts.map +1 -1
- package/dist/analyzer/page-analyzer.js +172 -85
- package/dist/analyzer/page-analyzer.js.map +1 -1
- package/dist/api/client.d.ts +22 -24
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +58 -68
- package/dist/api/client.js.map +1 -1
- package/dist/detectors/action-description.d.ts +1 -1
- package/dist/detectors/action-description.d.ts.map +1 -1
- package/dist/detectors/action-description.js +1 -1
- package/dist/detectors/action-description.js.map +1 -1
- package/dist/detectors/index.d.ts +1 -1
- package/dist/detectors/index.d.ts.map +1 -1
- package/dist/detectors/index.js +1 -1
- package/dist/detectors/index.js.map +1 -1
- package/dist/domain/types.d.ts +1 -1
- package/dist/domain/types.d.ts.map +1 -1
- package/dist/expertise/tester-expertise.d.ts +1 -1
- package/dist/expertise/tester-expertise.js +1 -1
- package/dist/generation/e2e.d.ts +2 -2
- package/dist/generation/e2e.d.ts.map +1 -1
- package/dist/generation/e2e.js +3 -3
- package/dist/generation/e2e.js.map +1 -1
- package/dist/generation/form-negative.d.ts +2 -2
- package/dist/generation/form-negative.d.ts.map +1 -1
- package/dist/generation/form-negative.js +3 -3
- package/dist/generation/form-negative.js.map +1 -1
- package/dist/generation/form.d.ts +2 -2
- package/dist/generation/form.d.ts.map +1 -1
- package/dist/generation/form.js +3 -3
- package/dist/generation/form.js.map +1 -1
- package/dist/generation/generator.d.ts +2 -2
- package/dist/generation/generator.d.ts.map +1 -1
- package/dist/generation/generator.js +2 -2
- package/dist/generation/generator.js.map +1 -1
- package/dist/generation/interaction.d.ts +2 -2
- package/dist/generation/interaction.d.ts.map +1 -1
- package/dist/generation/interaction.js +3 -3
- package/dist/generation/interaction.js.map +1 -1
- package/dist/generation/navigation.d.ts +2 -2
- package/dist/generation/navigation.d.ts.map +1 -1
- package/dist/generation/navigation.js +3 -3
- package/dist/generation/navigation.js.map +1 -1
- package/dist/generation/password.d.ts +4 -4
- package/dist/generation/password.d.ts.map +1 -1
- package/dist/generation/password.js +3 -3
- package/dist/generation/password.js.map +1 -1
- package/dist/generation/playwright-export.d.ts +2 -2
- package/dist/generation/playwright-export.d.ts.map +1 -1
- package/dist/generation/playwright-export.js +3 -3
- package/dist/generation/playwright-export.js.map +1 -1
- package/dist/generation/render.d.ts +7 -7
- package/dist/generation/render.d.ts.map +1 -1
- package/dist/generation/render.js +3 -3
- package/dist/generation/render.js.map +1 -1
- package/dist/generation/surface-tagger.d.ts +4 -0
- package/dist/generation/surface-tagger.d.ts.map +1 -0
- package/dist/generation/{suite-tagger.js → surface-tagger.js} +2 -2
- package/dist/generation/surface-tagger.js.map +1 -0
- package/dist/index.d.ts +5 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -7
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/runner.d.ts +2 -3
- package/dist/orchestrator/runner.d.ts.map +1 -1
- package/dist/orchestrator/runner.js +32 -37
- package/dist/orchestrator/runner.js.map +1 -1
- package/dist/orchestrator/test-element-executor.d.ts +15 -0
- package/dist/orchestrator/test-element-executor.d.ts.map +1 -0
- package/dist/orchestrator/{test-case-executor.js → test-element-executor.js} +81 -51
- package/dist/orchestrator/test-element-executor.js.map +1 -0
- package/dist/orchestrator/types.d.ts +4 -19
- package/dist/orchestrator/types.d.ts.map +1 -1
- package/dist/planners/fill-value-planner.js +1 -1
- package/dist/planners/fill-value-planner.js.map +1 -1
- package/package.json +3 -3
- package/dist/generation/suite-tagger.d.ts +0 -4
- package/dist/generation/suite-tagger.d.ts.map +0 -1
- package/dist/generation/suite-tagger.js.map +0 -1
- package/dist/orchestrator/decomposition.d.ts +0 -10
- package/dist/orchestrator/decomposition.d.ts.map +0 -1
- package/dist/orchestrator/decomposition.js +0 -658
- package/dist/orchestrator/decomposition.js.map +0 -1
- package/dist/orchestrator/direct-navigation.d.ts +0 -4
- package/dist/orchestrator/direct-navigation.d.ts.map +0 -1
- package/dist/orchestrator/direct-navigation.js +0 -47
- package/dist/orchestrator/direct-navigation.js.map +0 -1
- package/dist/orchestrator/discovery.d.ts +0 -10
- package/dist/orchestrator/discovery.d.ts.map +0 -1
- package/dist/orchestrator/discovery.js +0 -77
- package/dist/orchestrator/discovery.js.map +0 -1
- package/dist/orchestrator/expertise.d.ts +0 -5
- package/dist/orchestrator/expertise.d.ts.map +0 -1
- package/dist/orchestrator/expertise.js +0 -168
- package/dist/orchestrator/expertise.js.map +0 -1
- package/dist/orchestrator/orchestrator.d.ts +0 -5
- package/dist/orchestrator/orchestrator.d.ts.map +0 -1
- package/dist/orchestrator/orchestrator.js +0 -172
- package/dist/orchestrator/orchestrator.js.map +0 -1
- package/dist/orchestrator/page-capture.d.ts +0 -22
- package/dist/orchestrator/page-capture.d.ts.map +0 -1
- package/dist/orchestrator/page-capture.js +0 -112
- package/dist/orchestrator/page-capture.js.map +0 -1
- package/dist/orchestrator/test-case-executor.d.ts +0 -15
- package/dist/orchestrator/test-case-executor.d.ts.map +0 -1
- package/dist/orchestrator/test-case-executor.js.map +0 -1
- package/dist/orchestrator/test-execution.d.ts +0 -5
- package/dist/orchestrator/test-execution.d.ts.map +0 -1
- package/dist/orchestrator/test-execution.js +0 -254
- package/dist/orchestrator/test-execution.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decomposition.js","sourceRoot":"","sources":["../../src/orchestrator/decomposition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ApiClient } from "../api/client";
|
|
2
|
-
import type { ScanConfig, ScanEventHandler } from "./types";
|
|
3
|
-
export declare function ensureDirectNavigationCase(api: ApiClient, config: ScanConfig, events: ScanEventHandler, relativePath: string): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=direct-navigation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"direct-navigation.d.ts","sourceRoot":"","sources":["../../src/orchestrator/direct-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA4B5D,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { PlaywrightAction } from "../domain/types";
|
|
2
|
-
const DIRECT_NAV_SUITE_TITLE = "Direct Navigations";
|
|
3
|
-
async function ensureDirectNavigationSuite(api, config, events) {
|
|
4
|
-
const suites = await api.getTestSuitesByRunner(config.runnerId);
|
|
5
|
-
const existing = suites.find(suite => suite.title === DIRECT_NAV_SUITE_TITLE);
|
|
6
|
-
if (existing) {
|
|
7
|
-
return existing.id;
|
|
8
|
-
}
|
|
9
|
-
const suite = await api.insertTestSuite(config.runnerId, {
|
|
10
|
-
title: DIRECT_NAV_SUITE_TITLE,
|
|
11
|
-
description: "Auto-created suite for directly navigated URLs",
|
|
12
|
-
startingPath: "/",
|
|
13
|
-
sizeClass: config.sizeClass,
|
|
14
|
-
priority: 1,
|
|
15
|
-
suite_tags: ["direct-navigation"],
|
|
16
|
-
});
|
|
17
|
-
events.onTestSuiteCreated({ suiteId: suite.id, title: suite.title });
|
|
18
|
-
return suite.id;
|
|
19
|
-
}
|
|
20
|
-
export async function ensureDirectNavigationCase(api, config, events, relativePath) {
|
|
21
|
-
const suiteId = await ensureDirectNavigationSuite(api, config, events);
|
|
22
|
-
const testCase = await api.insertTestCase(config.runnerId, {
|
|
23
|
-
title: `Navigate to ${relativePath || "/"}`,
|
|
24
|
-
type: "navigation",
|
|
25
|
-
sizeClass: config.sizeClass,
|
|
26
|
-
priority: 1,
|
|
27
|
-
suite_tags: ["direct-navigation"],
|
|
28
|
-
startingPath: relativePath || "/",
|
|
29
|
-
steps: [],
|
|
30
|
-
globalExpectations: [],
|
|
31
|
-
}, suiteId);
|
|
32
|
-
const existingActions = await api.getTestActionsByCase(testCase.id);
|
|
33
|
-
if (existingActions.length > 0) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
await api.createTestAction({
|
|
37
|
-
testCaseId: testCase.id,
|
|
38
|
-
stepOrder: 1,
|
|
39
|
-
actionType: PlaywrightAction.Goto,
|
|
40
|
-
path: relativePath || "/",
|
|
41
|
-
playwrightCode: `await page.goto('${relativePath || "/"}');`,
|
|
42
|
-
description: `Navigate to ${relativePath || "/"}`,
|
|
43
|
-
expectations: [],
|
|
44
|
-
continueOnFailure: false,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
//# sourceMappingURL=direct-navigation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"direct-navigation.js","sourceRoot":"","sources":["../../src/orchestrator/direct-navigation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAEpD,KAAK,UAAU,2BAA2B,CACxC,GAAc,EACd,MAAkB,EAClB,MAAwB;IAExB,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,sBAAsB,CAAC,CAAC;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE;QACvD,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,gDAAgD;QAC7D,YAAY,EAAE,GAAG;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC,mBAAmB,CAAC;KAC3B,CAAC,CAAC;IACV,MAAM,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACrE,OAAO,KAAK,CAAC,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAc,EACd,MAAkB,EAClB,MAAwB,EACxB,YAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,cAAc,CACvC,MAAM,CAAC,QAAQ,EACf;QACE,KAAK,EAAE,eAAe,YAAY,IAAI,GAAG,EAAE;QAC3C,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,YAAY,EAAE,YAAY,IAAI,GAAG;QACjC,KAAK,EAAE,EAAE;QACT,kBAAkB,EAAE,EAAE;KAChB,EACR,OAAO,CACR,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,GAAG,CAAC,gBAAgB,CAAC;QACzB,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,gBAAgB,CAAC,IAAI;QACjC,IAAI,EAAE,YAAY,IAAI,GAAG;QACzB,cAAc,EAAE,oBAAoB,YAAY,IAAI,GAAG,KAAK;QAC5D,WAAW,EAAE,eAAe,YAAY,IAAI,GAAG,EAAE;QACjD,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,KAAK;KACzB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { BrowserAdapter } from "../adapter";
|
|
2
|
-
import type { ApiClient } from "../api/client";
|
|
3
|
-
import type { ScanConfig, ScanEventHandler } from "./types";
|
|
4
|
-
export interface DiscoveryResult {
|
|
5
|
-
pageIdsByPath: Map<string, number>;
|
|
6
|
-
visitedPaths: Set<string>;
|
|
7
|
-
capturedPaths: Set<string>;
|
|
8
|
-
}
|
|
9
|
-
export declare function discoverPublicPages(adapter: BrowserAdapter, config: ScanConfig, api: ApiClient, events: ScanEventHandler): Promise<DiscoveryResult>;
|
|
10
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/orchestrator/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAc5D,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,CAAC,CAkF1B"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { ensureDirectNavigationCase } from "./direct-navigation";
|
|
2
|
-
import { extractSameOriginLinks } from "../crawler/link-extractor";
|
|
3
|
-
import { toRelativePath } from "../crawler/url-normalizer";
|
|
4
|
-
import { captureCurrentPage } from "./page-capture";
|
|
5
|
-
const LOG = (...args) => console.warn("[discovery]", ...args);
|
|
6
|
-
const MAX_DISCOVERY_PAGES = 25;
|
|
7
|
-
function checkAbort(signal) {
|
|
8
|
-
if (signal?.aborted)
|
|
9
|
-
throw new Error("Scan aborted");
|
|
10
|
-
}
|
|
11
|
-
export async function discoverPublicPages(adapter, config, api, events) {
|
|
12
|
-
const queue = [config.scanUrl];
|
|
13
|
-
const visitedPaths = new Set();
|
|
14
|
-
const pageIdsByPath = new Map();
|
|
15
|
-
const capturedPaths = new Set();
|
|
16
|
-
while (queue.length > 0 && visitedPaths.size < MAX_DISCOVERY_PAGES) {
|
|
17
|
-
checkAbort(config.signal);
|
|
18
|
-
const nextUrl = queue.shift();
|
|
19
|
-
if (!nextUrl)
|
|
20
|
-
break;
|
|
21
|
-
LOG(`Visiting ${nextUrl}`);
|
|
22
|
-
try {
|
|
23
|
-
await adapter.goto(nextUrl, { waitUntil: "networkidle0" });
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
const relativePath = toRelativePath(nextUrl);
|
|
27
|
-
if (config.testEnvironmentId) {
|
|
28
|
-
await api.createPageVisit({
|
|
29
|
-
testRunId: config.scanId,
|
|
30
|
-
testEnvironmentId: config.testEnvironmentId,
|
|
31
|
-
relativePath,
|
|
32
|
-
status: "failed",
|
|
33
|
-
errorMessage: error instanceof Error ? error.message : "Navigation failed",
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
const currentUrl = await adapter.getUrl();
|
|
39
|
-
const relativePath = toRelativePath(currentUrl);
|
|
40
|
-
if (visitedPaths.has(relativePath)) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
visitedPaths.add(relativePath);
|
|
44
|
-
const page = await api.findOrCreatePage(config.runnerId, relativePath);
|
|
45
|
-
pageIdsByPath.set(relativePath, page.id);
|
|
46
|
-
await ensureDirectNavigationCase(api, config, events, relativePath);
|
|
47
|
-
const captureResult = await captureCurrentPage(adapter, config, api, events, {
|
|
48
|
-
testRunId: config.scanId,
|
|
49
|
-
markDiscovered: true,
|
|
50
|
-
captureState: relativePath !== toRelativePath(config.scanUrl),
|
|
51
|
-
createDecompositionJob: relativePath !== toRelativePath(config.scanUrl),
|
|
52
|
-
});
|
|
53
|
-
if (captureResult?.createdNewState) {
|
|
54
|
-
capturedPaths.add(relativePath);
|
|
55
|
-
}
|
|
56
|
-
const discoveredLinks = await extractSameOriginLinks(adapter, config.baseUrl);
|
|
57
|
-
LOG(`Discovered ${discoveredLinks.length} links on ${relativePath}`);
|
|
58
|
-
if (config.testEnvironmentId && discoveredLinks.length > 0) {
|
|
59
|
-
await api.createDiscoveredPages({
|
|
60
|
-
testEnvironmentId: config.testEnvironmentId,
|
|
61
|
-
pages: discoveredLinks.map(link => ({
|
|
62
|
-
relativePath: link.relativePath,
|
|
63
|
-
sourcePagePath: relativePath,
|
|
64
|
-
sourceLabel: link.label,
|
|
65
|
-
isPublic: true,
|
|
66
|
-
})),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
for (const link of discoveredLinks) {
|
|
70
|
-
if (!visitedPaths.has(link.relativePath)) {
|
|
71
|
-
queue.push(link.url);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return { pageIdsByPath, visitedPaths, capturedPaths };
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=discovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/orchestrator/discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { BrowserAdapter } from "../adapter";
|
|
2
|
-
import type { ApiClient } from "../api/client";
|
|
3
|
-
import type { ScanConfig, ScanEventHandler } from "./types";
|
|
4
|
-
export declare function executePageExpertises(adapter: BrowserAdapter, config: ScanConfig, api: ApiClient, events: ScanEventHandler, pageStateId: number, pageId: number, relativePath: string): Promise<void>;
|
|
5
|
-
//# sourceMappingURL=expertise.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expertise.d.ts","sourceRoot":"","sources":["../../src/orchestrator/expertise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmG5D,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,gBAAgB,EACxB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAsHf"}
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { ExpectationType } from "../domain/types";
|
|
2
|
-
import { createDefaultExpertises } from "../expertise";
|
|
3
|
-
import { detectScaffoldRegions } from "../scanner/component-detector";
|
|
4
|
-
import { detectPatternsWithInstances } from "../scanner/pattern-detector";
|
|
5
|
-
const EXPERTISE_PREFIX = "Expertise:";
|
|
6
|
-
function buildDefaultExpectations() {
|
|
7
|
-
return [
|
|
8
|
-
{
|
|
9
|
-
expectationType: ExpectationType.PageLoaded,
|
|
10
|
-
description: "Page should load successfully",
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
expectationType: ExpectationType.NoConsoleErrors,
|
|
14
|
-
description: "Page should not produce console errors",
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
expectationType: ExpectationType.NoNetworkErrors,
|
|
18
|
-
description: "Page should not produce network errors",
|
|
19
|
-
},
|
|
20
|
-
];
|
|
21
|
-
}
|
|
22
|
-
function normalizeOutcomes(outcomes) {
|
|
23
|
-
const expectedOutcome = outcomes.length > 0
|
|
24
|
-
? outcomes.map(item => item.expected).join("\n")
|
|
25
|
-
: undefined;
|
|
26
|
-
const observedOutcome = outcomes.length > 0
|
|
27
|
-
? outcomes.map(item => `[${item.result}] ${item.observed}`).join("\n")
|
|
28
|
-
: undefined;
|
|
29
|
-
const hasErrors = outcomes.some(item => item.result === "error");
|
|
30
|
-
return {
|
|
31
|
-
expectedOutcome,
|
|
32
|
-
observedOutcome,
|
|
33
|
-
status: hasErrors ? "failed" : "completed",
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async function ensureExpertiseSuite(api, config, events, expertiseName) {
|
|
37
|
-
const title = `${EXPERTISE_PREFIX} ${expertiseName}`;
|
|
38
|
-
const suites = await api.getTestSuitesByRunner(config.runnerId);
|
|
39
|
-
const existing = suites.find(suite => suite.title === title);
|
|
40
|
-
if (existing) {
|
|
41
|
-
return existing.id;
|
|
42
|
-
}
|
|
43
|
-
const created = await api.insertTestSuite(config.runnerId, {
|
|
44
|
-
title,
|
|
45
|
-
description: `Auto-generated expertise suite for ${expertiseName} findings`,
|
|
46
|
-
startingPath: "/",
|
|
47
|
-
sizeClass: config.sizeClass,
|
|
48
|
-
priority: 2,
|
|
49
|
-
suite_tags: ["expertise", expertiseName],
|
|
50
|
-
});
|
|
51
|
-
events.onTestSuiteCreated({ suiteId: created.id, title: created.title });
|
|
52
|
-
return created.id;
|
|
53
|
-
}
|
|
54
|
-
async function ensureExpertiseCase(api, config, suiteId, expertiseName, pageStateId, pageId, relativePath) {
|
|
55
|
-
const testCase = await api.insertTestCase(config.runnerId, {
|
|
56
|
-
title: `${expertiseName}: ${relativePath || "/"}`,
|
|
57
|
-
type: "render",
|
|
58
|
-
sizeClass: config.sizeClass,
|
|
59
|
-
suite_tags: ["expertise", expertiseName],
|
|
60
|
-
page_id: pageId,
|
|
61
|
-
priority: 2,
|
|
62
|
-
startingPageStateId: pageStateId,
|
|
63
|
-
startingPath: relativePath || "/",
|
|
64
|
-
steps: [],
|
|
65
|
-
globalExpectations: [],
|
|
66
|
-
}, suiteId);
|
|
67
|
-
return testCase.id;
|
|
68
|
-
}
|
|
69
|
-
export async function executePageExpertises(adapter, config, api, events, pageStateId, pageId, relativePath) {
|
|
70
|
-
const html = await adapter.content();
|
|
71
|
-
const scaffolds = await detectScaffoldRegions(adapter);
|
|
72
|
-
const patterns = await detectPatternsWithInstances(adapter);
|
|
73
|
-
const expertises = createDefaultExpertises();
|
|
74
|
-
for (const expertise of expertises) {
|
|
75
|
-
const runtimeArtifacts = adapter.getRuntimeArtifacts?.() ?? {
|
|
76
|
-
consoleLogs: [],
|
|
77
|
-
networkLogs: [],
|
|
78
|
-
};
|
|
79
|
-
const context = {
|
|
80
|
-
html,
|
|
81
|
-
scaffolds,
|
|
82
|
-
patterns,
|
|
83
|
-
consoleLogs: runtimeArtifacts.consoleLogs,
|
|
84
|
-
networkLogs: runtimeArtifacts.networkLogs,
|
|
85
|
-
expectations: buildDefaultExpectations(),
|
|
86
|
-
};
|
|
87
|
-
const suiteId = await ensureExpertiseSuite(api, config, events, expertise.name);
|
|
88
|
-
const testCaseId = await ensureExpertiseCase(api, config, suiteId, expertise.name, pageStateId, pageId, relativePath);
|
|
89
|
-
const testCaseRun = await api.createTestCaseRun({ testCaseId });
|
|
90
|
-
const testRun = await api.createTestRun({
|
|
91
|
-
runnerId: config.runnerId,
|
|
92
|
-
testCaseRunId: testCaseRun.id,
|
|
93
|
-
testEnvironmentId: config.testEnvironmentId,
|
|
94
|
-
parentTestRunId: config.scanId,
|
|
95
|
-
rootTestRunId: config.scanId,
|
|
96
|
-
sizeClass: config.sizeClass,
|
|
97
|
-
runnerInstanceId: config.runnerInstanceId,
|
|
98
|
-
runnerInstanceName: config.runnerInstanceName,
|
|
99
|
-
});
|
|
100
|
-
const startedAt = Date.now();
|
|
101
|
-
try {
|
|
102
|
-
const outcomes = expertise.evaluate(context);
|
|
103
|
-
const { expectedOutcome, observedOutcome, status } = normalizeOutcomes(outcomes);
|
|
104
|
-
for (const outcome of outcomes) {
|
|
105
|
-
if (outcome.result === "warning" || outcome.result === "error") {
|
|
106
|
-
await api.createTestRunFinding({
|
|
107
|
-
testCaseRunId: testCaseRun.id,
|
|
108
|
-
type: outcome.result === "error" ? "error" : "warning",
|
|
109
|
-
title: `[${expertise.name}] ${outcome.expected}`,
|
|
110
|
-
description: outcome.observed,
|
|
111
|
-
});
|
|
112
|
-
events.onFindingCreated({
|
|
113
|
-
type: outcome.result,
|
|
114
|
-
title: `[${expertise.name}] ${outcome.expected}`,
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
await api.completeTestCaseRun(testCaseRun.id, {
|
|
119
|
-
status,
|
|
120
|
-
durationMs: Date.now() - startedAt,
|
|
121
|
-
expectedOutcome,
|
|
122
|
-
observedOutcome,
|
|
123
|
-
consoleLog: runtimeArtifacts.consoleLogs.join("\n") || undefined,
|
|
124
|
-
networkLog: JSON.stringify(runtimeArtifacts.networkLogs ?? []) || undefined,
|
|
125
|
-
});
|
|
126
|
-
await api.completeTestRun(testRun.id, {
|
|
127
|
-
status,
|
|
128
|
-
totalDurationMs: Date.now() - startedAt,
|
|
129
|
-
});
|
|
130
|
-
events.onTestRunCompleted({
|
|
131
|
-
testRunId: testRun.id,
|
|
132
|
-
passed: status !== "failed",
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
const message = error instanceof Error ? error.message : "Expertise evaluation failed";
|
|
137
|
-
await api.completeTestCaseRun(testCaseRun.id, {
|
|
138
|
-
status: "failed",
|
|
139
|
-
durationMs: Date.now() - startedAt,
|
|
140
|
-
errorMessage: message,
|
|
141
|
-
consoleLog: runtimeArtifacts.consoleLogs.join("\n") || undefined,
|
|
142
|
-
networkLog: JSON.stringify(runtimeArtifacts.networkLogs ?? []) || undefined,
|
|
143
|
-
});
|
|
144
|
-
await api.completeTestRun(testRun.id, {
|
|
145
|
-
status: "failed",
|
|
146
|
-
totalDurationMs: Date.now() - startedAt,
|
|
147
|
-
});
|
|
148
|
-
await api.createTestRunFinding({
|
|
149
|
-
testCaseRunId: testCaseRun.id,
|
|
150
|
-
type: "error",
|
|
151
|
-
title: `[${expertise.name}] expertise execution failed`,
|
|
152
|
-
description: message,
|
|
153
|
-
});
|
|
154
|
-
events.onFindingCreated({
|
|
155
|
-
type: "error",
|
|
156
|
-
title: `[${expertise.name}] expertise execution failed`,
|
|
157
|
-
});
|
|
158
|
-
events.onTestRunCompleted({
|
|
159
|
-
testRunId: testRun.id,
|
|
160
|
-
passed: false,
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
finally {
|
|
164
|
-
adapter.resetRuntimeArtifacts?.();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=expertise.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expertise.js","sourceRoot":"","sources":["../../src/orchestrator/expertise.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { BrowserAdapter } from "../adapter";
|
|
2
|
-
import type { ApiClient } from "../api/client";
|
|
3
|
-
import type { ScanConfig, ScanEventHandler, ScanResult } from "./types";
|
|
4
|
-
export declare function runScan(adapter: BrowserAdapter, config: ScanConfig, api: ApiClient, eventHandler: ScanEventHandler): Promise<ScanResult>;
|
|
5
|
-
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AA6CxE,wBAAsB,OAAO,CAC3B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,gBAAgB,GAC7B,OAAO,CAAC,UAAU,CAAC,CA2LrB"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { discoverPublicPages } from "./discovery";
|
|
2
|
-
import { processDecompositionJob } from "./decomposition";
|
|
3
|
-
import { executeTestCases } from "./test-execution";
|
|
4
|
-
import { captureCurrentPage, resetCapturedPagePaths } from "./page-capture";
|
|
5
|
-
const LOG = (...args) => console.warn("[orchestrator]", ...args);
|
|
6
|
-
function buildAiSummary(pagesFound, pageStatesFound, testRunsCompleted, findingsFound, expertiseSummary) {
|
|
7
|
-
const expertiseLines = Object.entries(expertiseSummary)
|
|
8
|
-
.sort(([left], [right]) => left.localeCompare(right))
|
|
9
|
-
.map(([name, counts]) => {
|
|
10
|
-
const parts = [];
|
|
11
|
-
if (counts.errors > 0)
|
|
12
|
-
parts.push(`${counts.errors} error${counts.errors === 1 ? "" : "s"}`);
|
|
13
|
-
if (counts.warnings > 0) {
|
|
14
|
-
parts.push(`${counts.warnings} warning${counts.warnings === 1 ? "" : "s"}`);
|
|
15
|
-
}
|
|
16
|
-
return parts.length > 0
|
|
17
|
-
? `${name}: ${parts.join(", ")}`
|
|
18
|
-
: `${name}: no findings`;
|
|
19
|
-
});
|
|
20
|
-
const headline = findingsFound === 0
|
|
21
|
-
? `Scan completed with no findings across ${pagesFound} page${pagesFound === 1 ? "" : "s"}.`
|
|
22
|
-
: `Scan completed with ${findingsFound} finding${findingsFound === 1 ? "" : "s"} across ${pagesFound} page${pagesFound === 1 ? "" : "s"}.`;
|
|
23
|
-
const detail = `Captured ${pageStatesFound} page state${pageStatesFound === 1 ? "" : "s"} and completed ${testRunsCompleted} test run${testRunsCompleted === 1 ? "" : "s"}.`;
|
|
24
|
-
if (expertiseLines.length === 0) {
|
|
25
|
-
return `${headline} ${detail}`;
|
|
26
|
-
}
|
|
27
|
-
return `${headline} ${detail} Findings by expertise: ${expertiseLines.join("; ")}.`;
|
|
28
|
-
}
|
|
29
|
-
export async function runScan(adapter, config, api, eventHandler) {
|
|
30
|
-
const startTime = Date.now();
|
|
31
|
-
let pagesFound = 0;
|
|
32
|
-
let pageStatesFound = 0;
|
|
33
|
-
let testRunsCompleted = 0;
|
|
34
|
-
let findingsFound = 0;
|
|
35
|
-
const expertiseSummary = {};
|
|
36
|
-
const wrappedHandler = {
|
|
37
|
-
...eventHandler,
|
|
38
|
-
onPageFound(page) {
|
|
39
|
-
pagesFound++;
|
|
40
|
-
eventHandler.onPageFound(page);
|
|
41
|
-
emitStats();
|
|
42
|
-
},
|
|
43
|
-
onPageStateCreated(state) {
|
|
44
|
-
pageStatesFound++;
|
|
45
|
-
eventHandler.onPageStateCreated(state);
|
|
46
|
-
emitStats();
|
|
47
|
-
},
|
|
48
|
-
onTestRunCompleted(run) {
|
|
49
|
-
testRunsCompleted++;
|
|
50
|
-
eventHandler.onTestRunCompleted(run);
|
|
51
|
-
emitStats();
|
|
52
|
-
},
|
|
53
|
-
onFindingCreated(finding) {
|
|
54
|
-
findingsFound++;
|
|
55
|
-
const match = /^\[([^\]]+)\]/.exec(finding.title);
|
|
56
|
-
if (match?.[1]) {
|
|
57
|
-
const expertiseName = match[1];
|
|
58
|
-
const counts = expertiseSummary[expertiseName] ?? {
|
|
59
|
-
warnings: 0,
|
|
60
|
-
errors: 0,
|
|
61
|
-
};
|
|
62
|
-
if (finding.type === "error") {
|
|
63
|
-
counts.errors += 1;
|
|
64
|
-
}
|
|
65
|
-
else if (finding.type === "warning") {
|
|
66
|
-
counts.warnings += 1;
|
|
67
|
-
}
|
|
68
|
-
expertiseSummary[expertiseName] = counts;
|
|
69
|
-
}
|
|
70
|
-
eventHandler.onFindingCreated(finding);
|
|
71
|
-
emitStats();
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
function emitStats() {
|
|
75
|
-
eventHandler.onStatsUpdated({
|
|
76
|
-
pagesFound,
|
|
77
|
-
pageStatesFound,
|
|
78
|
-
testRunsCompleted,
|
|
79
|
-
findingsFound,
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
resetCapturedPagePaths();
|
|
84
|
-
// 1. Crawl the site from the scan URL to inventory public pages
|
|
85
|
-
LOG(`Step 1: Discovering pages from ${config.scanUrl}`);
|
|
86
|
-
await discoverPublicPages(adapter, config, api, wrappedHandler);
|
|
87
|
-
// 2. Navigate back to scan URL and capture initial page state
|
|
88
|
-
LOG(`Step 2: Navigating to ${config.scanUrl}`);
|
|
89
|
-
await adapter.goto(config.scanUrl, { waitUntil: "networkidle0" });
|
|
90
|
-
const initialCapture = await captureCurrentPage(adapter, config, api, wrappedHandler, {
|
|
91
|
-
testRunId: config.scanId,
|
|
92
|
-
markDiscovered: false,
|
|
93
|
-
createDecompositionJob: true,
|
|
94
|
-
});
|
|
95
|
-
if (!initialCapture?.pageStateId) {
|
|
96
|
-
throw new Error("Failed to capture initial page state");
|
|
97
|
-
}
|
|
98
|
-
LOG(`Captured initial page state ${initialCapture.pageStateId} for ${initialCapture.relativePath}`);
|
|
99
|
-
// 4. Generate/Run loop
|
|
100
|
-
let iteration = 0;
|
|
101
|
-
const MAX_ITERATIONS = 50;
|
|
102
|
-
while (iteration < MAX_ITERATIONS) {
|
|
103
|
-
if (config.signal?.aborted) {
|
|
104
|
-
LOG("Aborted by signal");
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
iteration++;
|
|
108
|
-
LOG(`=== Iteration ${iteration} ===`);
|
|
109
|
-
// Phase 1: GENERATE — process all pending decomposition jobs
|
|
110
|
-
const pendingJobs = await api.getPendingDecompositionJobs(config.scanId);
|
|
111
|
-
LOG(`Pending decomposition jobs: ${pendingJobs.length}`);
|
|
112
|
-
const testCaseIds = [];
|
|
113
|
-
for (const job of pendingJobs) {
|
|
114
|
-
if (config.signal?.aborted)
|
|
115
|
-
break;
|
|
116
|
-
const ids = await processDecompositionJob(job, adapter, config, api, wrappedHandler);
|
|
117
|
-
LOG(`Job ${job.id} produced ${ids.length} test case IDs: [${ids.join(", ")}]`);
|
|
118
|
-
testCaseIds.push(...ids);
|
|
119
|
-
await api.completeDecompositionJob(job.id);
|
|
120
|
-
wrappedHandler.onDecompositionJobCompleted({ jobId: job.id });
|
|
121
|
-
}
|
|
122
|
-
if (testCaseIds.length === 0) {
|
|
123
|
-
LOG("No test cases generated — done");
|
|
124
|
-
break;
|
|
125
|
-
}
|
|
126
|
-
// Phase 2: RUN — execute only the test cases just created
|
|
127
|
-
LOG(`Executing ${testCaseIds.length} test cases: [${testCaseIds.join(", ")}]`);
|
|
128
|
-
const newJobsCreated = await executeTestCases(config, adapter, api, wrappedHandler, testCaseIds);
|
|
129
|
-
// If no new pages were discovered, we're done
|
|
130
|
-
if (!newJobsCreated) {
|
|
131
|
-
LOG("No new pages discovered — done");
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
LOG("New pages discovered — continuing to next iteration");
|
|
135
|
-
}
|
|
136
|
-
// 5. Complete test run
|
|
137
|
-
const durationMs = Date.now() - startTime;
|
|
138
|
-
const aiSummary = buildAiSummary(pagesFound, pageStatesFound, testRunsCompleted, findingsFound, expertiseSummary);
|
|
139
|
-
await api.completeTestRun(config.scanId, {
|
|
140
|
-
status: "completed",
|
|
141
|
-
aiSummary,
|
|
142
|
-
totalDurationMs: durationMs,
|
|
143
|
-
pagesFound,
|
|
144
|
-
pageStatesFound,
|
|
145
|
-
testRunsCompleted,
|
|
146
|
-
});
|
|
147
|
-
const result = {
|
|
148
|
-
testRunId: config.scanId,
|
|
149
|
-
pagesFound,
|
|
150
|
-
pageStatesFound,
|
|
151
|
-
testRunsCompleted,
|
|
152
|
-
findingsFound,
|
|
153
|
-
durationMs,
|
|
154
|
-
aiSummary,
|
|
155
|
-
expertiseSummary,
|
|
156
|
-
};
|
|
157
|
-
wrappedHandler.onScanComplete({
|
|
158
|
-
totalPages: pagesFound,
|
|
159
|
-
totalFindings: findingsFound,
|
|
160
|
-
durationMs,
|
|
161
|
-
aiSummary,
|
|
162
|
-
expertiseSummary,
|
|
163
|
-
});
|
|
164
|
-
return result;
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
const message = error instanceof Error ? error.message : "Unknown scan error";
|
|
168
|
-
wrappedHandler.onError({ message });
|
|
169
|
-
throw error;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { BrowserAdapter } from "../adapter";
|
|
2
|
-
import type { ApiClient } from "../api/client";
|
|
3
|
-
import type { ScanConfig, ScanEventHandler } from "./types";
|
|
4
|
-
export interface CapturePageOptions {
|
|
5
|
-
testRunId?: number;
|
|
6
|
-
markDiscovered?: boolean;
|
|
7
|
-
captureState?: boolean;
|
|
8
|
-
createDecompositionJob?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface CapturePageResult {
|
|
11
|
-
pageId: number;
|
|
12
|
-
relativePath: string;
|
|
13
|
-
pageStateId?: number;
|
|
14
|
-
decompositionJobId?: number;
|
|
15
|
-
createdNewState: boolean;
|
|
16
|
-
matchedExistingState: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare function resetCapturedPagePaths(): void;
|
|
19
|
-
export declare function seedCapturedPagePath(relativePath: string): void;
|
|
20
|
-
export declare function hasCapturedPagePath(relativePath: string): boolean;
|
|
21
|
-
export declare function captureCurrentPage(adapter: BrowserAdapter, config: ScanConfig, api: ApiClient, events: ScanEventHandler, options?: CapturePageOptions): Promise<CapturePageResult | null>;
|
|
22
|
-
//# sourceMappingURL=page-capture.d.ts.map
|