@sudobility/testomniac_runner_service 0.1.30 → 0.1.32
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-execution.d.ts","sourceRoot":"","sources":["../../src/orchestrator/test-execution.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;
|
|
1
|
+
{"version":3,"file":"test-execution.d.ts","sourceRoot":"","sources":["../../src/orchestrator/test-execution.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;AAgJ5D,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,OAAO,CAAC,CAoLlB"}
|
|
@@ -9,22 +9,33 @@ function checkAbort(signal) {
|
|
|
9
9
|
if (signal?.aborted)
|
|
10
10
|
throw new Error("Scan aborted");
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
/** Pages already discovered — only create decomposition jobs for NEW pages. */
|
|
13
|
+
const discoveredPagePaths = new Set();
|
|
14
|
+
/**
|
|
15
|
+
* After each action, check if we navigated to a new page (different path).
|
|
16
|
+
* Only new pages trigger decomposition jobs. Same-page DOM changes from
|
|
17
|
+
* clicks/hovers are ignored — they don't generate new test work.
|
|
18
|
+
*/
|
|
19
|
+
async function captureCurrentPageState(config, adapter, api, testRunId, events) {
|
|
13
20
|
const currentUrl = await adapter.getUrl();
|
|
14
21
|
const current = new URL(currentUrl);
|
|
15
22
|
const base = new URL(config.baseUrl);
|
|
23
|
+
// Off-site navigation — skip
|
|
16
24
|
if (current.origin !== base.origin) {
|
|
17
|
-
return
|
|
25
|
+
return false;
|
|
18
26
|
}
|
|
19
|
-
const relativePath =
|
|
27
|
+
const relativePath = current.pathname;
|
|
28
|
+
// Already seen this page path — no new work
|
|
29
|
+
if (discoveredPagePaths.has(relativePath)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
discoveredPagePaths.add(relativePath);
|
|
33
|
+
// New page discovered — create page, state, and decomposition job
|
|
20
34
|
const page = await api.findOrCreatePage(config.runnerId, relativePath);
|
|
35
|
+
events.onPageFound({ relativePath, pageId: page.id });
|
|
21
36
|
const html = await adapter.content();
|
|
22
37
|
const items = await extractActionableItems(adapter);
|
|
23
38
|
const hashes = await computeHashes(html, items);
|
|
24
|
-
const existingState = await api.findMatchingPageState(page.id, hashes, config.sizeClass);
|
|
25
|
-
if (existingState) {
|
|
26
|
-
return { isNew: false, pageStateId: existingState.id, pageId: page.id };
|
|
27
|
-
}
|
|
28
39
|
const newState = await api.createPageState({
|
|
29
40
|
pageId: page.id,
|
|
30
41
|
sizeClass: config.sizeClass,
|
|
@@ -32,13 +43,16 @@ async function captureCurrentPageState(config, adapter, api, testRunId) {
|
|
|
32
43
|
contentText: html.slice(0, 5000),
|
|
33
44
|
createdByTestRunId: testRunId,
|
|
34
45
|
});
|
|
35
|
-
|
|
36
|
-
return {
|
|
37
|
-
isNew: true,
|
|
46
|
+
events.onPageStateCreated({
|
|
38
47
|
pageStateId: newState.id,
|
|
39
48
|
pageId: page.id,
|
|
49
|
+
});
|
|
50
|
+
const job = await api.createDecompositionJob(config.scanId, newState.id);
|
|
51
|
+
events.onDecompositionJobCreated({
|
|
40
52
|
jobId: job.id,
|
|
41
|
-
|
|
53
|
+
pageStateId: newState.id,
|
|
54
|
+
});
|
|
55
|
+
return true;
|
|
42
56
|
}
|
|
43
57
|
async function executeStoredAction(adapter, config, playwrightCode, fallbackPath) {
|
|
44
58
|
const trimmedCode = playwrightCode.trim();
|
|
@@ -91,6 +105,9 @@ async function executeStoredAction(adapter, config, playwrightCode, fallbackPath
|
|
|
91
105
|
}
|
|
92
106
|
}
|
|
93
107
|
export async function executeTestCases(config, adapter, api, events) {
|
|
108
|
+
// Seed the initial scan URL path so we don't re-discover it
|
|
109
|
+
const scanPath = new URL(config.scanUrl).pathname;
|
|
110
|
+
discoveredPagePaths.add(scanPath);
|
|
94
111
|
const testCases = await api.getTestCasesByRunner(config.runnerId);
|
|
95
112
|
let newJobsCreated = false;
|
|
96
113
|
const completedCaseIds = new Set();
|
|
@@ -176,20 +193,9 @@ export async function executeTestCases(config, adapter, api, events) {
|
|
|
176
193
|
default:
|
|
177
194
|
break;
|
|
178
195
|
}
|
|
179
|
-
const
|
|
180
|
-
if (
|
|
181
|
-
if (capturedState.jobId == null) {
|
|
182
|
-
throw new Error("New page state was captured without a decomposition job");
|
|
183
|
-
}
|
|
196
|
+
const isNewPage = await captureCurrentPageState(config, adapter, api, testRun.id, events);
|
|
197
|
+
if (isNewPage) {
|
|
184
198
|
newJobsCreated = true;
|
|
185
|
-
events.onPageStateCreated({
|
|
186
|
-
pageStateId: capturedState.pageStateId,
|
|
187
|
-
pageId: capturedState.pageId,
|
|
188
|
-
});
|
|
189
|
-
events.onDecompositionJobCreated({
|
|
190
|
-
jobId: capturedState.jobId,
|
|
191
|
-
pageStateId: capturedState.pageStateId,
|
|
192
|
-
});
|
|
193
199
|
}
|
|
194
200
|
}
|
|
195
201
|
const durationMs = Date.now() - startTime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-execution.js","sourceRoot":"","sources":["../../src/orchestrator/test-execution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,8DAA8D;AAC9D,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,MAAoB;IACtC,IAAI,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,MAAkB,EAClB,OAAuB,EACvB,GAAc,EACd,SAAiB;
|
|
1
|
+
{"version":3,"file":"test-execution.js","sourceRoot":"","sources":["../../src/orchestrator/test-execution.ts"],"names":[],"mappings":"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"}
|