@agent-relay/browser-primitive 4.0.9 → 4.0.40
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/actions/extraction.d.ts +6 -0
- package/dist/actions/extraction.d.ts.map +1 -0
- package/dist/actions/extraction.js +91 -0
- package/dist/actions/extraction.js.map +1 -0
- package/dist/actions/interaction.d.ts +17 -0
- package/dist/actions/interaction.d.ts.map +1 -0
- package/dist/actions/interaction.js +159 -0
- package/dist/actions/interaction.js.map +1 -0
- package/dist/actions/navigation.d.ts +6 -0
- package/dist/actions/navigation.d.ts.map +1 -0
- package/dist/actions/navigation.js +37 -0
- package/dist/actions/navigation.js.map +1 -0
- package/dist/actions/script.d.ts +3 -0
- package/dist/actions/script.d.ts.map +1 -0
- package/dist/actions/script.js +35 -0
- package/dist/actions/script.js.map +1 -0
- package/dist/actions/waits.d.ts +5 -0
- package/dist/actions/waits.d.ts.map +1 -0
- package/dist/actions/waits.js +52 -0
- package/dist/actions/waits.js.map +1 -0
- package/dist/browser-client.d.ts +41 -0
- package/dist/browser-client.d.ts.map +1 -0
- package/dist/browser-client.js +435 -0
- package/dist/browser-client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +95 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +434 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/types.d.ts +364 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workflow-step.d.ts +99 -0
- package/dist/workflow-step.d.ts.map +1 -0
- package/dist/workflow-step.js +419 -0
- package/dist/workflow-step.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { AttributeOutput, AttributeParams, BrowserActionContext, HtmlOutput, HtmlParams, ScreenshotOutput, ScreenshotParams, TextOutput, TextParams } from '../types.js';
|
|
2
|
+
export declare function text(context: BrowserActionContext, params?: TextParams): Promise<TextOutput>;
|
|
3
|
+
export declare function html(context: BrowserActionContext, params?: HtmlParams): Promise<HtmlOutput>;
|
|
4
|
+
export declare function attribute(context: BrowserActionContext, params: AttributeParams): Promise<AttributeOutput>;
|
|
5
|
+
export declare function screenshot(context: BrowserActionContext, params?: ScreenshotParams): Promise<ScreenshotOutput>;
|
|
6
|
+
//# sourceMappingURL=extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/actions/extraction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EAEpB,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACX,MAAM,aAAa,CAAC;AAMrB,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BtG;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,GAAE,UAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAmBtG;AAED,wBAAsB,SAAS,CAC7B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,eAAe,CAAC,CAa1B;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,gBAAqB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAkC3B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
function selectorLabel(selector) {
|
|
3
|
+
return typeof selector === 'string' ? selector : selector.selector;
|
|
4
|
+
}
|
|
5
|
+
export async function text(context, params = {}) {
|
|
6
|
+
const selector = params.selector ?? 'body';
|
|
7
|
+
const locator = await context.waitForElement(selector, {
|
|
8
|
+
state: 'attached',
|
|
9
|
+
timeout: params.timeout,
|
|
10
|
+
});
|
|
11
|
+
if (params.all) {
|
|
12
|
+
const values = params.innerText ? await locator.allInnerTexts() : await locator.allTextContents();
|
|
13
|
+
return {
|
|
14
|
+
selector: params.selector ? selectorLabel(params.selector) : undefined,
|
|
15
|
+
text: values,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const value = params.innerText
|
|
19
|
+
? await locator.innerText({
|
|
20
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
21
|
+
})
|
|
22
|
+
: await locator.textContent({
|
|
23
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
selector: params.selector ? selectorLabel(params.selector) : undefined,
|
|
27
|
+
text: value,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export async function html(context, params = {}) {
|
|
31
|
+
if (!params.selector) {
|
|
32
|
+
return {
|
|
33
|
+
html: await context.page.content(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const locator = await context.waitForElement(params.selector, {
|
|
37
|
+
state: 'attached',
|
|
38
|
+
timeout: params.timeout,
|
|
39
|
+
});
|
|
40
|
+
const value = await locator.evaluate((element, outerHTML) => {
|
|
41
|
+
return outerHTML ? element.outerHTML : element.innerHTML;
|
|
42
|
+
}, params.outerHTML ?? false);
|
|
43
|
+
return {
|
|
44
|
+
selector: selectorLabel(params.selector),
|
|
45
|
+
html: value,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export async function attribute(context, params) {
|
|
49
|
+
const locator = await context.waitForElement(params.selector, {
|
|
50
|
+
state: 'attached',
|
|
51
|
+
timeout: params.timeout,
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
selector: selectorLabel(params.selector),
|
|
55
|
+
name: params.name,
|
|
56
|
+
value: await locator.getAttribute(params.name, {
|
|
57
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export async function screenshot(context, params = {}) {
|
|
62
|
+
const type = params.type ?? 'png';
|
|
63
|
+
const common = {
|
|
64
|
+
path: params.path,
|
|
65
|
+
type,
|
|
66
|
+
quality: type === 'jpeg' ? params.quality : undefined,
|
|
67
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
68
|
+
omitBackground: params.omitBackground,
|
|
69
|
+
animations: params.animations,
|
|
70
|
+
scale: params.scale,
|
|
71
|
+
};
|
|
72
|
+
const buffer = params.selector
|
|
73
|
+
? await (await context.waitForElement(params.selector, {
|
|
74
|
+
state: 'visible',
|
|
75
|
+
timeout: params.timeout,
|
|
76
|
+
})).screenshot(common)
|
|
77
|
+
: await context.page.screenshot({
|
|
78
|
+
...common,
|
|
79
|
+
fullPage: params.fullPage,
|
|
80
|
+
});
|
|
81
|
+
const bytes = Buffer.byteLength(buffer);
|
|
82
|
+
return {
|
|
83
|
+
path: params.path,
|
|
84
|
+
base64: params.path ? undefined : buffer.toString('base64'),
|
|
85
|
+
bytes,
|
|
86
|
+
type,
|
|
87
|
+
fullPage: params.fullPage,
|
|
88
|
+
selector: params.selector ? selectorLabel(params.selector) : undefined,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../src/actions/extraction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAerC,SAAS,aAAa,CAAC,QAAyB;IAC9C,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA6B,EAAE,SAAqB,EAAE;IAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE;QACrD,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;QAElG,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YACtE,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS;QAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;SAClD,CAAC;QACJ,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC;YACxB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;SAClD,CAAC,CAAC;IAEP,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QACtE,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA6B,EAAE,SAAqB,EAAE;IAC/E,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC5D,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;QAC1D,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC3D,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAE9B,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,IAAI,EAAE,KAAK;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAA6B,EAC7B,MAAuB;IAEvB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC5D,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE;YAC7C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;SAClD,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,OAA6B,EAC7B,SAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;IAClC,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI;QACJ,OAAO,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACrD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACjD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ;QAC5B,CAAC,CAAC,MAAM,CACJ,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC5C,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CACH,CAAC,UAAU,CAAC,MAAM,CAAC;QACtB,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC5B,GAAG,MAAM;YACT,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC3D,KAAK;QACL,IAAI;QACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;KACvE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BrowserActionContext, CheckParams, ClickParams, FillParams, HoverParams, PressParams, SelectParams, SelectorActionOutput, SubmitParams, UploadParams } from '../types.js';
|
|
2
|
+
export declare function click(context: BrowserActionContext, params: ClickParams): Promise<SelectorActionOutput>;
|
|
3
|
+
export declare function fill(context: BrowserActionContext, params: FillParams): Promise<SelectorActionOutput>;
|
|
4
|
+
export declare function check(context: BrowserActionContext, params: CheckParams): Promise<SelectorActionOutput>;
|
|
5
|
+
export declare function uncheck(context: BrowserActionContext, params: Omit<CheckParams, 'checked'>): Promise<SelectorActionOutput>;
|
|
6
|
+
export declare function select(context: BrowserActionContext, params: SelectParams): Promise<SelectorActionOutput & {
|
|
7
|
+
values: string[];
|
|
8
|
+
}>;
|
|
9
|
+
export declare function hover(context: BrowserActionContext, params: HoverParams): Promise<SelectorActionOutput>;
|
|
10
|
+
export declare function press(context: BrowserActionContext, params: PressParams): Promise<SelectorActionOutput & {
|
|
11
|
+
key: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function submit(context: BrowserActionContext, params?: SubmitParams): Promise<SelectorActionOutput>;
|
|
14
|
+
export declare function upload(context: BrowserActionContext, params: UploadParams): Promise<SelectorActionOutput & {
|
|
15
|
+
files: string[];
|
|
16
|
+
}>;
|
|
17
|
+
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../src/actions/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,WAAW,EAEX,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,YAAY,EAEb,MAAM,aAAa,CAAC;AAsCrB,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAwB/B;AAED,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAwB3G;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAK/B;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAmBtD;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAoB/B;AAED,wBAAsB,KAAK,CACzB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBjD;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,YAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC,CA+B/B;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAkBrD"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
function selectorLabel(selector) {
|
|
2
|
+
return typeof selector === 'string' ? selector : selector.selector;
|
|
3
|
+
}
|
|
4
|
+
function waitOptions(waitFor, timeout) {
|
|
5
|
+
if (waitFor === false) {
|
|
6
|
+
return undefined;
|
|
7
|
+
}
|
|
8
|
+
if (typeof waitFor === 'object') {
|
|
9
|
+
return {
|
|
10
|
+
timeout,
|
|
11
|
+
...waitFor,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return { state: 'visible', timeout };
|
|
15
|
+
}
|
|
16
|
+
async function locatorForInteraction(context, selector, waitFor, timeout) {
|
|
17
|
+
const options = waitOptions(waitFor, timeout);
|
|
18
|
+
if (options) {
|
|
19
|
+
return context.waitForElement(selector, options);
|
|
20
|
+
}
|
|
21
|
+
return context.resolveLocator(selector);
|
|
22
|
+
}
|
|
23
|
+
export async function click(context, params) {
|
|
24
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
25
|
+
await locator.click({
|
|
26
|
+
button: params.button,
|
|
27
|
+
clickCount: params.clickCount,
|
|
28
|
+
delay: params.delay,
|
|
29
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
30
|
+
force: params.force,
|
|
31
|
+
noWaitAfter: params.noWaitAfter,
|
|
32
|
+
position: params.position,
|
|
33
|
+
modifiers: params.modifiers,
|
|
34
|
+
trial: params.trial,
|
|
35
|
+
});
|
|
36
|
+
return {
|
|
37
|
+
selector: selectorLabel(params.selector),
|
|
38
|
+
action: 'click',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export async function fill(context, params) {
|
|
42
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
43
|
+
if (params.clear === false) {
|
|
44
|
+
await locator.pressSequentially(params.value, {
|
|
45
|
+
delay: 0,
|
|
46
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await locator.fill(params.value, {
|
|
51
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
52
|
+
force: params.force,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
selector: selectorLabel(params.selector),
|
|
57
|
+
action: 'fill',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export async function check(context, params) {
|
|
61
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
62
|
+
const checked = params.checked ?? true;
|
|
63
|
+
await locator.setChecked(checked, {
|
|
64
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
65
|
+
force: params.force,
|
|
66
|
+
noWaitAfter: params.noWaitAfter,
|
|
67
|
+
trial: params.trial,
|
|
68
|
+
});
|
|
69
|
+
return {
|
|
70
|
+
selector: selectorLabel(params.selector),
|
|
71
|
+
action: checked ? 'check' : 'uncheck',
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export async function uncheck(context, params) {
|
|
75
|
+
return check(context, {
|
|
76
|
+
...params,
|
|
77
|
+
checked: false,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export async function select(context, params) {
|
|
81
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
82
|
+
const values = Array.isArray(params.values) ? params.values : [params.values];
|
|
83
|
+
await locator.selectOption(values, {
|
|
84
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
85
|
+
force: params.force,
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
selector: selectorLabel(params.selector),
|
|
89
|
+
action: 'select',
|
|
90
|
+
values,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export async function hover(context, params) {
|
|
94
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
95
|
+
await locator.hover({
|
|
96
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
97
|
+
force: params.force,
|
|
98
|
+
position: params.position,
|
|
99
|
+
modifiers: params.modifiers,
|
|
100
|
+
trial: params.trial,
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
selector: selectorLabel(params.selector),
|
|
104
|
+
action: 'hover',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function press(context, params) {
|
|
108
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
109
|
+
await locator.press(params.key, {
|
|
110
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
111
|
+
delay: params.delay,
|
|
112
|
+
noWaitAfter: params.noWaitAfter,
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
selector: selectorLabel(params.selector),
|
|
116
|
+
action: 'press',
|
|
117
|
+
key: params.key,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export async function submit(context, params = {}) {
|
|
121
|
+
const selector = params.selector ?? 'form';
|
|
122
|
+
const locator = await locatorForInteraction(context, selector, true, params.timeout);
|
|
123
|
+
const requestSubmit = () => locator.evaluate((element) => {
|
|
124
|
+
const form = element.tagName.toLowerCase() === 'form' ? element : element.closest('form');
|
|
125
|
+
if (!form) {
|
|
126
|
+
throw new Error('No form found for submit action');
|
|
127
|
+
}
|
|
128
|
+
form.requestSubmit();
|
|
129
|
+
});
|
|
130
|
+
if (params.waitForNavigation) {
|
|
131
|
+
await Promise.all([
|
|
132
|
+
context.page.waitForNavigation({
|
|
133
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
134
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
135
|
+
}),
|
|
136
|
+
requestSubmit(),
|
|
137
|
+
]);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
await requestSubmit();
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
selector: selectorLabel(selector),
|
|
144
|
+
action: 'submit',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export async function upload(context, params) {
|
|
148
|
+
const locator = await locatorForInteraction(context, params.selector, params.waitFor ?? true, params.timeout);
|
|
149
|
+
const files = Array.isArray(params.filePath) ? params.filePath : [params.filePath];
|
|
150
|
+
await locator.setInputFiles(files, {
|
|
151
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
selector: selectorLabel(params.selector),
|
|
155
|
+
action: 'upload',
|
|
156
|
+
files,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=interaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/actions/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BrowserActionContext, GotoParams, HistoryNavigationParams, NavigationOutput, ReloadParams } from '../types.js';
|
|
2
|
+
export declare function goto(context: BrowserActionContext, params: GotoParams): Promise<NavigationOutput>;
|
|
3
|
+
export declare function back(context: BrowserActionContext, params?: HistoryNavigationParams): Promise<NavigationOutput | null>;
|
|
4
|
+
export declare function forward(context: BrowserActionContext, params?: HistoryNavigationParams): Promise<NavigationOutput | null>;
|
|
5
|
+
export declare function reload(context: BrowserActionContext, params?: ReloadParams): Promise<NavigationOutput | null>;
|
|
6
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/actions/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EACV,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,EACb,MAAM,aAAa,CAAC;AAarB,wBAAsB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQvG;AAED,wBAAsB,IAAI,CACxB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC;AAED,wBAAsB,OAAO,CAC3B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,YAAiB,GACxB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAOlC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
function responseOutput(context, response) {
|
|
2
|
+
return {
|
|
3
|
+
url: context.page.url(),
|
|
4
|
+
status: response?.status() ?? null,
|
|
5
|
+
ok: response?.ok() ?? null,
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export async function goto(context, params) {
|
|
9
|
+
const response = await context.page.goto(params.url, {
|
|
10
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
11
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
12
|
+
referer: params.referer,
|
|
13
|
+
});
|
|
14
|
+
return responseOutput(context, response);
|
|
15
|
+
}
|
|
16
|
+
export async function back(context, params = {}) {
|
|
17
|
+
const response = await context.page.goBack({
|
|
18
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
19
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
20
|
+
});
|
|
21
|
+
return response ? responseOutput(context, response) : null;
|
|
22
|
+
}
|
|
23
|
+
export async function forward(context, params = {}) {
|
|
24
|
+
const response = await context.page.goForward({
|
|
25
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
26
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
27
|
+
});
|
|
28
|
+
return response ? responseOutput(context, response) : null;
|
|
29
|
+
}
|
|
30
|
+
export async function reload(context, params = {}) {
|
|
31
|
+
const response = await context.page.reload({
|
|
32
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
33
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
34
|
+
});
|
|
35
|
+
return response ? responseOutput(context, response) : null;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/actions/navigation.ts"],"names":[],"mappings":"AAQA,SAAS,cAAc,CACrB,OAA6B,EAC7B,QAAmE;IAEnE,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,IAAI;QAClC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,IAAI;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAA6B,EAAE,MAAkB;IAC1E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;QACnD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACjD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,OAA6B,EAC7B,SAAuB,EAAE;IAEzB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;KAClD,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../../src/actions/script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAC;AAMzF,wBAAsB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA2CtG"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
function selectorLabel(selector) {
|
|
2
|
+
return typeof selector === 'string' ? selector : selector.selector;
|
|
3
|
+
}
|
|
4
|
+
export async function evaluate(context, params) {
|
|
5
|
+
if (params.selector) {
|
|
6
|
+
const locator = await context.waitForElement(params.selector, {
|
|
7
|
+
state: 'attached',
|
|
8
|
+
timeout: params.timeout,
|
|
9
|
+
});
|
|
10
|
+
return locator.evaluate((element, payload) => {
|
|
11
|
+
const evaluated = eval(payload.script);
|
|
12
|
+
if (typeof evaluated === 'function') {
|
|
13
|
+
return evaluated(element, ...payload.args);
|
|
14
|
+
}
|
|
15
|
+
return evaluated;
|
|
16
|
+
}, {
|
|
17
|
+
script: params.script,
|
|
18
|
+
args: params.args ?? [],
|
|
19
|
+
selector: selectorLabel(params.selector),
|
|
20
|
+
}, {
|
|
21
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return context.page.evaluate((payload) => {
|
|
25
|
+
const evaluated = eval(payload.script);
|
|
26
|
+
if (typeof evaluated === 'function') {
|
|
27
|
+
return evaluated(...payload.args);
|
|
28
|
+
}
|
|
29
|
+
return evaluated;
|
|
30
|
+
}, {
|
|
31
|
+
script: params.script,
|
|
32
|
+
args: params.args ?? [],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/actions/script.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,QAAyB;IAC9C,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAA6B,EAAE,MAAsB;IAClF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,UAAU;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,QAAQ,CACrB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAY,CAAC;YAElD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpC,OAAQ,SAA+C,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC,EACD;YACE,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;YACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;SACzC,EACD;YACE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;SAClD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAC1B,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAY,CAAC;QAElD,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,OAAQ,SAA+C,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EACD;QACE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;KACxB,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BrowserActionContext, WaitForFunctionParams, WaitForNavigationParams, WaitForSelectorParams, WaitOutput } from '../types.js';
|
|
2
|
+
export declare function waitForSelector(context: BrowserActionContext, params: WaitForSelectorParams): Promise<WaitOutput>;
|
|
3
|
+
export declare function waitForNavigation(context: BrowserActionContext, params?: WaitForNavigationParams): Promise<WaitOutput>;
|
|
4
|
+
export declare function waitForFunction(context: BrowserActionContext, params: WaitForFunctionParams): Promise<WaitOutput>;
|
|
5
|
+
//# sourceMappingURL=waits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waits.d.ts","sourceRoot":"","sources":["../../src/actions/waits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,UAAU,EACX,MAAM,aAAa,CAAC;AAMrB,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAyBrB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function selectorLabel(selector) {
|
|
2
|
+
return typeof selector === 'string' ? selector : selector.selector;
|
|
3
|
+
}
|
|
4
|
+
export async function waitForSelector(context, params) {
|
|
5
|
+
await context.waitForElement(params.selector, {
|
|
6
|
+
state: params.state ?? 'visible',
|
|
7
|
+
timeout: params.timeout,
|
|
8
|
+
});
|
|
9
|
+
return {
|
|
10
|
+
url: context.page.url(),
|
|
11
|
+
selector: selectorLabel(params.selector),
|
|
12
|
+
state: params.state ?? 'visible',
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export async function waitForNavigation(context, params = {}) {
|
|
16
|
+
const timeout = params.timeout ?? context.config.timeout;
|
|
17
|
+
const loadState = params.waitUntil === 'commit' ? 'load' : (params.waitUntil ?? 'load');
|
|
18
|
+
if (params.url) {
|
|
19
|
+
await context.page.waitForURL(params.url, {
|
|
20
|
+
waitUntil: params.waitUntil ?? 'load',
|
|
21
|
+
timeout,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
await context.page.waitForLoadState(loadState, {
|
|
26
|
+
timeout,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
url: context.page.url(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export async function waitForFunction(context, params) {
|
|
34
|
+
const handle = await context.page.waitForFunction(({ args, script }) => {
|
|
35
|
+
const evaluated = eval(script);
|
|
36
|
+
if (typeof evaluated === 'function') {
|
|
37
|
+
return evaluated(...args);
|
|
38
|
+
}
|
|
39
|
+
return evaluated;
|
|
40
|
+
}, {
|
|
41
|
+
script: params.script,
|
|
42
|
+
args: params.args ?? [],
|
|
43
|
+
}, {
|
|
44
|
+
timeout: params.timeout ?? context.config.timeout,
|
|
45
|
+
polling: params.polling,
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
url: context.page.url(),
|
|
49
|
+
value: await handle.jsonValue(),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=waits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waits.js","sourceRoot":"","sources":["../../src/actions/waits.ts"],"names":[],"mappings":"AAQA,SAAS,aAAa,CAAC,QAA2C;IAChE,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,MAA6B;IAE7B,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;QAChC,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA6B,EAC7B,SAAkC,EAAE;IAEpC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;IAExF,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;YACrC,OAAO;SACR,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YAC7C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA6B,EAC7B,MAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAC/C,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAY,CAAC;QAE1C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,OAAQ,SAA+C,CAAC,GAAG,IAAI,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC,EACD;QACE,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;KACxB,EACD;QACE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO;QACjD,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CACF,CAAC;IAEF,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;QACvB,KAAK,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type Page } from 'playwright';
|
|
2
|
+
import type { ActionResult, BrowserAction, BrowserActionName, BrowserActionOutputMap, BrowserActionParamsMap, BrowserActionRequest, BrowserConfig, BrowserSession } from './types.js';
|
|
3
|
+
export interface BrowserClientOptions {
|
|
4
|
+
config?: BrowserConfig;
|
|
5
|
+
}
|
|
6
|
+
export declare class BrowserClient {
|
|
7
|
+
private readonly config;
|
|
8
|
+
private readonly session;
|
|
9
|
+
private browser?;
|
|
10
|
+
private context?;
|
|
11
|
+
private page?;
|
|
12
|
+
private queueTail;
|
|
13
|
+
constructor(options?: BrowserClientOptions);
|
|
14
|
+
getSession(): BrowserSession;
|
|
15
|
+
getPage(): Page | undefined;
|
|
16
|
+
getCurrentUrl(): string | undefined;
|
|
17
|
+
launch(): Promise<BrowserSession>;
|
|
18
|
+
newPage(): Promise<Page>;
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
reset(config?: BrowserConfig): Promise<BrowserSession>;
|
|
21
|
+
execute<Name extends BrowserActionName>(action: Name, params: BrowserActionParamsMap[Name]): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
|
|
22
|
+
execute<Name extends BrowserActionName>(action: BrowserAction<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
|
|
23
|
+
execute<Name extends BrowserActionName>(action: BrowserActionRequest<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
|
|
24
|
+
enqueue<Name extends BrowserActionName>(action: Name, params: BrowserActionParamsMap[Name]): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
|
|
25
|
+
executeMany(actions: BrowserActionRequest[]): Promise<ActionResult[]>;
|
|
26
|
+
executeWorkflowAction<Name extends BrowserActionName>(action: BrowserActionRequest<Name>): Promise<ActionResult<BrowserActionOutputMap[Name]>>;
|
|
27
|
+
private queueAction;
|
|
28
|
+
private normalizationError;
|
|
29
|
+
private executeNow;
|
|
30
|
+
private ensurePage;
|
|
31
|
+
private createPage;
|
|
32
|
+
private createActionContext;
|
|
33
|
+
private resolveLocator;
|
|
34
|
+
private refreshSessionState;
|
|
35
|
+
private createMetadata;
|
|
36
|
+
private captureErrorScreenshot;
|
|
37
|
+
private attachPageObservers;
|
|
38
|
+
private getBrowserType;
|
|
39
|
+
private normalizeAction;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=browser-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-client.d.ts","sourceRoot":"","sources":["../src/browser-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,IAAI,EAEV,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEb,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,aAAa,EACb,cAAc,EAMf,MAAM,YAAY,CAAC;AAuDpB,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,OAAO,CAAC,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAiB;IACjC,OAAO,CAAC,IAAI,CAAC,CAAO;IACpB,OAAO,CAAC,SAAS,CAAoC;gBAEzC,OAAO,GAAE,oBAAyB;IAa9C,UAAU,IAAI,cAAc;IAI5B,OAAO,IAAI,IAAI,GAAG,SAAS;IAI3B,aAAa,IAAI,MAAM,GAAG,SAAS;IAI7B,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IA2BjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,KAAK,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAiB5D,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAatD,OAAO,CAAC,IAAI,SAAS,iBAAiB,EACpC,MAAM,EAAE,IAAI,EACZ,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAIhD,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAU3E,qBAAqB,CAAC,IAAI,SAAS,iBAAiB,EAClD,MAAM,EAAE,oBAAoB,CAAC,IAAI,CAAC,GACjC,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;IAUtD,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,kBAAkB;YAeZ,UAAU;YA6DV,UAAU;YAYV,UAAU;IAaxB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;YAoBR,mBAAmB;IAUjC,OAAO,CAAC,cAAc;YAuBR,sBAAsB;IAkBpC,OAAO,CAAC,mBAAmB;IA+C3B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,eAAe;CAuBxB"}
|