@midscene/web 1.13.2 → 1.13.4-beta-20260924030824.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.
Files changed (46) hide show
  1. package/dist/es/bridge-mode/io-client.mjs +1 -1
  2. package/dist/es/bridge-mode/io-server.mjs +2 -2
  3. package/dist/es/bridge-mode/io-server.mjs.map +1 -1
  4. package/dist/es/bridge-mode/page-browser-side.mjs +1 -1
  5. package/dist/es/bridge-mode/page-browser-side.mjs.map +1 -1
  6. package/dist/es/cli.mjs +1 -1
  7. package/dist/es/common/browser-agent.mjs +90 -0
  8. package/dist/es/common/browser-agent.mjs.map +1 -1
  9. package/dist/es/common/browser-page-actions.mjs +89 -0
  10. package/dist/es/common/browser-page-actions.mjs.map +1 -0
  11. package/dist/es/playwright/browser-agent.mjs +8 -1
  12. package/dist/es/playwright/browser-agent.mjs.map +1 -1
  13. package/dist/es/puppeteer/browser-agent.mjs +9 -3
  14. package/dist/es/puppeteer/browser-agent.mjs.map +1 -1
  15. package/dist/es/puppeteer/browser-page-manager.mjs +2 -0
  16. package/dist/es/puppeteer/browser-page-manager.mjs.map +1 -1
  17. package/dist/es/puppeteer/scoped-browser-agent.mjs +1 -28
  18. package/dist/es/puppeteer/scoped-browser-agent.mjs.map +1 -1
  19. package/dist/lib/bridge-mode/io-client.js +1 -1
  20. package/dist/lib/bridge-mode/io-server.js +2 -2
  21. package/dist/lib/bridge-mode/io-server.js.map +1 -1
  22. package/dist/lib/bridge-mode/page-browser-side.js +1 -1
  23. package/dist/lib/bridge-mode/page-browser-side.js.map +1 -1
  24. package/dist/lib/cli.js +1 -1
  25. package/dist/lib/common/browser-agent.js +90 -0
  26. package/dist/lib/common/browser-agent.js.map +1 -1
  27. package/dist/lib/common/browser-page-actions.js +126 -0
  28. package/dist/lib/common/browser-page-actions.js.map +1 -0
  29. package/dist/lib/playwright/browser-agent.js +8 -1
  30. package/dist/lib/playwright/browser-agent.js.map +1 -1
  31. package/dist/lib/puppeteer/browser-agent.js +9 -3
  32. package/dist/lib/puppeteer/browser-agent.js.map +1 -1
  33. package/dist/lib/puppeteer/browser-page-manager.js +2 -0
  34. package/dist/lib/puppeteer/browser-page-manager.js.map +1 -1
  35. package/dist/lib/puppeteer/scoped-browser-agent.js +1 -28
  36. package/dist/lib/puppeteer/scoped-browser-agent.js.map +1 -1
  37. package/dist/types/common/browser-agent.d.ts +19 -0
  38. package/dist/types/common/browser-agent.d.ts.map +1 -1
  39. package/dist/types/common/browser-page-actions.d.ts +7 -0
  40. package/dist/types/common/browser-page-actions.d.ts.map +1 -0
  41. package/dist/types/playwright/browser-agent.d.ts.map +1 -1
  42. package/dist/types/puppeteer/browser-agent.d.ts +3 -2
  43. package/dist/types/puppeteer/browser-agent.d.ts.map +1 -1
  44. package/dist/types/puppeteer/browser-page-manager.d.ts.map +1 -1
  45. package/dist/types/puppeteer/scoped-browser-agent.d.ts.map +1 -1
  46. package/package.json +4 -4
@@ -0,0 +1,126 @@
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
+ appendBrowserAgentPageActions: ()=>appendBrowserAgentPageActions,
28
+ createBrowserAgentPageActions: ()=>createBrowserAgentPageActions
29
+ });
30
+ const core_namespaceObject = require("@midscene/core");
31
+ const pageListSize = 8;
32
+ const maxListTitleLength = 120;
33
+ const maxListUrlLength = 512;
34
+ const normalizeFeedbackValue = (value)=>value.replace(/\s+/g, ' ').trim();
35
+ const truncateFeedbackValue = (value, maxLength)=>{
36
+ if (maxLength <= 0) return '';
37
+ if (value.length <= maxLength) return value;
38
+ if (maxLength <= 2) return `${value.slice(0, maxLength - 1)}…`;
39
+ const headLength = Math.ceil((maxLength - 1) * 2 / 3);
40
+ const tailLength = maxLength - headLength - 1;
41
+ return `${value.slice(0, headLength)}…${value.slice(-tailLength)}`;
42
+ };
43
+ const buildPlanningFeedback = (summaries, total, offset, activeIndex)=>{
44
+ if (0 === total) return 'ListBrowserPages: no open pages.';
45
+ const nextOffset = offset + summaries.length;
46
+ const continuation = nextOffset < total ? ` Next: ListBrowserPages({offset:${nextOffset}}).` : '';
47
+ const header = `ListBrowserPages ${offset}-${nextOffset - 1} of ${total}; active ${activeIndex ?? 'none'} (0-based). Use SetActivePage.${continuation}\n`;
48
+ if (0 === summaries.length) return header.trimEnd();
49
+ const lines = summaries.map((summary)=>{
50
+ const prefix = `${summary.active ? '*' : ' '}${summary.index}|`;
51
+ const title = truncateFeedbackValue(normalizeFeedbackValue(summary.title), maxListTitleLength);
52
+ const url = truncateFeedbackValue(normalizeFeedbackValue(summary.url), maxListUrlLength);
53
+ return `${prefix}${title}|${url}`;
54
+ });
55
+ return `${header}${lines.join('\n')}`;
56
+ };
57
+ const buildPageInfoPlanningFeedback = (summary)=>`GetBrowserPageInfo index ${summary.index}; active ${summary.active}.\nTitle: ${summary.title}\nURL: ${summary.url}`;
58
+ const setActivePageParamSchema = core_namespaceObject.z.object({
59
+ index: core_namespaceObject.z.number().int().min(0).optional().describe('0-based page/tab index returned by ListBrowserPages.'),
60
+ title: core_namespaceObject.z.string().optional().describe('Case-insensitive page title substring to match.'),
61
+ url: core_namespaceObject.z.string().optional().describe('Case-insensitive page URL substring to match.')
62
+ });
63
+ const listBrowserPagesParamSchema = core_namespaceObject.z.object({
64
+ offset: core_namespaceObject.z.number().int().min(0).optional().describe('0-based starting position. Omit for the first page.')
65
+ }).optional();
66
+ const getBrowserPageInfoParamSchema = core_namespaceObject.z.object({
67
+ index: core_namespaceObject.z.number().int().min(0).describe('0-based page/tab index returned by ListBrowserPages.')
68
+ });
69
+ const createBrowserAgentPageActions = (options)=>[
70
+ {
71
+ name: 'ListBrowserPages',
72
+ description: 'List open browser pages/tabs in groups of 8 and show which one is active. Use offset to see the next group before switching pages.',
73
+ paramSchema: listBrowserPagesParamSchema,
74
+ planningFeedbackMaxLength: 'unlimited',
75
+ call: async (param, context)=>{
76
+ const summaries = await options.getPageManager().pageSummaries();
77
+ const offset = param?.offset ?? 0;
78
+ if (summaries.length > 0 && offset >= summaries.length) throw new Error(`[midscene] ListBrowserPages offset ${offset} is out of range for ${summaries.length} pages. Start again with offset 0.`);
79
+ const visibleSummaries = summaries.slice(offset, offset + pageListSize);
80
+ if (context?.task) context.task.planningFeedback = buildPlanningFeedback(visibleSummaries, summaries.length, offset, summaries.find(({ active })=>active)?.index);
81
+ return visibleSummaries;
82
+ }
83
+ },
84
+ {
85
+ name: 'GetBrowserPageInfo',
86
+ description: 'Get the complete title and URL for one browser page/tab without switching the active page. Use this when ListBrowserPages truncates details needed to identify a page.',
87
+ paramSchema: getBrowserPageInfoParamSchema,
88
+ planningFeedbackMaxLength: 'unlimited',
89
+ sample: {
90
+ index: 1
91
+ },
92
+ call: async (param, context)=>{
93
+ const summary = await options.getPageManager().pageSummaryByIndex(param.index);
94
+ if (context?.task) context.task.planningFeedback = buildPageInfoPlanningFeedback(summary);
95
+ return summary;
96
+ }
97
+ },
98
+ {
99
+ name: 'SetActivePage',
100
+ description: 'Set the active browser page/tab by 0-based index, title substring, or URL substring. When index is combined with title or URL, all provided values must match the same page. Use index from ListBrowserPages when more than one page could match.',
101
+ paramSchema: setActivePageParamSchema,
102
+ sample: {
103
+ index: 1
104
+ },
105
+ call: async (param)=>options.getPageManager().setActivePageBySelector(param)
106
+ }
107
+ ];
108
+ const appendBrowserAgentPageActions = (customActions, browserActions)=>{
109
+ if (!customActions?.length) return browserActions;
110
+ const customActionNames = new Set(customActions.map((action)=>action.name));
111
+ return [
112
+ ...customActions,
113
+ ...browserActions.filter((action)=>!customActionNames.has(action.name))
114
+ ];
115
+ };
116
+ exports.appendBrowserAgentPageActions = __webpack_exports__.appendBrowserAgentPageActions;
117
+ exports.createBrowserAgentPageActions = __webpack_exports__.createBrowserAgentPageActions;
118
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
119
+ "appendBrowserAgentPageActions",
120
+ "createBrowserAgentPageActions"
121
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
122
+ Object.defineProperty(exports, '__esModule', {
123
+ value: true
124
+ });
125
+
126
+ //# sourceMappingURL=browser-page-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common/browser-page-actions.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/common/browser-page-actions.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 DeviceAction, z } from '@midscene/core';\nimport type {\n BrowserAgentPageSelector,\n BrowserAgentPageSummary,\n BrowserPageManager,\n} from './browser-agent';\n\nconst pageListSize = 8;\nconst maxListTitleLength = 120;\nconst maxListUrlLength = 512;\n\nconst normalizeFeedbackValue = (value: string) =>\n value.replace(/\\s+/g, ' ').trim();\n\nconst truncateFeedbackValue = (value: string, maxLength: number) => {\n if (maxLength <= 0) {\n return '';\n }\n if (value.length <= maxLength) {\n return value;\n }\n if (maxLength <= 2) {\n return `${value.slice(0, maxLength - 1)}…`;\n }\n const headLength = Math.ceil(((maxLength - 1) * 2) / 3);\n const tailLength = maxLength - headLength - 1;\n return `${value.slice(0, headLength)}…${value.slice(-tailLength)}`;\n};\n\nconst buildPlanningFeedback = (\n summaries: BrowserAgentPageSummary[],\n total: number,\n offset: number,\n activeIndex: number | undefined,\n) => {\n if (total === 0) {\n return 'ListBrowserPages: no open pages.';\n }\n\n const nextOffset = offset + summaries.length;\n const continuation =\n nextOffset < total\n ? ` Next: ListBrowserPages({offset:${nextOffset}}).`\n : '';\n const header = `ListBrowserPages ${offset}-${nextOffset - 1} of ${total}; active ${activeIndex ?? 'none'} (0-based). Use SetActivePage.${continuation}\\n`;\n if (summaries.length === 0) {\n return header.trimEnd();\n }\n const lines = summaries.map((summary) => {\n const prefix = `${summary.active ? '*' : ' '}${summary.index}|`;\n const title = truncateFeedbackValue(\n normalizeFeedbackValue(summary.title),\n maxListTitleLength,\n );\n const url = truncateFeedbackValue(\n normalizeFeedbackValue(summary.url),\n maxListUrlLength,\n );\n return `${prefix}${title}|${url}`;\n });\n\n return `${header}${lines.join('\\n')}`;\n};\n\nconst buildPageInfoPlanningFeedback = (summary: BrowserAgentPageSummary) =>\n `GetBrowserPageInfo index ${summary.index}; active ${summary.active}.\\nTitle: ${summary.title}\\nURL: ${summary.url}`;\n\nconst setActivePageParamSchema: z.ZodType<BrowserAgentPageSelector> = z.object({\n index: z\n .number()\n .int()\n .min(0)\n .optional()\n .describe('0-based page/tab index returned by ListBrowserPages.'),\n title: z\n .string()\n .optional()\n .describe('Case-insensitive page title substring to match.'),\n url: z\n .string()\n .optional()\n .describe('Case-insensitive page URL substring to match.'),\n});\n\nconst listBrowserPagesParamSchema = z\n .object({\n offset: z\n .number()\n .int()\n .min(0)\n .optional()\n .describe('0-based starting position. Omit for the first page.'),\n })\n .optional();\n\nconst getBrowserPageInfoParamSchema = z.object({\n index: z\n .number()\n .int()\n .min(0)\n .describe('0-based page/tab index returned by ListBrowserPages.'),\n});\n\nexport const createBrowserAgentPageActions = <Page, NewPageEvent>(options: {\n getPageManager: () => BrowserPageManager<Page, NewPageEvent>;\n}): DeviceAction<any>[] => [\n {\n name: 'ListBrowserPages',\n description:\n 'List open browser pages/tabs in groups of 8 and show which one is active. Use offset to see the next group before switching pages.',\n paramSchema: listBrowserPagesParamSchema,\n planningFeedbackMaxLength: 'unlimited',\n call: async (param, context) => {\n const summaries = await options.getPageManager().pageSummaries();\n const offset = param?.offset ?? 0;\n if (summaries.length > 0 && offset >= summaries.length) {\n throw new Error(\n `[midscene] ListBrowserPages offset ${offset} is out of range for ${summaries.length} pages. Start again with offset 0.`,\n );\n }\n const visibleSummaries = summaries.slice(offset, offset + pageListSize);\n if (context?.task) {\n context.task.planningFeedback = buildPlanningFeedback(\n visibleSummaries,\n summaries.length,\n offset,\n summaries.find(({ active }) => active)?.index,\n );\n }\n return visibleSummaries;\n },\n },\n {\n name: 'GetBrowserPageInfo',\n description:\n 'Get the complete title and URL for one browser page/tab without switching the active page. Use this when ListBrowserPages truncates details needed to identify a page.',\n paramSchema: getBrowserPageInfoParamSchema,\n planningFeedbackMaxLength: 'unlimited',\n sample: {\n index: 1,\n },\n call: async (param, context) => {\n const summary = await options\n .getPageManager()\n .pageSummaryByIndex(param.index);\n if (context?.task) {\n context.task.planningFeedback = buildPageInfoPlanningFeedback(summary);\n }\n return summary;\n },\n },\n {\n name: 'SetActivePage',\n description:\n 'Set the active browser page/tab by 0-based index, title substring, or URL substring. When index is combined with title or URL, all provided values must match the same page. Use index from ListBrowserPages when more than one page could match.',\n paramSchema: setActivePageParamSchema,\n sample: {\n index: 1,\n },\n call: async (param) =>\n options.getPageManager().setActivePageBySelector(param),\n },\n];\n\nexport const appendBrowserAgentPageActions = (\n customActions: DeviceAction<any>[] | undefined,\n browserActions: DeviceAction<any>[],\n) => {\n if (!customActions?.length) {\n return browserActions;\n }\n\n const customActionNames = new Set(customActions.map((action) => action.name));\n return [\n ...customActions,\n ...browserActions.filter((action) => !customActionNames.has(action.name)),\n ];\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","pageListSize","maxListTitleLength","maxListUrlLength","normalizeFeedbackValue","value","truncateFeedbackValue","maxLength","headLength","Math","tailLength","buildPlanningFeedback","summaries","total","offset","activeIndex","nextOffset","continuation","header","lines","summary","prefix","title","url","buildPageInfoPlanningFeedback","setActivePageParamSchema","z","listBrowserPagesParamSchema","getBrowserPageInfoParamSchema","createBrowserAgentPageActions","options","param","context","Error","visibleSummaries","active","appendBrowserAgentPageActions","customActions","browserActions","customActionNames","Set","action"],"mappings":"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"}
@@ -28,6 +28,7 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const browser_agent_js_namespaceObject = require("../common/browser-agent.js");
30
30
  const browser_agent_utils_js_namespaceObject = require("../common/browser-agent-utils.js");
31
+ const browser_page_actions_js_namespaceObject = require("../common/browser-page-actions.js");
31
32
  const logger_namespaceObject = require("@midscene/shared/logger");
32
33
  const external_page_js_namespaceObject = require("./page.js");
33
34
  const agent_nodes_js_namespaceObject = require("./test-runner/agent-nodes.js");
@@ -47,6 +48,8 @@ const createPlaywrightBrowserAdapter = (context)=>({
47
48
  newPage: ()=>context.newPage(),
48
49
  isPageClosed: (page)=>page.isClosed(),
49
50
  bringToFront: (page)=>page.bringToFront(),
51
+ pageTitle: (page)=>page.title(),
52
+ pageUrl: (page)=>page.url(),
50
53
  onNewPage: (handler)=>context.on('page', handler),
51
54
  offNewPage: (handler)=>context.off('page', handler),
52
55
  resolveNewPage: (page)=>page
@@ -94,9 +97,13 @@ class PlaywrightBrowserAgent extends browser_agent_js_namespaceObject.WebAgentCo
94
97
  newPageTimeout
95
98
  });
96
99
  const { forceChromeSelectRendering } = agentOpts;
100
+ const browserActions = (0, browser_page_actions_js_namespaceObject.createBrowserAgentPageActions)({
101
+ getPageManager: ()=>pageManager
102
+ });
97
103
  const webPage = new external_page_js_namespaceObject.WebPage(initialPage, {
98
104
  ...agentOpts,
99
- forceSameTabNavigation: runtimeOptions.forceSameTabNavigation
105
+ forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,
106
+ customActions: (0, browser_page_actions_js_namespaceObject.appendBrowserAgentPageActions)(agentOpts.customActions, browserActions)
100
107
  });
101
108
  const pageManager = new browser_agent_js_namespaceObject.BrowserPageManager({
102
109
  agentName: 'PlaywrightBrowserAgent',
@@ -1 +1 @@
1
- {"version":3,"file":"playwright/browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/playwright/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 BrowserAgentAdapter,\n BrowserPageManager,\n WebAgentCore,\n resolveBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport { applyForceChromeSelectRendering } from '@/common/browser-agent-utils';\nimport type { WebPageAgentOpt } from '@/web-element';\nimport type { AgentTestRunnerNodeDefinition } from '@midscene/core/agent';\nimport { getDebug } from '@midscene/shared/logger';\nimport type {\n BrowserContext as PlaywrightBrowserContext,\n Page as PlaywrightPage,\n} from 'playwright';\nimport { WebPage as PlaywrightWebPage } from './page';\nimport { playwrightAgentTestRunnerNodeDefinitions } from './test-runner/agent-nodes';\nimport type { PlaywrightTestRunnerOptions } from './test-runner/types';\n\nconst debug = getDebug('playwright:browser-agent');\n\nconst createPlaywrightBrowserAdapter = (\n context: PlaywrightBrowserContext,\n): BrowserAgentAdapter<PlaywrightPage, PlaywrightPage> => ({\n pages: () => context.pages(),\n newPage: () => context.newPage(),\n isPageClosed: (page) => page.isClosed(),\n bringToFront: (page) => page.bringToFront(),\n onNewPage: (handler) => context.on('page', handler),\n offNewPage: (handler) => context.off('page', handler),\n resolveNewPage: (page) => page,\n});\n\nexport type PlaywrightBrowserAgentOpt = Omit<\n WebPageAgentOpt,\n 'forceSameTabNavigation'\n> & {\n testRunner?: PlaywrightTestRunnerOptions;\n autoFollowNewPage?: boolean;\n newPageTimeout?: number;\n};\n\nexport type PlaywrightBrowserAgentCreateOpt = PlaywrightBrowserAgentOpt & {\n initialPage?: PlaywrightPage;\n};\n\nexport class PlaywrightBrowserAgent extends WebAgentCore<PlaywrightWebPage> {\n static override getTestRunnerNodeDefinitions(): readonly AgentTestRunnerNodeDefinition[] {\n return [\n ...WebAgentCore.getTestRunnerNodeDefinitions(),\n ...playwrightAgentTestRunnerNodeDefinitions,\n ];\n }\n\n readonly testRunner?: PlaywrightTestRunnerOptions;\n\n private readonly pageManager: BrowserPageManager<\n PlaywrightPage,\n PlaywrightPage\n >;\n\n constructor(\n context: PlaywrightBrowserContext,\n initialPage: PlaywrightPage,\n opts?: PlaywrightBrowserAgentOpt,\n ) {\n if (!context) {\n throw new Error(\n '[midscene] PlaywrightBrowserAgent requires a valid Playwright browser context.',\n );\n }\n if (!initialPage) {\n throw new Error(\n '[midscene] PlaywrightBrowserAgent requires a valid initial page instance.',\n );\n }\n\n const { autoFollowNewPage, newPageTimeout, ...agentOpts } = opts ?? {};\n const runtimeOptions = resolveBrowserAgentRuntimeOptions({\n agentName: 'PlaywrightBrowserAgent',\n pageScope: 'browser',\n forceSameTabNavigation: (opts as WebPageAgentOpt | undefined)\n ?.forceSameTabNavigation,\n autoFollowNewPage,\n newPageTimeout,\n });\n const { forceChromeSelectRendering } = agentOpts;\n const webPage = new PlaywrightWebPage(initialPage, {\n ...agentOpts,\n forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,\n });\n const pageManager = new BrowserPageManager({\n agentName: 'PlaywrightBrowserAgent',\n adapter: createPlaywrightBrowserAdapter(context),\n getActivePage: () => webPage.underlyingPage as PlaywrightPage,\n setActivePageValue: (page) => {\n webPage.underlyingPage = page;\n },\n autoFollowNewPage: runtimeOptions.autoFollowNewPage,\n newPageTimeout: runtimeOptions.newPageTimeout,\n debug,\n });\n super(webPage, agentOpts);\n this.pageManager = pageManager;\n this.testRunner = opts?.testRunner;\n\n applyForceChromeSelectRendering(\n initialPage,\n 'playwright',\n forceChromeSelectRendering,\n );\n }\n\n static async create(\n context: PlaywrightBrowserContext,\n opts?: PlaywrightBrowserAgentCreateOpt,\n ) {\n const { initialPage, ...agentOpts } = opts ?? {};\n const page = initialPage ?? context.pages()[0] ?? (await context.newPage());\n\n return new PlaywrightBrowserAgent(context, 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: PlaywrightPage) {\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","createPlaywrightBrowserAdapter","context","page","handler","PlaywrightBrowserAgent","WebAgentCore","playwrightAgentTestRunnerNodeDefinitions","opts","initialPage","agentOpts","action","Error","autoFollowNewPage","newPageTimeout","runtimeOptions","resolveBrowserAgentRuntimeOptions","forceChromeSelectRendering","webPage","PlaywrightWebPage","pageManager","BrowserPageManager","applyForceChromeSelectRendering"],"mappings":"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"}
1
+ {"version":3,"file":"playwright/browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/playwright/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 BrowserAgentAdapter,\n 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 type { AgentTestRunnerNodeDefinition } from '@midscene/core/agent';\nimport { getDebug } from '@midscene/shared/logger';\nimport type {\n BrowserContext as PlaywrightBrowserContext,\n Page as PlaywrightPage,\n} from 'playwright';\nimport { WebPage as PlaywrightWebPage } from './page';\nimport { playwrightAgentTestRunnerNodeDefinitions } from './test-runner/agent-nodes';\nimport type { PlaywrightTestRunnerOptions } from './test-runner/types';\n\nconst debug = getDebug('playwright:browser-agent');\n\nconst createPlaywrightBrowserAdapter = (\n context: PlaywrightBrowserContext,\n): BrowserAgentAdapter<PlaywrightPage, PlaywrightPage> => ({\n pages: () => context.pages(),\n newPage: () => context.newPage(),\n isPageClosed: (page) => page.isClosed(),\n bringToFront: (page) => page.bringToFront(),\n pageTitle: (page) => page.title(),\n pageUrl: (page) => page.url(),\n onNewPage: (handler) => context.on('page', handler),\n offNewPage: (handler) => context.off('page', handler),\n resolveNewPage: (page) => page,\n});\n\nexport type PlaywrightBrowserAgentOpt = Omit<\n WebPageAgentOpt,\n 'forceSameTabNavigation'\n> & {\n testRunner?: PlaywrightTestRunnerOptions;\n autoFollowNewPage?: boolean;\n newPageTimeout?: number;\n};\n\nexport type PlaywrightBrowserAgentCreateOpt = PlaywrightBrowserAgentOpt & {\n initialPage?: PlaywrightPage;\n};\n\nexport class PlaywrightBrowserAgent extends WebAgentCore<PlaywrightWebPage> {\n static override getTestRunnerNodeDefinitions(): readonly AgentTestRunnerNodeDefinition[] {\n return [\n ...WebAgentCore.getTestRunnerNodeDefinitions(),\n ...playwrightAgentTestRunnerNodeDefinitions,\n ];\n }\n\n readonly testRunner?: PlaywrightTestRunnerOptions;\n\n private readonly pageManager: BrowserPageManager<\n PlaywrightPage,\n PlaywrightPage\n >;\n\n constructor(\n context: PlaywrightBrowserContext,\n initialPage: PlaywrightPage,\n opts?: PlaywrightBrowserAgentOpt,\n ) {\n if (!context) {\n throw new Error(\n '[midscene] PlaywrightBrowserAgent requires a valid Playwright browser context.',\n );\n }\n if (!initialPage) {\n throw new Error(\n '[midscene] PlaywrightBrowserAgent requires a valid initial page instance.',\n );\n }\n\n const { autoFollowNewPage, newPageTimeout, ...agentOpts } = opts ?? {};\n const runtimeOptions = resolveBrowserAgentRuntimeOptions({\n agentName: 'PlaywrightBrowserAgent',\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: PlaywrightWebPage = new PlaywrightWebPage(initialPage, {\n ...agentOpts,\n forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,\n customActions: appendBrowserAgentPageActions(\n agentOpts.customActions,\n browserActions,\n ),\n });\n const pageManager: BrowserPageManager<PlaywrightPage, PlaywrightPage> =\n new BrowserPageManager({\n agentName: 'PlaywrightBrowserAgent',\n adapter: createPlaywrightBrowserAdapter(context),\n getActivePage: () => webPage.underlyingPage as PlaywrightPage,\n setActivePageValue: (page) => {\n webPage.underlyingPage = page;\n },\n autoFollowNewPage: runtimeOptions.autoFollowNewPage,\n newPageTimeout: runtimeOptions.newPageTimeout,\n debug,\n });\n super(webPage, agentOpts);\n this.pageManager = pageManager;\n this.testRunner = opts?.testRunner;\n\n applyForceChromeSelectRendering(\n initialPage,\n 'playwright',\n forceChromeSelectRendering,\n );\n }\n\n static async create(\n context: PlaywrightBrowserContext,\n opts?: PlaywrightBrowserAgentCreateOpt,\n ) {\n const { initialPage, ...agentOpts } = opts ?? {};\n const page = initialPage ?? context.pages()[0] ?? (await context.newPage());\n\n return new PlaywrightBrowserAgent(context, 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: PlaywrightPage) {\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","createPlaywrightBrowserAdapter","context","page","handler","PlaywrightBrowserAgent","WebAgentCore","playwrightAgentTestRunnerNodeDefinitions","opts","initialPage","agentOpts","action","Error","autoFollowNewPage","newPageTimeout","runtimeOptions","resolveBrowserAgentRuntimeOptions","forceChromeSelectRendering","browserActions","createBrowserAgentPageActions","pageManager","webPage","PlaywrightWebPage","appendBrowserAgentPageActions","BrowserPageManager","applyForceChromeSelectRendering"],"mappings":"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"}
@@ -28,6 +28,7 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const browser_agent_js_namespaceObject = require("../common/browser-agent.js");
30
30
  const browser_agent_utils_js_namespaceObject = require("../common/browser-agent-utils.js");
31
+ const browser_page_actions_js_namespaceObject = require("../common/browser-page-actions.js");
31
32
  const logger_namespaceObject = require("@midscene/shared/logger");
32
33
  const external_browser_page_manager_js_namespaceObject = require("./browser-page-manager.js");
33
34
  const external_page_js_namespaceObject = require("./page.js");
@@ -67,7 +68,7 @@ class PuppeteerBrowserAgent extends browser_agent_js_namespaceObject.WebAgentCor
67
68
  this.pageManager.destroy();
68
69
  await super.destroy();
69
70
  }
70
- constructor(browser, initialPage, opts){
71
+ constructor(browser, initialPage, opts, pageScope){
71
72
  if (!browser) throw new Error('[midscene] PuppeteerBrowserAgent requires a valid Puppeteer browser instance.');
72
73
  if (!initialPage) throw new Error('[midscene] PuppeteerBrowserAgent requires a valid initial page instance.');
73
74
  const { autoFollowNewPage, newPageTimeout, ...agentOpts } = opts ?? {};
@@ -79,15 +80,20 @@ class PuppeteerBrowserAgent extends browser_agent_js_namespaceObject.WebAgentCor
79
80
  newPageTimeout
80
81
  });
81
82
  const { forceChromeSelectRendering } = agentOpts;
83
+ const browserActions = (0, browser_page_actions_js_namespaceObject.createBrowserAgentPageActions)({
84
+ getPageManager: ()=>pageManager
85
+ });
82
86
  const webPage = new external_page_js_namespaceObject.PuppeteerWebPage(initialPage, {
83
87
  ...agentOpts,
84
- forceSameTabNavigation: runtimeOptions.forceSameTabNavigation
88
+ forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,
89
+ customActions: (0, browser_page_actions_js_namespaceObject.appendBrowserAgentPageActions)(agentOpts.customActions, browserActions)
85
90
  });
86
91
  const pageManager = (0, external_browser_page_manager_js_namespaceObject.createPuppeteerBrowserPageManager)({
87
92
  browser,
88
93
  webPage,
89
94
  runtimeOptions,
90
- debug
95
+ debug,
96
+ pageScope
91
97
  });
92
98
  super(webPage, agentOpts), _define_property(this, "pageManager", void 0);
93
99
  this.pageManager = pageManager;
@@ -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 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 { 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 pageManager: BrowserPageManager<PuppeteerPage, PuppeteerTarget>;\n\n constructor(\n browser: PuppeteerBrowser,\n initialPage: PuppeteerPage,\n opts?: PuppeteerBrowserAgentOpt,\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 webPage = new PuppeteerWebPage(initialPage, {\n ...agentOpts,\n forceSameTabNavigation: runtimeOptions.forceSameTabNavigation,\n });\n const pageManager = createPuppeteerBrowserPageManager({\n browser,\n webPage,\n runtimeOptions,\n debug,\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","Error","autoFollowNewPage","newPageTimeout","runtimeOptions","resolveBrowserAgentRuntimeOptions","forceChromeSelectRendering","webPage","PuppeteerWebPage","pageManager","createPuppeteerBrowserPageManager","applyForceChromeSelectRendering"],"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;;;;;;;;;;;;;;;;;;;;;;ACUA,MAAMI,QAAQC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS;AAchB,MAAMC,8BAA8BC,iCAAAA,YAAYA;IAiDrD,aAAa,OACXC,OAAyB,EACzBC,IAAqC,EACrC;QACA,MAAM,EAAEC,WAAW,EAAE,GAAGC,WAAW,GAAGF,QAAQ,CAAC;QAC/C,MAAMG,OACJF,eAAgB,OAAMF,QAAQ,KAAK,EAAC,CAAE,CAAC,EAAE,IAAK,MAAMA,QAAQ,OAAO;QAErE,OAAO,IAAIF,sBAAsBE,SAASI,MAAMD;IAClD;IAEA,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU;IACpC;IAEA,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;IAC/B;IAEA,MAAM,UAAU;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;IACjC;IAEA,MAAM,cAAcC,IAAmB,EAAE;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAACA;IACvC;IAEA,MAAM,eACJC,MAAyC,EACzCJ,IAA2B,EAC3B;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAACI,QAAQJ;IACjD;IAEA,MAAM,UAAU;QACd,IAAI,CAAC,WAAW,CAAC,OAAO;QACxB,MAAM,KAAK,CAAC;IACd;IAnFA,YACED,OAAyB,EACzBE,WAA0B,EAC1BD,IAA+B,CAC/B;QACA,IAAI,CAACD,SACH,MAAM,IAAIM,MACR;QAGJ,IAAI,CAACJ,aACH,MAAM,IAAII,MACR;QAIJ,MAAM,EAAEC,iBAAiB,EAAEC,cAAc,EAAE,GAAGL,WAAW,GAAGF,QAAQ,CAAC;QACrE,MAAMQ,iBAAiBC,AAAAA,IAAAA,iCAAAA,iCAAAA,AAAAA,EAAkC;YACvD,WAAW;YACX,WAAW;YACX,wBAAyBT,MACrB;YACJM;YACAC;QACF;QACA,MAAM,EAAEG,0BAA0B,EAAE,GAAGR;QACvC,MAAMS,UAAU,IAAIC,iCAAAA,gBAAgBA,CAACX,aAAa;YAChD,GAAGC,SAAS;YACZ,wBAAwBM,eAAe,sBAAsB;QAC/D;QACA,MAAMK,cAAcC,AAAAA,IAAAA,iDAAAA,iCAAAA,AAAAA,EAAkC;YACpDf;YACAY;YACAH;YACAb;QACF;QACA,KAAK,CAACgB,SAAST,YAtCjB,uBAAU,eAAV;QAuCE,IAAI,CAAC,WAAW,GAAGW;QAEnBE,IAAAA,uCAAAA,+BAAAA,AAAAA,EACEd,aACA,aACAS;IAEJ;AAwCF"}
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":";;;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;;;;;;;;;;;;;;;;;;;;;;;ACeA,MAAMI,QAAQC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS;AAchB,MAAMC,8BAA8BC,iCAAAA,YAAYA;IA8DrD,aAAa,OACXC,OAAyB,EACzBC,IAAqC,EACrC;QACA,MAAM,EAAEC,WAAW,EAAE,GAAGC,WAAW,GAAGF,QAAQ,CAAC;QAC/C,MAAMG,OACJF,eAAgB,OAAMF,QAAQ,KAAK,EAAC,CAAE,CAAC,EAAE,IAAK,MAAMA,QAAQ,OAAO;QAErE,OAAO,IAAIF,sBAAsBE,SAASI,MAAMD;IAClD;IAEA,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU;IACpC;IAEA,QAAQ;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;IAC/B;IAEA,MAAM,UAAU;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO;IACjC;IAEA,MAAM,cAAcC,IAAmB,EAAE;QACvC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAACA;IACvC;IAEA,MAAM,eACJC,MAAyC,EACzCJ,IAA2B,EAC3B;QACA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAACI,QAAQJ;IACjD;IAEA,MAAM,UAAU;QACd,IAAI,CAAC,WAAW,CAAC,OAAO;QACxB,MAAM,KAAK,CAAC;IACd;IA7FA,YACED,OAAyB,EACzBE,WAA0B,EAC1BD,IAA+B,EAC/BK,SAAqC,CACrC;QACA,IAAI,CAACN,SACH,MAAM,IAAIO,MACR;QAGJ,IAAI,CAACL,aACH,MAAM,IAAIK,MACR;QAIJ,MAAM,EAAEC,iBAAiB,EAAEC,cAAc,EAAE,GAAGN,WAAW,GAAGF,QAAQ,CAAC;QACrE,MAAMS,iBAAiBC,AAAAA,IAAAA,iCAAAA,iCAAAA,AAAAA,EAAkC;YACvD,WAAW;YACX,WAAW;YACX,wBAAyBV,MACrB;YACJO;YACAC;QACF;QACA,MAAM,EAAEG,0BAA0B,EAAE,GAAGT;QACvC,MAAMU,iBAAiBC,AAAAA,IAAAA,wCAAAA,6BAAAA,AAAAA,EAA8B;YACnD,gBAAgB,IAAMC;QACxB;QACA,MAAMC,UAA4B,IAAIC,iCAAAA,gBAAgBA,CAACf,aAAa;YAClE,GAAGC,SAAS;YACZ,wBAAwBO,eAAe,sBAAsB;YAC7D,eAAeQ,AAAAA,IAAAA,wCAAAA,6BAAAA,AAAAA,EACbf,UAAU,aAAa,EACvBU;QAEJ;QACA,MAAME,cACJI,AAAAA,IAAAA,iDAAAA,iCAAAA,AAAAA,EAAkC;YAChCnB;YACAgB;YACAN;YACAd;YACAU;QACF;QACF,KAAK,CAACU,SAASb,YAnDjB,uBAAmB,eAAnB;QAoDE,IAAI,CAAC,WAAW,GAAGY;QAEnBK,IAAAA,uCAAAA,+BAAAA,AAAAA,EACElB,aACA,aACAU;IAEJ;AAwCF"}
@@ -37,6 +37,8 @@ const createPuppeteerBrowserAdapter = (browser, pageScope)=>({
37
37
  isPageClosed: (page)=>page.isClosed(),
38
38
  isPageAllowed: (page)=>pageScope?.ownsPage(page) ?? true,
39
39
  bringToFront: (page)=>page.bringToFront(),
40
+ pageTitle: (page)=>page.title(),
41
+ pageUrl: (page)=>page.url(),
40
42
  onNewPage: (handler)=>browser.on('targetcreated', handler),
41
43
  offNewPage: (handler)=>browser.off('targetcreated', handler),
42
44
  isNewPageEvent: (target)=>'page' === target.type() && (pageScope?.captureTarget(target) ?? true),
@@ -1 +1 @@
1
- {"version":3,"file":"puppeteer/browser-page-manager.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/browser-page-manager.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 BrowserAgentAdapter,\n BrowserPageManager,\n type ResolvedBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport type { DebugFunction } from '@midscene/shared/logger';\nimport type {\n Browser as PuppeteerBrowser,\n Page as PuppeteerPage,\n Target as PuppeteerTarget,\n} from 'puppeteer';\nimport type { PuppeteerWebPage } from './page';\n\nexport interface PuppeteerBrowserPageScope {\n pages(): Promise<PuppeteerPage[]>;\n trackPage(page: PuppeteerPage): void;\n ownsPage(page: PuppeteerPage): boolean;\n captureTarget(target: PuppeteerTarget): boolean;\n}\n\nconst createPuppeteerBrowserAdapter = (\n browser: PuppeteerBrowser,\n pageScope?: PuppeteerBrowserPageScope,\n): BrowserAgentAdapter<PuppeteerPage, PuppeteerTarget> => ({\n pages: () => pageScope?.pages() ?? browser.pages(),\n newPage: async () => {\n const page = await browser.newPage();\n pageScope?.trackPage(page);\n return page;\n },\n isPageClosed: (page) => page.isClosed(),\n isPageAllowed: (page) => pageScope?.ownsPage(page) ?? true,\n bringToFront: (page) => page.bringToFront(),\n onNewPage: (handler) => browser.on('targetcreated', handler),\n offNewPage: (handler) => browser.off('targetcreated', handler),\n isNewPageEvent: (target) =>\n target.type() === 'page' && (pageScope?.captureTarget(target) ?? true),\n resolveNewPage: (target) => target.page(),\n});\n\nexport function createPuppeteerBrowserPageManager({\n browser,\n webPage,\n runtimeOptions,\n debug,\n pageScope,\n}: {\n browser: PuppeteerBrowser;\n webPage: PuppeteerWebPage;\n runtimeOptions: ResolvedBrowserAgentRuntimeOptions;\n debug: DebugFunction;\n pageScope?: PuppeteerBrowserPageScope;\n}) {\n return new BrowserPageManager({\n agentName: 'PuppeteerBrowserAgent',\n adapter: createPuppeteerBrowserAdapter(browser, pageScope),\n getActivePage: () => webPage.underlyingPage as PuppeteerPage,\n setActivePageValue: (page) => {\n webPage.underlyingPage = page;\n },\n autoFollowNewPage: runtimeOptions.autoFollowNewPage,\n newPageTimeout: runtimeOptions.newPageTimeout,\n debug,\n });\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","createPuppeteerBrowserAdapter","browser","pageScope","page","handler","target","createPuppeteerBrowserPageManager","webPage","runtimeOptions","debug","BrowserPageManager"],"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;;;;;;;;ACcA,MAAMI,gCAAgC,CACpCC,SACAC,YACyD;QACzD,OAAO,IAAMA,WAAW,WAAWD,QAAQ,KAAK;QAChD,SAAS;YACP,MAAME,OAAO,MAAMF,QAAQ,OAAO;YAClCC,WAAW,UAAUC;YACrB,OAAOA;QACT;QACA,cAAc,CAACA,OAASA,KAAK,QAAQ;QACrC,eAAe,CAACA,OAASD,WAAW,SAASC,SAAS;QACtD,cAAc,CAACA,OAASA,KAAK,YAAY;QACzC,WAAW,CAACC,UAAYH,QAAQ,EAAE,CAAC,iBAAiBG;QACpD,YAAY,CAACA,UAAYH,QAAQ,GAAG,CAAC,iBAAiBG;QACtD,gBAAgB,CAACC,SACfA,AAAkB,WAAlBA,OAAO,IAAI,MAAkBH,CAAAA,WAAW,cAAcG,WAAW,IAAG;QACtE,gBAAgB,CAACA,SAAWA,OAAO,IAAI;IACzC;AAEO,SAASC,kCAAkC,EAChDL,OAAO,EACPM,OAAO,EACPC,cAAc,EACdC,KAAK,EACLP,SAAS,EAOV;IACC,OAAO,IAAIQ,iCAAAA,kBAAkBA,CAAC;QAC5B,WAAW;QACX,SAASV,8BAA8BC,SAASC;QAChD,eAAe,IAAMK,QAAQ,cAAc;QAC3C,oBAAoB,CAACJ;YACnBI,QAAQ,cAAc,GAAGJ;QAC3B;QACA,mBAAmBK,eAAe,iBAAiB;QACnD,gBAAgBA,eAAe,cAAc;QAC7CC;IACF;AACF"}
1
+ {"version":3,"file":"puppeteer/browser-page-manager.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/browser-page-manager.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 BrowserAgentAdapter,\n BrowserPageManager,\n type ResolvedBrowserAgentRuntimeOptions,\n} from '@/common/browser-agent';\nimport type { DebugFunction } from '@midscene/shared/logger';\nimport type {\n Browser as PuppeteerBrowser,\n Page as PuppeteerPage,\n Target as PuppeteerTarget,\n} from 'puppeteer';\nimport type { PuppeteerWebPage } from './page';\n\nexport interface PuppeteerBrowserPageScope {\n pages(): Promise<PuppeteerPage[]>;\n trackPage(page: PuppeteerPage): void;\n ownsPage(page: PuppeteerPage): boolean;\n captureTarget(target: PuppeteerTarget): boolean;\n}\n\nconst createPuppeteerBrowserAdapter = (\n browser: PuppeteerBrowser,\n pageScope?: PuppeteerBrowserPageScope,\n): BrowserAgentAdapter<PuppeteerPage, PuppeteerTarget> => ({\n pages: () => pageScope?.pages() ?? browser.pages(),\n newPage: async () => {\n const page = await browser.newPage();\n pageScope?.trackPage(page);\n return page;\n },\n isPageClosed: (page) => page.isClosed(),\n isPageAllowed: (page) => pageScope?.ownsPage(page) ?? true,\n bringToFront: (page) => page.bringToFront(),\n pageTitle: (page) => page.title(),\n pageUrl: (page) => page.url(),\n onNewPage: (handler) => browser.on('targetcreated', handler),\n offNewPage: (handler) => browser.off('targetcreated', handler),\n isNewPageEvent: (target) =>\n target.type() === 'page' && (pageScope?.captureTarget(target) ?? true),\n resolveNewPage: (target) => target.page(),\n});\n\nexport function createPuppeteerBrowserPageManager({\n browser,\n webPage,\n runtimeOptions,\n debug,\n pageScope,\n}: {\n browser: PuppeteerBrowser;\n webPage: PuppeteerWebPage;\n runtimeOptions: ResolvedBrowserAgentRuntimeOptions;\n debug: DebugFunction;\n pageScope?: PuppeteerBrowserPageScope;\n}) {\n return new BrowserPageManager({\n agentName: 'PuppeteerBrowserAgent',\n adapter: createPuppeteerBrowserAdapter(browser, pageScope),\n getActivePage: () => webPage.underlyingPage as PuppeteerPage,\n setActivePageValue: (page) => {\n webPage.underlyingPage = page;\n },\n autoFollowNewPage: runtimeOptions.autoFollowNewPage,\n newPageTimeout: runtimeOptions.newPageTimeout,\n debug,\n });\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","createPuppeteerBrowserAdapter","browser","pageScope","page","handler","target","createPuppeteerBrowserPageManager","webPage","runtimeOptions","debug","BrowserPageManager"],"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;;;;;;;;ACcA,MAAMI,gCAAgC,CACpCC,SACAC,YACyD;QACzD,OAAO,IAAMA,WAAW,WAAWD,QAAQ,KAAK;QAChD,SAAS;YACP,MAAME,OAAO,MAAMF,QAAQ,OAAO;YAClCC,WAAW,UAAUC;YACrB,OAAOA;QACT;QACA,cAAc,CAACA,OAASA,KAAK,QAAQ;QACrC,eAAe,CAACA,OAASD,WAAW,SAASC,SAAS;QACtD,cAAc,CAACA,OAASA,KAAK,YAAY;QACzC,WAAW,CAACA,OAASA,KAAK,KAAK;QAC/B,SAAS,CAACA,OAASA,KAAK,GAAG;QAC3B,WAAW,CAACC,UAAYH,QAAQ,EAAE,CAAC,iBAAiBG;QACpD,YAAY,CAACA,UAAYH,QAAQ,GAAG,CAAC,iBAAiBG;QACtD,gBAAgB,CAACC,SACfA,AAAkB,WAAlBA,OAAO,IAAI,MAAkBH,CAAAA,WAAW,cAAcG,WAAW,IAAG;QACtE,gBAAgB,CAACA,SAAWA,OAAO,IAAI;IACzC;AAEO,SAASC,kCAAkC,EAChDL,OAAO,EACPM,OAAO,EACPC,cAAc,EACdC,KAAK,EACLP,SAAS,EAOV;IACC,OAAO,IAAIQ,iCAAAA,kBAAkBA,CAAC;QAC5B,WAAW;QACX,SAASV,8BAA8BC,SAASC;QAChD,eAAe,IAAMK,QAAQ,cAAc;QAC3C,oBAAoB,CAACJ;YACnBI,QAAQ,cAAc,GAAGJ;QAC3B;QACA,mBAAmBK,eAAe,iBAAiB;QACnD,gBAAgBA,eAAe,cAAc;QAC7CC;IACF;AACF"}
@@ -26,36 +26,9 @@ __webpack_require__.r(__webpack_exports__);
26
26
  __webpack_require__.d(__webpack_exports__, {
27
27
  createScopedPuppeteerBrowserAgent: ()=>createScopedPuppeteerBrowserAgent
28
28
  });
29
- const browser_agent_js_namespaceObject = require("../common/browser-agent.js");
30
- const logger_namespaceObject = require("@midscene/shared/logger");
31
29
  const external_browser_agent_js_namespaceObject = require("./browser-agent.js");
32
- const external_browser_page_manager_js_namespaceObject = require("./browser-page-manager.js");
33
- const debug = (0, logger_namespaceObject.getDebug)('puppeteer:browser-agent');
34
- class ScopedPuppeteerBrowserAgent extends external_browser_agent_js_namespaceObject.PuppeteerBrowserAgent {
35
- constructor(browser, initialPage, opts, pageOwnership){
36
- const { autoFollowNewPage, newPageTimeout } = opts ?? {};
37
- super(browser, initialPage, {
38
- ...opts,
39
- autoFollowNewPage: false
40
- });
41
- this.pageManager.destroy();
42
- const runtimeOptions = (0, browser_agent_js_namespaceObject.resolveBrowserAgentRuntimeOptions)({
43
- agentName: 'PuppeteerBrowserAgent',
44
- pageScope: 'browser',
45
- autoFollowNewPage,
46
- newPageTimeout
47
- });
48
- this.pageManager = (0, external_browser_page_manager_js_namespaceObject.createPuppeteerBrowserPageManager)({
49
- browser,
50
- webPage: this.interface,
51
- runtimeOptions,
52
- debug,
53
- pageScope: pageOwnership
54
- });
55
- }
56
- }
57
30
  function createScopedPuppeteerBrowserAgent(browser, initialPage, opts, pageOwnership) {
58
- return new ScopedPuppeteerBrowserAgent(browser, initialPage, opts, pageOwnership);
31
+ return new external_browser_agent_js_namespaceObject.PuppeteerBrowserAgent(browser, initialPage, opts, pageOwnership);
59
32
  }
60
33
  exports.createScopedPuppeteerBrowserAgent = __webpack_exports__.createScopedPuppeteerBrowserAgent;
61
34
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -1 +1 @@
1
- {"version":3,"file":"puppeteer/scoped-browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/scoped-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 { resolveBrowserAgentRuntimeOptions } from '@/common/browser-agent';\nimport { getDebug } from '@midscene/shared/logger';\nimport type {\n Browser as PuppeteerBrowser,\n Page as PuppeteerPage,\n} from 'puppeteer';\nimport {\n PuppeteerBrowserAgent,\n type PuppeteerBrowserAgentOpt,\n} from './browser-agent';\nimport { createPuppeteerBrowserPageManager } from './browser-page-manager';\nimport type { PuppeteerPageOwnership } from './page-ownership';\n\nconst debug = getDebug('puppeteer:browser-agent');\n\nclass ScopedPuppeteerBrowserAgent extends PuppeteerBrowserAgent {\n constructor(\n browser: PuppeteerBrowser,\n initialPage: PuppeteerPage,\n opts: PuppeteerBrowserAgentOpt | undefined,\n pageOwnership: PuppeteerPageOwnership,\n ) {\n const { autoFollowNewPage, newPageTimeout } = opts ?? {};\n super(browser, initialPage, {\n ...opts,\n autoFollowNewPage: false,\n });\n\n this.pageManager.destroy();\n const runtimeOptions = resolveBrowserAgentRuntimeOptions({\n agentName: 'PuppeteerBrowserAgent',\n pageScope: 'browser',\n autoFollowNewPage,\n newPageTimeout,\n });\n this.pageManager = createPuppeteerBrowserPageManager({\n browser,\n webPage: this.interface,\n runtimeOptions,\n debug,\n pageScope: pageOwnership,\n });\n }\n}\n\nexport function createScopedPuppeteerBrowserAgent(\n browser: PuppeteerBrowser,\n initialPage: PuppeteerPage,\n opts: PuppeteerBrowserAgentOpt | undefined,\n pageOwnership: PuppeteerPageOwnership,\n): PuppeteerBrowserAgent {\n return new ScopedPuppeteerBrowserAgent(\n browser,\n initialPage,\n opts,\n pageOwnership,\n );\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","debug","getDebug","ScopedPuppeteerBrowserAgent","PuppeteerBrowserAgent","browser","initialPage","opts","pageOwnership","autoFollowNewPage","newPageTimeout","runtimeOptions","resolveBrowserAgentRuntimeOptions","createPuppeteerBrowserPageManager","createScopedPuppeteerBrowserAgent"],"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;;;;;;;;;;;ACOA,MAAMI,QAAQC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS;AAEvB,MAAMC,oCAAoCC,0CAAAA,qBAAqBA;IAC7D,YACEC,OAAyB,EACzBC,WAA0B,EAC1BC,IAA0C,EAC1CC,aAAqC,CACrC;QACA,MAAM,EAAEC,iBAAiB,EAAEC,cAAc,EAAE,GAAGH,QAAQ,CAAC;QACvD,KAAK,CAACF,SAASC,aAAa;YAC1B,GAAGC,IAAI;YACP,mBAAmB;QACrB;QAEA,IAAI,CAAC,WAAW,CAAC,OAAO;QACxB,MAAMI,iBAAiBC,AAAAA,IAAAA,iCAAAA,iCAAAA,AAAAA,EAAkC;YACvD,WAAW;YACX,WAAW;YACXH;YACAC;QACF;QACA,IAAI,CAAC,WAAW,GAAGG,AAAAA,IAAAA,iDAAAA,iCAAAA,AAAAA,EAAkC;YACnDR;YACA,SAAS,IAAI,CAAC,SAAS;YACvBM;YACAV;YACA,WAAWO;QACb;IACF;AACF;AAEO,SAASM,kCACdT,OAAyB,EACzBC,WAA0B,EAC1BC,IAA0C,EAC1CC,aAAqC;IAErC,OAAO,IAAIL,4BACTE,SACAC,aACAC,MACAC;AAEJ"}
1
+ {"version":3,"file":"puppeteer/scoped-browser-agent.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/puppeteer/scoped-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 type {\n Browser as PuppeteerBrowser,\n Page as PuppeteerPage,\n} from 'puppeteer';\nimport {\n PuppeteerBrowserAgent,\n type PuppeteerBrowserAgentOpt,\n} from './browser-agent';\nimport type { PuppeteerPageOwnership } from './page-ownership';\n\nexport function createScopedPuppeteerBrowserAgent(\n browser: PuppeteerBrowser,\n initialPage: PuppeteerPage,\n opts: PuppeteerBrowserAgentOpt | undefined,\n pageOwnership: PuppeteerPageOwnership,\n): PuppeteerBrowserAgent {\n return new PuppeteerBrowserAgent(browser, initialPage, opts, pageOwnership);\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","createScopedPuppeteerBrowserAgent","browser","initialPage","opts","pageOwnership","PuppeteerBrowserAgent"],"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;;;;;;;;ACIO,SAASI,kCACdC,OAAyB,EACzBC,WAA0B,EAC1BC,IAA0C,EAC1CC,aAAqC;IAErC,OAAO,IAAIC,0CAAAA,qBAAqBA,CAACJ,SAASC,aAAaC,MAAMC;AAC/D"}
@@ -8,6 +8,8 @@ export type BrowserAgentAdapter<Page, NewPageEvent> = {
8
8
  isPageClosed(page: Page): boolean;
9
9
  isPageAllowed?(page: Page): boolean;
10
10
  bringToFront(page: Page): Promise<void> | void;
11
+ pageTitle(page: Page): Promise<string> | string;
12
+ pageUrl(page: Page): string;
11
13
  onNewPage(handler: (event: NewPageEvent) => void): void;
12
14
  offNewPage(handler: (event: NewPageEvent) => void): void;
13
15
  resolveNewPage(event: NewPageEvent): Page | Promise<Page | null> | null;
@@ -39,6 +41,17 @@ export declare abstract class WebAgentCore<InterfaceType extends AbstractInterfa
39
41
  protected isRetryableContextError(error: unknown): boolean;
40
42
  }
41
43
  export declare function resolveBrowserAgentRuntimeOptions({ agentName, pageScope, forceSameTabNavigation, autoFollowNewPage, newPageTimeout, }: BrowserAgentRuntimeOptions): ResolvedBrowserAgentRuntimeOptions;
44
+ export type BrowserAgentPageSummary = {
45
+ index: number;
46
+ active: boolean;
47
+ title: string;
48
+ url: string;
49
+ };
50
+ export type BrowserAgentPageSelector = {
51
+ index?: number;
52
+ title?: string;
53
+ url?: string;
54
+ };
42
55
  export declare class BrowserPageManager<Page, NewPageEvent> {
43
56
  private readonly agentName;
44
57
  private readonly adapter;
@@ -50,12 +63,18 @@ export declare class BrowserPageManager<Page, NewPageEvent> {
50
63
  constructor(options: BrowserPageManagerOptions<Page, NewPageEvent>);
51
64
  get activePage(): Page;
52
65
  pages(): Page[] | Promise<Page[]>;
66
+ pageSummaries(): Promise<BrowserAgentPageSummary[]>;
67
+ pageSummaryByIndex(index: number): Promise<BrowserAgentPageSummary>;
53
68
  newPage(): Promise<Page>;
54
69
  setActivePage(page: Page): Promise<void>;
70
+ setActivePageBySelector(selector: BrowserAgentPageSelector): Promise<BrowserAgentPageSummary>;
55
71
  waitForNewPage(action?: () => Promise<unknown> | unknown, opts?: {
56
72
  timeout?: number;
57
73
  }): Promise<Page>;
58
74
  destroy(): void;
75
+ private openPages;
76
+ private tryPageSummary;
77
+ private pageSummary;
59
78
  private followNewPage;
60
79
  private isNewPageEvent;
61
80
  private createNewPageWaiter;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/common/browser-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/common/browser-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type DeviceAction } from '@midscene/core';
2
+ import type { BrowserPageManager } from './browser-agent';
3
+ export declare const createBrowserAgentPageActions: <Page, NewPageEvent>(options: {
4
+ getPageManager: () => BrowserPageManager<Page, NewPageEvent>;
5
+ }) => DeviceAction<any>[];
6
+ export declare const appendBrowserAgentPageActions: (customActions: DeviceAction<any>[] | undefined, browserActions: DeviceAction<any>[]) => DeviceAction<any, any>[];
7
+ //# sourceMappingURL=browser-page-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-page-actions.d.ts","sourceRoot":"","sources":["../../../src/common/browser-page-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAK,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAkGzB,eAAO,MAAM,6BAA6B,GAAI,IAAI,EAAE,YAAY,EAAE,SAAS;IACzE,cAAc,EAAE,MAAM,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;CAC9D,KAAG,YAAY,CAAC,GAAG,CAAC,EAyDpB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GACxC,eAAe,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,SAAS,EAC9C,gBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,6BAWpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/playwright/browser-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EACV,cAAc,IAAI,wBAAwB,EAC1C,IAAI,IAAI,cAAc,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAgBvE,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,eAAe,EACf,wBAAwB,CACzB,GAAG;IACF,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,yBAAyB,GAAG;IACxE,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;WACzD,4BAA4B,IAAI,SAAS,6BAA6B,EAAE;IAOxF,QAAQ,CAAC,UAAU,CAAC,EAAE,2BAA2B,CAAC;IAElD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;gBAGA,OAAO,EAAE,wBAAwB,EACjC,WAAW,EAAE,cAAc,EAC3B,IAAI,CAAC,EAAE,yBAAyB;WAiDrB,MAAM,CACjB,OAAO,EAAE,wBAAwB,EACjC,IAAI,CAAC,EAAE,+BAA+B;IAQxC,IAAI,UAAU,mBAEb;IAED,KAAK;IAIC,OAAO;IAIP,aAAa,CAAC,IAAI,EAAE,cAAc;IAIlC,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACzC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvB,OAAO;CAId"}
1
+ {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/playwright/browser-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EACV,cAAc,IAAI,wBAAwB,EAC1C,IAAI,IAAI,cAAc,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEtD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAkBvE,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,eAAe,EACf,wBAAwB,CACzB,GAAG;IACF,UAAU,CAAC,EAAE,2BAA2B,CAAC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,yBAAyB,GAAG;IACxE,WAAW,CAAC,EAAE,cAAc,CAAC;CAC9B,CAAC;AAEF,qBAAa,sBAAuB,SAAQ,YAAY,CAAC,iBAAiB,CAAC;WACzD,4BAA4B,IAAI,SAAS,6BAA6B,EAAE;IAOxF,QAAQ,CAAC,UAAU,CAAC,EAAE,2BAA2B,CAAC;IAElD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAG1B;gBAGA,OAAO,EAAE,wBAAwB,EACjC,WAAW,EAAE,cAAc,EAC3B,IAAI,CAAC,EAAE,yBAAyB;WAyDrB,MAAM,CACjB,OAAO,EAAE,wBAAwB,EACjC,IAAI,CAAC,EAAE,+BAA+B;IAQxC,IAAI,UAAU,mBAEb;IAED,KAAK;IAIC,OAAO;IAIP,aAAa,CAAC,IAAI,EAAE,cAAc;IAIlC,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACzC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvB,OAAO;CAId"}
@@ -1,6 +1,7 @@
1
1
  import { type BrowserPageManager, WebAgentCore } from '../common/browser-agent';
2
2
  import type { WebPageAgentOpt } from '../web-element';
3
3
  import type { Browser as PuppeteerBrowser, Page as PuppeteerPage, Target as PuppeteerTarget } from 'puppeteer';
4
+ import type { PuppeteerBrowserPageScope } from './browser-page-manager';
4
5
  import { PuppeteerWebPage } from './page';
5
6
  export type PuppeteerBrowserAgentOpt = Omit<WebPageAgentOpt, 'forceSameTabNavigation'> & {
6
7
  autoFollowNewPage?: boolean;
@@ -10,8 +11,8 @@ export type PuppeteerBrowserAgentCreateOpt = PuppeteerBrowserAgentOpt & {
10
11
  initialPage?: PuppeteerPage;
11
12
  };
12
13
  export declare class PuppeteerBrowserAgent extends WebAgentCore<PuppeteerWebPage> {
13
- protected pageManager: BrowserPageManager<PuppeteerPage, PuppeteerTarget>;
14
- constructor(browser: PuppeteerBrowser, initialPage: PuppeteerPage, opts?: PuppeteerBrowserAgentOpt);
14
+ protected readonly pageManager: BrowserPageManager<PuppeteerPage, PuppeteerTarget>;
15
+ constructor(browser: PuppeteerBrowser, initialPage: PuppeteerPage, opts?: PuppeteerBrowserAgentOpt, pageScope?: PuppeteerBrowserPageScope);
15
16
  static create(browser: PuppeteerBrowser, opts?: PuppeteerBrowserAgentCreateOpt): Promise<PuppeteerBrowserAgent>;
16
17
  get activePage(): PuppeteerPage;
17
18
  pages(): PuppeteerPage[] | Promise<PuppeteerPage[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/browser-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACrB,MAAM,IAAI,eAAe,EAC1B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI1C,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,eAAe,EACf,wBAAwB,CACzB,GAAG;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,GAAG;IACtE,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACvE,SAAS,CAAC,WAAW,EAAE,kBAAkB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAGxE,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,aAAa,EAC1B,IAAI,CAAC,EAAE,wBAAwB;WA2CpB,MAAM,CACjB,OAAO,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE,8BAA8B;IASvC,IAAI,UAAU,kBAEb;IAED,KAAK;IAIC,OAAO;IAIP,aAAa,CAAC,IAAI,EAAE,aAAa;IAIjC,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACzC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvB,OAAO;CAId"}
1
+ {"version":3,"file":"browser-agent.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/browser-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,YAAY,EAEb,MAAM,wBAAwB,CAAC;AAMhC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACrB,MAAM,IAAI,eAAe,EAC1B,MAAM,WAAW,CAAC;AAEnB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI1C,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,eAAe,EACf,wBAAwB,CACzB,GAAG;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,wBAAwB,GAAG;IACtE,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAChD,aAAa,EACb,eAAe,CAChB,CAAC;gBAGA,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,aAAa,EAC1B,IAAI,CAAC,EAAE,wBAAwB,EAC/B,SAAS,CAAC,EAAE,yBAAyB;WAoD1B,MAAM,CACjB,OAAO,EAAE,gBAAgB,EACzB,IAAI,CAAC,EAAE,8BAA8B;IASvC,IAAI,UAAU,kBAEb;IAED,KAAK;IAIC,OAAO;IAIP,aAAa,CAAC,IAAI,EAAE,aAAa;IAIjC,cAAc,CAClB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,EACzC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKvB,OAAO;CAId"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-page-manager.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/browser-page-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,KAAK,kCAAkC,EACxC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACrB,MAAM,IAAI,eAAe,EAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,WAAW,yBAAyB;IACxC,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAClC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;CACjD;AAsBD,wBAAgB,iCAAiC,CAAC,EAChD,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,EAAE,kCAAkC,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,sDAYA"}
1
+ {"version":3,"file":"browser-page-manager.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/browser-page-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,KAAK,kCAAkC,EACxC,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACrB,MAAM,IAAI,eAAe,EAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE/C,MAAM,WAAW,yBAAyB;IACxC,KAAK,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAClC,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC;CACjD;AAwBD,wBAAgB,iCAAiC,CAAC,EAChD,OAAO,EACP,OAAO,EACP,cAAc,EACd,KAAK,EACL,SAAS,GACV,EAAE;IACD,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,cAAc,EAAE,kCAAkC,CAAC;IACnD,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,yBAAyB,CAAC;CACvC,sDAYA"}
@@ -1 +1 @@
1
- {"version":3,"file":"scoped-browser-agent.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/scoped-browser-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAkC/D,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,aAAa,EAC1B,IAAI,EAAE,wBAAwB,GAAG,SAAS,EAC1C,aAAa,EAAE,sBAAsB,GACpC,qBAAqB,CAOvB"}
1
+ {"version":3,"file":"scoped-browser-agent.d.ts","sourceRoot":"","sources":["../../../src/puppeteer/scoped-browser-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,IAAI,gBAAgB,EAC3B,IAAI,IAAI,aAAa,EACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,aAAa,EAC1B,IAAI,EAAE,wBAAwB,GAAG,SAAS,EAC1C,aAAa,EAAE,sBAAsB,GACpC,qBAAqB,CAEvB"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "Browser use",
9
9
  "Android use"
10
10
  ],
11
- "version": "1.13.2",
11
+ "version": "1.13.4-beta-20260924030824.0",
12
12
  "repository": "https://github.com/web-infra-dev/midscene",
13
13
  "homepage": "https://midscenejs.com/",
14
14
  "main": "./dist/lib/index.js",
@@ -117,9 +117,9 @@
117
117
  "socket.io-client": "4.8.1",
118
118
  "ws": "^8.18.1",
119
119
  "zod": "^3.25.1",
120
- "@midscene/playground": "1.13.2",
121
- "@midscene/shared": "1.13.2",
122
- "@midscene/core": "1.13.2"
120
+ "@midscene/core": "1.13.4-beta-20260924030824.0",
121
+ "@midscene/shared": "1.13.4-beta-20260924030824.0",
122
+ "@midscene/playground": "1.13.4-beta-20260924030824.0"
123
123
  },
124
124
  "devDependencies": {
125
125
  "@playwright/test": "^1.45.0",