@testmuai/playwright-bindings 0.1.3-beta.7 → 0.1.3-beta.8
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/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +10 -0
- package/dist/errors.js.map +1 -1
- package/dist/helpers/assertion.d.ts.map +1 -1
- package/dist/helpers/assertion.js +12 -2
- package/dist/helpers/assertion.js.map +1 -1
- package/dist/helpers/network.d.ts +5 -1
- package/dist/helpers/network.d.ts.map +1 -1
- package/dist/helpers/network.js +15 -5
- package/dist/helpers/network.js.map +1 -1
- package/package.json +1 -1
package/dist/errors.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export declare class TestmuConfigError extends Error {
|
|
2
2
|
constructor(message: string);
|
|
3
3
|
}
|
|
4
|
+
/** Thrown by verifyAssertion / evaluateNetworkAssertion on failed status. */
|
|
5
|
+
export declare class AssertionFailureError extends Error {
|
|
6
|
+
readonly result: unknown;
|
|
7
|
+
constructor(message: string, result?: unknown);
|
|
8
|
+
}
|
|
4
9
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,6EAA6E;AAC7E,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBACb,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO;CAM9C"}
|
package/dist/errors.js
CHANGED
|
@@ -4,4 +4,14 @@ export class TestmuConfigError extends Error {
|
|
|
4
4
|
this.name = 'TestmuConfigError';
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
+
/** Thrown by verifyAssertion / evaluateNetworkAssertion on failed status. */
|
|
8
|
+
export class AssertionFailureError extends Error {
|
|
9
|
+
result;
|
|
10
|
+
constructor(message, result) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'AssertionFailureError';
|
|
13
|
+
this.result = result;
|
|
14
|
+
Object.setPrototypeOf(this, AssertionFailureError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
7
17
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,6EAA6E;AAC7E,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,MAAM,CAAU;IACzB,YAAY,OAAe,EAAE,MAAgB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../src/helpers/assertion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"assertion.d.ts","sourceRoot":"","sources":["../../src/helpers/assertion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOvC,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,KAAK,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;CACzB;AAuCD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CA+C1B;AAWD,wBAAsB,cAAc,CAClC,SAAS,EAAE,QAAQ,EAAE,EACrB,iBAAiB,GAAE,KAAK,GAAG,IAAY,GACtC,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -2,6 +2,7 @@ import { fetchWithAuth } from '../http.js';
|
|
|
2
2
|
import { resolveVar } from '../vars.js';
|
|
3
3
|
import { config } from '../config.js';
|
|
4
4
|
import { log, preview } from '../log.js';
|
|
5
|
+
import { AssertionFailureError } from '../errors.js';
|
|
5
6
|
/** Resolve a sub-check's templated fields and cast the string-typed ones
|
|
6
7
|
* (description, expected_value, extracted_value) to strings. The variable
|
|
7
8
|
* store may hold non-string values (numbers, bools) and the server's
|
|
@@ -43,7 +44,7 @@ export async function verifyAssertion(page, claim, tree) {
|
|
|
43
44
|
const resolved = await Promise.all(subChecks.map(resolveSub));
|
|
44
45
|
const result = await callEvaluateApi(assertionClaim, compositeOp, resolved);
|
|
45
46
|
log.helper(`[assertion] result status=${result.status ?? 'unknown'}`);
|
|
46
|
-
return result;
|
|
47
|
+
return _gateAssertionFailure(result, assertionClaim);
|
|
47
48
|
}
|
|
48
49
|
// Visual path: smart ON, no store_keys → screenshot-based LLM verification
|
|
49
50
|
log.helper(`[assertion] visual claim=${preview(assertionClaim, 80)}`);
|
|
@@ -72,7 +73,16 @@ export async function verifyAssertion(page, claim, tree) {
|
|
|
72
73
|
}
|
|
73
74
|
const result = (await resp.json());
|
|
74
75
|
log.helper(`[assertion] result status=${result.status ?? 'unknown'}`);
|
|
75
|
-
return result;
|
|
76
|
+
return _gateAssertionFailure(result, assertionClaim);
|
|
77
|
+
}
|
|
78
|
+
function _gateAssertionFailure(result, assertionClaim) {
|
|
79
|
+
if (result.status !== 'failed')
|
|
80
|
+
return result;
|
|
81
|
+
if (process.env.TESTMU_SKIP_ASSERTION_FAILURE) {
|
|
82
|
+
log.test(`[ASSERTION WARN] ${assertionClaim} — Ignoring assertion failure: ${JSON.stringify(result)}`);
|
|
83
|
+
return result;
|
|
84
|
+
}
|
|
85
|
+
throw new AssertionFailureError(`Assertion failed: ${assertionClaim}`, result);
|
|
76
86
|
}
|
|
77
87
|
export async function evaluateBranch(subChecks, compositeOperator = 'and') {
|
|
78
88
|
// PY parity: assertion.py:178,184,194 — top-level [if/else] markers, no indent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/helpers/assertion.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/helpers/assertion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
export interface NetworkAssertionResult {
|
|
2
|
+
status: 'passed' | 'failed';
|
|
3
|
+
tree: NetworkNode;
|
|
4
|
+
}
|
|
1
5
|
type Operator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'greater_than' | 'greater_than_or_equal' | 'less_than' | 'less_than_or_equal' | 'start_with' | 'end_with';
|
|
2
6
|
export interface NetworkLeaf {
|
|
3
7
|
operator: Operator;
|
|
@@ -9,7 +13,7 @@ export interface NetworkComposite {
|
|
|
9
13
|
operands: NetworkNode[];
|
|
10
14
|
}
|
|
11
15
|
export type NetworkNode = NetworkLeaf | NetworkComposite;
|
|
12
|
-
export declare function evaluateNetworkAssertion(node: NetworkNode): Promise<
|
|
16
|
+
export declare function evaluateNetworkAssertion(node: NetworkNode): Promise<NetworkAssertionResult>;
|
|
13
17
|
export interface NetworkQueryOptions {
|
|
14
18
|
method: string;
|
|
15
19
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,KAAK,QAAQ,GACT,QAAQ,GAAG,YAAY,GACvB,UAAU,GAAG,cAAc,GAC3B,cAAc,GAAG,uBAAuB,GACxC,WAAW,GAAG,oBAAoB,GAClC,YAAY,GAAG,UAAU,CAAC;AAE9B,MAAM,WAAW,WAAW;IAAG,QAAQ,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;CAAE;AACnG,MAAM,WAAW,gBAAgB;IAAG,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;CAAE;AACtF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAoCzD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkBjG;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiCD,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwE9E"}
|
package/dist/helpers/network.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { resolveVar } from '../vars.js';
|
|
2
2
|
import { getHarUrl } from '../config.js';
|
|
3
3
|
import { log, repr } from '../log.js';
|
|
4
|
+
import { AssertionFailureError } from '../errors.js';
|
|
4
5
|
async function resolve(val) {
|
|
5
6
|
return typeof val === 'string' ? resolveVar(val) : val;
|
|
6
7
|
}
|
|
@@ -35,11 +36,20 @@ export async function evaluateNetworkAssertion(node) {
|
|
|
35
36
|
// PY parity: assertion.py:31-33 — log entry with operator + operands count
|
|
36
37
|
const operands = isComposite(node) ? node.operands.length : 0;
|
|
37
38
|
log.helper(`[network_assertion] evaluating operator=${node.operator} operands=${operands}`);
|
|
38
|
-
const
|
|
39
|
-
log.helper(`[network_assertion] result=${
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
const passed = await _evaluateNode(node);
|
|
40
|
+
log.helper(`[network_assertion] result=${passed ? 'PASS' : 'FAIL'}`);
|
|
41
|
+
const result = {
|
|
42
|
+
status: passed ? 'passed' : 'failed',
|
|
43
|
+
tree: node,
|
|
44
|
+
};
|
|
45
|
+
if (!passed) {
|
|
46
|
+
if (process.env.TESTMU_SKIP_ASSERTION_FAILURE) {
|
|
47
|
+
log.test(`[ASSERTION WARN] Network assertion failed: ${JSON.stringify(node)}`);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
throw new AssertionFailureError(`Network assertion failed: ${JSON.stringify(node)}`, result);
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
43
53
|
}
|
|
44
54
|
// PY parity: _helpers/network.py:_decode_har_entry — base64-decode and
|
|
45
55
|
// JSON-parse JSON-mimetype bodies in-place so dot-path assertions on
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/helpers/network.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED