@sudobility/testomniac_runner_service 0.1.40 → 0.1.43
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 +15 -15
- package/dist/analyzer/page-analyzer.d.ts +20 -18
- package/dist/analyzer/page-analyzer.d.ts.map +1 -1
- package/dist/analyzer/page-analyzer.js +103 -83
- package/dist/analyzer/page-analyzer.js.map +1 -1
- package/dist/api/client.d.ts +22 -22
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +57 -53
- 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/index.d.ts +1 -0
- package/dist/expertise/index.d.ts.map +1 -1
- package/dist/expertise/index.js +33 -9
- package/dist/expertise/index.js.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 +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/runner.d.ts +1 -1
- package/dist/orchestrator/runner.d.ts.map +1 -1
- package/dist/orchestrator/runner.js +56 -40
- 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} +60 -55
- package/dist/orchestrator/test-element-executor.js.map +1 -0
- package/dist/orchestrator/types.d.ts +4 -4
- 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/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/CLAUDE.md
CHANGED
|
@@ -6,7 +6,7 @@ Shared execution and discovery library used by Testomniac runner clients.
|
|
|
6
6
|
|
|
7
7
|
This package owns the active runtime architecture for:
|
|
8
8
|
|
|
9
|
-
- executing persisted test
|
|
9
|
+
- executing persisted test surfaces, cases, and element runs
|
|
10
10
|
- analyzing resulting browser states
|
|
11
11
|
- generating discovery-time follow-up coverage
|
|
12
12
|
- evaluating expertises and recording findings
|
|
@@ -20,38 +20,38 @@ the runtime entry point.
|
|
|
20
20
|
|
|
21
21
|
Persistent coverage:
|
|
22
22
|
|
|
23
|
-
- `
|
|
24
|
-
- `
|
|
25
|
-
- `
|
|
23
|
+
- `test_surface_bundle`
|
|
24
|
+
- `test_surface`
|
|
25
|
+
- `test_element`
|
|
26
26
|
- `test_action`
|
|
27
27
|
|
|
28
28
|
Run records:
|
|
29
29
|
|
|
30
30
|
- `test_run`
|
|
31
|
-
- `
|
|
32
|
-
- `
|
|
33
|
-
- `
|
|
31
|
+
- `test_surface_bundle_run`
|
|
32
|
+
- `test_surface_run`
|
|
33
|
+
- `test_element_run`
|
|
34
34
|
- `test_run_finding`
|
|
35
35
|
|
|
36
36
|
## Execution Flow
|
|
37
37
|
|
|
38
38
|
1. A client calls `runTestRun()`.
|
|
39
39
|
2. The runner claims the `test_run`.
|
|
40
|
-
3. It loads the active bundle run and iterates pending
|
|
41
|
-
4. For each
|
|
40
|
+
3. It loads the active bundle run and iterates pending surface runs.
|
|
41
|
+
4. For each surface run, it iterates pending element runs whose dependencies are
|
|
42
42
|
ready.
|
|
43
|
-
5. `
|
|
43
|
+
5. `executeTestElement()` navigates, recreates dependency setup when needed,
|
|
44
44
|
executes actions, gathers runtime artifacts, and runs expertises.
|
|
45
45
|
6. If the root run is a discovery run, `PageAnalyzer` creates or resolves the
|
|
46
46
|
target page state and generates follow-up cases and runs.
|
|
47
|
-
7. The runner completes
|
|
47
|
+
7. The runner completes surface runs, bundle runs, and the root test run.
|
|
48
48
|
|
|
49
49
|
## Discovery Rules
|
|
50
50
|
|
|
51
|
-
- Every actionable element starts with a hover test
|
|
51
|
+
- Every actionable element starts with a hover test element.
|
|
52
52
|
- After hover:
|
|
53
|
-
- if no new actionable items appear, generate a dependent click test
|
|
54
|
-
- if new actionable items appear, generate dependent hover test
|
|
53
|
+
- if no new actionable items appear, generate a dependent click test element
|
|
54
|
+
- if new actionable items appear, generate dependent hover test elements from
|
|
55
55
|
the hover target page state
|
|
56
56
|
- `PageAnalyzer` owns target-page-state creation and follow-up case generation.
|
|
57
57
|
- Expertises do not generate coverage.
|
|
@@ -61,7 +61,7 @@ Run records:
|
|
|
61
61
|
- [`src/adapter.ts`](src/adapter.ts): browser abstraction
|
|
62
62
|
- [`src/api/client.ts`](src/api/client.ts): scanner API client
|
|
63
63
|
- [`src/orchestrator/runner.ts`](src/orchestrator/runner.ts): `runTestRun()`
|
|
64
|
-
- [`src/orchestrator/test-
|
|
64
|
+
- [`src/orchestrator/test-element-executor.ts`](src/orchestrator/test-element-executor.ts):
|
|
65
65
|
single-case execution
|
|
66
66
|
- [`src/analyzer/page-analyzer.ts`](src/analyzer/page-analyzer.ts):
|
|
67
67
|
discovery-time target-state and follow-up coverage logic
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TestElement, Expectation, ActionableItem, SizeClass, TestSurfaceResponse, TestSurfaceBundleRunResponse } from "@sudobility/testomniac_types";
|
|
2
2
|
import type { ApiClient } from "../api/client";
|
|
3
3
|
import type { DetectedScaffoldRegion } from "../scanner/component-detector";
|
|
4
|
+
import type { ScanEventHandler } from "../orchestrator/types";
|
|
4
5
|
export interface AnalyzerContext {
|
|
5
6
|
runnerId: number;
|
|
6
7
|
sizeClass: SizeClass;
|
|
7
8
|
uid?: string;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
currentTestElementId: number;
|
|
10
|
+
currentTestSurfaceId: number;
|
|
11
|
+
currentSurfaceRunId: number | null;
|
|
11
12
|
html: string;
|
|
12
13
|
currentPageStateId: number;
|
|
13
14
|
beginningPageStateId: number;
|
|
@@ -16,35 +17,36 @@ export interface AnalyzerContext {
|
|
|
16
17
|
pageRequiresLogin: boolean;
|
|
17
18
|
scaffolds: DetectedScaffoldRegion[];
|
|
18
19
|
actionableItems: ActionableItem[];
|
|
19
|
-
|
|
20
|
-
bundleRun:
|
|
20
|
+
navigationSurface: TestSurfaceResponse;
|
|
21
|
+
bundleRun: TestSurfaceBundleRunResponse;
|
|
21
22
|
api: ApiClient;
|
|
23
|
+
events: ScanEventHandler;
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
|
-
* PageAnalyzer generates expectations and discovers new test
|
|
26
|
+
* PageAnalyzer generates expectations and discovers new test elements
|
|
25
27
|
* during discovery mode.
|
|
26
28
|
*/
|
|
27
29
|
export declare class PageAnalyzer {
|
|
28
30
|
/**
|
|
29
|
-
* Generate baseline expectations for a test
|
|
31
|
+
* Generate baseline expectations for a test element.
|
|
30
32
|
* Called BEFORE expertises evaluate.
|
|
31
33
|
*/
|
|
32
|
-
generateExpectations(
|
|
34
|
+
generateExpectations(testElement: TestElement): Expectation[];
|
|
33
35
|
/**
|
|
34
|
-
* Generate new test
|
|
36
|
+
* Generate new test elements for scaffolds and page content.
|
|
35
37
|
* Called AFTER expertises evaluate and the target page state is established.
|
|
36
38
|
*/
|
|
37
|
-
|
|
39
|
+
generateTestElements(testElement: TestElement, context: AnalyzerContext): Promise<void>;
|
|
38
40
|
private generateHoverFollowUpCases;
|
|
39
|
-
private
|
|
40
|
-
private
|
|
41
|
-
private
|
|
42
|
-
private
|
|
41
|
+
private generateNavigationTestElements;
|
|
42
|
+
private generateScaffoldTestElements;
|
|
43
|
+
private generateContentTestElements;
|
|
44
|
+
private ensureSurfaceRun;
|
|
43
45
|
private isMouseActionable;
|
|
44
46
|
private extractRelativePath;
|
|
45
|
-
private
|
|
46
|
-
private
|
|
47
|
-
private
|
|
47
|
+
private buildNavigationTestElement;
|
|
48
|
+
private buildHoverTestElement;
|
|
49
|
+
private buildClickTestElement;
|
|
48
50
|
private isHoverOnly;
|
|
49
51
|
private getPrimarySelector;
|
|
50
52
|
private getItemKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/page-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"page-analyzer.d.ts","sourceRoot":"","sources":["../../src/analyzer/page-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,4BAA4B,EAG7B,MAAM,8BAA8B,CAAC;AAOtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,sBAAsB,EAAE,CAAC;IACpC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,SAAS,EAAE,4BAA4B,CAAC;IACxC,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB;;;OAGG;IACH,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE;IAiC7D;;;OAGG;IACG,oBAAoB,CACxB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,IAAI,CAAC;YAsBF,0BAA0B;YAkE1B,8BAA8B;YA+C9B,4BAA4B;YA4D5B,2BAA2B;YA4D3B,gBAAgB;IAkB9B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,0BAA0B;IAgClC,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,qBAAqB;IAoC7B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,UAAU;YAUJ,qBAAqB;CAiDpC"}
|
|
@@ -2,15 +2,15 @@ import { PlaywrightAction, ExpectationType, ExpectationSeverity, } from "@sudobi
|
|
|
2
2
|
import { computeHashes } from "../browser/page-utils";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
/**
|
|
5
|
-
* PageAnalyzer generates expectations and discovers new test
|
|
5
|
+
* PageAnalyzer generates expectations and discovers new test elements
|
|
6
6
|
* during discovery mode.
|
|
7
7
|
*/
|
|
8
8
|
export class PageAnalyzer {
|
|
9
9
|
/**
|
|
10
|
-
* Generate baseline expectations for a test
|
|
10
|
+
* Generate baseline expectations for a test element.
|
|
11
11
|
* Called BEFORE expertises evaluate.
|
|
12
12
|
*/
|
|
13
|
-
generateExpectations(
|
|
13
|
+
generateExpectations(testElement) {
|
|
14
14
|
const expectations = [
|
|
15
15
|
{
|
|
16
16
|
expectationType: ExpectationType.PageLoaded,
|
|
@@ -19,9 +19,9 @@ export class PageAnalyzer {
|
|
|
19
19
|
playwrightCode: "await expect(page).not.toHaveTitle(/error/i)",
|
|
20
20
|
},
|
|
21
21
|
];
|
|
22
|
-
// If test
|
|
23
|
-
const isNavigationOnly =
|
|
24
|
-
|
|
22
|
+
// If test element has only a navigation action, no more expectations
|
|
23
|
+
const isNavigationOnly = testElement.steps.length === 1 &&
|
|
24
|
+
testElement.steps[0].action.actionType === PlaywrightAction.Goto;
|
|
25
25
|
if (!isNavigationOnly) {
|
|
26
26
|
expectations.push({
|
|
27
27
|
expectationType: ExpectationType.NoConsoleErrors,
|
|
@@ -39,28 +39,28 @@ export class PageAnalyzer {
|
|
|
39
39
|
return expectations;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* Generate new test
|
|
42
|
+
* Generate new test elements for scaffolds and page content.
|
|
43
43
|
* Called AFTER expertises evaluate and the target page state is established.
|
|
44
44
|
*/
|
|
45
|
-
async
|
|
45
|
+
async generateTestElements(testElement, context) {
|
|
46
46
|
const currentPageStateId = await this.ensureTargetPageState(context);
|
|
47
47
|
const resolvedContext = {
|
|
48
48
|
...context,
|
|
49
49
|
currentPageStateId,
|
|
50
50
|
};
|
|
51
|
-
if (this.isHoverOnly(
|
|
52
|
-
await this.generateHoverFollowUpCases(
|
|
51
|
+
if (this.isHoverOnly(testElement)) {
|
|
52
|
+
await this.generateHoverFollowUpCases(testElement, resolvedContext);
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
|
-
// a. Navigation test
|
|
56
|
-
await this.
|
|
57
|
-
// b. Scaffold test
|
|
58
|
-
await this.
|
|
59
|
-
// c. Content test
|
|
60
|
-
await this.
|
|
55
|
+
// a. Navigation test elements — for every link on the page
|
|
56
|
+
await this.generateNavigationTestElements(resolvedContext);
|
|
57
|
+
// b. Scaffold test elements — for each scaffold's actionable elements
|
|
58
|
+
await this.generateScaffoldTestElements(resolvedContext);
|
|
59
|
+
// c. Content test elements — for non-scaffold actionable elements
|
|
60
|
+
await this.generateContentTestElements(resolvedContext);
|
|
61
61
|
}
|
|
62
|
-
async generateHoverFollowUpCases(
|
|
63
|
-
const selector = this.getPrimarySelector(
|
|
62
|
+
async generateHoverFollowUpCases(testElement, context) {
|
|
63
|
+
const selector = this.getPrimarySelector(testElement);
|
|
64
64
|
if (!selector || !context.currentPageStateId)
|
|
65
65
|
return;
|
|
66
66
|
const beginningItems = context.beginningPageStateId > 0
|
|
@@ -75,114 +75,122 @@ export class PageAnalyzer {
|
|
|
75
75
|
});
|
|
76
76
|
const hoveredItem = context.actionableItems.find(item => item.selector === selector) ?? null;
|
|
77
77
|
if (revealedItems.length === 0 && hoveredItem) {
|
|
78
|
-
const clickCase = this.
|
|
79
|
-
const tc = await context.api.
|
|
80
|
-
await context.api.
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
const clickCase = this.buildClickTestElement(hoveredItem, context.currentPath, context.sizeClass, context.uid, context.currentPageStateId, context.currentTestElementId);
|
|
79
|
+
const tc = await context.api.ensureTestElement(context.runnerId, context.currentTestSurfaceId, clickCase);
|
|
80
|
+
await context.api.createTestElementRun({
|
|
81
|
+
testElementId: tc.id,
|
|
82
|
+
testSurfaceRunId: context.currentSurfaceRunId ?? undefined,
|
|
83
83
|
});
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
86
|
for (const item of revealedItems) {
|
|
87
|
-
const nextHover = this.
|
|
88
|
-
const tc = await context.api.
|
|
89
|
-
await context.api.
|
|
90
|
-
|
|
91
|
-
|
|
87
|
+
const nextHover = this.buildHoverTestElement(item, context.currentPath, context.sizeClass, context.uid, context.currentPageStateId, context.currentTestElementId);
|
|
88
|
+
const tc = await context.api.ensureTestElement(context.runnerId, context.currentTestSurfaceId, nextHover);
|
|
89
|
+
await context.api.createTestElementRun({
|
|
90
|
+
testElementId: tc.id,
|
|
91
|
+
testSurfaceRunId: context.currentSurfaceRunId ?? undefined,
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
async
|
|
95
|
+
async generateNavigationTestElements(context) {
|
|
96
96
|
if (context.pageRequiresLogin)
|
|
97
97
|
return;
|
|
98
|
-
const { api, runnerId, sizeClass, uid,
|
|
98
|
+
const { api, runnerId, sizeClass, uid, navigationSurface, bundleRun } = context;
|
|
99
99
|
const links = context.actionableItems.filter(item => item.actionKind === "navigate" && item.href && item.visible);
|
|
100
|
-
// Ensure navigation
|
|
101
|
-
await api.
|
|
102
|
-
// Ensure a
|
|
103
|
-
const
|
|
100
|
+
// Ensure navigation surface is in the bundle
|
|
101
|
+
await api.ensureBundleSurfaceLink(bundleRun.testSurfaceBundleId, navigationSurface.id);
|
|
102
|
+
// Ensure a surface run exists for the navigation surface under this bundle run
|
|
103
|
+
const surfaceRun = await this.ensureSurfaceRun(api, navigationSurface.id, bundleRun.id);
|
|
104
104
|
for (const link of links) {
|
|
105
105
|
if (!link.href)
|
|
106
106
|
continue;
|
|
107
107
|
const path = this.extractRelativePath(link.href);
|
|
108
108
|
if (!path)
|
|
109
109
|
continue;
|
|
110
|
-
const
|
|
111
|
-
const tc = await api.
|
|
112
|
-
await api.
|
|
113
|
-
|
|
114
|
-
|
|
110
|
+
const testElement = this.buildNavigationTestElement(path, sizeClass, uid, context.currentPageStateId);
|
|
111
|
+
const tc = await api.ensureTestElement(runnerId, navigationSurface.id, testElement);
|
|
112
|
+
await api.createTestElementRun({
|
|
113
|
+
testElementId: tc.id,
|
|
114
|
+
testSurfaceRunId: surfaceRun.id,
|
|
115
115
|
});
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
|
-
async
|
|
118
|
+
async generateScaffoldTestElements(context) {
|
|
119
119
|
const { api, runnerId, sizeClass, uid, bundleRun } = context;
|
|
120
120
|
for (const scaffold of context.scaffolds) {
|
|
121
121
|
// Find actionable items belonging to this scaffold
|
|
122
122
|
const scaffoldItems = context.actionableItems.filter(item => item.scaffoldId != null && this.isMouseActionable(item));
|
|
123
123
|
if (scaffoldItems.length === 0)
|
|
124
124
|
continue;
|
|
125
|
-
// Ensure a test
|
|
126
|
-
const
|
|
127
|
-
const
|
|
128
|
-
title:
|
|
125
|
+
// Ensure a test surface for this scaffold
|
|
126
|
+
const surfaceTitle = `Scaffold: ${scaffold.type}`;
|
|
127
|
+
const surface = await api.ensureTestSurface(runnerId, {
|
|
128
|
+
title: surfaceTitle,
|
|
129
129
|
description: `Tests for ${scaffold.type} scaffold`,
|
|
130
130
|
startingPageStateId: context.currentPageStateId,
|
|
131
131
|
startingPath: context.currentPath,
|
|
132
132
|
sizeClass,
|
|
133
133
|
priority: 3,
|
|
134
|
-
|
|
134
|
+
surface_tags: ["scaffold", scaffold.type],
|
|
135
135
|
uid,
|
|
136
136
|
});
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
context.events.onTestSurfaceCreated({
|
|
138
|
+
surfaceId: surface.id,
|
|
139
|
+
title: surface.title,
|
|
140
|
+
});
|
|
141
|
+
await api.ensureBundleSurfaceLink(bundleRun.testSurfaceBundleId, surface.id);
|
|
142
|
+
const surfaceRun = await this.ensureSurfaceRun(api, surface.id, bundleRun.id);
|
|
139
143
|
for (const item of scaffoldItems) {
|
|
140
|
-
const
|
|
141
|
-
const tc = await api.
|
|
142
|
-
await api.
|
|
143
|
-
|
|
144
|
-
|
|
144
|
+
const testElement = this.buildHoverTestElement(item, context.currentPath, sizeClass, uid, context.currentPageStateId);
|
|
145
|
+
const tc = await api.ensureTestElement(runnerId, surface.id, testElement);
|
|
146
|
+
await api.createTestElementRun({
|
|
147
|
+
testElementId: tc.id,
|
|
148
|
+
testSurfaceRunId: surfaceRun.id,
|
|
145
149
|
});
|
|
146
150
|
}
|
|
147
151
|
}
|
|
148
152
|
}
|
|
149
|
-
async
|
|
153
|
+
async generateContentTestElements(context) {
|
|
150
154
|
const { api, runnerId, sizeClass, uid, bundleRun, pageId: _pageId, } = context;
|
|
151
155
|
// Content items are those NOT in a scaffold
|
|
152
156
|
const contentItems = context.actionableItems.filter(item => item.scaffoldId == null && this.isMouseActionable(item));
|
|
153
157
|
if (contentItems.length === 0)
|
|
154
158
|
return;
|
|
155
|
-
const
|
|
156
|
-
const
|
|
157
|
-
title:
|
|
159
|
+
const surfaceTitle = `Page: ${context.currentPath}`;
|
|
160
|
+
const surface = await api.ensureTestSurface(runnerId, {
|
|
161
|
+
title: surfaceTitle,
|
|
158
162
|
description: `Tests for page content at ${context.currentPath}`,
|
|
159
163
|
startingPageStateId: context.currentPageStateId,
|
|
160
164
|
startingPath: context.currentPath,
|
|
161
165
|
sizeClass,
|
|
162
166
|
priority: 3,
|
|
163
|
-
|
|
167
|
+
surface_tags: ["page-content"],
|
|
164
168
|
uid,
|
|
165
169
|
});
|
|
166
|
-
|
|
167
|
-
|
|
170
|
+
context.events.onTestSurfaceCreated({
|
|
171
|
+
surfaceId: surface.id,
|
|
172
|
+
title: surface.title,
|
|
173
|
+
});
|
|
174
|
+
await api.ensureBundleSurfaceLink(bundleRun.testSurfaceBundleId, surface.id);
|
|
175
|
+
const surfaceRun = await this.ensureSurfaceRun(api, surface.id, bundleRun.id);
|
|
168
176
|
for (const item of contentItems) {
|
|
169
|
-
const
|
|
170
|
-
const tc = await api.
|
|
171
|
-
await api.
|
|
172
|
-
|
|
173
|
-
|
|
177
|
+
const testElement = this.buildHoverTestElement(item, context.currentPath, sizeClass, uid, context.currentPageStateId);
|
|
178
|
+
const tc = await api.ensureTestElement(runnerId, surface.id, testElement);
|
|
179
|
+
await api.createTestElementRun({
|
|
180
|
+
testElementId: tc.id,
|
|
181
|
+
testSurfaceRunId: surfaceRun.id,
|
|
174
182
|
});
|
|
175
183
|
}
|
|
176
184
|
}
|
|
177
|
-
async
|
|
178
|
-
const
|
|
179
|
-
const existing =
|
|
185
|
+
async ensureSurfaceRun(api, testSurfaceId, bundleRunId) {
|
|
186
|
+
const openSurfaceRuns = await api.getOpenTestSurfaceRuns(bundleRunId);
|
|
187
|
+
const existing = openSurfaceRuns.find(surfaceRun => surfaceRun.testSurfaceId === testSurfaceId);
|
|
180
188
|
if (existing) {
|
|
181
189
|
return existing;
|
|
182
190
|
}
|
|
183
|
-
return api.
|
|
184
|
-
|
|
185
|
-
|
|
191
|
+
return api.createTestSurfaceRun({
|
|
192
|
+
testSurfaceId,
|
|
193
|
+
testSurfaceBundleRunId: bundleRunId,
|
|
186
194
|
});
|
|
187
195
|
}
|
|
188
196
|
isMouseActionable(item) {
|
|
@@ -199,12 +207,12 @@ export class PageAnalyzer {
|
|
|
199
207
|
return null;
|
|
200
208
|
}
|
|
201
209
|
}
|
|
202
|
-
|
|
210
|
+
buildNavigationTestElement(path, sizeClass, uid, startingPageStateId) {
|
|
203
211
|
return {
|
|
204
212
|
title: `Navigate to ${path}`,
|
|
205
213
|
type: "navigation",
|
|
206
214
|
sizeClass,
|
|
207
|
-
|
|
215
|
+
surface_tags: ["navigation"],
|
|
208
216
|
priority: 3,
|
|
209
217
|
startingPageStateId,
|
|
210
218
|
startingPath: path,
|
|
@@ -225,15 +233,15 @@ export class PageAnalyzer {
|
|
|
225
233
|
uid,
|
|
226
234
|
};
|
|
227
235
|
}
|
|
228
|
-
|
|
236
|
+
buildHoverTestElement(item, startingPath, sizeClass, uid, startingPageStateId, dependencyTestElementId) {
|
|
229
237
|
const label = item.accessibleName || item.textContent || item.selector;
|
|
230
238
|
return {
|
|
231
239
|
title: `Hover over ${label}`,
|
|
232
240
|
type: "interaction",
|
|
233
241
|
sizeClass,
|
|
234
|
-
|
|
242
|
+
surface_tags: ["interaction", "hover"],
|
|
235
243
|
priority: 4,
|
|
236
|
-
|
|
244
|
+
dependencyTestElementId,
|
|
237
245
|
startingPageStateId,
|
|
238
246
|
startingPath,
|
|
239
247
|
steps: [
|
|
@@ -253,15 +261,15 @@ export class PageAnalyzer {
|
|
|
253
261
|
uid,
|
|
254
262
|
};
|
|
255
263
|
}
|
|
256
|
-
|
|
264
|
+
buildClickTestElement(item, startingPath, sizeClass, uid, startingPageStateId, dependencyTestElementId) {
|
|
257
265
|
const label = item.accessibleName || item.textContent || item.selector;
|
|
258
266
|
return {
|
|
259
267
|
title: `Click ${label}`,
|
|
260
268
|
type: "interaction",
|
|
261
269
|
sizeClass,
|
|
262
|
-
|
|
270
|
+
surface_tags: ["interaction", "click"],
|
|
263
271
|
priority: 5,
|
|
264
|
-
|
|
272
|
+
dependencyTestElementId,
|
|
265
273
|
startingPageStateId,
|
|
266
274
|
startingPath,
|
|
267
275
|
steps: [
|
|
@@ -281,12 +289,12 @@ export class PageAnalyzer {
|
|
|
281
289
|
uid,
|
|
282
290
|
};
|
|
283
291
|
}
|
|
284
|
-
isHoverOnly(
|
|
285
|
-
return (
|
|
286
|
-
|
|
292
|
+
isHoverOnly(testElement) {
|
|
293
|
+
return (testElement.steps.length === 1 &&
|
|
294
|
+
testElement.steps[0].action.actionType === PlaywrightAction.Hover);
|
|
287
295
|
}
|
|
288
|
-
getPrimarySelector(
|
|
289
|
-
const step =
|
|
296
|
+
getPrimarySelector(testElement) {
|
|
297
|
+
const step = testElement.steps[0];
|
|
290
298
|
return step?.action.path ?? null;
|
|
291
299
|
}
|
|
292
300
|
getItemKey(item) {
|
|
@@ -296,11 +304,19 @@ export class PageAnalyzer {
|
|
|
296
304
|
}
|
|
297
305
|
async ensureTargetPageState(context) {
|
|
298
306
|
if (context.currentPageStateId > 0) {
|
|
307
|
+
context.events.onPageStateCreated({
|
|
308
|
+
pageStateId: context.currentPageStateId,
|
|
309
|
+
pageId: context.pageId,
|
|
310
|
+
});
|
|
299
311
|
return context.currentPageStateId;
|
|
300
312
|
}
|
|
301
313
|
const hashes = await computeHashes(context.html, context.actionableItems);
|
|
302
314
|
const existing = await context.api.findMatchingPageState(context.pageId, hashes, context.sizeClass);
|
|
303
315
|
if (existing) {
|
|
316
|
+
context.events.onPageStateCreated({
|
|
317
|
+
pageStateId: existing.id,
|
|
318
|
+
pageId: context.pageId,
|
|
319
|
+
});
|
|
304
320
|
return existing.id;
|
|
305
321
|
}
|
|
306
322
|
const contentHash = createHash("sha256").update(context.html).digest("hex");
|
|
@@ -313,6 +329,10 @@ export class PageAnalyzer {
|
|
|
313
329
|
contentText: context.html.slice(0, 5000),
|
|
314
330
|
contentHtmlElementId: contentElement.id,
|
|
315
331
|
});
|
|
332
|
+
context.events.onPageStateCreated({
|
|
333
|
+
pageStateId: pageState.id,
|
|
334
|
+
pageId: context.pageId,
|
|
335
|
+
});
|
|
316
336
|
return pageState.id;
|
|
317
337
|
}
|
|
318
338
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-analyzer.js","sourceRoot":"","sources":["../../src/analyzer/page-analyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"page-analyzer.js","sourceRoot":"","sources":["../../src/analyzer/page-analyzer.ts"],"names":[],"mappings":"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"}
|