@gate-forge/pack-playwright 0.6.3 → 0.7.0
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/discovery/discover.d.ts +5 -3
- package/dist/discovery/discover.d.ts.map +1 -1
- package/dist/discovery/discover.js +13 -3
- package/dist/discovery/discover.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/reconcile.d.ts +8 -4
- package/dist/discovery/reconcile.d.ts.map +1 -1
- package/dist/discovery/reconcile.js +61 -42
- package/dist/discovery/reconcile.js.map +1 -1
- package/dist/discovery/runner-env.d.ts +4 -3
- package/dist/discovery/runner-env.d.ts.map +1 -1
- package/dist/discovery/runner-env.js +8 -4
- package/dist/discovery/runner-env.js.map +1 -1
- package/dist/discovery/supervised-run.d.ts +4 -0
- package/dist/discovery/supervised-run.d.ts.map +1 -1
- package/dist/discovery/supervised-run.js +2 -0
- package/dist/discovery/supervised-run.js.map +1 -1
- package/dist/discovery/surface-doctor.d.ts +24 -0
- package/dist/discovery/surface-doctor.d.ts.map +1 -0
- package/dist/discovery/surface-doctor.js +263 -0
- package/dist/discovery/surface-doctor.js.map +1 -0
- package/dist/discovery/trusted-config.d.ts +4 -0
- package/dist/discovery/trusted-config.d.ts.map +1 -1
- package/dist/discovery/trusted-config.js +6 -1
- package/dist/discovery/trusted-config.js.map +1 -1
- package/dist/fixture/evidence.d.ts +7 -12
- package/dist/fixture/evidence.d.ts.map +1 -1
- package/dist/fixture/evidence.js +42 -29
- package/dist/fixture/evidence.js.map +1 -1
- package/dist/fixture/fixture.d.ts +20 -11
- package/dist/fixture/fixture.d.ts.map +1 -1
- package/dist/fixture/fixture.js +70 -12
- package/dist/fixture/fixture.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/reporter/reporter.d.ts +11 -0
- package/dist/reporter/reporter.d.ts.map +1 -1
- package/dist/reporter/reporter.js +49 -1
- package/dist/reporter/reporter.js.map +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +14 -6
- package/dist/setup.js.map +1 -1
- package/dist/supervisor/spool.d.ts.map +1 -1
- package/dist/supervisor/spool.js +5 -1
- package/dist/supervisor/spool.js.map +1 -1
- package/dist/surface.d.ts +25 -7
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +45 -14
- package/dist/surface.js.map +1 -1
- package/dist/witness/browser.d.ts.map +1 -1
- package/dist/witness/browser.js +42 -8
- package/dist/witness/browser.js.map +1 -1
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supervised-run.js","sourceRoot":"","sources":["../../src/discovery/supervised-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEpF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"supervised-run.js","sourceRoot":"","sources":["../../src/discovery/supervised-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** One UI test that uses the fixture but has no statically declared surface. */
|
|
2
|
+
export interface MissingSurfaceTest {
|
|
3
|
+
file: string;
|
|
4
|
+
title: string;
|
|
5
|
+
}
|
|
6
|
+
/** Stable result for `gateforge tests surface-doctor`. */
|
|
7
|
+
export interface SurfaceDoctorReport {
|
|
8
|
+
schemaVersion: 1;
|
|
9
|
+
scannedFiles: number;
|
|
10
|
+
complete: boolean;
|
|
11
|
+
warnings: string[];
|
|
12
|
+
missingSurface: MissingSurfaceTest[];
|
|
13
|
+
action: string;
|
|
14
|
+
}
|
|
15
|
+
/** Scans test source without importing, evaluating, or running consumer code.
|
|
16
|
+
*
|
|
17
|
+
* Args:
|
|
18
|
+
* cwd: absolute or relative repository root to scan.
|
|
19
|
+
*
|
|
20
|
+
* Returns:
|
|
21
|
+
* SurfaceDoctorReport: deterministic list of UI tests without a surface.
|
|
22
|
+
*/
|
|
23
|
+
export declare function diagnoseMissingUiSurfaces(cwd: string): SurfaceDoctorReport;
|
|
24
|
+
//# sourceMappingURL=surface-doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-doctor.d.ts","sourceRoot":"","sources":["../../src/discovery/surface-doctor.ts"],"names":[],"mappings":"AAYA,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,CAAC,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CA6I1E"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/** Static, non-executing inventory for UI tests that need a surface descriptor. */
|
|
2
|
+
import { readFileSync, readdirSync } from 'node:fs';
|
|
3
|
+
import { extname, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import * as ts from 'typescript';
|
|
5
|
+
import { compareStrings } from '@gate-forge/core';
|
|
6
|
+
const PACK_IMPORT = '@gate-forge/pack-playwright';
|
|
7
|
+
const TEST_FILE_PATTERN = /(?:\.spec|\.test)\.[cm]?[jt]sx?$/i;
|
|
8
|
+
const SKIP_DIRECTORIES = new Set(['.git', '.gateforge', 'node_modules', 'dist', 'build', 'coverage', '.next']);
|
|
9
|
+
const MAX_FILES = 5000;
|
|
10
|
+
const MAX_FILE_BYTES = 2_000_000;
|
|
11
|
+
/** Scans test source without importing, evaluating, or running consumer code.
|
|
12
|
+
*
|
|
13
|
+
* Args:
|
|
14
|
+
* cwd: absolute or relative repository root to scan.
|
|
15
|
+
*
|
|
16
|
+
* Returns:
|
|
17
|
+
* SurfaceDoctorReport: deterministic list of UI tests without a surface.
|
|
18
|
+
*/
|
|
19
|
+
export function diagnoseMissingUiSurfaces(cwd) {
|
|
20
|
+
const root = resolve(cwd);
|
|
21
|
+
const files = [];
|
|
22
|
+
const warnings = [];
|
|
23
|
+
let complete = true;
|
|
24
|
+
let limitReported = false;
|
|
25
|
+
const walk = (directory) => {
|
|
26
|
+
if (files.length >= MAX_FILES) {
|
|
27
|
+
complete = false;
|
|
28
|
+
if (!limitReported)
|
|
29
|
+
warnings.push(`scan limit reached (${String(MAX_FILES)} test files)`);
|
|
30
|
+
limitReported = true;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
let entries;
|
|
34
|
+
try {
|
|
35
|
+
entries = readdirSync(directory, { withFileTypes: true });
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
complete = false;
|
|
39
|
+
warnings.push(`${relative(root, directory) || '.'}: cannot read directory (${error.message})`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
entries.sort((left, right) => compareStrings(left.name, right.name));
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
if (entry.isDirectory()) {
|
|
45
|
+
if (!SKIP_DIRECTORIES.has(entry.name))
|
|
46
|
+
walk(join(directory, entry.name));
|
|
47
|
+
}
|
|
48
|
+
else if (entry.isFile() && TEST_FILE_PATTERN.test(entry.name)) {
|
|
49
|
+
if (files.length >= MAX_FILES) {
|
|
50
|
+
complete = false;
|
|
51
|
+
if (!limitReported)
|
|
52
|
+
warnings.push(`scan limit reached (${String(MAX_FILES)} test files)`);
|
|
53
|
+
limitReported = true;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
files.push(join(directory, entry.name));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
walk(root);
|
|
61
|
+
const missingSurface = [];
|
|
62
|
+
for (const absolutePath of files) {
|
|
63
|
+
let sourceText;
|
|
64
|
+
try {
|
|
65
|
+
sourceText = readFileSync(absolutePath, 'utf8');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
complete = false;
|
|
69
|
+
warnings.push(`${relative(root, absolutePath).split(sep).join('/')}: cannot read source (${error.message})`);
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (Buffer.byteLength(sourceText, 'utf8') > MAX_FILE_BYTES) {
|
|
73
|
+
complete = false;
|
|
74
|
+
warnings.push(`${relative(root, absolutePath).split(sep).join('/')}: source exceeds ${String(MAX_FILE_BYTES)} bytes`);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const sourceFile = ts.createSourceFile(absolutePath, sourceText, ts.ScriptTarget.Latest, true, scriptKindFor(absolutePath));
|
|
78
|
+
const testObjects = new Set();
|
|
79
|
+
const surfaceObjects = new Set();
|
|
80
|
+
for (const statement of sourceFile.statements) {
|
|
81
|
+
if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier))
|
|
82
|
+
continue;
|
|
83
|
+
if (statement.moduleSpecifier.text !== PACK_IMPORT)
|
|
84
|
+
continue;
|
|
85
|
+
const bindings = statement.importClause?.namedBindings;
|
|
86
|
+
if (!bindings || !ts.isNamedImports(bindings))
|
|
87
|
+
continue;
|
|
88
|
+
for (const element of bindings.elements) {
|
|
89
|
+
if ((element.propertyName?.text ?? element.name.text) === 'test')
|
|
90
|
+
testObjects.add(element.name.text);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const declarations = [];
|
|
94
|
+
const collectDeclarations = (node) => {
|
|
95
|
+
if (ts.isVariableDeclaration(node))
|
|
96
|
+
declarations.push(node);
|
|
97
|
+
node.forEachChild(collectDeclarations);
|
|
98
|
+
};
|
|
99
|
+
collectDeclarations(sourceFile);
|
|
100
|
+
for (let pass = 0; pass <= declarations.length; pass += 1) {
|
|
101
|
+
let changed = false;
|
|
102
|
+
for (const declaration of declarations) {
|
|
103
|
+
if (!declaration.initializer || !ts.isIdentifier(declaration.name))
|
|
104
|
+
continue;
|
|
105
|
+
if (!ts.isCallExpression(declaration.initializer))
|
|
106
|
+
continue;
|
|
107
|
+
const call = declaration.initializer;
|
|
108
|
+
if (!ts.isPropertyAccessExpression(call.expression) || call.expression.name.text !== 'extend')
|
|
109
|
+
continue;
|
|
110
|
+
const base = call.expression.expression;
|
|
111
|
+
if (!ts.isIdentifier(base) || !testObjects.has(base.text))
|
|
112
|
+
continue;
|
|
113
|
+
if (!testObjects.has(declaration.name.text)) {
|
|
114
|
+
testObjects.add(declaration.name.text);
|
|
115
|
+
changed = true;
|
|
116
|
+
}
|
|
117
|
+
if (objectHasProperty(call.arguments[0], 'surface'))
|
|
118
|
+
surfaceObjects.add(declaration.name.text);
|
|
119
|
+
}
|
|
120
|
+
if (!changed)
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
const surfaceUsePositions = [];
|
|
124
|
+
const inspectSurfaceUse = (node) => {
|
|
125
|
+
if (ts.isCallExpression(node) &&
|
|
126
|
+
ts.isPropertyAccessExpression(node.expression) &&
|
|
127
|
+
node.expression.name.text === 'use' &&
|
|
128
|
+
ts.isIdentifier(node.expression.expression) &&
|
|
129
|
+
testObjects.has(node.expression.expression.text) &&
|
|
130
|
+
objectHasProperty(node.arguments[0], 'surface')) {
|
|
131
|
+
surfaceUsePositions.push(node.getStart(sourceFile));
|
|
132
|
+
}
|
|
133
|
+
node.forEachChild(inspectSurfaceUse);
|
|
134
|
+
};
|
|
135
|
+
inspectSurfaceUse(sourceFile);
|
|
136
|
+
const inspectTestCases = (node) => {
|
|
137
|
+
if (ts.isCallExpression(node) && isTestCaseCall(node, testObjects)) {
|
|
138
|
+
const title = node.arguments[0];
|
|
139
|
+
const body = node.arguments[node.arguments.length - 1];
|
|
140
|
+
const surfaceUseApplies = surfaceUsePositions.some((position) => position < node.getStart(sourceFile));
|
|
141
|
+
if (body !== undefined && containsEvidenceUi(body) && !surfaceUseApplies && !surfaceObjects.has(testObjectName(node))) {
|
|
142
|
+
const position = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
143
|
+
missingSurface.push({
|
|
144
|
+
file: relative(root, absolutePath).split(sep).join('/'),
|
|
145
|
+
title: title !== undefined && ts.isStringLiteralLike(title) ? title.text : `<computed title at line ${String(position.line + 1)}>`,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
node.forEachChild(inspectTestCases);
|
|
150
|
+
};
|
|
151
|
+
inspectTestCases(sourceFile);
|
|
152
|
+
}
|
|
153
|
+
const unique = new Map();
|
|
154
|
+
for (const entry of missingSurface)
|
|
155
|
+
unique.set(`${entry.file}\0${entry.title}`, entry);
|
|
156
|
+
const rows = [...unique.values()].sort((left, right) => left.file === right.file ? compareStrings(left.title, right.title) : compareStrings(left.file, right.file));
|
|
157
|
+
return {
|
|
158
|
+
schemaVersion: 1,
|
|
159
|
+
scannedFiles: files.length,
|
|
160
|
+
complete,
|
|
161
|
+
warnings: [...new Set(warnings)].sort(compareStrings),
|
|
162
|
+
missingSurface: rows,
|
|
163
|
+
action: 'Add a surface descriptor with test.extend({ surface: ... }) for each UI test. Keep the existing v1/v2 table or v3 card shape; do not copy selectors from another page.',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** Selects the TypeScript parser mode from a file extension.
|
|
167
|
+
*
|
|
168
|
+
* Args:
|
|
169
|
+
* path: source file path.
|
|
170
|
+
*
|
|
171
|
+
* Returns:
|
|
172
|
+
* ts.ScriptKind: parser mode for the source file.
|
|
173
|
+
*/
|
|
174
|
+
function scriptKindFor(path) {
|
|
175
|
+
const extension = extname(path).toLowerCase();
|
|
176
|
+
if (extension === '.tsx')
|
|
177
|
+
return ts.ScriptKind.TSX;
|
|
178
|
+
if (extension === '.jsx')
|
|
179
|
+
return ts.ScriptKind.JSX;
|
|
180
|
+
if (extension === '.js' || extension === '.mjs' || extension === '.cjs')
|
|
181
|
+
return ts.ScriptKind.JS;
|
|
182
|
+
return ts.ScriptKind.TS;
|
|
183
|
+
}
|
|
184
|
+
/** Returns true when an object literal declares a named property.
|
|
185
|
+
*
|
|
186
|
+
* Args:
|
|
187
|
+
* node: candidate expression.
|
|
188
|
+
* name: property name to find.
|
|
189
|
+
*
|
|
190
|
+
* Returns:
|
|
191
|
+
* boolean: true when a static object literal contains the property.
|
|
192
|
+
*/
|
|
193
|
+
function objectHasProperty(node, name) {
|
|
194
|
+
if (node === undefined || !ts.isObjectLiteralExpression(node))
|
|
195
|
+
return false;
|
|
196
|
+
return node.properties.some((property) => {
|
|
197
|
+
const propertyName = ts.isPropertyAssignment(property) || ts.isMethodDeclaration(property)
|
|
198
|
+
? property.name
|
|
199
|
+
: ts.isShorthandPropertyAssignment(property)
|
|
200
|
+
? property.name
|
|
201
|
+
: undefined;
|
|
202
|
+
if (propertyName === undefined || (!ts.isIdentifier(propertyName) && !ts.isStringLiteralLike(propertyName)))
|
|
203
|
+
return false;
|
|
204
|
+
if (propertyName.text !== name)
|
|
205
|
+
return false;
|
|
206
|
+
if (ts.isPropertyAssignment(property) && (property.initializer.kind === ts.SyntaxKind.NullKeyword ||
|
|
207
|
+
(ts.isIdentifier(property.initializer) && property.initializer.text === 'undefined')))
|
|
208
|
+
return false;
|
|
209
|
+
return true;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
/** Tests whether a call is a Playwright test case for a known fixture object.
|
|
213
|
+
*
|
|
214
|
+
* Args:
|
|
215
|
+
* node: candidate call expression.
|
|
216
|
+
* testObjects: known fixture identifiers.
|
|
217
|
+
*
|
|
218
|
+
* Returns:
|
|
219
|
+
* boolean: true when the call begins from a fixture test identifier.
|
|
220
|
+
*/
|
|
221
|
+
function isTestCaseCall(node, testObjects) {
|
|
222
|
+
if (node.arguments.length < 2)
|
|
223
|
+
return false;
|
|
224
|
+
const method = ts.isPropertyAccessExpression(node.expression) ? node.expression.name.text : null;
|
|
225
|
+
if (method !== null && !['only', 'skip', 'fixme', 'fail', 'slow'].includes(method))
|
|
226
|
+
return false;
|
|
227
|
+
let expression = node.expression;
|
|
228
|
+
while (ts.isPropertyAccessExpression(expression))
|
|
229
|
+
expression = expression.expression;
|
|
230
|
+
return ts.isIdentifier(expression) && testObjects.has(expression.text);
|
|
231
|
+
}
|
|
232
|
+
/** Returns the root fixture identifier used by a test case call.
|
|
233
|
+
*
|
|
234
|
+
* Args:
|
|
235
|
+
* node: test call expression.
|
|
236
|
+
*
|
|
237
|
+
* Returns:
|
|
238
|
+
* string: root identifier name.
|
|
239
|
+
*/
|
|
240
|
+
function testObjectName(node) {
|
|
241
|
+
let expression = node.expression;
|
|
242
|
+
while (ts.isPropertyAccessExpression(expression))
|
|
243
|
+
expression = expression.expression;
|
|
244
|
+
return ts.isIdentifier(expression) ? expression.text : '';
|
|
245
|
+
}
|
|
246
|
+
/** Finds direct evidence.ui access in a test callback without evaluation.
|
|
247
|
+
*
|
|
248
|
+
* Args:
|
|
249
|
+
* node: callback syntax tree.
|
|
250
|
+
*
|
|
251
|
+
* Returns:
|
|
252
|
+
* boolean: true when the callback reads evidence.ui.
|
|
253
|
+
*/
|
|
254
|
+
function containsEvidenceUi(node) {
|
|
255
|
+
if (ts.isPropertyAccessExpression(node) &&
|
|
256
|
+
node.name.text === 'ui' &&
|
|
257
|
+
ts.isIdentifier(node.expression) &&
|
|
258
|
+
node.expression.text === 'evidence') {
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
return node.getChildren().some(containsEvidenceUi);
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=surface-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"surface-doctor.js","sourceRoot":"","sources":["../../src/discovery/surface-doctor.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,EAAE,YAAY,EAAE,WAAW,EAAe,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAClD,MAAM,iBAAiB,GAAG,mCAAmC,CAAC;AAC9D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/G,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,cAAc,GAAG,SAAS,CAAC;AAkBjC;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,SAAiB,EAAQ,EAAE;QACvC,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YAC9B,QAAQ,GAAG,KAAK,CAAC;YACjB,IAAI,CAAC,aAAa;gBAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YAC1F,aAAa,GAAG,IAAI,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,GAAG,KAAK,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,4BAA6B,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;YAC1G,OAAO;QACT,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;oBAC9B,QAAQ,GAAG,KAAK,CAAC;oBACjB,IAAI,CAAC,aAAa;wBAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAC1F,aAAa,GAAG,IAAI,CAAC;oBACrB,OAAO;gBACT,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC;IAEX,MAAM,cAAc,GAAyB,EAAE,CAAC;IAChD,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACH,UAAU,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,GAAG,KAAK,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,yBAA0B,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;YACxH,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,cAAc,EAAE,CAAC;YAC3D,QAAQ,GAAG,KAAK,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACtH,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,YAAY,EACZ,UAAU,EACV,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EACJ,aAAa,CAAC,YAAY,CAAC,CAC5B,CAAC;QACF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QACzC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;gBAAE,SAAS;YACnG,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,KAAK,WAAW;gBAAE,SAAS;YAC7D,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,EAAE,aAAa,CAAC;YACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM;oBAAE,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QACD,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAQ,EAAE;YAClD,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC,CAAC;QACF,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,WAAW,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC7E,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAC5D,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC;gBACrC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;oBAAE,SAAS;gBACxG,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBACxC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5C,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACvC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC;gBACD,IAAI,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;oBAAE,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjG,CAAC;YACD,IAAI,CAAC,OAAO;gBAAE,MAAM;QACtB,CAAC;QACD,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,MAAM,iBAAiB,GAAG,CAAC,IAAa,EAAQ,EAAE;YAChD,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACzB,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;gBACnC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC3C,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBAChD,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAC/C,CAAC;gBACD,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC,CAAC;QACF,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9B,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAQ,EAAE;YAC/C,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;gBACnE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACvD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvG,IAAI,IAAI,KAAK,SAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBACtH,MAAM,QAAQ,GAAG,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;oBACrF,cAAc,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBACvD,KAAK,EAAE,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,2BAA2B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG;qBACnI,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC,CAAC;QACF,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,KAAK,MAAM,KAAK,IAAI,cAAc;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IACvF,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACrD,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAC3G,CAAC;IACF,OAAO;QACL,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,QAAQ;QACR,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACrD,cAAc,EAAE,IAAI;QACpB,MAAM,EACJ,wKAAwK;KAC3K,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;IACnD,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;IACnD,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IACjG,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,IAA+B,EAAE,IAAY;IACtE,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC;YACxF,CAAC,CAAC,QAAQ,CAAC,IAAI;YACf,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,QAAQ,CAAC;gBAC1C,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1H,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC7C,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;YAC/F,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,IAAuB,EAAE,WAAgC;IAC/E,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACjG,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACjG,IAAI,UAAU,GAAkB,IAAI,CAAC,UAAU,CAAC;IAChD,OAAO,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC;QAAE,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACrF,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,IAAuB;IAC7C,IAAI,UAAU,GAAkB,IAAI,CAAC,UAAU,CAAC;IAChD,OAAO,EAAE,CAAC,0BAA0B,CAAC,UAAU,CAAC;QAAE,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACrF,OAAO,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,IAAa;IACvC,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI;QACvB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,EACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -66,6 +66,10 @@ export interface TrustedConfigInput {
|
|
|
66
66
|
runId: string;
|
|
67
67
|
/** Absolute engine reporter entry (see {@link trustedReporterEntry}). */
|
|
68
68
|
reporterEntry: string;
|
|
69
|
+
/** Trusted operator-provided app proxy URL for relative browser navigation. */
|
|
70
|
+
appBaseUrl?: string;
|
|
71
|
+
/** Operator-provided browser storage state, embedded only in trusted config. */
|
|
72
|
+
storageState?: string;
|
|
69
73
|
/** Exact repo-relative posix test files to run (undefined = default). */
|
|
70
74
|
testFiles?: readonly string[];
|
|
71
75
|
/** Bare project names to run (undefined = no project filter). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted-config.d.ts","sourceRoot":"","sources":["../../src/discovery/trusted-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,kCAAkC,CAAC;AAEnE,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,GAAE,MAAwB,GAAG,MAAM,CAKjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,sBAAsB,CAAC;CACzC,
|
|
1
|
+
{"version":3,"file":"trusted-config.d.ts","sourceRoot":"","sources":["../../src/discovery/trusted-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,kCAAkC,CAAC;AAEnE,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,GAAE,MAAwB,GAAG,MAAM,CAKjF;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,sBAAsB,CAAC;CACzC,CA8CA"}
|
|
@@ -103,7 +103,12 @@ export function synthesizeTrustedConfig(input) {
|
|
|
103
103
|
" ['list'],",
|
|
104
104
|
` [${JSON.stringify(input.reporterEntry)}, ${JSON.stringify(reporterOptions)}],`,
|
|
105
105
|
' ],',
|
|
106
|
-
|
|
106
|
+
` use: ${JSON.stringify({
|
|
107
|
+
headless: true,
|
|
108
|
+
trace: 'off',
|
|
109
|
+
...(input.appBaseUrl !== undefined ? { baseURL: input.appBaseUrl } : {}),
|
|
110
|
+
...(input.storageState !== undefined ? { storageState: input.storageState } : {}),
|
|
111
|
+
})},`,
|
|
107
112
|
` outputDir: ${JSON.stringify(join(input.stateDir, 'playwright-artifacts'))},`,
|
|
108
113
|
'};',
|
|
109
114
|
'',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trusted-config.js","sourceRoot":"","sources":["../../src/discovery/trusted-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAEnE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"trusted-config.js","sourceRoot":"","sources":["../../src/discovery/trusted-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
* session's engine browser context.
|
|
46
46
|
*/
|
|
47
47
|
import type { Page, TestInfo } from 'playwright/test';
|
|
48
|
-
import { SURFACE_DESCRIPTOR_VERSION, type SurfaceDescriptor } from '../surface.js';
|
|
48
|
+
import { SURFACE_DESCRIPTOR_VERSION, SURFACE_DESCRIPTOR_VERSION_2, type SurfaceDescriptor } from '../surface.js';
|
|
49
49
|
import type { SessionCredential } from '../witness/types.js';
|
|
50
50
|
import { WitnessClient } from './witness-client.js';
|
|
51
|
-
export { SURFACE_DESCRIPTOR_VERSION, type SurfaceDescriptor };
|
|
51
|
+
export { SURFACE_DESCRIPTOR_VERSION, SURFACE_DESCRIPTOR_VERSION_2, type SurfaceDescriptor };
|
|
52
52
|
/** A UI-action receipt: the ONLY token `visible`/`persistence` accept. */
|
|
53
53
|
export interface Receipt {
|
|
54
54
|
readonly kind: 'ui';
|
|
@@ -168,13 +168,9 @@ export declare function resourceIdOfClaim(claim: string): string;
|
|
|
168
168
|
* the engine drives its own page; the worker page is never an
|
|
169
169
|
* evidence channel.
|
|
170
170
|
* testInfo: the running test's info (annotations, testId, workerIndex).
|
|
171
|
-
* surface:
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
* against the provisioned attested subject (fake-frontend fix:
|
|
175
|
-
* the driven origin comes from trusted witness configuration,
|
|
176
|
-
* never from suite input — there is no app-base parameter here
|
|
177
|
-
* by design).
|
|
171
|
+
* surface: optional consumer-declared {@link SurfaceDescriptor}.
|
|
172
|
+
* It is validated and registered only when a UI primitive is called;
|
|
173
|
+
* non-UI channels do not need application selectors.
|
|
178
174
|
* client: witness transport override (tests inject their own).
|
|
179
175
|
* session: pre-resolved session credential (harnesses that opened the
|
|
180
176
|
* session themselves); default resolves it from the supervisor
|
|
@@ -187,9 +183,8 @@ export declare function resourceIdOfClaim(claim: string): string;
|
|
|
187
183
|
* Promise<EvidenceApi>: the frozen primitive surface.
|
|
188
184
|
*
|
|
189
185
|
* Throws:
|
|
190
|
-
* Error:
|
|
191
|
-
*
|
|
192
|
-
* declares no gateforge claim and its session carries no
|
|
186
|
+
* Error: when a UI primitive is called without a valid surface, when
|
|
187
|
+
* the test declares no gateforge claim and its session carries no
|
|
193
188
|
* supervisor-registered (mapped) claims, when no app base or witness
|
|
194
189
|
* or OPEN session is wired, or when an action/verification fails
|
|
195
190
|
* fail-closed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/fixture/evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/fixture/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/fixture/evidence.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
1
2
|
import { CLAIM_ANNOTATION_TYPE } from '../constants.js';
|
|
2
|
-
import { SURFACE_DESCRIPTOR_VERSION, declaredSurfaceFields, validateSurface, } from '../surface.js';
|
|
3
|
+
import { SURFACE_DESCRIPTOR_VERSION, SURFACE_DESCRIPTOR_VERSION_2, declaredSurfaceFields, validateSurface, } from '../surface.js';
|
|
3
4
|
import { WitnessClient } from './witness-client.js';
|
|
4
|
-
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const PACK_VERSION = require('../../package.json').version;
|
|
7
|
+
export { SURFACE_DESCRIPTOR_VERSION, SURFACE_DESCRIPTOR_VERSION_2 };
|
|
5
8
|
/** Receipt branding: per-instance symbol, own-property checked (GF-22). */
|
|
6
9
|
function makeReceiptBrand() {
|
|
7
10
|
const token = Symbol('gateforge.receipt');
|
|
@@ -42,6 +45,12 @@ const SESSION_RESOLVE_POLL_MS = 50;
|
|
|
42
45
|
* there is no fixture path that mints a credential itself.
|
|
43
46
|
*/
|
|
44
47
|
async function resolveSessionCredential(witness, testInfo, timeoutMs) {
|
|
48
|
+
if (typeof witness.resolveSession !== 'function') {
|
|
49
|
+
const cliVersion = process.env['GATEFORGE_CLI_VERSION'] ?? 'unknown';
|
|
50
|
+
throw new Error(`GATEFORGE_PACKAGE_INCOMPATIBLE: @gate-forge/pack-playwright ${PACK_VERSION} cannot use ` +
|
|
51
|
+
`the session protocol from @gate-forge/cli ${cliVersion}; install matching Gateforge packages ` +
|
|
52
|
+
'that declare the same supervised-fixture contract');
|
|
53
|
+
}
|
|
45
54
|
const deadline = Date.now() + timeoutMs;
|
|
46
55
|
for (;;) {
|
|
47
56
|
const resolved = await witness.resolveSession({
|
|
@@ -73,13 +82,9 @@ async function resolveSessionCredential(witness, testInfo, timeoutMs) {
|
|
|
73
82
|
* the engine drives its own page; the worker page is never an
|
|
74
83
|
* evidence channel.
|
|
75
84
|
* testInfo: the running test's info (annotations, testId, workerIndex).
|
|
76
|
-
* surface:
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* against the provisioned attested subject (fake-frontend fix:
|
|
80
|
-
* the driven origin comes from trusted witness configuration,
|
|
81
|
-
* never from suite input — there is no app-base parameter here
|
|
82
|
-
* by design).
|
|
85
|
+
* surface: optional consumer-declared {@link SurfaceDescriptor}.
|
|
86
|
+
* It is validated and registered only when a UI primitive is called;
|
|
87
|
+
* non-UI channels do not need application selectors.
|
|
83
88
|
* client: witness transport override (tests inject their own).
|
|
84
89
|
* session: pre-resolved session credential (harnesses that opened the
|
|
85
90
|
* session themselves); default resolves it from the supervisor
|
|
@@ -92,30 +97,14 @@ async function resolveSessionCredential(witness, testInfo, timeoutMs) {
|
|
|
92
97
|
* Promise<EvidenceApi>: the frozen primitive surface.
|
|
93
98
|
*
|
|
94
99
|
* Throws:
|
|
95
|
-
* Error:
|
|
96
|
-
*
|
|
97
|
-
* declares no gateforge claim and its session carries no
|
|
100
|
+
* Error: when a UI primitive is called without a valid surface, when
|
|
101
|
+
* the test declares no gateforge claim and its session carries no
|
|
98
102
|
* supervisor-registered (mapped) claims, when no app base or witness
|
|
99
103
|
* or OPEN session is wired, or when an action/verification fails
|
|
100
104
|
* fail-closed.
|
|
101
105
|
*/
|
|
102
106
|
export async function createEvidence({ page, testInfo, surface, client, session, sessionResolveTimeoutMs = DEFAULT_SESSION_RESOLVE_TIMEOUT_MS, }) {
|
|
103
107
|
void page; // the engine drives its own page; the worker page is never evidence
|
|
104
|
-
// Versioned compatibility (plan Phase 1 item 7): the old no-surface
|
|
105
|
-
// shape carried Accounts selectors INSIDE the pack — that behavior was
|
|
106
|
-
// moved to the consumer. Never silently keep it.
|
|
107
|
-
if (surface === undefined || surface === null) {
|
|
108
|
-
throw new Error("createEvidence now requires a consumer-declared 'surface' descriptor " +
|
|
109
|
-
`(SurfaceDescriptor, schemaVersion ${String(SURFACE_DESCRIPTOR_VERSION)}): pass the ` +
|
|
110
|
-
'declarative surface (list page, row/field selectors, form templates, archive control, ' +
|
|
111
|
-
'status values) with the evidence call or via `test.extend({ surface })`. The previous ' +
|
|
112
|
-
'Accounts-specific fixture was removed from the pack (plan Phase 1 item 7) — see ' +
|
|
113
|
-
'example/e2e/accounts-surface.js for a complete consumer declaration');
|
|
114
|
-
}
|
|
115
|
-
// Worker-side structural validation (fail fast with the exact missing
|
|
116
|
-
// piece); the ENGINE re-validates authoritatively at registration —
|
|
117
|
-
// worker approval never substitutes for it.
|
|
118
|
-
const descriptor = validateSurface(surface);
|
|
119
108
|
const testId = testInfo.testId;
|
|
120
109
|
// The witness transport is built LAZILY: supplying a pre-resolved
|
|
121
110
|
// session credential (harnesses) must not require witness env wiring
|
|
@@ -160,6 +149,29 @@ export async function createEvidence({ page, testInfo, surface, client, session,
|
|
|
160
149
|
sessionId: credential.sessionId,
|
|
161
150
|
sessionToken: credential.sessionToken,
|
|
162
151
|
};
|
|
152
|
+
let validatedSurface = null;
|
|
153
|
+
/**
|
|
154
|
+
* Resolves and validates the consumer surface for a UI operation.
|
|
155
|
+
*
|
|
156
|
+
* Returns:
|
|
157
|
+
* SurfaceDescriptor: the validated consumer surface.
|
|
158
|
+
*
|
|
159
|
+
* Throws:
|
|
160
|
+
* Error: when the consumer did not provide a surface descriptor.
|
|
161
|
+
*/
|
|
162
|
+
function requireSurface() {
|
|
163
|
+
if (validatedSurface !== null)
|
|
164
|
+
return validatedSurface;
|
|
165
|
+
if (surface === undefined || surface === null) {
|
|
166
|
+
throw new Error('evidence.ui requires a consumer-declared SurfaceDescriptor: extend the gateforge runner ' +
|
|
167
|
+
'with `test.extend({ surface })` before the first UI operation. The pack ships no ' +
|
|
168
|
+
'application selectors; see example/e2e/accounts-surface.js');
|
|
169
|
+
}
|
|
170
|
+
// Worker validation improves diagnostics; the witness validates it
|
|
171
|
+
// again at registration and remains the authority for browser proof.
|
|
172
|
+
validatedSurface = validateSurface(surface);
|
|
173
|
+
return validatedSurface;
|
|
174
|
+
}
|
|
163
175
|
// Register the consumer surface with the witness lazily on the first
|
|
164
176
|
// UI call (construction performs no I/O): the engine validates it and
|
|
165
177
|
// drives every later action against the provisioned attested subject.
|
|
@@ -170,6 +182,7 @@ export async function createEvidence({ page, testInfo, surface, client, session,
|
|
|
170
182
|
async function ensureSurfaceRegistered() {
|
|
171
183
|
if (surfaceRegistered)
|
|
172
184
|
return;
|
|
185
|
+
const descriptor = requireSurface();
|
|
173
186
|
await witness().registerBrowserSurface({
|
|
174
187
|
...sessionChannel,
|
|
175
188
|
testId,
|
|
@@ -207,7 +220,7 @@ export async function createEvidence({ page, testInfo, surface, client, session,
|
|
|
207
220
|
// ---------- UI primitives (engine-driven) ----------
|
|
208
221
|
const ui = {
|
|
209
222
|
async create(input) {
|
|
210
|
-
const fields = declaredSurfaceFields('ui.create', input.fields,
|
|
223
|
+
const fields = declaredSurfaceFields('ui.create', input.fields, requireSurface().create.fields);
|
|
211
224
|
const resourceId = resourceIdOfClaim(claims[0]);
|
|
212
225
|
const { receipt } = await engineAction('create', resourceId, { fields });
|
|
213
226
|
return receiptBrand.stamp(receipt);
|
|
@@ -222,7 +235,7 @@ export async function createEvidence({ page, testInfo, surface, client, session,
|
|
|
222
235
|
},
|
|
223
236
|
async update(input) {
|
|
224
237
|
const { entityId } = input;
|
|
225
|
-
const fields = declaredSurfaceFields('ui.update', input.fields,
|
|
238
|
+
const fields = declaredSurfaceFields('ui.update', input.fields, requireSurface().edit.fields);
|
|
226
239
|
const resourceId = resourceIdOfClaim(claims[0]);
|
|
227
240
|
const { receipt } = await engineAction('update', resourceId, { fields, entityId });
|
|
228
241
|
return receiptBrand.stamp(receipt);
|