@testmuai/playwright-bindings 0.1.2-beta.1 → 0.1.2-beta.3
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/README.md +3 -3
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -1
- package/dist/config.js.map +1 -1
- package/dist/configure.d.ts +5 -1
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +1 -0
- package/dist/configure.js.map +1 -1
- package/dist/healPatch.d.ts +9 -2
- package/dist/healPatch.d.ts.map +1 -1
- package/dist/healPatch.js +25 -8
- package/dist/healPatch.js.map +1 -1
- package/dist/helpers/assertion.d.ts.map +1 -1
- package/dist/helpers/assertion.js +18 -12
- package/dist/helpers/assertion.js.map +1 -1
- package/dist/helpers/drag.d.ts.map +1 -1
- package/dist/helpers/drag.js +2 -0
- package/dist/helpers/drag.js.map +1 -1
- package/dist/helpers/executeApi.d.ts +12 -1
- package/dist/helpers/executeApi.d.ts.map +1 -1
- package/dist/helpers/executeApi.js +108 -20
- package/dist/helpers/executeApi.js.map +1 -1
- package/dist/helpers/executeDb.js +1 -1
- package/dist/helpers/executeDb.js.map +1 -1
- package/dist/helpers/kaneCli.d.ts +10 -1
- package/dist/helpers/kaneCli.d.ts.map +1 -1
- package/dist/helpers/kaneCli.js +122 -3
- package/dist/helpers/kaneCli.js.map +1 -1
- package/dist/helpers/math.d.ts +1 -1
- package/dist/helpers/math.d.ts.map +1 -1
- package/dist/helpers/math.js +8 -6
- package/dist/helpers/math.js.map +1 -1
- package/dist/helpers/network.d.ts +4 -4
- package/dist/helpers/network.d.ts.map +1 -1
- package/dist/helpers/network.js +19 -16
- package/dist/helpers/network.js.map +1 -1
- package/dist/helpers/smartui.d.ts +5 -1
- package/dist/helpers/smartui.d.ts.map +1 -1
- package/dist/helpers/smartui.js +45 -7
- package/dist/helpers/smartui.js.map +1 -1
- package/dist/helpers/tabs.d.ts.map +1 -1
- package/dist/helpers/tabs.js +2 -0
- package/dist/helpers/tabs.js.map +1 -1
- package/dist/helpers/vision.d.ts +50 -7
- package/dist/helpers/vision.d.ts.map +1 -1
- package/dist/helpers/vision.js +212 -29
- package/dist/helpers/vision.js.map +1 -1
- package/dist/helpers/wait.d.ts.map +1 -1
- package/dist/helpers/wait.js +1 -2
- package/dist/helpers/wait.js.map +1 -1
- package/dist/index.d.ts +3 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -6
- package/dist/index.js.map +1 -1
- package/dist/loadEnv.d.ts +2 -0
- package/dist/loadEnv.d.ts.map +1 -0
- package/dist/loadEnv.js +12 -0
- package/dist/loadEnv.js.map +1 -0
- package/dist/relayProxy.d.ts +46 -0
- package/dist/relayProxy.d.ts.map +1 -0
- package/dist/relayProxy.js +453 -0
- package/dist/relayProxy.js.map +1 -0
- package/dist/session.d.ts +6 -0
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +130 -16
- package/dist/session.js.map +1 -1
- package/dist/step.d.ts +23 -6
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +23 -27
- package/dist/step.js.map +1 -1
- package/dist/vars.d.ts +9 -20
- package/dist/vars.d.ts.map +1 -1
- package/dist/vars.js +62 -26
- package/dist/vars.js.map +1 -1
- package/package.json +10 -5
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ npm install @testmuai/playwright-bindings playwright
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
13
|
```typescript
|
|
14
|
-
import testmu, {
|
|
14
|
+
import testmu, { resolveVar, setVar } from "@testmuai/playwright-bindings";
|
|
15
15
|
import { expect } from "@playwright/test";
|
|
16
16
|
|
|
17
17
|
testmu.configure({
|
|
@@ -23,11 +23,11 @@ testmu.configure({
|
|
|
23
23
|
|
|
24
24
|
testmu.test("Login flow", async (page) => {
|
|
25
25
|
testmu.step("Navigate");
|
|
26
|
-
await page.goto(
|
|
26
|
+
await page.goto(await resolveVar("${BASE_URL}"));
|
|
27
27
|
testmu.done();
|
|
28
28
|
|
|
29
29
|
testmu.step("Fill credentials");
|
|
30
|
-
await page.locator("#email").fill(
|
|
30
|
+
await page.locator("#email").fill(await resolveVar("{{email}}"));
|
|
31
31
|
testmu.done();
|
|
32
32
|
});
|
|
33
33
|
|
package/dist/config.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import './loadEnv.js';
|
|
1
2
|
export type RunTarget = 'local' | 'cloud';
|
|
2
3
|
export interface Config {
|
|
3
4
|
runTarget: RunTarget;
|
|
4
5
|
ltAuth: boolean;
|
|
5
6
|
smart: boolean;
|
|
7
|
+
aiApiHost: string;
|
|
6
8
|
}
|
|
7
9
|
export declare function readConfig(): Config;
|
|
8
10
|
export declare const config: {
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1C,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAID,wBAAgB,UAAU,IAAI,MAAM,CAQnC;AAGD,eAAO,MAAM,MAAM,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAI9C,CAAC;AACF,wBAAgB,QAAQ,IAAI,IAAI,CAE/B"}
|
package/dist/config.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
// Side-effect import: loads .env from cwd before any module-level env reads
|
|
2
|
+
// below. Must come before readConfig() runs at module load.
|
|
3
|
+
import './loadEnv.js';
|
|
4
|
+
const DEFAULT_AI_API_HOST = 'https://kaneai-api.lambdatest.com/v16-server';
|
|
1
5
|
export function readConfig() {
|
|
2
6
|
const runTarget = process.env['TESTMU_RUN_TARGET'] === 'cloud' ? 'cloud' : 'local';
|
|
3
7
|
const ltAuth = Boolean(process.env['LT_USERNAME']) && Boolean(process.env['LT_ACCESS_KEY']);
|
|
4
8
|
const smart = process.env['TESTMU_SMART'] === '1';
|
|
5
|
-
|
|
9
|
+
const aiApiHost = process.env['TESTMU_AI_API_HOST'] || DEFAULT_AI_API_HOST;
|
|
10
|
+
return { runTarget, ltAuth, smart, aiApiHost };
|
|
6
11
|
}
|
|
7
12
|
let _snapshot = readConfig();
|
|
8
13
|
export const config = {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,4DAA4D;AAC5D,OAAO,cAAc,CAAC;AAWtB,MAAM,mBAAmB,GAAG,8CAA8C,CAAC;AAE3E,MAAM,UAAU,UAAU;IACxB,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACnE,MAAM,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,GAAG,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,mBAAmB,CAAC;IAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjD,CAAC;AAED,IAAI,SAAS,GAAW,UAAU,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,MAAM,GAAiC;IAClD,IAAI,OAAO;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC;AACF,MAAM,UAAU,QAAQ;IACtB,SAAS,GAAG,UAAU,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/configure.d.ts
CHANGED
|
@@ -16,7 +16,11 @@ export interface ConfigureOptions {
|
|
|
16
16
|
variables?: Record<string, unknown>;
|
|
17
17
|
testParams?: Record<string, unknown>;
|
|
18
18
|
globalVariables?: GlobalVariable[];
|
|
19
|
-
uploadedFiles?:
|
|
19
|
+
uploadedFiles?: Array<{
|
|
20
|
+
media_url?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
}>;
|
|
23
|
+
environmentId?: number;
|
|
20
24
|
}
|
|
21
25
|
declare const DEFAULTS: Required<ConfigureOptions>;
|
|
22
26
|
type ConfigKey = keyof typeof DEFAULTS;
|
package/dist/configure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,QAAA,MAAM,QAAQ,EAAE,QAAQ,CAAC,gBAAgB,CAcxC,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAC;AAKvC,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAGtD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAEhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAUtD;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAErE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAE9C;AAED,wBAAgB,MAAM,IAAI,IAAI,CAU7B"}
|
package/dist/configure.js
CHANGED
package/dist/configure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"AAuBA,MAAM,QAAQ,GAA+B;IAC3C,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,KAAK;IACvB,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;IACd,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,CAAC;CACjB,CAAC;AAIF,MAAM,IAAI,GAA+B,EAAE,GAAG,QAAQ,EAAE,CAAC;AACzD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAa,CAAC;AAGrC,MAAM,KAAK,GAAoB,EAAE,CAAC;AAElC,MAAM,UAAU,sBAAsB,CAAC,IAAmB;IACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAsB;IAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,aAAa,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,GAAG,CAAsB,GAAM;IAC7C,OAAO,IAAI,CAAC,GAAG,CAAyB,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,GAAc;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAgB,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAG,IAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;;YAC3F,IAAmC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,uFAAuF;IACvF,4FAA4F;AAC9F,CAAC"}
|
package/dist/healPatch.d.ts
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
+
import { type Page } from 'playwright';
|
|
1
2
|
/**
|
|
2
3
|
* Install heal wrappers on Locator.prototype.
|
|
3
4
|
* Idempotent: safe to call multiple times; the second call is a no-op.
|
|
5
|
+
*
|
|
6
|
+
* Must be called AFTER a Page has been created — see top-of-file note on
|
|
7
|
+
* why we need a runtime sample to resolve the Locator class.
|
|
4
8
|
*/
|
|
5
|
-
export declare function installHealPatch(): void;
|
|
9
|
+
export declare function installHealPatch(samplePage: Page): void;
|
|
6
10
|
/**
|
|
7
11
|
* Restore Locator.prototype to its original state.
|
|
8
12
|
* Used by tests to prevent patch leakage across test files.
|
|
13
|
+
*
|
|
14
|
+
* If no Page is available (e.g., the suite never installed), this is a no-op
|
|
15
|
+
* cleanup of the originals map.
|
|
9
16
|
*/
|
|
10
|
-
export declare function _uninstallHealPatch(): void;
|
|
17
|
+
export declare function _uninstallHealPatch(samplePage?: Page): void;
|
|
11
18
|
//# sourceMappingURL=healPatch.d.ts.map
|
package/dist/healPatch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healPatch.d.ts","sourceRoot":"","sources":["../src/healPatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"healPatch.d.ts","sourceRoot":"","sources":["../src/healPatch.ts"],"names":[],"mappings":"AAeA,OAAO,EAAgB,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAgErD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,IAAI,GAAG,IAAI,CAUvD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAU3D"}
|
package/dist/healPatch.js
CHANGED
|
@@ -47,16 +47,27 @@ function wrap(name, original) {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolve the runtime Locator class via a throwaway locator's constructor.
|
|
52
|
+
* Required because TS elides the value-import of `Locator` (interface in .d.ts).
|
|
53
|
+
*/
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
function getLocatorPrototype(samplePage) {
|
|
56
|
+
const sampleLoc = samplePage.locator('body');
|
|
57
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
58
|
+
return sampleLoc.constructor.prototype;
|
|
59
|
+
}
|
|
50
60
|
/**
|
|
51
61
|
* Install heal wrappers on Locator.prototype.
|
|
52
62
|
* Idempotent: safe to call multiple times; the second call is a no-op.
|
|
63
|
+
*
|
|
64
|
+
* Must be called AFTER a Page has been created — see top-of-file note on
|
|
65
|
+
* why we need a runtime sample to resolve the Locator class.
|
|
53
66
|
*/
|
|
54
|
-
export function installHealPatch() {
|
|
67
|
+
export function installHealPatch(samplePage) {
|
|
55
68
|
if (installed)
|
|
56
69
|
return;
|
|
57
|
-
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
-
const proto = Locator.prototype;
|
|
70
|
+
const proto = getLocatorPrototype(samplePage);
|
|
60
71
|
for (const name of HEAL_METHODS) {
|
|
61
72
|
const orig = proto[name];
|
|
62
73
|
if (typeof orig !== 'function')
|
|
@@ -69,11 +80,17 @@ export function installHealPatch() {
|
|
|
69
80
|
/**
|
|
70
81
|
* Restore Locator.prototype to its original state.
|
|
71
82
|
* Used by tests to prevent patch leakage across test files.
|
|
83
|
+
*
|
|
84
|
+
* If no Page is available (e.g., the suite never installed), this is a no-op
|
|
85
|
+
* cleanup of the originals map.
|
|
72
86
|
*/
|
|
73
|
-
export function _uninstallHealPatch() {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
87
|
+
export function _uninstallHealPatch(samplePage) {
|
|
88
|
+
if (!samplePage || originals.size === 0) {
|
|
89
|
+
originals.clear();
|
|
90
|
+
installed = false;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const proto = getLocatorPrototype(samplePage);
|
|
77
94
|
for (const [name, orig] of originals)
|
|
78
95
|
proto[name] = orig;
|
|
79
96
|
originals.clear();
|
package/dist/healPatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healPatch.js","sourceRoot":"","sources":["../src/healPatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"healPatch.js","sourceRoot":"","sources":["../src/healPatch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,YAAY,GAAG;IACnB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAC5C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc;IAC3C,eAAe,EAAE,wBAAwB,EAAE,OAAO,EAAE,KAAK;CACjD,CAAC;AAEX,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC7C,IAAI,SAAS,GAAG,KAAK,CAAC;AAEtB,SAAS,IAAI,CAAC,IAAY,EAAE,QAAkD;IAC5E,OAAO,KAAK,UAAU,OAAO,CAAgB,GAAG,IAAe;QAC7D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,oEAAoE;QACpE,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1E,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAsB,CAAC;YACnC,IACE,GAAG,EAAE,IAAI,KAAK,cAAc;gBAC5B,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC;gBAC1B,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EACvB,CAAC;gBACD,4DAA4D;gBAC5D,qEAAqE;gBACrE,kEAAkE;gBAClE,sDAAsD;gBACtD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAS,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;oBAC5E,IAAI,MAAM,EAAE,CAAC;wBACX,IAAI,IAAI,KAAK,OAAO;4BAAE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;wBACjE,8DAA8D;wBAC9D,8DAA8D;wBAC9D,OAAQ,IAAI,CAAC,KAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,4DAA4D;gBAC9D,CAAC;YACH,CAAC;YACD,+DAA+D;YAC/D,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,8DAA8D;AAC9D,SAAS,mBAAmB,CAAC,UAAgB;IAC3C,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,8DAA8D;IAC9D,OAAQ,SAAS,CAAC,WAAmB,CAAC,SAAS,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAgB;IAC/C,IAAI,SAAS;QAAE,OAAO;IACtB,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,OAAO,IAAI,KAAK,UAAU;YAAE,SAAS;QACzC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,IAAgD,CAAC,CAAC;IAC7E,CAAC;IACD,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAiB;IACnD,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxC,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,SAAS,GAAG,KAAK,CAAC;QAClB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACzD,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;AACpB,CAAC"}
|
|
@@ -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;AAMvC,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;AAkCD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,eAAe,CAAC,CA+C1B;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,QAAQ,EAAE,EACrB,iBAAiB,GAAE,KAAK,GAAG,IAAY,GACtC,OAAO,CAAC,OAAO,CAAC,CAmBlB"}
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { fetchWithAuth } from '../http.js';
|
|
2
|
-
import {
|
|
2
|
+
import { resolveVar } from '../vars.js';
|
|
3
3
|
import { config } from '../config.js';
|
|
4
4
|
import { log, preview } from '../log.js';
|
|
5
|
-
const AI_HOST = () => process.env['TESTMU_AI_API_HOST'] ?? 'http://localhost:8000';
|
|
6
5
|
/** Resolve a string value through the variable store; non-strings pass through. */
|
|
7
|
-
function resolveSub(sub) {
|
|
6
|
+
async function resolveSub(sub) {
|
|
8
7
|
const rawExpected = sub.expected_value ?? sub.expected ?? '';
|
|
9
8
|
const rawExtracted = sub.extracted_value ?? '';
|
|
10
9
|
const rawDescription = sub.description ?? '';
|
|
11
10
|
return {
|
|
12
|
-
description: typeof rawDescription === 'string' ?
|
|
13
|
-
expected_value: typeof rawExpected === 'string' ?
|
|
14
|
-
extracted_value: typeof rawExtracted === 'string' ?
|
|
11
|
+
description: typeof rawDescription === 'string' ? (await resolveVar(rawDescription)) ?? '' : rawDescription,
|
|
12
|
+
expected_value: typeof rawExpected === 'string' ? (await resolveVar(rawExpected)) ?? '' : rawExpected,
|
|
13
|
+
extracted_value: typeof rawExtracted === 'string' ? (await resolveVar(rawExtracted)) ?? '' : rawExtracted,
|
|
15
14
|
operator: sub.operator ?? 'contains',
|
|
16
15
|
transforms: sub.transforms ?? ['strip'],
|
|
17
16
|
};
|
|
18
17
|
}
|
|
19
18
|
async function callEvaluateApi(claim, compositeOp, subChecks) {
|
|
20
|
-
const resp = await fetchWithAuth(`${
|
|
19
|
+
const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/evaluate`, {
|
|
21
20
|
method: 'POST',
|
|
22
21
|
headers: { 'content-type': 'application/json' },
|
|
23
22
|
body: JSON.stringify({ claim, composite_operator: compositeOp, sub_checks: subChecks }),
|
|
@@ -37,7 +36,7 @@ export async function verifyAssertion(page, claim, tree) {
|
|
|
37
36
|
// Deterministic path: store_keys present, or smart mode is OFF
|
|
38
37
|
if (hasStoreKeys || !config.current.smart) {
|
|
39
38
|
log.helper(`[assertion] deterministic claim=${preview(assertionClaim, 80)}`);
|
|
40
|
-
const resolved = subChecks.map(resolveSub);
|
|
39
|
+
const resolved = await Promise.all(subChecks.map(resolveSub));
|
|
41
40
|
const result = await callEvaluateApi(assertionClaim, compositeOp, resolved);
|
|
42
41
|
log.helper(`[assertion] result status=${result.status ?? 'unknown'}`);
|
|
43
42
|
return result;
|
|
@@ -58,7 +57,7 @@ export async function verifyAssertion(page, claim, tree) {
|
|
|
58
57
|
if (tree.verification !== undefined) {
|
|
59
58
|
body['verification'] = tree.verification;
|
|
60
59
|
}
|
|
61
|
-
const resp = await fetchWithAuth(`${
|
|
60
|
+
const resp = await fetchWithAuth(`${config.current.aiApiHost}/api/v1/assertions/verify`, {
|
|
62
61
|
method: 'POST',
|
|
63
62
|
headers: { 'content-type': 'application/json' },
|
|
64
63
|
body: JSON.stringify(body),
|
|
@@ -72,15 +71,22 @@ export async function verifyAssertion(page, claim, tree) {
|
|
|
72
71
|
return result;
|
|
73
72
|
}
|
|
74
73
|
export async function evaluateBranch(subChecks, compositeOperator = 'and') {
|
|
75
|
-
|
|
76
|
-
if
|
|
74
|
+
// PY parity: assertion.py:178,184,194 — top-level [if/else] markers, no indent.
|
|
75
|
+
log.test(`[if/else] evaluating ${compositeOperator} of ${subChecks.length} sub-check(s)`);
|
|
76
|
+
const resolved = await Promise.all(subChecks.map(resolveSub));
|
|
77
|
+
if (resolved.length === 0) {
|
|
78
|
+
log.test('[if/else] result=False (no valid sub-checks) → taking false branch');
|
|
77
79
|
return false;
|
|
80
|
+
}
|
|
78
81
|
const claim = `Branch condition (${compositeOperator})`;
|
|
79
82
|
try {
|
|
80
83
|
const result = await callEvaluateApi(claim, compositeOperator, resolved);
|
|
81
|
-
|
|
84
|
+
const passed = result.status === 'passed';
|
|
85
|
+
log.test(`[if/else] result=${passed ? 'true' : 'false'} → taking ${passed ? 'true' : 'false'} branch`);
|
|
86
|
+
return passed;
|
|
82
87
|
}
|
|
83
88
|
catch {
|
|
89
|
+
log.test('[if/else] result=false → taking false branch');
|
|
84
90
|
return false;
|
|
85
91
|
}
|
|
86
92
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"assertion.js","sourceRoot":"","sources":["../../src/helpers/assertion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../src/helpers/drag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../src/helpers/drag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrH"}
|
package/dist/helpers/drag.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { log } from '../log.js';
|
|
1
2
|
export async function clickDrag(page, x1, y1, x2, y2, steps = 20) {
|
|
3
|
+
log.helper(`[click_drag] from=(${x1},${y1}) to=(${x2},${y2}) steps=${steps}`);
|
|
2
4
|
await page.mouse.move(x1, y1);
|
|
3
5
|
await page.mouse.down();
|
|
4
6
|
await page.mouse.move(x2, y2, { steps });
|
package/dist/helpers/drag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drag.js","sourceRoot":"","sources":["../../src/helpers/drag.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drag.js","sourceRoot":"","sources":["../../src/helpers/drag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,KAAK,GAAG,EAAE;IACpG,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;IAC9E,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACxB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -11,7 +11,18 @@ export interface AuthBasic {
|
|
|
11
11
|
password?: string;
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
|
-
export
|
|
14
|
+
export interface AuthAwsSignature {
|
|
15
|
+
type: 'aws-signature';
|
|
16
|
+
data: {
|
|
17
|
+
region?: string;
|
|
18
|
+
service_name?: string;
|
|
19
|
+
access_key: string;
|
|
20
|
+
secret_key: string;
|
|
21
|
+
session_token?: string;
|
|
22
|
+
add_to?: 'headers' | 'params';
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export type Authorization = AuthBearer | AuthBasic | AuthAwsSignature | string;
|
|
15
26
|
export interface ApiRequest {
|
|
16
27
|
method: string;
|
|
17
28
|
url: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeApi.d.ts","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"executeApi.d.ts","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE;AACxE,MAAM,WAAW,SAAS;IAAI,IAAI,EAAE,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAAE;AAC9F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;KAC/B,CAAC;CACH;AACD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAE/E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CA6JtE"}
|
|
@@ -1,15 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolveVar } from '../vars.js';
|
|
2
|
+
import { config } from '../config.js';
|
|
2
3
|
import { log, preview } from '../log.js';
|
|
3
|
-
function resolve(input) { return
|
|
4
|
+
function resolve(input) { return resolveVar(input); }
|
|
4
5
|
export async function executeApi(req) {
|
|
5
|
-
const url = new URL(resolve(req.url));
|
|
6
|
+
const url = new URL(await resolve(req.url));
|
|
7
|
+
if (url.protocol === 'ws:' || url.protocol === 'wss:') {
|
|
8
|
+
throw new Error('Websockets not supported');
|
|
9
|
+
}
|
|
10
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') {
|
|
11
|
+
throw new Error(`Invalid URL: ${req.url}`);
|
|
12
|
+
}
|
|
6
13
|
if (req.params) {
|
|
7
14
|
for (const [k, val] of Object.entries(req.params))
|
|
8
|
-
url.searchParams.set(k, resolve(val));
|
|
15
|
+
url.searchParams.set(k, await resolve(val));
|
|
9
16
|
}
|
|
10
17
|
const headers = {};
|
|
11
18
|
for (const [k, val] of Object.entries(req.headers ?? {}))
|
|
12
|
-
headers[k] = resolve(val);
|
|
19
|
+
headers[k] = await resolve(val);
|
|
20
|
+
for (const hval of Object.values(headers)) {
|
|
21
|
+
if (hval === 'text/event-stream')
|
|
22
|
+
throw new Error('SSE not supported');
|
|
23
|
+
}
|
|
24
|
+
// Strip multipart/form-data so fetch auto-generates the boundary.
|
|
25
|
+
for (const k of Object.keys(headers)) {
|
|
26
|
+
if (k.toLowerCase() === 'content-type' && headers[k] === 'multipart/form-data') {
|
|
27
|
+
delete headers[k];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (!('User-Agent' in headers) && !('user-agent' in headers)) {
|
|
31
|
+
headers['User-Agent'] = 'Mozilla/5.0';
|
|
32
|
+
}
|
|
13
33
|
// Python: auth may be a dict OR a JSON-encoded string.
|
|
14
34
|
let auth;
|
|
15
35
|
if (typeof req.authorization === 'string') {
|
|
@@ -21,31 +41,99 @@ export async function executeApi(req) {
|
|
|
21
41
|
else {
|
|
22
42
|
auth = req.authorization;
|
|
23
43
|
}
|
|
24
|
-
if (auth?.type === 'bearer' && auth.data.token) {
|
|
25
|
-
headers['Authorization'] = `Bearer ${resolve(auth.data.token)}`;
|
|
26
|
-
}
|
|
27
|
-
else if (auth?.type === 'basic' && auth.data.username) {
|
|
28
|
-
const u = resolve(auth.data.username);
|
|
29
|
-
const p = resolve(auth.data.password ?? '');
|
|
30
|
-
headers['Authorization'] = `Basic ${Buffer.from(`${u}:${p}`).toString('base64')}`;
|
|
31
|
-
}
|
|
32
44
|
let body = null;
|
|
33
45
|
if (req.body !== undefined && req.body !== null) {
|
|
34
|
-
|
|
35
|
-
|
|
46
|
+
const ct = (headers['Content-Type'] || headers['content-type'] || '').toLowerCase();
|
|
47
|
+
if (typeof req.body === 'string' && ct === 'application/x-www-form-urlencoded') {
|
|
48
|
+
const resolvedBody = await resolve(req.body);
|
|
49
|
+
try {
|
|
50
|
+
body = new URLSearchParams(resolvedBody).toString();
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
body = resolvedBody;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else if (typeof req.body === 'string') {
|
|
57
|
+
body = await resolve(req.body);
|
|
58
|
+
}
|
|
36
59
|
else {
|
|
37
60
|
body = JSON.stringify(req.body);
|
|
38
61
|
if (!headers['content-type'])
|
|
39
62
|
headers['content-type'] = 'application/json';
|
|
40
63
|
}
|
|
41
64
|
}
|
|
65
|
+
if (auth?.type === 'bearer' && auth.data.token) {
|
|
66
|
+
headers['Authorization'] = `Bearer ${await resolve(auth.data.token)}`;
|
|
67
|
+
}
|
|
68
|
+
else if (auth?.type === 'basic' && auth.data.username) {
|
|
69
|
+
const u = await resolve(auth.data.username);
|
|
70
|
+
const p = await resolve(auth.data.password ?? '');
|
|
71
|
+
headers['Authorization'] = `Basic ${Buffer.from(`${u}:${p}`).toString('base64')}`;
|
|
72
|
+
}
|
|
73
|
+
else if (auth?.type === 'aws-signature') {
|
|
74
|
+
// Resolve all auth fields first so {{secrets.X}} / {{global.X}} reach aws4 as real creds.
|
|
75
|
+
try {
|
|
76
|
+
const aws4 = (await import('aws4')).default;
|
|
77
|
+
const region = await resolve(auth.data.region ?? 'us-east-1');
|
|
78
|
+
const service = await resolve(auth.data.service_name ?? '');
|
|
79
|
+
const accessKey = await resolve(auth.data.access_key);
|
|
80
|
+
const secretKey = await resolve(auth.data.secret_key);
|
|
81
|
+
const sessionTok = auth.data.session_token
|
|
82
|
+
? await resolve(auth.data.session_token)
|
|
83
|
+
: undefined;
|
|
84
|
+
const signedBody = typeof body === 'string' ? body : undefined;
|
|
85
|
+
const opts = {
|
|
86
|
+
host: url.host,
|
|
87
|
+
path: url.pathname + url.search,
|
|
88
|
+
method: req.method.toUpperCase(),
|
|
89
|
+
service,
|
|
90
|
+
region,
|
|
91
|
+
body: signedBody,
|
|
92
|
+
headers: { ...headers },
|
|
93
|
+
};
|
|
94
|
+
if (auth.data.add_to === 'params')
|
|
95
|
+
opts.signQuery = true;
|
|
96
|
+
const creds = {
|
|
97
|
+
accessKeyId: accessKey,
|
|
98
|
+
secretAccessKey: secretKey,
|
|
99
|
+
};
|
|
100
|
+
if (sessionTok !== undefined)
|
|
101
|
+
creds.sessionToken = sessionTok;
|
|
102
|
+
const signed = aws4.sign(opts, creds);
|
|
103
|
+
if (auth.data.add_to === 'params' && signed.path) {
|
|
104
|
+
const signedUrl = new URL(`${url.protocol}//${signed.host ?? url.host}${signed.path}`);
|
|
105
|
+
for (const [k, v] of signedUrl.searchParams)
|
|
106
|
+
url.searchParams.set(k, v);
|
|
107
|
+
}
|
|
108
|
+
else if (signed.headers) {
|
|
109
|
+
Object.assign(headers, signed.headers);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (e) {
|
|
113
|
+
log.helper(`[execute_api] AWS Signature auth failed: ${String(e)}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
42
116
|
log.helper(`[execute_api] ${req.method} ${preview(url.toString(), 80)}`);
|
|
43
117
|
const started = Date.now();
|
|
44
118
|
const ac = new AbortController();
|
|
45
119
|
const timer = setTimeout(() => ac.abort(), req.timeout ?? 30_000);
|
|
120
|
+
// req.verify: PY passes into httpx; Node fetch has no direct equivalent — gap acknowledged.
|
|
121
|
+
let dispatcher;
|
|
122
|
+
if (config.current.runTarget === 'cloud') {
|
|
123
|
+
const { ProxyAgent } = await import('undici');
|
|
124
|
+
dispatcher = new ProxyAgent('http://127.0.0.1:22000');
|
|
125
|
+
}
|
|
126
|
+
const fetchOpts = {
|
|
127
|
+
method: req.method,
|
|
128
|
+
headers,
|
|
129
|
+
body,
|
|
130
|
+
signal: ac.signal,
|
|
131
|
+
};
|
|
132
|
+
if (dispatcher)
|
|
133
|
+
fetchOpts.dispatcher = dispatcher;
|
|
46
134
|
let resp;
|
|
47
135
|
try {
|
|
48
|
-
resp = await fetch(url.toString(),
|
|
136
|
+
resp = await fetch(url.toString(), fetchOpts);
|
|
49
137
|
}
|
|
50
138
|
finally {
|
|
51
139
|
clearTimeout(timer);
|
|
@@ -71,13 +159,13 @@ export async function executeApi(req) {
|
|
|
71
159
|
}
|
|
72
160
|
}
|
|
73
161
|
const text = await resp.text();
|
|
74
|
-
let
|
|
162
|
+
let responseBody = text;
|
|
75
163
|
if (respHeaders['content-type']?.includes('application/json')) {
|
|
76
164
|
try {
|
|
77
|
-
|
|
165
|
+
responseBody = JSON.parse(text);
|
|
78
166
|
}
|
|
79
|
-
catch { }
|
|
167
|
+
catch { /* not valid JSON — keep text */ }
|
|
80
168
|
}
|
|
81
|
-
return { status: resp.status, headers: respHeaders, cookies, response_body:
|
|
169
|
+
return { status: resp.status, headers: respHeaders, cookies, response_body: responseBody, body: text, time: elapsed };
|
|
82
170
|
}
|
|
83
171
|
//# sourceMappingURL=executeApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeApi.js","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"executeApi.js","sourceRoot":"","sources":["../../src/helpers/executeApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export async function executeDb(req) {
|
|
|
5
5
|
if (!ltAuthHeader())
|
|
6
6
|
throw new TestmuConfigError('executeDb requires LT creds');
|
|
7
7
|
log.helper(`[execute_db] db_id=${JSON.stringify(req.db_id)} db_name=${JSON.stringify(req.db_name)}`);
|
|
8
|
-
const automindUrl = (process.env['AUTOMIND_URL'] ?? '').replace(/\/$/, '');
|
|
8
|
+
const automindUrl = (process.env['AUTOMIND_URL'] ?? 'https://kaneai-api.lambdatest.com').replace(/\/$/, '');
|
|
9
9
|
const tunnelId = req.tunnel_id ?? process.env['LT_PROXY_TUNNEL_ID'] ?? '';
|
|
10
10
|
const payload = {
|
|
11
11
|
query: req.query,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeDb.js","sourceRoot":"","sources":["../../src/helpers/executeDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAUhC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAc;IAC5C,IAAI,CAAC,YAAY,EAAE;QAAE,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrG,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"executeDb.js","sourceRoot":"","sources":["../../src/helpers/executeDb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAUhC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAc;IAC5C,IAAI,CAAC,YAAY,EAAE;QAAE,MAAM,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IAChF,GAAG,CAAC,MAAM,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrG,MAAM,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,mCAAmC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE;KACtG,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,WAAW,WAAW,EAAE;QAC1D,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,OAAO,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Page } from 'playwright';
|
|
2
|
+
export declare function executeKaneCli(objective: string, page: Page): Promise<Page>;
|
|
3
|
+
interface KaneCliResult {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
exitCode: number;
|
|
7
|
+
}
|
|
8
|
+
/** Spawn kane-cli as a subprocess and collect its output with a timeout. */
|
|
9
|
+
export declare function runKaneCli(cmd: string, args: string[], timeoutMs: number): Promise<KaneCliResult>;
|
|
10
|
+
export {};
|
|
2
11
|
//# sourceMappingURL=kaneCli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kaneCli.d.ts","sourceRoot":"","sources":["../../src/helpers/kaneCli.ts"],"names":[],"mappings":"AAAA,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"kaneCli.d.ts","sourceRoot":"","sources":["../../src/helpers/kaneCli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAevC,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAiFjF;AAED,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|