@midscene/web 1.15.4-beta-20261013090705.0 → 1.15.4
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/es/agent-tools-puppeteer.mjs +2 -3
- package/dist/es/agent-tools-puppeteer.mjs.map +1 -1
- package/dist/es/bridge-mode/io-client.mjs +1 -1
- package/dist/es/bridge-mode/io-server.mjs +2 -2
- package/dist/es/bridge-mode/io-server.mjs.map +1 -1
- package/dist/es/bridge-mode/page-browser-side.mjs +1 -1
- package/dist/es/bridge-mode/page-browser-side.mjs.map +1 -1
- package/dist/es/cli.mjs +1 -1
- package/dist/es/playwright/test-runner/agent-nodes.mjs +10 -3
- package/dist/es/playwright/test-runner/agent-nodes.mjs.map +1 -1
- package/dist/es/playwright/test-runner/clear-cookies.mjs +45 -0
- package/dist/es/playwright/test-runner/clear-cookies.mjs.map +1 -0
- package/dist/es/{common → playwright}/test-runner/cookies.mjs +79 -56
- package/dist/es/playwright/test-runner/cookies.mjs.map +1 -0
- package/dist/es/playwright/test-runner/goto-url.mjs +60 -0
- package/dist/es/playwright/test-runner/goto-url.mjs.map +1 -0
- package/dist/es/playwright/test-runner/index.mjs +4 -1
- package/dist/es/playwright/test-runner/utils.mjs +21 -1
- package/dist/es/playwright/test-runner/utils.mjs.map +1 -1
- package/dist/es/playwright/test-runner/viewport.mjs +35 -0
- package/dist/es/playwright/test-runner/viewport.mjs.map +1 -0
- package/dist/es/puppeteer/browser-agent.mjs +1 -9
- package/dist/es/puppeteer/browser-agent.mjs.map +1 -1
- package/dist/es/puppeteer/page-agent.mjs +1 -19
- package/dist/es/puppeteer/page-agent.mjs.map +1 -1
- package/dist/lib/agent-tools-puppeteer.js +2 -3
- package/dist/lib/agent-tools-puppeteer.js.map +1 -1
- package/dist/lib/bridge-mode/io-client.js +1 -1
- package/dist/lib/bridge-mode/io-server.js +2 -2
- package/dist/lib/bridge-mode/io-server.js.map +1 -1
- package/dist/lib/bridge-mode/page-browser-side.js +1 -1
- package/dist/lib/bridge-mode/page-browser-side.js.map +1 -1
- package/dist/lib/cli.js +1 -1
- package/dist/lib/playwright/test-runner/agent-nodes.js +10 -3
- package/dist/lib/playwright/test-runner/agent-nodes.js.map +1 -1
- package/dist/lib/playwright/test-runner/clear-cookies.js +82 -0
- package/dist/lib/playwright/test-runner/clear-cookies.js.map +1 -0
- package/dist/lib/{common → playwright}/test-runner/cookies.js +81 -58
- package/dist/lib/playwright/test-runner/cookies.js.map +1 -0
- package/dist/lib/playwright/test-runner/goto-url.js +97 -0
- package/dist/lib/playwright/test-runner/goto-url.js.map +1 -0
- package/dist/lib/playwright/test-runner/index.js +8 -5
- package/dist/lib/playwright/test-runner/utils.js +24 -4
- package/dist/lib/playwright/test-runner/utils.js.map +1 -1
- package/dist/lib/playwright/test-runner/viewport.js +72 -0
- package/dist/lib/playwright/test-runner/viewport.js.map +1 -0
- package/dist/lib/puppeteer/browser-agent.js +1 -9
- package/dist/lib/puppeteer/browser-agent.js.map +1 -1
- package/dist/lib/puppeteer/page-agent.js +1 -19
- package/dist/lib/puppeteer/page-agent.js.map +1 -1
- package/dist/types/agent-tools-puppeteer.d.ts.map +1 -1
- package/dist/types/playwright/test-runner/agent-nodes.d.ts +2 -1
- package/dist/types/playwright/test-runner/agent-nodes.d.ts.map +1 -1
- package/dist/types/playwright/test-runner/clear-cookies.d.ts +17 -0
- package/dist/types/playwright/test-runner/clear-cookies.d.ts.map +1 -0
- package/dist/types/playwright/test-runner/cookies.d.ts +33 -0
- package/dist/types/playwright/test-runner/cookies.d.ts.map +1 -0
- package/dist/types/playwright/test-runner/goto-url.d.ts +26 -0
- package/dist/types/playwright/test-runner/goto-url.d.ts.map +1 -0
- package/dist/types/playwright/test-runner/index.d.ts +8 -2
- package/dist/types/playwright/test-runner/index.d.ts.map +1 -1
- package/dist/types/playwright/test-runner/types.d.ts +14 -5
- package/dist/types/playwright/test-runner/types.d.ts.map +1 -1
- package/dist/types/playwright/test-runner/utils.d.ts +2 -1
- package/dist/types/playwright/test-runner/utils.d.ts.map +1 -1
- package/dist/types/playwright/test-runner/viewport.d.ts +14 -0
- package/dist/types/playwright/test-runner/viewport.d.ts.map +1 -0
- package/dist/types/puppeteer/browser-agent.d.ts +0 -5
- package/dist/types/puppeteer/browser-agent.d.ts.map +1 -1
- package/dist/types/puppeteer/index.d.ts +1 -1
- package/dist/types/puppeteer/index.d.ts.map +1 -1
- package/dist/types/puppeteer/page-agent.d.ts +1 -8
- package/dist/types/puppeteer/page-agent.d.ts.map +1 -1
- package/package.json +4 -9
- package/dist/es/common/persistent-puppeteer-viewport.mjs +0 -27
- package/dist/es/common/persistent-puppeteer-viewport.mjs.map +0 -1
- package/dist/es/common/test-runner/cookies.mjs.map +0 -1
- package/dist/es/common/test-runner/driver.mjs +0 -0
- package/dist/es/common/test-runner/nodes.mjs +0 -139
- package/dist/es/common/test-runner/nodes.mjs.map +0 -1
- package/dist/es/common/test-runner/utils.mjs +0 -24
- package/dist/es/common/test-runner/utils.mjs.map +0 -1
- package/dist/es/playwright/test-runner/driver.mjs +0 -42
- package/dist/es/playwright/test-runner/driver.mjs.map +0 -1
- package/dist/es/puppeteer/test-runner/agent-nodes.mjs +0 -6
- package/dist/es/puppeteer/test-runner/agent-nodes.mjs.map +0 -1
- package/dist/es/puppeteer/test-runner/driver.mjs +0 -44
- package/dist/es/puppeteer/test-runner/driver.mjs.map +0 -1
- package/dist/es/puppeteer/test-runner/index.mjs +0 -3
- package/dist/es/puppeteer/test-runner/types.mjs +0 -0
- package/dist/es/puppeteer/test-runner/utils.mjs +0 -8
- package/dist/es/puppeteer/test-runner/utils.mjs.map +0 -1
- package/dist/lib/common/persistent-puppeteer-viewport.js +0 -61
- package/dist/lib/common/persistent-puppeteer-viewport.js.map +0 -1
- package/dist/lib/common/test-runner/cookies.js.map +0 -1
- package/dist/lib/common/test-runner/driver.js +0 -20
- package/dist/lib/common/test-runner/driver.js.map +0 -1
- package/dist/lib/common/test-runner/nodes.js +0 -185
- package/dist/lib/common/test-runner/nodes.js.map +0 -1
- package/dist/lib/common/test-runner/utils.js +0 -61
- package/dist/lib/common/test-runner/utils.js.map +0 -1
- package/dist/lib/playwright/test-runner/driver.js +0 -76
- package/dist/lib/playwright/test-runner/driver.js.map +0 -1
- package/dist/lib/puppeteer/test-runner/agent-nodes.js +0 -40
- package/dist/lib/puppeteer/test-runner/agent-nodes.js.map +0 -1
- package/dist/lib/puppeteer/test-runner/driver.js +0 -78
- package/dist/lib/puppeteer/test-runner/driver.js.map +0 -1
- package/dist/lib/puppeteer/test-runner/index.js +0 -51
- package/dist/lib/puppeteer/test-runner/index.js.map +0 -1
- package/dist/lib/puppeteer/test-runner/types.js +0 -20
- package/dist/lib/puppeteer/test-runner/types.js.map +0 -1
- package/dist/lib/puppeteer/test-runner/utils.js +0 -48
- package/dist/lib/puppeteer/test-runner/utils.js.map +0 -1
- package/dist/types/common/persistent-puppeteer-viewport.d.ts +0 -5
- package/dist/types/common/persistent-puppeteer-viewport.d.ts.map +0 -1
- package/dist/types/common/test-runner/cookies.d.ts +0 -52
- package/dist/types/common/test-runner/cookies.d.ts.map +0 -1
- package/dist/types/common/test-runner/driver.d.ts +0 -38
- package/dist/types/common/test-runner/driver.d.ts.map +0 -1
- package/dist/types/common/test-runner/nodes.d.ts +0 -38
- package/dist/types/common/test-runner/nodes.d.ts.map +0 -1
- package/dist/types/common/test-runner/utils.d.ts +0 -3
- package/dist/types/common/test-runner/utils.d.ts.map +0 -1
- package/dist/types/playwright/test-runner/driver.d.ts +0 -4
- package/dist/types/playwright/test-runner/driver.d.ts.map +0 -1
- package/dist/types/puppeteer/test-runner/agent-nodes.d.ts +0 -2
- package/dist/types/puppeteer/test-runner/agent-nodes.d.ts.map +0 -1
- package/dist/types/puppeteer/test-runner/driver.d.ts +0 -4
- package/dist/types/puppeteer/test-runner/driver.d.ts.map +0 -1
- package/dist/types/puppeteer/test-runner/index.d.ts +0 -5
- package/dist/types/puppeteer/test-runner/index.d.ts.map +0 -1
- package/dist/types/puppeteer/test-runner/types.d.ts +0 -18
- package/dist/types/puppeteer/test-runner/types.d.ts.map +0 -1
- package/dist/types/puppeteer/test-runner/utils.d.ts +0 -4
- package/dist/types/puppeteer/test-runner/utils.d.ts.map +0 -1
|
@@ -24,7 +24,7 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
27
|
+
setCookiesNode: ()=>setCookiesNode,
|
|
28
28
|
setCookiesInputSchema: ()=>setCookiesInputSchema
|
|
29
29
|
});
|
|
30
30
|
const promises_namespaceObject = require("node:fs/promises");
|
|
@@ -32,9 +32,9 @@ const external_node_path_namespaceObject = require("node:path");
|
|
|
32
32
|
const v4_namespaceObject = require("zod/v4");
|
|
33
33
|
const external_utils_js_namespaceObject = require("./utils.js");
|
|
34
34
|
const setCookiesInputSchema = v4_namespaceObject.z.strictObject({
|
|
35
|
-
cookiesEnv: v4_namespaceObject.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).optional().describe('The environment variable containing a Cookie header, cookie array JSON, or
|
|
35
|
+
cookiesEnv: v4_namespaceObject.z.string().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).optional().describe('The environment variable containing a Cookie header, cookie array JSON, or Playwright storage-state JSON.'),
|
|
36
36
|
profile: v4_namespaceObject.z.string().regex(/\S/).optional().describe('A cookie profile resolved by getCookieProfile().'),
|
|
37
|
-
storageStatePath: v4_namespaceObject.z.string().regex(/\S/).optional().describe('A path to a
|
|
37
|
+
storageStatePath: v4_namespaceObject.z.string().regex(/\S/).optional().describe('A path to a Playwright storage-state JSON file.'),
|
|
38
38
|
url: v4_namespaceObject.z.string().url().optional().describe('The HTTP(S) URL used to scope Cookie-header values or cookies without domain/path.')
|
|
39
39
|
}).superRefine((input, ctx)=>{
|
|
40
40
|
const sourceCount = [
|
|
@@ -86,33 +86,7 @@ const parseCookieJson = (raw)=>{
|
|
|
86
86
|
throw new TypeError('setCookies source must contain valid JSON or a Cookie header.');
|
|
87
87
|
}
|
|
88
88
|
};
|
|
89
|
-
const
|
|
90
|
-
if (!candidate || 'object' != typeof candidate || Array.isArray(candidate)) throw new TypeError(`setCookies cookie at index ${index} must be an object.`);
|
|
91
|
-
const cookie = candidate;
|
|
92
|
-
if ('string' != typeof cookie.name || !cookie.name.trim()) throw new TypeError(`setCookies cookie at index ${index} requires a non-blank name.`);
|
|
93
|
-
if ('string' != typeof cookie.value) throw new TypeError(`setCookies cookie at index ${index} requires a string value.`);
|
|
94
|
-
const normalized = {
|
|
95
|
-
...cookie
|
|
96
|
-
};
|
|
97
|
-
const hasUrl = 'string' == typeof cookie.url && cookie.url.length > 0;
|
|
98
|
-
const hasDomain = 'string' == typeof cookie.domain && cookie.domain.length > 0;
|
|
99
|
-
if (!hasUrl && !hasDomain) {
|
|
100
|
-
if (void 0 === defaultUrl) throw new TypeError(`setCookies cookie at index ${index} requires url or domain, or setCookies.url must be provided.`);
|
|
101
|
-
normalized.url = defaultUrl;
|
|
102
|
-
}
|
|
103
|
-
if (hasDomain && 'string' != typeof cookie.path) normalized.path = '/';
|
|
104
|
-
return normalized;
|
|
105
|
-
};
|
|
106
|
-
const normalizeCookies = (source, defaultUrl)=>{
|
|
107
|
-
const candidates = Array.isArray(source) ? source : source && 'object' == typeof source && Array.isArray(source.cookies) ? source.cookies : void 0;
|
|
108
|
-
if (!candidates) throw new TypeError('setCookies JSON must be a cookie array or an object with a cookies array.');
|
|
109
|
-
if (0 === candidates.length) throw new TypeError('setCookies source contains no cookies.');
|
|
110
|
-
return candidates.map((cookie, index)=>normalizeCookie(cookie, defaultUrl, index));
|
|
111
|
-
};
|
|
112
|
-
const resolveCookieInput = async (input, ctx, options)=>{
|
|
113
|
-
const defaultUrl = void 0 === input.url ? void 0 : (0, external_utils_js_namespaceObject.resolveWebUrl)(input.url, void 0, 'setCookies.url');
|
|
114
|
-
const reference = toCookieSourceReference(input);
|
|
115
|
-
let source;
|
|
89
|
+
const resolveCookieSource = async (reference, defaultUrl, ctx, options)=>{
|
|
116
90
|
switch(reference.kind){
|
|
117
91
|
case 'env':
|
|
118
92
|
{
|
|
@@ -125,49 +99,98 @@ const resolveCookieInput = async (input, ctx, options)=>{
|
|
|
125
99
|
const raw = env[reference.name];
|
|
126
100
|
if (!raw?.trim()) throw new Error(`Environment variable ${reference.name} is missing or blank.`);
|
|
127
101
|
const trimmed = raw.trim();
|
|
128
|
-
|
|
129
|
-
|
|
102
|
+
return {
|
|
103
|
+
reference,
|
|
104
|
+
cookies: /^[\[{]/.test(trimmed) ? parseCookieJson(trimmed) : parseCookieHeader(trimmed, defaultUrl)
|
|
105
|
+
};
|
|
130
106
|
}
|
|
131
107
|
case 'profile':
|
|
132
108
|
if (!options.getCookieProfile) throw new Error('setCookies.profile requires a configured getCookieProfile callback.');
|
|
133
109
|
try {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
110
|
+
return {
|
|
111
|
+
reference,
|
|
112
|
+
cookies: await options.getCookieProfile({
|
|
113
|
+
profile: reference.name,
|
|
114
|
+
context: ctx.context,
|
|
115
|
+
signal: ctx.signal
|
|
116
|
+
})
|
|
117
|
+
};
|
|
139
118
|
} catch {
|
|
140
119
|
throw new Error(`Failed to resolve cookie profile ${reference.name}; the original error was redacted because it may contain cookie values.`);
|
|
141
120
|
}
|
|
142
|
-
break;
|
|
143
121
|
case 'storage-state':
|
|
144
122
|
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
throw new Error(`Failed to read cookie storage state ${reference.name}; the original error was redacted because it may contain cookie values.`);
|
|
151
|
-
}
|
|
152
|
-
source = parseCookieJson(contents);
|
|
153
|
-
break;
|
|
123
|
+
const path = options.resolveStorageStatePath ? await options.resolveStorageStatePath(reference.name, ctx) : (0, external_node_path_namespaceObject.resolve)(process.cwd(), reference.name);
|
|
124
|
+
return {
|
|
125
|
+
reference,
|
|
126
|
+
cookies: parseCookieJson(await (0, promises_namespaceObject.readFile)(path, 'utf8'))
|
|
127
|
+
};
|
|
154
128
|
}
|
|
155
129
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
130
|
+
};
|
|
131
|
+
const normalizeCookie = (candidate, defaultUrl, index)=>{
|
|
132
|
+
if (!candidate || 'object' != typeof candidate || Array.isArray(candidate)) throw new TypeError(`setCookies cookie at index ${index} must be an object.`);
|
|
133
|
+
const cookie = candidate;
|
|
134
|
+
if ('string' != typeof cookie.name || !cookie.name.trim()) throw new TypeError(`setCookies cookie at index ${index} requires a non-blank name.`);
|
|
135
|
+
if ('string' != typeof cookie.value) throw new TypeError(`setCookies cookie at index ${index} requires a string value.`);
|
|
136
|
+
const normalized = {
|
|
137
|
+
...cookie
|
|
164
138
|
};
|
|
139
|
+
const hasUrl = 'string' == typeof cookie.url && cookie.url.length > 0;
|
|
140
|
+
const hasDomain = 'string' == typeof cookie.domain && cookie.domain.length > 0;
|
|
141
|
+
if (!hasUrl && !hasDomain) {
|
|
142
|
+
if (void 0 === defaultUrl) throw new TypeError(`setCookies cookie at index ${index} requires url or domain, or setCookies.url must be provided.`);
|
|
143
|
+
normalized.url = defaultUrl;
|
|
144
|
+
}
|
|
145
|
+
if (hasDomain && 'string' != typeof cookie.path) normalized.path = '/';
|
|
146
|
+
return normalized;
|
|
147
|
+
};
|
|
148
|
+
const normalizeCookies = (source, defaultUrl)=>{
|
|
149
|
+
const candidates = Array.isArray(source) ? source : source && 'object' == typeof source && Array.isArray(source.cookies) ? source.cookies : void 0;
|
|
150
|
+
if (!candidates) throw new TypeError('setCookies JSON must be a cookie array or an object with a cookies array.');
|
|
151
|
+
if (0 === candidates.length) throw new TypeError('setCookies source contains no cookies.');
|
|
152
|
+
return candidates.map((cookie, index)=>normalizeCookie(cookie, defaultUrl, index));
|
|
153
|
+
};
|
|
154
|
+
const setCookiesNode = {
|
|
155
|
+
name: 'setCookies',
|
|
156
|
+
title: 'Set browser cookies',
|
|
157
|
+
description: 'Load cookies from an environment variable, configured profile, or Playwright storage-state file without persisting cookie values in workflow input or output.',
|
|
158
|
+
stringInputKey: false,
|
|
159
|
+
inputSchema: setCookiesInputSchema,
|
|
160
|
+
async execute (agent, input, executionContext) {
|
|
161
|
+
const ctx = {
|
|
162
|
+
...executionContext,
|
|
163
|
+
input,
|
|
164
|
+
context: (0, external_utils_js_namespaceObject.requirePlaywrightAgent)(agent)
|
|
165
|
+
};
|
|
166
|
+
(0, external_utils_js_namespaceObject.throwIfAborted)(ctx.signal, 'setCookies');
|
|
167
|
+
const page = ctx.context.interface.underlyingPage;
|
|
168
|
+
const defaultUrl = void 0 === ctx.input.url ? void 0 : (0, external_utils_js_namespaceObject.resolveWebUrl)(ctx.input.url, void 0, 'setCookies.url');
|
|
169
|
+
const reference = toCookieSourceReference(ctx.input);
|
|
170
|
+
const resolved = await resolveCookieSource(reference, defaultUrl, ctx, ctx.context.testRunner ?? {});
|
|
171
|
+
const cookies = normalizeCookies(resolved.cookies, defaultUrl);
|
|
172
|
+
(0, external_utils_js_namespaceObject.throwIfAborted)(ctx.signal, 'setCookies');
|
|
173
|
+
try {
|
|
174
|
+
await page.context().addCookies(cookies);
|
|
175
|
+
} catch {
|
|
176
|
+
throw new Error(`Failed to set ${cookies.length} browser cookie(s); the browser error was redacted because it may contain cookie values.`);
|
|
177
|
+
}
|
|
178
|
+
const result = {
|
|
179
|
+
source: resolved.reference.kind,
|
|
180
|
+
sourceName: resolved.reference.name,
|
|
181
|
+
count: cookies.length
|
|
182
|
+
};
|
|
183
|
+
return {
|
|
184
|
+
summary: `Set ${result.count} browser cookie(s) from ${result.source} source ${result.sourceName}`,
|
|
185
|
+
data: result
|
|
186
|
+
};
|
|
187
|
+
}
|
|
165
188
|
};
|
|
166
|
-
exports.resolveCookieInput = __webpack_exports__.resolveCookieInput;
|
|
167
189
|
exports.setCookiesInputSchema = __webpack_exports__.setCookiesInputSchema;
|
|
190
|
+
exports.setCookiesNode = __webpack_exports__.setCookiesNode;
|
|
168
191
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
169
|
-
"
|
|
170
|
-
"
|
|
192
|
+
"setCookiesInputSchema",
|
|
193
|
+
"setCookiesNode"
|
|
171
194
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
172
195
|
Object.defineProperty(exports, '__esModule', {
|
|
173
196
|
value: true
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright/test-runner/cookies.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/playwright/test-runner/cookies.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { readFile } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport type { AgentTestRunnerNodeDefinition } from '@midscene/core/agent';\nimport { z } from 'zod/v4';\nimport type {\n PlaywrightCookie,\n PlaywrightNodeContext,\n PlaywrightTestRunnerAgent,\n PlaywrightTestRunnerOptions,\n} from './types';\nimport { requirePlaywrightAgent, resolveWebUrl, throwIfAborted } from './utils';\n\ntype CookieSourceReference =\n | { kind: 'env'; name: string }\n | { kind: 'profile'; name: string }\n | { kind: 'storage-state'; name: string };\n\ninterface ResolvedCookieSource {\n reference: CookieSourceReference;\n cookies: unknown;\n}\n\n/** Input schema for the Playwright setCookies Node. */\nexport const setCookiesInputSchema = z\n .strictObject({\n cookiesEnv: z\n .string()\n .regex(/^[A-Za-z_][A-Za-z0-9_]*$/)\n .optional()\n .describe(\n 'The environment variable containing a Cookie header, cookie array JSON, or Playwright storage-state JSON.',\n ),\n profile: z\n .string()\n .regex(/\\S/)\n .optional()\n .describe('A cookie profile resolved by getCookieProfile().'),\n storageStatePath: z\n .string()\n .regex(/\\S/)\n .optional()\n .describe('A path to a Playwright storage-state JSON file.'),\n url: z\n .string()\n .url()\n .optional()\n .describe(\n 'The HTTP(S) URL used to scope Cookie-header values or cookies without domain/path.',\n ),\n })\n .superRefine((input, ctx) => {\n const sourceCount = [\n input.cookiesEnv,\n input.profile,\n input.storageStatePath,\n ].filter((value) => value !== undefined).length;\n if (sourceCount !== 1) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'exactly one of cookiesEnv, profile, and storageStatePath is required',\n });\n }\n });\n\n/** Validated input accepted by the Playwright setCookies Node. */\nexport type SetCookiesNodeInput = z.infer<typeof setCookiesInputSchema>;\n\n/** Secret-free metadata returned by the Playwright setCookies Node. */\nexport interface SetCookiesNodeResult {\n /** Kind of configured reference used to resolve the cookies. */\n source: CookieSourceReference['kind'];\n /** Environment variable, profile, or storage-state reference name. */\n sourceName: string;\n /** Number of cookies passed to the BrowserContext. */\n count: number;\n}\n\nconst toCookieSourceReference = (\n input: SetCookiesNodeInput,\n): CookieSourceReference => {\n if (input.cookiesEnv !== undefined) {\n return { kind: 'env', name: input.cookiesEnv };\n }\n if (input.profile !== undefined) {\n return { kind: 'profile', name: input.profile };\n }\n if (input.storageStatePath !== undefined) {\n return { kind: 'storage-state', name: input.storageStatePath };\n }\n throw new TypeError('setCookies requires one cookie source.');\n};\n\nconst parseCookieHeader = (raw: string, url: string | undefined) => {\n if (url === undefined) {\n throw new TypeError(\n 'setCookies.url is required when cookiesEnv contains a Cookie header.',\n );\n }\n const segments = raw\n .split(';')\n .map((segment) => segment.trim())\n .filter(Boolean);\n if (segments.length === 0) {\n throw new TypeError('setCookies Cookie header contains no cookies.');\n }\n return segments.map((segment) => {\n const separator = segment.indexOf('=');\n if (separator <= 0) {\n throw new TypeError(\n 'setCookies Cookie header contains an invalid name/value pair.',\n );\n }\n const name = segment.slice(0, separator).trim();\n const value = segment.slice(separator + 1).trim();\n if (!name) {\n throw new TypeError('setCookies Cookie header contains an empty name.');\n }\n return { name, value, url } satisfies PlaywrightCookie;\n });\n};\n\nconst parseCookieJson = (raw: string): unknown => {\n try {\n return JSON.parse(raw);\n } catch {\n throw new TypeError(\n 'setCookies source must contain valid JSON or a Cookie header.',\n );\n }\n};\n\nconst resolveCookieSource = async (\n reference: CookieSourceReference,\n defaultUrl: string | undefined,\n ctx: PlaywrightNodeContext<PlaywrightTestRunnerAgent>,\n options: PlaywrightTestRunnerOptions,\n): Promise<ResolvedCookieSource> => {\n switch (reference.kind) {\n case 'env': {\n let env: Readonly<Record<string, string | undefined>>;\n try {\n env = (await options.getEnv?.(ctx)) ?? process.env;\n } catch {\n throw new Error(\n `Failed to resolve cookie environment ${reference.name}; the original error was redacted because it may contain cookie values.`,\n );\n }\n const raw = env[reference.name];\n if (!raw?.trim()) {\n throw new Error(\n `Environment variable ${reference.name} is missing or blank.`,\n );\n }\n const trimmed = raw.trim();\n return {\n reference,\n cookies: /^[\\[{]/.test(trimmed)\n ? parseCookieJson(trimmed)\n : parseCookieHeader(trimmed, defaultUrl),\n };\n }\n case 'profile': {\n if (!options.getCookieProfile) {\n throw new Error(\n 'setCookies.profile requires a configured getCookieProfile callback.',\n );\n }\n try {\n return {\n reference,\n cookies: await options.getCookieProfile({\n profile: reference.name,\n context: ctx.context,\n signal: ctx.signal,\n }),\n };\n } catch {\n throw new Error(\n `Failed to resolve cookie profile ${reference.name}; the original error was redacted because it may contain cookie values.`,\n );\n }\n }\n case 'storage-state': {\n const path = options.resolveStorageStatePath\n ? await options.resolveStorageStatePath(reference.name, ctx)\n : resolve(process.cwd(), reference.name);\n return {\n reference,\n cookies: parseCookieJson(await readFile(path, 'utf8')),\n };\n }\n }\n};\n\nconst normalizeCookie = (\n candidate: unknown,\n defaultUrl: string | undefined,\n index: number,\n): PlaywrightCookie => {\n if (!candidate || typeof candidate !== 'object' || Array.isArray(candidate)) {\n throw new TypeError(\n `setCookies cookie at index ${index} must be an object.`,\n );\n }\n const cookie = candidate as Record<string, unknown>;\n if (typeof cookie.name !== 'string' || !cookie.name.trim()) {\n throw new TypeError(\n `setCookies cookie at index ${index} requires a non-blank name.`,\n );\n }\n if (typeof cookie.value !== 'string') {\n throw new TypeError(\n `setCookies cookie at index ${index} requires a string value.`,\n );\n }\n\n const normalized = { ...cookie } as unknown as PlaywrightCookie;\n const hasUrl = typeof cookie.url === 'string' && cookie.url.length > 0;\n const hasDomain =\n typeof cookie.domain === 'string' && cookie.domain.length > 0;\n if (!hasUrl && !hasDomain) {\n if (defaultUrl === undefined) {\n throw new TypeError(\n `setCookies cookie at index ${index} requires url or domain, or setCookies.url must be provided.`,\n );\n }\n normalized.url = defaultUrl;\n }\n if (hasDomain && typeof cookie.path !== 'string') {\n normalized.path = '/';\n }\n return normalized;\n};\n\nconst normalizeCookies = (\n source: unknown,\n defaultUrl: string | undefined,\n): PlaywrightCookie[] => {\n const candidates = Array.isArray(source)\n ? source\n : source &&\n typeof source === 'object' &&\n Array.isArray((source as { cookies?: unknown }).cookies)\n ? (source as { cookies: unknown[] }).cookies\n : undefined;\n if (!candidates) {\n throw new TypeError(\n 'setCookies JSON must be a cookie array or an object with a cookies array.',\n );\n }\n if (candidates.length === 0) {\n throw new TypeError('setCookies source contains no cookies.');\n }\n return candidates.map((cookie, index) =>\n normalizeCookie(cookie, defaultUrl, index),\n );\n};\n\nexport const setCookiesNode: AgentTestRunnerNodeDefinition<\n z.output<typeof setCookiesInputSchema>,\n SetCookiesNodeResult\n> = {\n name: 'setCookies',\n title: 'Set browser cookies',\n description:\n 'Load cookies from an environment variable, configured profile, or Playwright storage-state file without persisting cookie values in workflow input or output.',\n stringInputKey: false,\n inputSchema: setCookiesInputSchema,\n async execute(agent, input, executionContext) {\n const ctx = {\n ...executionContext,\n input,\n context: requirePlaywrightAgent(agent),\n };\n throwIfAborted(ctx.signal, 'setCookies');\n const page = ctx.context.interface.underlyingPage;\n const defaultUrl =\n ctx.input.url === undefined\n ? undefined\n : resolveWebUrl(ctx.input.url, undefined, 'setCookies.url');\n const reference = toCookieSourceReference(ctx.input);\n const resolved = await resolveCookieSource(\n reference,\n defaultUrl,\n ctx,\n ctx.context.testRunner ?? {},\n );\n const cookies = normalizeCookies(resolved.cookies, defaultUrl);\n\n throwIfAborted(ctx.signal, 'setCookies');\n try {\n await page.context().addCookies(cookies);\n } catch {\n throw new Error(\n `Failed to set ${cookies.length} browser cookie(s); the browser error was redacted because it may contain cookie values.`,\n );\n }\n\n const result: SetCookiesNodeResult = {\n source: resolved.reference.kind,\n sourceName: resolved.reference.name,\n count: cookies.length,\n };\n return {\n summary: `Set ${result.count} browser cookie(s) from ${result.source} source ${result.sourceName}`,\n data: result,\n };\n },\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","setCookiesInputSchema","z","input","ctx","sourceCount","value","undefined","toCookieSourceReference","TypeError","parseCookieHeader","raw","url","segments","segment","Boolean","separator","name","parseCookieJson","JSON","resolveCookieSource","reference","defaultUrl","options","env","process","Error","trimmed","path","resolve","readFile","normalizeCookie","candidate","index","Array","cookie","normalized","hasUrl","hasDomain","normalizeCookies","source","candidates","setCookiesNode","agent","executionContext","requirePlaywrightAgent","throwIfAborted","page","resolveWebUrl","resolved","cookies","result"],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
gotoUrlInputSchema: ()=>gotoUrlInputSchema,
|
|
28
|
+
gotoUrlNode: ()=>gotoUrlNode
|
|
29
|
+
});
|
|
30
|
+
const v4_namespaceObject = require("zod/v4");
|
|
31
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
32
|
+
const DEFAULT_NAVIGATION_TIMEOUT_MS = 60000;
|
|
33
|
+
const DEFAULT_WAIT_UNTIL = 'domcontentloaded';
|
|
34
|
+
const gotoUrlInputSchema = v4_namespaceObject.z.strictObject({
|
|
35
|
+
url: v4_namespaceObject.z.string().min(1).describe('An absolute HTTP(S) URL or a path relative to Playwright baseURL or the current page URL.'),
|
|
36
|
+
waitUntil: v4_namespaceObject.z["enum"]([
|
|
37
|
+
'commit',
|
|
38
|
+
'domcontentloaded',
|
|
39
|
+
'load',
|
|
40
|
+
'networkidle'
|
|
41
|
+
]).default(DEFAULT_WAIT_UNTIL).describe('The Playwright navigation lifecycle event to wait for.'),
|
|
42
|
+
timeoutMs: v4_namespaceObject.z.number().positive().default(DEFAULT_NAVIGATION_TIMEOUT_MS).describe('The navigation timeout in milliseconds.')
|
|
43
|
+
});
|
|
44
|
+
const resolveNavigationUrl = (target, page)=>{
|
|
45
|
+
const trimmed = target.trim();
|
|
46
|
+
if (!trimmed) throw new TypeError('gotoUrl.url must not be blank.');
|
|
47
|
+
if (/^[a-z][a-z\d+.-]*:/i.test(trimmed)) return (0, external_utils_js_namespaceObject.resolveWebUrl)(trimmed, void 0, 'gotoUrl.url');
|
|
48
|
+
const context = page.context();
|
|
49
|
+
const configuredBase = context._options?.baseURL;
|
|
50
|
+
if (void 0 !== configuredBase) return (0, external_utils_js_namespaceObject.resolveWebUrl)(trimmed, configuredBase, 'gotoUrl.url');
|
|
51
|
+
const currentUrl = page.url();
|
|
52
|
+
if (!/^https?:\/\//i.test(currentUrl)) throw new TypeError(`gotoUrl.url cannot resolve a relative URL from ${JSON.stringify(currentUrl)}. Use an absolute HTTP(S) URL for the first navigation or configure Playwright baseURL.`);
|
|
53
|
+
return (0, external_utils_js_namespaceObject.resolveWebUrl)(trimmed, currentUrl, 'gotoUrl.url');
|
|
54
|
+
};
|
|
55
|
+
const gotoUrlNode = {
|
|
56
|
+
name: 'gotoUrl',
|
|
57
|
+
title: 'Open a Web URL',
|
|
58
|
+
description: 'Navigate the current Playwright Page to an absolute HTTP(S) URL or a path relative to Playwright baseURL or the current page URL.',
|
|
59
|
+
stringInputKey: 'url',
|
|
60
|
+
inputSchema: gotoUrlInputSchema,
|
|
61
|
+
async execute (agent, input, executionContext) {
|
|
62
|
+
const ctx = {
|
|
63
|
+
...executionContext,
|
|
64
|
+
input,
|
|
65
|
+
context: (0, external_utils_js_namespaceObject.requirePlaywrightAgent)(agent)
|
|
66
|
+
};
|
|
67
|
+
(0, external_utils_js_namespaceObject.throwIfAborted)(ctx.signal, 'gotoUrl');
|
|
68
|
+
const page = ctx.context.interface.underlyingPage;
|
|
69
|
+
const url = resolveNavigationUrl(ctx.input.url, page);
|
|
70
|
+
const response = await page.goto(url, {
|
|
71
|
+
waitUntil: ctx.input.waitUntil,
|
|
72
|
+
timeout: ctx.input.timeoutMs
|
|
73
|
+
});
|
|
74
|
+
(0, external_utils_js_namespaceObject.throwIfAborted)(ctx.signal, 'gotoUrl');
|
|
75
|
+
const status = response?.status() ?? null;
|
|
76
|
+
const result = {
|
|
77
|
+
url: page.url(),
|
|
78
|
+
status,
|
|
79
|
+
title: await page.title()
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
summary: `Navigated to ${result.url}`,
|
|
83
|
+
data: result
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
exports.gotoUrlInputSchema = __webpack_exports__.gotoUrlInputSchema;
|
|
88
|
+
exports.gotoUrlNode = __webpack_exports__.gotoUrlNode;
|
|
89
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
90
|
+
"gotoUrlInputSchema",
|
|
91
|
+
"gotoUrlNode"
|
|
92
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
93
|
+
Object.defineProperty(exports, '__esModule', {
|
|
94
|
+
value: true
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=goto-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright/test-runner/goto-url.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/playwright/test-runner/goto-url.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { AgentTestRunnerNodeDefinition } from '@midscene/core/agent';\nimport type { BrowserContext, Page } from 'playwright';\nimport { z } from 'zod/v4';\nimport { requirePlaywrightAgent, resolveWebUrl, throwIfAborted } from './utils';\n\nconst DEFAULT_NAVIGATION_TIMEOUT_MS = 60_000;\nconst DEFAULT_WAIT_UNTIL = 'domcontentloaded' as const;\n\n/** Input schema for the Playwright gotoUrl Node. */\nexport const gotoUrlInputSchema = z.strictObject({\n url: z\n .string()\n .min(1)\n .describe(\n 'An absolute HTTP(S) URL or a path relative to Playwright baseURL or the current page URL.',\n ),\n waitUntil: z\n .enum(['commit', 'domcontentloaded', 'load', 'networkidle'])\n .default(DEFAULT_WAIT_UNTIL)\n .describe('The Playwright navigation lifecycle event to wait for.'),\n timeoutMs: z\n .number()\n .positive()\n .default(DEFAULT_NAVIGATION_TIMEOUT_MS)\n .describe('The navigation timeout in milliseconds.'),\n});\n\n/** Validated input accepted by the Playwright gotoUrl Node. */\nexport type GotoUrlNodeInput = z.infer<typeof gotoUrlInputSchema>;\n\n/** Structured navigation details returned by the Playwright gotoUrl Node. */\nexport interface GotoUrlNodeResult {\n /** Final Page URL after navigation and redirects. */\n url: string;\n /** Main-resource HTTP status, or null when Playwright returns no response. */\n status: number | null;\n /** Document title after navigation completes. */\n title: string;\n}\n\nconst resolveNavigationUrl = (target: string, page: Page): string => {\n const trimmed = target.trim();\n if (!trimmed) throw new TypeError('gotoUrl.url must not be blank.');\n // Absolute URLs do not depend on either configured or current-page bases.\n if (/^[a-z][a-z\\d+.-]*:/i.test(trimmed)) {\n return resolveWebUrl(trimmed, undefined, 'gotoUrl.url');\n }\n\n // Playwright has no public baseURL getter. Its BrowserContext stores the\n // configured value in _options; keep this internal access localized here.\n const context = page.context() as BrowserContext & {\n _options?: { baseURL?: string };\n };\n const configuredBase = context._options?.baseURL;\n if (configuredBase !== undefined) {\n return resolveWebUrl(trimmed, configuredBase, 'gotoUrl.url');\n }\n\n const currentUrl = page.url();\n if (!/^https?:\\/\\//i.test(currentUrl)) {\n throw new TypeError(\n `gotoUrl.url cannot resolve a relative URL from ${JSON.stringify(currentUrl)}. Use an absolute HTTP(S) URL for the first navigation or configure Playwright baseURL.`,\n );\n }\n return resolveWebUrl(trimmed, currentUrl, 'gotoUrl.url');\n};\n\nexport const gotoUrlNode: AgentTestRunnerNodeDefinition<\n z.output<typeof gotoUrlInputSchema>,\n GotoUrlNodeResult\n> = {\n name: 'gotoUrl',\n title: 'Open a Web URL',\n description:\n 'Navigate the current Playwright Page to an absolute HTTP(S) URL or a path relative to Playwright baseURL or the current page URL.',\n stringInputKey: 'url',\n inputSchema: gotoUrlInputSchema,\n async execute(agent, input, executionContext) {\n const ctx = {\n ...executionContext,\n input,\n context: requirePlaywrightAgent(agent),\n };\n throwIfAborted(ctx.signal, 'gotoUrl');\n const page = ctx.context.interface.underlyingPage;\n const url = resolveNavigationUrl(ctx.input.url, page);\n const response = await page.goto(url, {\n waitUntil: ctx.input.waitUntil,\n timeout: ctx.input.timeoutMs,\n });\n throwIfAborted(ctx.signal, 'gotoUrl');\n const status = response?.status() ?? null;\n const result = {\n url: page.url(),\n status,\n title: await page.title(),\n };\n return { summary: `Navigated to ${result.url}`, data: result };\n },\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","DEFAULT_NAVIGATION_TIMEOUT_MS","DEFAULT_WAIT_UNTIL","gotoUrlInputSchema","z","resolveNavigationUrl","target","page","trimmed","TypeError","resolveWebUrl","undefined","context","configuredBase","currentUrl","JSON","gotoUrlNode","agent","input","executionContext","ctx","requirePlaywrightAgent","throwIfAborted","url","response","status","result"],"mappings":"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"}
|
|
@@ -24,13 +24,16 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
gotoUrlInputSchema: ()=>
|
|
28
|
-
setCookiesInputSchema: ()=>
|
|
29
|
-
setViewportSizeInputSchema: ()=>
|
|
30
|
-
clearCookiesInputSchema: ()=>
|
|
27
|
+
gotoUrlInputSchema: ()=>external_goto_url_js_namespaceObject.gotoUrlInputSchema,
|
|
28
|
+
setCookiesInputSchema: ()=>external_cookies_js_namespaceObject.setCookiesInputSchema,
|
|
29
|
+
setViewportSizeInputSchema: ()=>external_viewport_js_namespaceObject.setViewportSizeInputSchema,
|
|
30
|
+
clearCookiesInputSchema: ()=>external_clear_cookies_js_namespaceObject.clearCookiesInputSchema,
|
|
31
31
|
playwrightAgentTestRunnerNodeDefinitions: ()=>external_agent_nodes_js_namespaceObject.playwrightAgentTestRunnerNodeDefinitions
|
|
32
32
|
});
|
|
33
|
-
const
|
|
33
|
+
const external_clear_cookies_js_namespaceObject = require("./clear-cookies.js");
|
|
34
|
+
const external_cookies_js_namespaceObject = require("./cookies.js");
|
|
35
|
+
const external_goto_url_js_namespaceObject = require("./goto-url.js");
|
|
36
|
+
const external_viewport_js_namespaceObject = require("./viewport.js");
|
|
34
37
|
const external_agent_nodes_js_namespaceObject = require("./agent-nodes.js");
|
|
35
38
|
exports.clearCookiesInputSchema = __webpack_exports__.clearCookiesInputSchema;
|
|
36
39
|
exports.gotoUrlInputSchema = __webpack_exports__.gotoUrlInputSchema;
|
|
@@ -24,11 +24,31 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
requirePlaywrightAgent: ()=>requirePlaywrightAgent,
|
|
28
|
+
resolveWebUrl: ()=>resolveWebUrl,
|
|
29
|
+
throwIfAborted: ()=>throwIfAborted
|
|
30
30
|
});
|
|
31
|
-
const
|
|
31
|
+
const SUPPORTED_WEB_PROTOCOLS = new Set([
|
|
32
|
+
'http:',
|
|
33
|
+
'https:'
|
|
34
|
+
]);
|
|
35
|
+
const throwIfAborted = (signal, operation)=>{
|
|
36
|
+
if (signal.aborted) throw signal.reason ?? new Error(`${operation} aborted.`);
|
|
37
|
+
};
|
|
38
|
+
const resolveWebUrl = (target, baseUrl, label)=>{
|
|
39
|
+
const trimmed = target.trim();
|
|
40
|
+
if (!trimmed) throw new TypeError(`${label} must not be blank.`);
|
|
41
|
+
let resolved;
|
|
42
|
+
try {
|
|
43
|
+
resolved = void 0 === baseUrl ? new URL(trimmed) : new URL(trimmed, baseUrl);
|
|
44
|
+
} catch (error) {
|
|
45
|
+
throw new TypeError(void 0 === baseUrl ? `${label} must be an absolute HTTP(S) URL.` : `${label} is not a valid URL.`, {
|
|
46
|
+
cause: error
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
if (!SUPPORTED_WEB_PROTOCOLS.has(resolved.protocol)) throw new TypeError(`${label} does not support the ${resolved.protocol} protocol.`);
|
|
50
|
+
return resolved.toString();
|
|
51
|
+
};
|
|
32
52
|
const requirePlaywrightAgent = (agent)=>{
|
|
33
53
|
if (!agent || 'object' != typeof agent || !('interface' in agent) || !agent.interface || 'object' != typeof agent.interface || !('underlyingPage' in agent.interface) || !agent.interface.underlyingPage) throw new TypeError('getAgent() must return a Playwright Agent with an underlying Page.');
|
|
34
54
|
return agent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright/test-runner/utils.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/playwright/test-runner/utils.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","
|
|
1
|
+
{"version":3,"file":"playwright/test-runner/utils.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/playwright/test-runner/utils.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { PlaywrightTestRunnerAgent } from './types';\n\nconst SUPPORTED_WEB_PROTOCOLS = new Set(['http:', 'https:']);\n\nexport const throwIfAborted = (signal: AbortSignal, operation: string) => {\n if (signal.aborted) {\n throw signal.reason ?? new Error(`${operation} aborted.`);\n }\n};\n\nexport const resolveWebUrl = (\n target: string,\n baseUrl: string | undefined,\n label: string,\n): string => {\n const trimmed = target.trim();\n if (!trimmed) throw new TypeError(`${label} must not be blank.`);\n\n let resolved: URL;\n try {\n resolved =\n baseUrl === undefined ? new URL(trimmed) : new URL(trimmed, baseUrl);\n } catch (error) {\n throw new TypeError(\n baseUrl === undefined\n ? `${label} must be an absolute HTTP(S) URL.`\n : `${label} is not a valid URL.`,\n { cause: error },\n );\n }\n if (!SUPPORTED_WEB_PROTOCOLS.has(resolved.protocol)) {\n throw new TypeError(\n `${label} does not support the ${resolved.protocol} protocol.`,\n );\n }\n return resolved.toString();\n};\n\nexport const requirePlaywrightAgent = (\n agent: unknown,\n): PlaywrightTestRunnerAgent => {\n if (\n !agent ||\n typeof agent !== 'object' ||\n !('interface' in agent) ||\n !agent.interface ||\n typeof agent.interface !== 'object' ||\n !('underlyingPage' in agent.interface) ||\n !agent.interface.underlyingPage\n ) {\n throw new TypeError(\n 'getAgent() must return a Playwright Agent with an underlying Page.',\n );\n }\n return agent as PlaywrightTestRunnerAgent;\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","SUPPORTED_WEB_PROTOCOLS","Set","throwIfAborted","signal","operation","Error","resolveWebUrl","target","baseUrl","label","trimmed","TypeError","resolved","undefined","URL","error","requirePlaywrightAgent","agent"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;ACJA,MAAMI,0BAA0B,IAAIC,IAAI;IAAC;IAAS;CAAS;AAEpD,MAAMC,iBAAiB,CAACC,QAAqBC;IAClD,IAAID,OAAO,OAAO,EAChB,MAAMA,OAAO,MAAM,IAAI,IAAIE,MAAM,GAAGD,UAAU,SAAS,CAAC;AAE5D;AAEO,MAAME,gBAAgB,CAC3BC,QACAC,SACAC;IAEA,MAAMC,UAAUH,OAAO,IAAI;IAC3B,IAAI,CAACG,SAAS,MAAM,IAAIC,UAAU,GAAGF,MAAM,mBAAmB,CAAC;IAE/D,IAAIG;IACJ,IAAI;QACFA,WACEJ,AAAYK,WAAZL,UAAwB,IAAIM,IAAIJ,WAAW,IAAII,IAAIJ,SAASF;IAChE,EAAE,OAAOO,OAAO;QACd,MAAM,IAAIJ,UACRH,AAAYK,WAAZL,UACI,GAAGC,MAAM,iCAAiC,CAAC,GAC3C,GAAGA,MAAM,oBAAoB,CAAC,EAClC;YAAE,OAAOM;QAAM;IAEnB;IACA,IAAI,CAACf,wBAAwB,GAAG,CAACY,SAAS,QAAQ,GAChD,MAAM,IAAID,UACR,GAAGF,MAAM,sBAAsB,EAAEG,SAAS,QAAQ,CAAC,UAAU,CAAC;IAGlE,OAAOA,SAAS,QAAQ;AAC1B;AAEO,MAAMI,yBAAyB,CACpCC;IAEA,IACE,CAACA,SACD,AAAiB,YAAjB,OAAOA,SACP,CAAE,gBAAeA,KAAI,KACrB,CAACA,MAAM,SAAS,IAChB,AAA2B,YAA3B,OAAOA,MAAM,SAAS,IACtB,CAAE,qBAAoBA,MAAM,SAAQ,KACpC,CAACA,MAAM,SAAS,CAAC,cAAc,EAE/B,MAAM,IAAIN,UACR;IAGJ,OAAOM;AACT"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
setViewportSizeInputSchema: ()=>setViewportSizeInputSchema,
|
|
28
|
+
setViewportSizeNode: ()=>setViewportSizeNode
|
|
29
|
+
});
|
|
30
|
+
const v4_namespaceObject = require("zod/v4");
|
|
31
|
+
const external_utils_js_namespaceObject = require("./utils.js");
|
|
32
|
+
const setViewportSizeInputSchema = v4_namespaceObject.z.strictObject({
|
|
33
|
+
width: v4_namespaceObject.z.number().int().positive().describe('Viewport width in CSS pixels.'),
|
|
34
|
+
height: v4_namespaceObject.z.number().int().positive().describe('Viewport height in CSS pixels.')
|
|
35
|
+
});
|
|
36
|
+
const setViewportSizeNode = {
|
|
37
|
+
name: 'setViewportSize',
|
|
38
|
+
title: 'Set the browser viewport size',
|
|
39
|
+
description: 'Set the current Playwright Page viewport size in CSS pixels and return the effective size.',
|
|
40
|
+
stringInputKey: false,
|
|
41
|
+
inputSchema: setViewportSizeInputSchema,
|
|
42
|
+
async execute (agent, input, executionContext) {
|
|
43
|
+
const ctx = {
|
|
44
|
+
...executionContext,
|
|
45
|
+
input,
|
|
46
|
+
context: (0, external_utils_js_namespaceObject.requirePlaywrightAgent)(agent)
|
|
47
|
+
};
|
|
48
|
+
(0, external_utils_js_namespaceObject.throwIfAborted)(ctx.signal, 'setViewportSize');
|
|
49
|
+
const page = ctx.context.interface.underlyingPage;
|
|
50
|
+
await page.setViewportSize({
|
|
51
|
+
width: ctx.input.width,
|
|
52
|
+
height: ctx.input.height
|
|
53
|
+
});
|
|
54
|
+
const viewport = page.viewportSize();
|
|
55
|
+
if (!viewport) throw new Error('Playwright did not report an effective viewport size.');
|
|
56
|
+
return {
|
|
57
|
+
summary: `Set viewport to ${viewport.width}x${viewport.height}`,
|
|
58
|
+
data: viewport
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.setViewportSizeInputSchema = __webpack_exports__.setViewportSizeInputSchema;
|
|
63
|
+
exports.setViewportSizeNode = __webpack_exports__.setViewportSizeNode;
|
|
64
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
65
|
+
"setViewportSizeInputSchema",
|
|
66
|
+
"setViewportSizeNode"
|
|
67
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
68
|
+
Object.defineProperty(exports, '__esModule', {
|
|
69
|
+
value: true
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=viewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playwright/test-runner/viewport.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/playwright/test-runner/viewport.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { AgentTestRunnerNodeDefinition } from '@midscene/core/agent';\nimport { z } from 'zod/v4';\nimport { requirePlaywrightAgent, throwIfAborted } from './utils';\n\n/** Input schema for the Playwright setViewportSize Node. */\nexport const setViewportSizeInputSchema = z.strictObject({\n width: z.number().int().positive().describe('Viewport width in CSS pixels.'),\n height: z\n .number()\n .int()\n .positive()\n .describe('Viewport height in CSS pixels.'),\n});\n\n/** Validated input accepted by the Playwright setViewportSize Node. */\nexport type SetViewportSizeNodeInput = z.infer<\n typeof setViewportSizeInputSchema\n>;\n\nexport const setViewportSizeNode: AgentTestRunnerNodeDefinition<\n z.output<typeof setViewportSizeInputSchema>,\n { width: number; height: number }\n> = {\n name: 'setViewportSize',\n title: 'Set the browser viewport size',\n description:\n 'Set the current Playwright Page viewport size in CSS pixels and return the effective size.',\n stringInputKey: false,\n inputSchema: setViewportSizeInputSchema,\n async execute(agent, input, executionContext) {\n const ctx = {\n ...executionContext,\n input,\n context: requirePlaywrightAgent(agent),\n };\n throwIfAborted(ctx.signal, 'setViewportSize');\n const page = ctx.context.interface.underlyingPage;\n await page.setViewportSize({\n width: ctx.input.width,\n height: ctx.input.height,\n });\n const viewport = page.viewportSize();\n if (!viewport) {\n throw new Error('Playwright did not report an effective viewport size.');\n }\n return {\n summary: `Set viewport to ${viewport.width}x${viewport.height}`,\n data: viewport,\n };\n },\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","setViewportSizeInputSchema","z","setViewportSizeNode","agent","input","executionContext","ctx","requirePlaywrightAgent","throwIfAborted","page","viewport","Error"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;ACDO,MAAMI,6BAA6BC,mBAAAA,CAAAA,CAAAA,YAAc,CAAC;IACvD,OAAOA,mBAAAA,CAAAA,CAAAA,MAAQ,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,QAAQA,mBAAAA,CAAAA,CAAAA,MACC,GACN,GAAG,GACH,QAAQ,GACR,QAAQ,CAAC;AACd;AAOO,MAAMC,sBAGT;IACF,MAAM;IACN,OAAO;IACP,aACE;IACF,gBAAgB;IAChB,aAAaF;IACb,MAAM,SAAQG,KAAK,EAAEC,KAAK,EAAEC,gBAAgB;QAC1C,MAAMC,MAAM;YACV,GAAGD,gBAAgB;YACnBD;YACA,SAASG,AAAAA,IAAAA,kCAAAA,sBAAAA,AAAAA,EAAuBJ;QAClC;QACAK,IAAAA,kCAAAA,cAAAA,AAAAA,EAAeF,IAAI,MAAM,EAAE;QAC3B,MAAMG,OAAOH,IAAI,OAAO,CAAC,SAAS,CAAC,cAAc;QACjD,MAAMG,KAAK,eAAe,CAAC;YACzB,OAAOH,IAAI,KAAK,CAAC,KAAK;YACtB,QAAQA,IAAI,KAAK,CAAC,MAAM;QAC1B;QACA,MAAMI,WAAWD,KAAK,YAAY;QAClC,IAAI,CAACC,UACH,MAAM,IAAIC,MAAM;QAElB,OAAO;YACL,SAAS,CAAC,gBAAgB,EAAED,SAAS,KAAK,CAAC,CAAC,EAAEA,SAAS,MAAM,EAAE;YAC/D,MAAMA;QACR;IACF;AACF"}
|
|
@@ -32,7 +32,6 @@ const browser_page_actions_js_namespaceObject = require("../common/browser-page-
|
|
|
32
32
|
const logger_namespaceObject = require("@midscene/shared/logger");
|
|
33
33
|
const external_browser_page_manager_js_namespaceObject = require("./browser-page-manager.js");
|
|
34
34
|
const external_page_js_namespaceObject = require("./page.js");
|
|
35
|
-
const agent_nodes_js_namespaceObject = require("./test-runner/agent-nodes.js");
|
|
36
35
|
function _define_property(obj, key, value) {
|
|
37
36
|
if (key in obj) Object.defineProperty(obj, key, {
|
|
38
37
|
value: value,
|
|
@@ -45,12 +44,6 @@ function _define_property(obj, key, value) {
|
|
|
45
44
|
}
|
|
46
45
|
const debug = (0, logger_namespaceObject.getDebug)('puppeteer:browser-agent');
|
|
47
46
|
class PuppeteerBrowserAgent extends browser_agent_js_namespaceObject.WebAgentCore {
|
|
48
|
-
static getTestRunnerNodeDefinitions() {
|
|
49
|
-
return [
|
|
50
|
-
...browser_agent_js_namespaceObject.WebAgentCore.getTestRunnerNodeDefinitions(),
|
|
51
|
-
...agent_nodes_js_namespaceObject.puppeteerAgentTestRunnerNodeDefinitions
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
47
|
static async create(browser, opts) {
|
|
55
48
|
const { initialPage, ...agentOpts } = opts ?? {};
|
|
56
49
|
const page = initialPage ?? (await browser.pages())[0] ?? await browser.newPage();
|
|
@@ -102,8 +95,7 @@ class PuppeteerBrowserAgent extends browser_agent_js_namespaceObject.WebAgentCor
|
|
|
102
95
|
debug,
|
|
103
96
|
pageScope
|
|
104
97
|
});
|
|
105
|
-
super(webPage, agentOpts), _define_property(this, "
|
|
106
|
-
this.testRunner = opts?.testRunner;
|
|
98
|
+
super(webPage, agentOpts), _define_property(this, "pageManager", void 0);
|
|
107
99
|
this.pageManager = pageManager;
|
|
108
100
|
(0, browser_agent_utils_js_namespaceObject.applyForceChromeSelectRendering)(initialPage, 'puppeteer', forceChromeSelectRendering);
|
|
109
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puppeteer/browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/browser-agent.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n type BrowserPageManager,\n WebAgentCore,\n resolveBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport { applyForceChromeSelectRendering } from '@/common/browser-agent-utils';\nimport {\n appendBrowserAgentPageActions,\n createBrowserAgentPageActions,\n} from '@/common/browser-page-actions';\nimport type { WebPageAgentOpt } from '@/web-element';\nimport
|
|
1
|
+
{"version":3,"file":"puppeteer/browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/browser-agent.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import {\n type BrowserPageManager,\n WebAgentCore,\n resolveBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport { applyForceChromeSelectRendering } from '@/common/browser-agent-utils';\nimport {\n appendBrowserAgentPageActions,\n createBrowserAgentPageActions,\n} from '@/common/browser-page-actions';\nimport type { WebPageAgentOpt } from '@/web-element';\nimport { getDebug } from '@midscene/shared/logger';\nimport type {\n Browser as PuppeteerBrowser,\n Page as PuppeteerPage,\n Target as PuppeteerTarget,\n} from 'puppeteer';\nimport { createPuppeteerBrowserPageManager } from './browser-page-manager';\nimport type { PuppeteerBrowserPageScope } from './browser-page-manager';\nimport { PuppeteerWebPage } from './page';\n\nconst debug = getDebug('puppeteer:browser-agent');\n\nexport type PuppeteerBrowserAgentOpt = Omit<\n WebPageAgentOpt,\n 'forceSameTabNavigation'\n> & {\n autoFollowNewPage?: boolean;\n newPageTimeout?: number;\n};\n\nexport type PuppeteerBrowserAgentCreateOpt = PuppeteerBrowserAgentOpt & {\n initialPage?: PuppeteerPage;\n};\n\nexport class PuppeteerBrowserAgent extends WebAgentCore<PuppeteerWebPage> {\n protected readonly pageManager: BrowserPageManager<\n PuppeteerPage,\n PuppeteerTarget\n >;\n\n constructor(\n browser: PuppeteerBrowser,\n initialPage: PuppeteerPage,\n opts?: PuppeteerBrowserAgentOpt,\n pageScope?: PuppeteerBrowserPageScope,\n ) {\n if (!browser) {\n throw new Error(\n '[midscene] PuppeteerBrowserAgent requires a valid Puppeteer browser instance.',\n );\n }\n if (!initialPage) {\n throw new Error(\n '[midscene] PuppeteerBrowserAgent requires a valid initial page instance.',\n );\n }\n\n const { autoFollowNewPage, newPageTimeout, ...agentOpts } = opts ?? {};\n const runtimeOptions = resolveBrowserAgentRuntimeOptions({\n agentName: 'PuppeteerBrowserAgent',\n pageScope: 'browser',\n forceSameTabNavigation: (opts as WebPageAgentOpt | undefined)\n ?.forceSameTabNavigation,\n autoFollowNewPage,\n newPageTimeout,\n });\n const { forceChromeSelectRendering } = agentOpts;\n const browserActions = createBrowserAgentPageActions({\n getPageManager: () => pageManager,\n });\n const webPage: PuppeteerWebPage = new PuppeteerWebPage(initialPage, {\n ...agentOpts,\n forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,\n customActions: appendBrowserAgentPageActions(\n agentOpts.customActions,\n browserActions,\n ),\n });\n const pageManager: BrowserPageManager<PuppeteerPage, PuppeteerTarget> =\n createPuppeteerBrowserPageManager({\n browser,\n webPage,\n runtimeOptions,\n debug,\n pageScope,\n });\n super(webPage, agentOpts);\n this.pageManager = pageManager;\n\n applyForceChromeSelectRendering(\n initialPage,\n 'puppeteer',\n forceChromeSelectRendering,\n );\n }\n\n static async create(\n browser: PuppeteerBrowser,\n opts?: PuppeteerBrowserAgentCreateOpt,\n ) {\n const { initialPage, ...agentOpts } = opts ?? {};\n const page =\n initialPage ?? (await browser.pages())[0] ?? (await browser.newPage());\n\n return new PuppeteerBrowserAgent(browser, page, agentOpts);\n }\n\n get activePage() {\n return this.pageManager.activePage;\n }\n\n pages() {\n return this.pageManager.pages();\n }\n\n async newPage() {\n return this.pageManager.newPage();\n }\n\n async setActivePage(page: PuppeteerPage) {\n await this.pageManager.setActivePage(page);\n }\n\n async waitForNewPage(\n action?: () => Promise<unknown> | unknown,\n opts?: { timeout?: number },\n ) {\n return this.pageManager.waitForNewPage(action, opts);\n }\n\n async destroy() {\n this.pageManager.destroy();\n await super.destroy();\n }\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","debug","getDebug","PuppeteerBrowserAgent","WebAgentCore","browser","opts","initialPage","agentOpts","page","action","pageScope","Error","autoFollowNewPage","newPageTimeout","runtimeOptions","resolveBrowserAgentRuntimeOptions","forceChromeSelectRendering","browserActions","createBrowserAgentPageActions","pageManager","webPage","PuppeteerWebPage","appendBrowserAgentPageActions","createPuppeteerBrowserPageManager","applyForceChromeSelectRendering"],"mappings":"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"}
|
|
@@ -32,30 +32,12 @@ const browser_agent_utils_js_namespaceObject = require("../common/browser-agent-
|
|
|
32
32
|
const logger_namespaceObject = require("@midscene/shared/logger");
|
|
33
33
|
const external_base_page_js_namespaceObject = require("./base-page.js");
|
|
34
34
|
const external_page_js_namespaceObject = require("./page.js");
|
|
35
|
-
const agent_nodes_js_namespaceObject = require("./test-runner/agent-nodes.js");
|
|
36
|
-
function _define_property(obj, key, value) {
|
|
37
|
-
if (key in obj) Object.defineProperty(obj, key, {
|
|
38
|
-
value: value,
|
|
39
|
-
enumerable: true,
|
|
40
|
-
configurable: true,
|
|
41
|
-
writable: true
|
|
42
|
-
});
|
|
43
|
-
else obj[key] = value;
|
|
44
|
-
return obj;
|
|
45
|
-
}
|
|
46
35
|
const debug = (0, logger_namespaceObject.getDebug)('puppeteer:agent');
|
|
47
36
|
class PuppeteerPageAgent extends browser_agent_js_namespaceObject.WebAgentCore {
|
|
48
|
-
static getTestRunnerNodeDefinitions() {
|
|
49
|
-
return [
|
|
50
|
-
...browser_agent_js_namespaceObject.WebAgentCore.getTestRunnerNodeDefinitions(),
|
|
51
|
-
...agent_nodes_js_namespaceObject.puppeteerAgentTestRunnerNodeDefinitions
|
|
52
|
-
];
|
|
53
|
-
}
|
|
54
37
|
constructor(page, opts){
|
|
55
38
|
if (!page) throw new Error('[midscene] PuppeteerPageAgent requires a valid Puppeteer page instance. Please make sure to pass a valid page object.');
|
|
56
39
|
const webPage = new external_page_js_namespaceObject.PuppeteerWebPage(page, opts);
|
|
57
|
-
super(webPage, opts)
|
|
58
|
-
this.testRunner = opts?.testRunner;
|
|
40
|
+
super(webPage, opts);
|
|
59
41
|
const { forceSameTabNavigation, forceChromeSelectRendering } = opts ?? {};
|
|
60
42
|
const runtimeOptions = (0, browser_agent_js_namespaceObject.resolveBrowserAgentRuntimeOptions)({
|
|
61
43
|
agentName: 'PuppeteerPageAgent',
|