ultimate-playwright-mcp 0.1.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/LICENSE +26 -0
- package/README.md +286 -0
- package/dist/browser/cdp.d.ts +37 -0
- package/dist/browser/cdp.d.ts.map +1 -0
- package/dist/browser/cdp.helpers.d.ts +13 -0
- package/dist/browser/cdp.helpers.d.ts.map +1 -0
- package/dist/browser/cdp.helpers.js +38 -0
- package/dist/browser/cdp.helpers.js.map +1 -0
- package/dist/browser/cdp.js +77 -0
- package/dist/browser/cdp.js.map +1 -0
- package/dist/browser/chrome-tab-groups.d.ts +93 -0
- package/dist/browser/chrome-tab-groups.d.ts.map +1 -0
- package/dist/browser/chrome-tab-groups.js +458 -0
- package/dist/browser/chrome-tab-groups.js.map +1 -0
- package/dist/browser/chrome.d.ts +11 -0
- package/dist/browser/chrome.d.ts.map +1 -0
- package/dist/browser/chrome.js +74 -0
- package/dist/browser/chrome.js.map +1 -0
- package/dist/browser/pw-role-snapshot.d.ts +41 -0
- package/dist/browser/pw-role-snapshot.d.ts.map +1 -0
- package/dist/browser/pw-role-snapshot.js +346 -0
- package/dist/browser/pw-role-snapshot.js.map +1 -0
- package/dist/browser/pw-session.d.ts +145 -0
- package/dist/browser/pw-session.d.ts.map +1 -0
- package/dist/browser/pw-session.js +468 -0
- package/dist/browser/pw-session.js.map +1 -0
- package/dist/browser/pw-tools-activity.d.ts +27 -0
- package/dist/browser/pw-tools-activity.d.ts.map +1 -0
- package/dist/browser/pw-tools-activity.js +52 -0
- package/dist/browser/pw-tools-activity.js.map +1 -0
- package/dist/browser/pw-tools-downloads.d.ts +40 -0
- package/dist/browser/pw-tools-downloads.d.ts.map +1 -0
- package/dist/browser/pw-tools-downloads.js +191 -0
- package/dist/browser/pw-tools-downloads.js.map +1 -0
- package/dist/browser/pw-tools-interactions.d.ts +122 -0
- package/dist/browser/pw-tools-interactions.d.ts.map +1 -0
- package/dist/browser/pw-tools-interactions.js +434 -0
- package/dist/browser/pw-tools-interactions.js.map +1 -0
- package/dist/browser/pw-tools-responses.d.ts +19 -0
- package/dist/browser/pw-tools-responses.d.ts.map +1 -0
- package/dist/browser/pw-tools-responses.js +98 -0
- package/dist/browser/pw-tools-responses.js.map +1 -0
- package/dist/browser/pw-tools-shared.d.ts +12 -0
- package/dist/browser/pw-tools-shared.d.ts.map +1 -0
- package/dist/browser/pw-tools-shared.js +55 -0
- package/dist/browser/pw-tools-shared.js.map +1 -0
- package/dist/browser/pw-tools-snapshot.d.ts +70 -0
- package/dist/browser/pw-tools-snapshot.d.ts.map +1 -0
- package/dist/browser/pw-tools-snapshot.js +151 -0
- package/dist/browser/pw-tools-snapshot.js.map +1 -0
- package/dist/browser/pw-tools-state.d.ts +52 -0
- package/dist/browser/pw-tools-state.d.ts.map +1 -0
- package/dist/browser/pw-tools-state.js +159 -0
- package/dist/browser/pw-tools-state.js.map +1 -0
- package/dist/browser/pw-tools-storage.d.ts +53 -0
- package/dist/browser/pw-tools-storage.d.ts.map +1 -0
- package/dist/browser/pw-tools-storage.js +81 -0
- package/dist/browser/pw-tools-storage.js.map +1 -0
- package/dist/browser/pw-tools-trace.d.ts +18 -0
- package/dist/browser/pw-tools-trace.d.ts.map +1 -0
- package/dist/browser/pw-tools-trace.js +31 -0
- package/dist/browser/pw-tools-trace.js.map +1 -0
- package/dist/browser/tab-groups.d.ts +94 -0
- package/dist/browser/tab-groups.d.ts.map +1 -0
- package/dist/browser/tab-groups.js +303 -0
- package/dist/browser/tab-groups.js.map +1 -0
- package/dist/browser/target-id.d.ts +20 -0
- package/dist/browser/target-id.d.ts.map +1 -0
- package/dist/browser/target-id.js +29 -0
- package/dist/browser/target-id.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +32 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -0
- package/dist/daemon/chrome-daemon.d.ts +7 -0
- package/dist/daemon/chrome-daemon.d.ts.map +1 -0
- package/dist/daemon/chrome-daemon.js +264 -0
- package/dist/daemon/chrome-daemon.js.map +1 -0
- package/dist/daemon/cli.d.ts +6 -0
- package/dist/daemon/cli.d.ts.map +1 -0
- package/dist/daemon/cli.js +110 -0
- package/dist/daemon/cli.js.map +1 -0
- package/dist/daemon/manager.d.ts +22 -0
- package/dist/daemon/manager.d.ts.map +1 -0
- package/dist/daemon/manager.js +89 -0
- package/dist/daemon/manager.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +41 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +122 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/actions.d.ts +6 -0
- package/dist/mcp/tools/actions.d.ts.map +1 -0
- package/dist/mcp/tools/actions.js +214 -0
- package/dist/mcp/tools/actions.js.map +1 -0
- package/dist/mcp/tools/navigate.d.ts +6 -0
- package/dist/mcp/tools/navigate.d.ts.map +1 -0
- package/dist/mcp/tools/navigate.js +31 -0
- package/dist/mcp/tools/navigate.js.map +1 -0
- package/dist/mcp/tools/snapshot.d.ts +6 -0
- package/dist/mcp/tools/snapshot.d.ts.map +1 -0
- package/dist/mcp/tools/snapshot.js +26 -0
- package/dist/mcp/tools/snapshot.js.map +1 -0
- package/dist/mcp/tools/tab-group.d.ts +9 -0
- package/dist/mcp/tools/tab-group.d.ts.map +1 -0
- package/dist/mcp/tools/tab-group.js +173 -0
- package/dist/mcp/tools/tab-group.js.map +1 -0
- package/dist/mcp/tools/tabs.d.ts +6 -0
- package/dist/mcp/tools/tabs.d.ts.map +1 -0
- package/dist/mcp/tools/tabs.js +209 -0
- package/dist/mcp/tools/tabs.js.map +1 -0
- package/dist/utils/command-format.d.ts +6 -0
- package/dist/utils/command-format.d.ts.map +1 -0
- package/dist/utils/command-format.js +8 -0
- package/dist/utils/command-format.js.map +1 -0
- package/dist/utils/errors.d.ts +6 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +22 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/extension-installer.d.ts +16 -0
- package/dist/utils/extension-installer.d.ts.map +1 -0
- package/dist/utils/extension-installer.js +134 -0
- package/dist/utils/extension-installer.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-shared.js","sourceRoot":"","sources":["../../src/browser/pw-tools-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.snapshot.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { type AriaSnapshotNode } from "./cdp.js";
|
|
7
|
+
import { type RoleSnapshotOptions, type RoleRefMap } from "./pw-role-snapshot.js";
|
|
8
|
+
export declare function snapshotAriaViaPlaywright(opts: {
|
|
9
|
+
cdpUrl: string;
|
|
10
|
+
targetId?: string;
|
|
11
|
+
limit?: number;
|
|
12
|
+
}): Promise<{
|
|
13
|
+
nodes: AriaSnapshotNode[];
|
|
14
|
+
}>;
|
|
15
|
+
export declare function snapshotAiViaPlaywright(opts: {
|
|
16
|
+
cdpUrl: string;
|
|
17
|
+
targetId?: string;
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
maxChars?: number;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
snapshot: string;
|
|
22
|
+
truncated?: boolean;
|
|
23
|
+
refs: RoleRefMap;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function snapshotRoleViaPlaywright(opts: {
|
|
26
|
+
cdpUrl: string;
|
|
27
|
+
targetId?: string;
|
|
28
|
+
selector?: string;
|
|
29
|
+
frameSelector?: string;
|
|
30
|
+
refsMode?: "role" | "aria";
|
|
31
|
+
options?: RoleSnapshotOptions;
|
|
32
|
+
}): Promise<{
|
|
33
|
+
snapshot: string;
|
|
34
|
+
refs: Record<string, {
|
|
35
|
+
role: string;
|
|
36
|
+
name?: string;
|
|
37
|
+
nth?: number;
|
|
38
|
+
}>;
|
|
39
|
+
stats: {
|
|
40
|
+
lines: number;
|
|
41
|
+
chars: number;
|
|
42
|
+
refs: number;
|
|
43
|
+
interactive: number;
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
export declare function navigateViaPlaywright(opts: {
|
|
47
|
+
cdpUrl: string;
|
|
48
|
+
targetId?: string;
|
|
49
|
+
url: string;
|
|
50
|
+
timeoutMs?: number;
|
|
51
|
+
}): Promise<{
|
|
52
|
+
url: string;
|
|
53
|
+
}>;
|
|
54
|
+
export declare function resizeViewportViaPlaywright(opts: {
|
|
55
|
+
cdpUrl: string;
|
|
56
|
+
targetId?: string;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
}): Promise<void>;
|
|
60
|
+
export declare function closePageViaPlaywright(opts: {
|
|
61
|
+
cdpUrl: string;
|
|
62
|
+
targetId?: string;
|
|
63
|
+
}): Promise<void>;
|
|
64
|
+
export declare function pdfViaPlaywright(opts: {
|
|
65
|
+
cdpUrl: string;
|
|
66
|
+
targetId?: string;
|
|
67
|
+
}): Promise<{
|
|
68
|
+
buffer: Buffer;
|
|
69
|
+
}>;
|
|
70
|
+
//# sourceMappingURL=pw-tools-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-snapshot.d.ts","sourceRoot":"","sources":["../../src/browser/pw-tools-snapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,gBAAgB,EAAsC,MAAM,UAAU,CAAC;AACrF,OAAO,EAIL,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AAQ/B,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAkBzC;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAuCvE;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5E,CAAC,CA2DD;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAW3B;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAK9B"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.snapshot.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { formatAriaSnapshot } from "./cdp.js";
|
|
7
|
+
import { buildRoleSnapshotFromAiSnapshot, buildRoleSnapshotFromAriaSnapshot, getRoleSnapshotStats, } from "./pw-role-snapshot.js";
|
|
8
|
+
import { ensurePageState, getPageForTargetId, storeRoleRefsForTarget, } from "./pw-session.js";
|
|
9
|
+
export async function snapshotAriaViaPlaywright(opts) {
|
|
10
|
+
const limit = Math.max(1, Math.min(2000, Math.floor(opts.limit ?? 500)));
|
|
11
|
+
const page = await getPageForTargetId({
|
|
12
|
+
cdpUrl: opts.cdpUrl,
|
|
13
|
+
targetId: opts.targetId,
|
|
14
|
+
});
|
|
15
|
+
ensurePageState(page);
|
|
16
|
+
const session = await page.context().newCDPSession(page);
|
|
17
|
+
try {
|
|
18
|
+
await session.send("Accessibility.enable").catch(() => { });
|
|
19
|
+
const res = (await session.send("Accessibility.getFullAXTree"));
|
|
20
|
+
const nodes = Array.isArray(res?.nodes) ? res.nodes : [];
|
|
21
|
+
return { nodes: formatAriaSnapshot(nodes, limit) };
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
await session.detach().catch(() => { });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function snapshotAiViaPlaywright(opts) {
|
|
28
|
+
const page = await getPageForTargetId({
|
|
29
|
+
cdpUrl: opts.cdpUrl,
|
|
30
|
+
targetId: opts.targetId,
|
|
31
|
+
});
|
|
32
|
+
ensurePageState(page);
|
|
33
|
+
const maybe = page;
|
|
34
|
+
if (!maybe._snapshotForAI) {
|
|
35
|
+
throw new Error("Playwright _snapshotForAI is not available. Upgrade playwright-core.");
|
|
36
|
+
}
|
|
37
|
+
const result = await maybe._snapshotForAI({
|
|
38
|
+
timeout: Math.max(500, Math.min(60_000, Math.floor(opts.timeoutMs ?? 5000))),
|
|
39
|
+
track: "response",
|
|
40
|
+
});
|
|
41
|
+
let snapshot = String(result?.full ?? "");
|
|
42
|
+
const maxChars = opts.maxChars;
|
|
43
|
+
const limit = typeof maxChars === "number" && Number.isFinite(maxChars) && maxChars > 0
|
|
44
|
+
? Math.floor(maxChars)
|
|
45
|
+
: undefined;
|
|
46
|
+
let truncated = false;
|
|
47
|
+
if (limit && snapshot.length > limit) {
|
|
48
|
+
snapshot = `${snapshot.slice(0, limit)}
|
|
49
|
+
|
|
50
|
+
[...TRUNCATED - page too large]`;
|
|
51
|
+
truncated = true;
|
|
52
|
+
}
|
|
53
|
+
const built = buildRoleSnapshotFromAiSnapshot(snapshot);
|
|
54
|
+
storeRoleRefsForTarget({
|
|
55
|
+
page,
|
|
56
|
+
cdpUrl: opts.cdpUrl,
|
|
57
|
+
targetId: opts.targetId,
|
|
58
|
+
refs: built.refs,
|
|
59
|
+
mode: "aria",
|
|
60
|
+
});
|
|
61
|
+
return truncated ? { snapshot, truncated, refs: built.refs } : { snapshot, refs: built.refs };
|
|
62
|
+
}
|
|
63
|
+
export async function snapshotRoleViaPlaywright(opts) {
|
|
64
|
+
const page = await getPageForTargetId({
|
|
65
|
+
cdpUrl: opts.cdpUrl,
|
|
66
|
+
targetId: opts.targetId,
|
|
67
|
+
});
|
|
68
|
+
ensurePageState(page);
|
|
69
|
+
if (opts.refsMode === "aria") {
|
|
70
|
+
if (opts.selector?.trim() || opts.frameSelector?.trim()) {
|
|
71
|
+
throw new Error("refs=aria does not support selector/frame snapshots yet.");
|
|
72
|
+
}
|
|
73
|
+
const maybe = page;
|
|
74
|
+
if (!maybe._snapshotForAI) {
|
|
75
|
+
throw new Error("refs=aria requires Playwright _snapshotForAI support.");
|
|
76
|
+
}
|
|
77
|
+
const result = await maybe._snapshotForAI({
|
|
78
|
+
timeout: 5000,
|
|
79
|
+
track: "response",
|
|
80
|
+
});
|
|
81
|
+
const built = buildRoleSnapshotFromAiSnapshot(String(result?.full ?? ""), opts.options);
|
|
82
|
+
storeRoleRefsForTarget({
|
|
83
|
+
page,
|
|
84
|
+
cdpUrl: opts.cdpUrl,
|
|
85
|
+
targetId: opts.targetId,
|
|
86
|
+
refs: built.refs,
|
|
87
|
+
mode: "aria",
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
snapshot: built.snapshot,
|
|
91
|
+
refs: built.refs,
|
|
92
|
+
stats: getRoleSnapshotStats(built.snapshot, built.refs),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const frameSelector = opts.frameSelector?.trim() || "";
|
|
96
|
+
const selector = opts.selector?.trim() || "";
|
|
97
|
+
const locator = frameSelector
|
|
98
|
+
? selector
|
|
99
|
+
? page.frameLocator(frameSelector).locator(selector)
|
|
100
|
+
: page.frameLocator(frameSelector).locator(":root")
|
|
101
|
+
: selector
|
|
102
|
+
? page.locator(selector)
|
|
103
|
+
: page.locator(":root");
|
|
104
|
+
const ariaSnapshot = await locator.ariaSnapshot();
|
|
105
|
+
const built = buildRoleSnapshotFromAriaSnapshot(String(ariaSnapshot ?? ""), opts.options);
|
|
106
|
+
storeRoleRefsForTarget({
|
|
107
|
+
page,
|
|
108
|
+
cdpUrl: opts.cdpUrl,
|
|
109
|
+
targetId: opts.targetId,
|
|
110
|
+
refs: built.refs,
|
|
111
|
+
frameSelector: frameSelector || undefined,
|
|
112
|
+
mode: "role",
|
|
113
|
+
});
|
|
114
|
+
return {
|
|
115
|
+
snapshot: built.snapshot,
|
|
116
|
+
refs: built.refs,
|
|
117
|
+
stats: getRoleSnapshotStats(built.snapshot, built.refs),
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
export async function navigateViaPlaywright(opts) {
|
|
121
|
+
const url = String(opts.url ?? "").trim();
|
|
122
|
+
if (!url) {
|
|
123
|
+
throw new Error("url is required");
|
|
124
|
+
}
|
|
125
|
+
const page = await getPageForTargetId(opts);
|
|
126
|
+
ensurePageState(page);
|
|
127
|
+
await page.goto(url, {
|
|
128
|
+
timeout: Math.max(1000, Math.min(120_000, opts.timeoutMs ?? 20_000)),
|
|
129
|
+
});
|
|
130
|
+
return { url: page.url() };
|
|
131
|
+
}
|
|
132
|
+
export async function resizeViewportViaPlaywright(opts) {
|
|
133
|
+
const page = await getPageForTargetId(opts);
|
|
134
|
+
ensurePageState(page);
|
|
135
|
+
await page.setViewportSize({
|
|
136
|
+
width: Math.max(1, Math.floor(opts.width)),
|
|
137
|
+
height: Math.max(1, Math.floor(opts.height)),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
export async function closePageViaPlaywright(opts) {
|
|
141
|
+
const page = await getPageForTargetId(opts);
|
|
142
|
+
ensurePageState(page);
|
|
143
|
+
await page.close();
|
|
144
|
+
}
|
|
145
|
+
export async function pdfViaPlaywright(opts) {
|
|
146
|
+
const page = await getPageForTargetId(opts);
|
|
147
|
+
ensurePageState(page);
|
|
148
|
+
const buffer = await page.pdf({ printBackground: true });
|
|
149
|
+
return { buffer };
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=pw-tools-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-snapshot.js","sourceRoot":"","sources":["../../src/browser/pw-tools-snapshot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAyB,kBAAkB,EAAkB,MAAM,UAAU,CAAC;AACrF,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GAEvB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAI/C;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAE7D,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAK7C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,IAAoC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC;QACxC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;QAC5E,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;IACH,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,KAAK,GACT,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtB,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QACrC,QAAQ,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;;gCAEV,CAAC;QAC7B,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;IACxD,sBAAsB,CAAC;QACrB,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAO/C;IAKC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC;QACpC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC,CAAC;IACH,eAAe,CAAC,IAAI,CAAC,CAAC;IAEtB,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,KAAK,GAAG,IAAoC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC;YACxC,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,+BAA+B,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxF,sBAAsB,CAAC;YACrB,IAAI;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;QACH,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;SACxD,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,aAAa;QAC3B,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACrD,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;IAClD,MAAM,KAAK,GAAG,iCAAiC,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1F,sBAAsB,CAAC;QACrB,IAAI;QACJ,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,aAAa,EAAE,aAAa,IAAI,SAAS;QACzC,IAAI,EAAE,MAAM;KACb,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAK3C;IACC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;QACnB,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC;KACrE,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,IAKjD;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAG5C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAGtC;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.state.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
export declare function setOfflineViaPlaywright(opts: {
|
|
7
|
+
cdpUrl: string;
|
|
8
|
+
targetId?: string;
|
|
9
|
+
offline: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
export declare function setExtraHTTPHeadersViaPlaywright(opts: {
|
|
12
|
+
cdpUrl: string;
|
|
13
|
+
targetId?: string;
|
|
14
|
+
headers: Record<string, string>;
|
|
15
|
+
}): Promise<void>;
|
|
16
|
+
export declare function setHttpCredentialsViaPlaywright(opts: {
|
|
17
|
+
cdpUrl: string;
|
|
18
|
+
targetId?: string;
|
|
19
|
+
username?: string;
|
|
20
|
+
password?: string;
|
|
21
|
+
clear?: boolean;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
export declare function setGeolocationViaPlaywright(opts: {
|
|
24
|
+
cdpUrl: string;
|
|
25
|
+
targetId?: string;
|
|
26
|
+
latitude?: number;
|
|
27
|
+
longitude?: number;
|
|
28
|
+
accuracy?: number;
|
|
29
|
+
origin?: string;
|
|
30
|
+
clear?: boolean;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
export declare function emulateMediaViaPlaywright(opts: {
|
|
33
|
+
cdpUrl: string;
|
|
34
|
+
targetId?: string;
|
|
35
|
+
colorScheme: "dark" | "light" | "no-preference" | null;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
export declare function setLocaleViaPlaywright(opts: {
|
|
38
|
+
cdpUrl: string;
|
|
39
|
+
targetId?: string;
|
|
40
|
+
locale: string;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
export declare function setTimezoneViaPlaywright(opts: {
|
|
43
|
+
cdpUrl: string;
|
|
44
|
+
targetId?: string;
|
|
45
|
+
timezoneId: string;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
export declare function setDeviceViaPlaywright(opts: {
|
|
48
|
+
cdpUrl: string;
|
|
49
|
+
targetId?: string;
|
|
50
|
+
name: string;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=pw-tools-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-state.d.ts","sourceRoot":"","sources":["../../src/browser/pw-tools-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,gCAAgC,CAAC,IAAI,EAAE;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,+BAA+B,CAAC,IAAI,EAAE;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,eAAe,GAAG,IAAI,CAAC;CACxD,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDhB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.state.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { devices as playwrightDevices } from "playwright-core";
|
|
7
|
+
import { ensurePageState, getPageForTargetId } from "./pw-session.js";
|
|
8
|
+
async function withCdpSession(page, fn) {
|
|
9
|
+
const session = await page.context().newCDPSession(page);
|
|
10
|
+
try {
|
|
11
|
+
return await fn(session);
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
await session.detach().catch(() => { });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export async function setOfflineViaPlaywright(opts) {
|
|
18
|
+
const page = await getPageForTargetId(opts);
|
|
19
|
+
ensurePageState(page);
|
|
20
|
+
await page.context().setOffline(Boolean(opts.offline));
|
|
21
|
+
}
|
|
22
|
+
export async function setExtraHTTPHeadersViaPlaywright(opts) {
|
|
23
|
+
const page = await getPageForTargetId(opts);
|
|
24
|
+
ensurePageState(page);
|
|
25
|
+
await page.context().setExtraHTTPHeaders(opts.headers);
|
|
26
|
+
}
|
|
27
|
+
export async function setHttpCredentialsViaPlaywright(opts) {
|
|
28
|
+
const page = await getPageForTargetId(opts);
|
|
29
|
+
ensurePageState(page);
|
|
30
|
+
if (opts.clear) {
|
|
31
|
+
await page.context().setHTTPCredentials(null);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const username = String(opts.username ?? "");
|
|
35
|
+
const password = String(opts.password ?? "");
|
|
36
|
+
if (!username) {
|
|
37
|
+
throw new Error("username is required (or set clear=true)");
|
|
38
|
+
}
|
|
39
|
+
await page.context().setHTTPCredentials({ username, password });
|
|
40
|
+
}
|
|
41
|
+
export async function setGeolocationViaPlaywright(opts) {
|
|
42
|
+
const page = await getPageForTargetId(opts);
|
|
43
|
+
ensurePageState(page);
|
|
44
|
+
const context = page.context();
|
|
45
|
+
if (opts.clear) {
|
|
46
|
+
await context.setGeolocation(null);
|
|
47
|
+
await context.clearPermissions().catch(() => { });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (typeof opts.latitude !== "number" || typeof opts.longitude !== "number") {
|
|
51
|
+
throw new Error("latitude and longitude are required (or set clear=true)");
|
|
52
|
+
}
|
|
53
|
+
await context.setGeolocation({
|
|
54
|
+
latitude: opts.latitude,
|
|
55
|
+
longitude: opts.longitude,
|
|
56
|
+
accuracy: typeof opts.accuracy === "number" ? opts.accuracy : undefined,
|
|
57
|
+
});
|
|
58
|
+
const origin = opts.origin?.trim() ||
|
|
59
|
+
(() => {
|
|
60
|
+
try {
|
|
61
|
+
return new URL(page.url()).origin;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return "";
|
|
65
|
+
}
|
|
66
|
+
})();
|
|
67
|
+
if (origin) {
|
|
68
|
+
await context.grantPermissions(["geolocation"], { origin }).catch(() => { });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export async function emulateMediaViaPlaywright(opts) {
|
|
72
|
+
const page = await getPageForTargetId(opts);
|
|
73
|
+
ensurePageState(page);
|
|
74
|
+
await page.emulateMedia({ colorScheme: opts.colorScheme });
|
|
75
|
+
}
|
|
76
|
+
export async function setLocaleViaPlaywright(opts) {
|
|
77
|
+
const page = await getPageForTargetId(opts);
|
|
78
|
+
ensurePageState(page);
|
|
79
|
+
const locale = String(opts.locale ?? "").trim();
|
|
80
|
+
if (!locale) {
|
|
81
|
+
throw new Error("locale is required");
|
|
82
|
+
}
|
|
83
|
+
await withCdpSession(page, async (session) => {
|
|
84
|
+
try {
|
|
85
|
+
await session.send("Emulation.setLocaleOverride", { locale });
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (String(err).includes("Another locale override is already in effect")) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
export async function setTimezoneViaPlaywright(opts) {
|
|
96
|
+
const page = await getPageForTargetId(opts);
|
|
97
|
+
ensurePageState(page);
|
|
98
|
+
const timezoneId = String(opts.timezoneId ?? "").trim();
|
|
99
|
+
if (!timezoneId) {
|
|
100
|
+
throw new Error("timezoneId is required");
|
|
101
|
+
}
|
|
102
|
+
await withCdpSession(page, async (session) => {
|
|
103
|
+
try {
|
|
104
|
+
await session.send("Emulation.setTimezoneOverride", { timezoneId });
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
const msg = String(err);
|
|
108
|
+
if (msg.includes("Timezone override is already in effect")) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
if (msg.includes("Invalid timezone")) {
|
|
112
|
+
throw new Error(`Invalid timezone ID: ${timezoneId}`, { cause: err });
|
|
113
|
+
}
|
|
114
|
+
throw err;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
export async function setDeviceViaPlaywright(opts) {
|
|
119
|
+
const page = await getPageForTargetId(opts);
|
|
120
|
+
ensurePageState(page);
|
|
121
|
+
const name = String(opts.name ?? "").trim();
|
|
122
|
+
if (!name) {
|
|
123
|
+
throw new Error("device name is required");
|
|
124
|
+
}
|
|
125
|
+
const descriptor = playwrightDevices[name];
|
|
126
|
+
if (!descriptor) {
|
|
127
|
+
throw new Error(`Unknown device "${name}".`);
|
|
128
|
+
}
|
|
129
|
+
if (descriptor.viewport) {
|
|
130
|
+
await page.setViewportSize({
|
|
131
|
+
width: descriptor.viewport.width,
|
|
132
|
+
height: descriptor.viewport.height,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
await withCdpSession(page, async (session) => {
|
|
136
|
+
if (descriptor.userAgent || descriptor.locale) {
|
|
137
|
+
await session.send("Emulation.setUserAgentOverride", {
|
|
138
|
+
userAgent: descriptor.userAgent ?? "",
|
|
139
|
+
acceptLanguage: descriptor.locale ?? undefined,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (descriptor.viewport) {
|
|
143
|
+
await session.send("Emulation.setDeviceMetricsOverride", {
|
|
144
|
+
mobile: Boolean(descriptor.isMobile),
|
|
145
|
+
width: descriptor.viewport.width,
|
|
146
|
+
height: descriptor.viewport.height,
|
|
147
|
+
deviceScaleFactor: descriptor.deviceScaleFactor ?? 1,
|
|
148
|
+
screenWidth: descriptor.viewport.width,
|
|
149
|
+
screenHeight: descriptor.viewport.height,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (descriptor.hasTouch) {
|
|
153
|
+
await session.send("Emulation.setTouchEmulationEnabled", {
|
|
154
|
+
enabled: true,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=pw-tools-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-state.js","sourceRoot":"","sources":["../../src/browser/pw-tools-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.storage.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
export declare function cookiesGetViaPlaywright(opts: {
|
|
7
|
+
cdpUrl: string;
|
|
8
|
+
targetId?: string;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
cookies: unknown[];
|
|
11
|
+
}>;
|
|
12
|
+
export declare function cookiesSetViaPlaywright(opts: {
|
|
13
|
+
cdpUrl: string;
|
|
14
|
+
targetId?: string;
|
|
15
|
+
cookie: {
|
|
16
|
+
name: string;
|
|
17
|
+
value: string;
|
|
18
|
+
url?: string;
|
|
19
|
+
domain?: string;
|
|
20
|
+
path?: string;
|
|
21
|
+
expires?: number;
|
|
22
|
+
httpOnly?: boolean;
|
|
23
|
+
secure?: boolean;
|
|
24
|
+
sameSite?: "Lax" | "None" | "Strict";
|
|
25
|
+
};
|
|
26
|
+
}): Promise<void>;
|
|
27
|
+
export declare function cookiesClearViaPlaywright(opts: {
|
|
28
|
+
cdpUrl: string;
|
|
29
|
+
targetId?: string;
|
|
30
|
+
}): Promise<void>;
|
|
31
|
+
type StorageKind = "local" | "session";
|
|
32
|
+
export declare function storageGetViaPlaywright(opts: {
|
|
33
|
+
cdpUrl: string;
|
|
34
|
+
targetId?: string;
|
|
35
|
+
kind: StorageKind;
|
|
36
|
+
key?: string;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
values: Record<string, string>;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function storageSetViaPlaywright(opts: {
|
|
41
|
+
cdpUrl: string;
|
|
42
|
+
targetId?: string;
|
|
43
|
+
kind: StorageKind;
|
|
44
|
+
key: string;
|
|
45
|
+
value: string;
|
|
46
|
+
}): Promise<void>;
|
|
47
|
+
export declare function storageClearViaPlaywright(opts: {
|
|
48
|
+
cdpUrl: string;
|
|
49
|
+
targetId?: string;
|
|
50
|
+
kind: StorageKind;
|
|
51
|
+
}): Promise<void>;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=pw-tools-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-storage.d.ts","sourceRoot":"","sources":["../../src/browser/pw-tools-storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAKlC;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;KACtC,CAAC;CACH,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhB;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB;AAED,KAAK,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAEvC,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA4B9C;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.storage.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { ensurePageState, getPageForTargetId } from "./pw-session.js";
|
|
7
|
+
export async function cookiesGetViaPlaywright(opts) {
|
|
8
|
+
const page = await getPageForTargetId(opts);
|
|
9
|
+
ensurePageState(page);
|
|
10
|
+
const cookies = await page.context().cookies();
|
|
11
|
+
return { cookies };
|
|
12
|
+
}
|
|
13
|
+
export async function cookiesSetViaPlaywright(opts) {
|
|
14
|
+
const page = await getPageForTargetId(opts);
|
|
15
|
+
ensurePageState(page);
|
|
16
|
+
const cookie = opts.cookie;
|
|
17
|
+
if (!cookie.name || cookie.value === undefined) {
|
|
18
|
+
throw new Error("cookie name and value are required");
|
|
19
|
+
}
|
|
20
|
+
const hasUrl = typeof cookie.url === "string" && cookie.url.trim();
|
|
21
|
+
const hasDomainPath = typeof cookie.domain === "string" &&
|
|
22
|
+
cookie.domain.trim() &&
|
|
23
|
+
typeof cookie.path === "string" &&
|
|
24
|
+
cookie.path.trim();
|
|
25
|
+
if (!hasUrl && !hasDomainPath) {
|
|
26
|
+
throw new Error("cookie requires url, or domain+path");
|
|
27
|
+
}
|
|
28
|
+
await page.context().addCookies([cookie]);
|
|
29
|
+
}
|
|
30
|
+
export async function cookiesClearViaPlaywright(opts) {
|
|
31
|
+
const page = await getPageForTargetId(opts);
|
|
32
|
+
ensurePageState(page);
|
|
33
|
+
await page.context().clearCookies();
|
|
34
|
+
}
|
|
35
|
+
export async function storageGetViaPlaywright(opts) {
|
|
36
|
+
const page = await getPageForTargetId(opts);
|
|
37
|
+
ensurePageState(page);
|
|
38
|
+
const kind = opts.kind;
|
|
39
|
+
const key = typeof opts.key === "string" ? opts.key : undefined;
|
|
40
|
+
const values = await page.evaluate(({ kind: kind2, key: key2 }) => {
|
|
41
|
+
const store = kind2 === "session" ? window.sessionStorage : window.localStorage;
|
|
42
|
+
if (key2) {
|
|
43
|
+
const value = store.getItem(key2);
|
|
44
|
+
return value === null ? {} : { [key2]: value };
|
|
45
|
+
}
|
|
46
|
+
const out = {};
|
|
47
|
+
for (let i = 0; i < store.length; i += 1) {
|
|
48
|
+
const k = store.key(i);
|
|
49
|
+
if (!k) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
const v = store.getItem(k);
|
|
53
|
+
if (v !== null) {
|
|
54
|
+
out[k] = v;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return out;
|
|
58
|
+
}, { kind, key });
|
|
59
|
+
return { values: values ?? {} };
|
|
60
|
+
}
|
|
61
|
+
export async function storageSetViaPlaywright(opts) {
|
|
62
|
+
const page = await getPageForTargetId(opts);
|
|
63
|
+
ensurePageState(page);
|
|
64
|
+
const key = String(opts.key ?? "");
|
|
65
|
+
if (!key) {
|
|
66
|
+
throw new Error("key is required");
|
|
67
|
+
}
|
|
68
|
+
await page.evaluate(({ kind, key: k, value }) => {
|
|
69
|
+
const store = kind === "session" ? window.sessionStorage : window.localStorage;
|
|
70
|
+
store.setItem(k, value);
|
|
71
|
+
}, { kind: opts.kind, key, value: String(opts.value ?? "") });
|
|
72
|
+
}
|
|
73
|
+
export async function storageClearViaPlaywright(opts) {
|
|
74
|
+
const page = await getPageForTargetId(opts);
|
|
75
|
+
ensurePageState(page);
|
|
76
|
+
await page.evaluate(({ kind }) => {
|
|
77
|
+
const store = kind === "session" ? window.sessionStorage : window.localStorage;
|
|
78
|
+
store.clear();
|
|
79
|
+
}, { kind: opts.kind });
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=pw-tools-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-storage.js","sourceRoot":"","sources":["../../src/browser/pw-tools-storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAG7C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAc7C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACnE,MAAM,aAAa,GACjB,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;QACpB,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAG/C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,CAAC;AACtC,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAK7C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAChC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAChF,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;QACjD,CAAC;QACD,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,SAAS;YACX,CAAC;YACD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAE,IAAI,EAAE,GAAG,EAAE,CACd,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAM7C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAC1D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAI/C;IACC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,CAAC,QAAQ,CACjB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAC/E,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CACpB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracted from OpenClaw (https://github.com/openclaw/openclaw)
|
|
3
|
+
* Original: src/browser/pw-tools-core.trace.ts
|
|
4
|
+
* License: MIT
|
|
5
|
+
*/
|
|
6
|
+
export declare function traceStartViaPlaywright(opts: {
|
|
7
|
+
cdpUrl: string;
|
|
8
|
+
targetId?: string;
|
|
9
|
+
screenshots?: boolean;
|
|
10
|
+
snapshots?: boolean;
|
|
11
|
+
sources?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
export declare function traceStopViaPlaywright(opts: {
|
|
14
|
+
cdpUrl: string;
|
|
15
|
+
targetId?: string;
|
|
16
|
+
path: string;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=pw-tools-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pw-tools-trace.d.ts","sourceRoot":"","sources":["../../src/browser/pw-tools-trace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAShB"}
|