@midscene/web 0.30.10 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/bin.mjs +0 -4
- package/dist/es/bin.mjs.map +1 -1
- package/dist/es/bridge-mode/agent-cli-side.mjs +22 -11
- package/dist/es/bridge-mode/agent-cli-side.mjs.map +1 -1
- package/dist/es/bridge-mode/common.mjs +8 -2
- package/dist/es/bridge-mode/common.mjs.map +1 -1
- package/dist/es/bridge-mode/io-client.mjs +10 -16
- package/dist/es/bridge-mode/io-client.mjs.map +1 -1
- package/dist/es/bridge-mode/io-server.mjs +21 -19
- package/dist/es/bridge-mode/io-server.mjs.map +1 -1
- package/dist/es/bridge-mode/page-browser-side.mjs +10 -11
- package/dist/es/bridge-mode/page-browser-side.mjs.map +1 -1
- package/dist/es/chrome-extension/agent.mjs.map +1 -1
- package/dist/es/chrome-extension/cdpInput.mjs.map +1 -1
- package/dist/es/chrome-extension/dynamic-scripts.mjs.map +1 -1
- package/dist/es/chrome-extension/page.mjs +85 -89
- package/dist/es/chrome-extension/page.mjs.map +1 -1
- package/dist/es/playwright/ai-fixture.mjs +43 -14
- package/dist/es/playwright/ai-fixture.mjs.map +1 -1
- package/dist/es/playwright/index.mjs +18 -2
- package/dist/es/playwright/index.mjs.map +1 -1
- package/dist/es/playwright/page.mjs.map +1 -1
- package/dist/es/playwright/reporter/index.mjs +30 -16
- package/dist/es/playwright/reporter/index.mjs.map +1 -1
- package/dist/es/puppeteer/agent-launcher.mjs +48 -22
- package/dist/es/puppeteer/agent-launcher.mjs.map +1 -1
- package/dist/es/puppeteer/base-page.mjs +67 -26
- package/dist/es/puppeteer/base-page.mjs.map +1 -1
- package/dist/es/puppeteer/index.mjs +18 -2
- package/dist/es/puppeteer/index.mjs.map +1 -1
- package/dist/es/puppeteer/page.mjs.map +1 -1
- package/dist/es/static/static-agent.mjs.map +1 -1
- package/dist/es/static/static-page.mjs +1 -10
- package/dist/es/static/static-page.mjs.map +1 -1
- package/dist/es/utils.mjs +8 -0
- package/dist/es/utils.mjs.map +1 -0
- package/dist/es/web-element.mjs +2 -24
- package/dist/es/web-element.mjs.map +1 -1
- package/dist/es/web-page.mjs +71 -41
- package/dist/es/web-page.mjs.map +1 -1
- package/dist/lib/bin.js +1 -5
- package/dist/lib/bin.js.map +1 -1
- package/dist/lib/bridge-mode/agent-cli-side.js +23 -12
- package/dist/lib/bridge-mode/agent-cli-side.js.map +1 -1
- package/dist/lib/bridge-mode/browser.js +2 -2
- package/dist/lib/bridge-mode/browser.js.map +1 -1
- package/dist/lib/bridge-mode/common.js +17 -5
- package/dist/lib/bridge-mode/common.js.map +1 -1
- package/dist/lib/bridge-mode/index.js +3 -3
- package/dist/lib/bridge-mode/index.js.map +1 -1
- package/dist/lib/bridge-mode/io-client.js +12 -18
- package/dist/lib/bridge-mode/io-client.js.map +1 -1
- package/dist/lib/bridge-mode/io-server.js +25 -23
- package/dist/lib/bridge-mode/io-server.js.map +1 -1
- package/dist/lib/bridge-mode/page-browser-side.js +12 -13
- package/dist/lib/bridge-mode/page-browser-side.js.map +1 -1
- package/dist/lib/chrome-extension/agent.js +2 -2
- package/dist/lib/chrome-extension/agent.js.map +1 -1
- package/dist/lib/chrome-extension/cdpInput.js +2 -2
- package/dist/lib/chrome-extension/cdpInput.js.map +1 -1
- package/dist/lib/chrome-extension/dynamic-scripts.js +2 -2
- package/dist/lib/chrome-extension/dynamic-scripts.js.map +1 -1
- package/dist/lib/chrome-extension/index.js +3 -3
- package/dist/lib/chrome-extension/index.js.map +1 -1
- package/dist/lib/chrome-extension/page.js +87 -91
- package/dist/lib/chrome-extension/page.js.map +1 -1
- package/dist/lib/index.js +6 -6
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/playwright/ai-fixture.js +46 -17
- package/dist/lib/playwright/ai-fixture.js.map +1 -1
- package/dist/lib/playwright/index.js +32 -6
- package/dist/lib/playwright/index.js.map +1 -1
- package/dist/lib/playwright/page.js +2 -2
- package/dist/lib/playwright/page.js.map +1 -1
- package/dist/lib/playwright/reporter/index.js +32 -18
- package/dist/lib/playwright/reporter/index.js.map +1 -1
- package/dist/lib/puppeteer/agent-launcher.js +57 -28
- package/dist/lib/puppeteer/agent-launcher.js.map +1 -1
- package/dist/lib/puppeteer/base-page.js +73 -29
- package/dist/lib/puppeteer/base-page.js.map +1 -1
- package/dist/lib/puppeteer/index.js +31 -5
- package/dist/lib/puppeteer/index.js.map +1 -1
- package/dist/lib/puppeteer/page.js +2 -2
- package/dist/lib/puppeteer/page.js.map +1 -1
- package/dist/lib/static/index.js +4 -4
- package/dist/lib/static/index.js.map +1 -1
- package/dist/lib/static/static-agent.js +2 -2
- package/dist/lib/static/static-agent.js.map +1 -1
- package/dist/lib/static/static-page.js +3 -12
- package/dist/lib/static/static-page.js.map +1 -1
- package/dist/lib/utils.js +40 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/web-element.js +6 -28
- package/dist/lib/web-element.js.map +1 -1
- package/dist/lib/web-page.js +73 -43
- package/dist/lib/web-page.js.map +1 -1
- package/dist/types/bridge-mode/agent-cli-side.d.ts +23 -2
- package/dist/types/bridge-mode/common.d.ts +9 -0
- package/dist/types/bridge-mode/io-server.d.ts +3 -2
- package/dist/types/bridge-mode/page-browser-side.d.ts +2 -1
- package/dist/types/chrome-extension/page.d.ts +19 -6
- package/dist/types/playwright/ai-fixture.d.ts +16 -2
- package/dist/types/playwright/index.d.ts +1 -0
- package/dist/types/playwright/reporter/index.d.ts +2 -0
- package/dist/types/puppeteer/agent-launcher.d.ts +3 -4
- package/dist/types/puppeteer/base-page.d.ts +18 -5
- package/dist/types/puppeteer/index.d.ts +1 -0
- package/dist/types/static/static-page.d.ts +0 -1
- package/dist/types/utils.d.ts +6 -0
- package/dist/types/web-element.d.ts +10 -0
- package/dist/types/web-page.d.ts +4 -1
- package/package.json +13 -20
|
@@ -3,12 +3,13 @@ import type { ChromePageDestroyOptions } from '../web-page';
|
|
|
3
3
|
import { type BridgeConnectTabOptions } from './common';
|
|
4
4
|
import { BridgeClient } from './io-client';
|
|
5
5
|
export declare class ExtensionBridgePageBrowserSide extends ChromeExtensionProxyPage {
|
|
6
|
+
serverEndpoint?: string | undefined;
|
|
6
7
|
onDisconnect: () => void;
|
|
7
8
|
onLogMessage: (message: string, type: 'log' | 'status') => void;
|
|
8
9
|
bridgeClient: BridgeClient | null;
|
|
9
10
|
private destroyOptions?;
|
|
10
11
|
private newlyCreatedTabIds;
|
|
11
|
-
constructor(onDisconnect?: () => void, onLogMessage?: (message: string, type: 'log' | 'status') => void, forceSameTabNavigation?: boolean);
|
|
12
|
+
constructor(serverEndpoint?: string | undefined, onDisconnect?: () => void, onLogMessage?: (message: string, type: 'log' | 'status') => void, forceSameTabNavigation?: boolean);
|
|
12
13
|
private setupBridgeClient;
|
|
13
14
|
connect(): Promise<void>;
|
|
14
15
|
connectNewTabWithUrl(url: string, options?: BridgeConnectTabOptions): Promise<void>;
|
|
@@ -7,8 +7,6 @@ export default class ChromeExtensionProxyPage implements AbstractInterface {
|
|
|
7
7
|
forceSameTabNavigation: boolean;
|
|
8
8
|
private viewportSize?;
|
|
9
9
|
private activeTabId;
|
|
10
|
-
private tabIdOfDebuggerAttached;
|
|
11
|
-
private attachingDebugger;
|
|
12
10
|
private destroyed;
|
|
13
11
|
private isMobileEmulation;
|
|
14
12
|
_continueWhenFailedToAttachDebugger: boolean;
|
|
@@ -27,26 +25,41 @@ export default class ChromeExtensionProxyPage implements AbstractInterface {
|
|
|
27
25
|
currentActiveTab: boolean;
|
|
28
26
|
}[]>;
|
|
29
27
|
getTabIdOrConnectToCurrentTab(): Promise<number>;
|
|
30
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Ensure debugger is attached to the current tab.
|
|
30
|
+
* Uses lazy attach pattern - only attaches when needed.
|
|
31
|
+
*/
|
|
32
|
+
private ensureDebuggerAttached;
|
|
31
33
|
private showMousePointer;
|
|
32
34
|
private hideMousePointer;
|
|
33
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Public method to detach debugger without destroying the page instance.
|
|
37
|
+
* Useful for error recovery scenarios where we want to remove the debugger banner
|
|
38
|
+
* without completely destroying the page.
|
|
39
|
+
*/
|
|
40
|
+
detachDebugger(tabId?: number): Promise<void>;
|
|
34
41
|
private enableWaterFlowAnimation;
|
|
35
42
|
private disableWaterFlowAnimation;
|
|
43
|
+
/**
|
|
44
|
+
* Send a command to the debugger with automatic attach and retry on detachment.
|
|
45
|
+
* Uses lazy attach pattern - will automatically attach if not already attached.
|
|
46
|
+
*/
|
|
36
47
|
private sendCommandToDebugger;
|
|
37
48
|
private getPageContentByCDP;
|
|
38
49
|
evaluateJavaScript(script: string): Promise<any>;
|
|
39
50
|
beforeInvokeAction(): Promise<void>;
|
|
40
51
|
private waitUntilNetworkIdle;
|
|
41
52
|
getElementsInfo(): Promise<ElementInfo[]>;
|
|
42
|
-
|
|
43
|
-
getXpathsByPoint(point: Point, isOrderSensitive: boolean): Promise<any>;
|
|
53
|
+
getXpathsByPoint(point: Point, isOrderSensitive?: boolean): Promise<any>;
|
|
44
54
|
getElementInfoByXpath(xpath: string): Promise<any>;
|
|
45
55
|
getElementsNodeTree(): Promise<ElementTreeNode<ElementInfo>>;
|
|
46
56
|
getContext(): Promise<UIContext>;
|
|
47
57
|
size(): Promise<Size>;
|
|
48
58
|
screenshotBase64(): Promise<string>;
|
|
49
59
|
url(): Promise<string>;
|
|
60
|
+
navigate(url: string): Promise<void>;
|
|
61
|
+
reload(): Promise<void>;
|
|
62
|
+
goBack(): Promise<void>;
|
|
50
63
|
scrollUntilTop(startingPoint?: Point): Promise<void>;
|
|
51
64
|
scrollUntilBottom(startingPoint?: Point): Promise<void>;
|
|
52
65
|
scrollUntilLeft(startingPoint?: Point): Promise<void>;
|
|
@@ -21,6 +21,12 @@ export declare const PlaywrightAiFixture: (options?: {
|
|
|
21
21
|
ai: ({ page }: {
|
|
22
22
|
page: OriginPlaywrightPage;
|
|
23
23
|
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
24
|
+
aiAct: ({ page }: {
|
|
25
|
+
page: OriginPlaywrightPage;
|
|
26
|
+
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Use {@link PlaywrightAiFixture.aiAct} instead.
|
|
29
|
+
*/
|
|
24
30
|
aiAction: ({ page }: {
|
|
25
31
|
page: OriginPlaywrightPage;
|
|
26
32
|
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
@@ -78,6 +84,9 @@ export declare const PlaywrightAiFixture: (options?: {
|
|
|
78
84
|
evaluateJavaScript: ({ page }: {
|
|
79
85
|
page: OriginPlaywrightPage;
|
|
80
86
|
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
87
|
+
recordToReport: ({ page }: {
|
|
88
|
+
page: OriginPlaywrightPage;
|
|
89
|
+
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
81
90
|
logScreenshot: ({ page }: {
|
|
82
91
|
page: OriginPlaywrightPage;
|
|
83
92
|
}, use: any, testInfo: TestInfo) => Promise<void>;
|
|
@@ -90,8 +99,12 @@ export declare const PlaywrightAiFixture: (options?: {
|
|
|
90
99
|
};
|
|
91
100
|
export type PlayWrightAiFixtureType = {
|
|
92
101
|
agentForPage: (page?: any, opts?: any) => Promise<PageAgent<PlaywrightWebPage>>;
|
|
93
|
-
ai: <T = any>(
|
|
94
|
-
|
|
102
|
+
ai: <T = any>(...args: Parameters<PageAgent['ai']>) => Promise<T>;
|
|
103
|
+
aiAct: (...args: Parameters<PageAgent['aiAct']>) => ReturnType<PageAgent['aiAct']>;
|
|
104
|
+
/**
|
|
105
|
+
* @deprecated Use {@link PlayWrightAiFixtureType.aiAct} instead.
|
|
106
|
+
*/
|
|
107
|
+
aiAction: (...args: Parameters<PageAgent['aiAction']>) => ReturnType<PageAgent['aiAction']>;
|
|
95
108
|
aiTap: (...args: Parameters<PageAgent['aiTap']>) => ReturnType<PageAgent['aiTap']>;
|
|
96
109
|
aiRightClick: (...args: Parameters<PageAgent['aiRightClick']>) => ReturnType<PageAgent['aiRightClick']>;
|
|
97
110
|
aiDoubleClick: (...args: Parameters<PageAgent['aiDoubleClick']>) => ReturnType<PageAgent['aiDoubleClick']>;
|
|
@@ -110,6 +123,7 @@ export type PlayWrightAiFixtureType = {
|
|
|
110
123
|
runYaml: (...args: Parameters<PageAgent['runYaml']>) => ReturnType<PageAgent['runYaml']>;
|
|
111
124
|
setAIActionContext: (...args: Parameters<PageAgent['setAIActionContext']>) => ReturnType<PageAgent['setAIActionContext']>;
|
|
112
125
|
evaluateJavaScript: (...args: Parameters<PageAgent['evaluateJavaScript']>) => ReturnType<PageAgent['evaluateJavaScript']>;
|
|
126
|
+
recordToReport: (...args: Parameters<PageAgent['recordToReport']>) => ReturnType<PageAgent['recordToReport']>;
|
|
113
127
|
logScreenshot: (...args: Parameters<PageAgent['logScreenshot']>) => ReturnType<PageAgent['logScreenshot']>;
|
|
114
128
|
freezePageContext: (...args: Parameters<PageAgent['freezePageContext']>) => ReturnType<PageAgent['freezePageContext']>;
|
|
115
129
|
unfreezePageContext: (...args: Parameters<PageAgent['unfreezePageContext']>) => ReturnType<PageAgent['unfreezePageContext']>;
|
|
@@ -5,6 +5,7 @@ export type { PlayWrightAiFixtureType } from './ai-fixture';
|
|
|
5
5
|
export { PlaywrightAiFixture } from './ai-fixture';
|
|
6
6
|
export { overrideAIConfig } from '@midscene/shared/env';
|
|
7
7
|
export { WebPage as PlaywrightWebPage } from './page';
|
|
8
|
+
export type { WebPageAgentOpt } from '../web-element';
|
|
8
9
|
import type { WebPageAgentOpt } from '../web-element';
|
|
9
10
|
export declare class PlaywrightAgent extends PageAgent<PlaywrightWebPage> {
|
|
10
11
|
constructor(page: PlaywrightPage, opts?: WebPageAgentOpt);
|
|
@@ -6,6 +6,7 @@ declare class MidsceneReporter implements Reporter {
|
|
|
6
6
|
private mergedFilename?;
|
|
7
7
|
private testTitleToFilename;
|
|
8
8
|
mode?: 'merged' | 'separate';
|
|
9
|
+
private tempFiles;
|
|
9
10
|
constructor(options?: MidsceneReporterOptions);
|
|
10
11
|
private static getMode;
|
|
11
12
|
private getSeparatedFilename;
|
|
@@ -14,5 +15,6 @@ declare class MidsceneReporter implements Reporter {
|
|
|
14
15
|
onBegin(config: FullConfig, suite: Suite): Promise<void>;
|
|
15
16
|
onTestBegin(_test: TestCase, _result: TestResult): void;
|
|
16
17
|
onTestEnd(test: TestCase, result: TestResult): void;
|
|
18
|
+
onEnd(): void;
|
|
17
19
|
}
|
|
18
20
|
export default MidsceneReporter;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { PuppeteerAgent } from './index';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AgentOpt, MidsceneYamlScriptWebEnv } from '@midscene/core';
|
|
3
3
|
import { type Browser } from 'puppeteer';
|
|
4
4
|
export declare const defaultUA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36";
|
|
5
5
|
export declare const defaultViewportWidth = 1440;
|
|
6
6
|
export declare const defaultViewportHeight = 768;
|
|
7
7
|
export declare const defaultViewportScale: number;
|
|
8
8
|
export declare const defaultWaitForNetworkIdleTimeout = 2000;
|
|
9
|
+
export declare function resolveAiActionContext(target: MidsceneYamlScriptWebEnv, preference?: Partial<Pick<AgentOpt, 'aiActionContext' | 'aiActContext'>>): AgentOpt['aiActionContext'] | undefined;
|
|
9
10
|
interface FreeFn {
|
|
10
11
|
name: string;
|
|
11
12
|
fn: () => void;
|
|
@@ -20,9 +21,7 @@ export declare function launchPuppeteerPage(target: MidsceneYamlScriptWebEnv, pr
|
|
|
20
21
|
export declare function puppeteerAgentForTarget(target: MidsceneYamlScriptWebEnv, preference?: {
|
|
21
22
|
headed?: boolean;
|
|
22
23
|
keepWindow?: boolean;
|
|
23
|
-
|
|
24
|
-
cache?: Cache;
|
|
25
|
-
}, browser?: Browser): Promise<{
|
|
24
|
+
} & Partial<Pick<AgentOpt, 'testId' | 'groupName' | 'groupDescription' | 'generateReport' | 'autoPrintReportMsg' | 'reportFileName' | 'replanningCycleLimit' | 'cache' | 'aiActionContext'>>, browser?: Browser): Promise<{
|
|
26
25
|
agent: PuppeteerAgent;
|
|
27
26
|
freeFn: FreeFn[];
|
|
28
27
|
}>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type WebPageAgentOpt } from '../web-element';
|
|
2
2
|
import type { DeviceAction, ElementCacheFeature, ElementTreeNode, Point, Rect, Size, UIContext } from '@midscene/core';
|
|
3
3
|
import type { AbstractInterface } from '@midscene/core/device';
|
|
4
|
+
import type { IModelConfig } from '@midscene/shared/env';
|
|
4
5
|
import type { ElementInfo } from '@midscene/shared/extractor';
|
|
5
6
|
import { type DebugFunction } from '@midscene/shared/logger';
|
|
6
7
|
import type { Page as PlaywrightPage } from 'playwright';
|
|
@@ -15,6 +16,7 @@ export declare class Page<AgentType extends 'puppeteer' | 'playwright', Interfac
|
|
|
15
16
|
private onBeforeInvokeAction?;
|
|
16
17
|
private onAfterInvokeAction?;
|
|
17
18
|
private customActions?;
|
|
19
|
+
private enableTouchEventsInActionSpace;
|
|
18
20
|
interfaceType: AgentType;
|
|
19
21
|
actionSpace(): DeviceAction[];
|
|
20
22
|
private evaluate;
|
|
@@ -23,11 +25,11 @@ export declare class Page<AgentType extends 'puppeteer' | 'playwright', Interfac
|
|
|
23
25
|
waitForNavigation(): Promise<void>;
|
|
24
26
|
waitForNetworkIdle(): Promise<void>;
|
|
25
27
|
getElementsInfo(): Promise<ElementInfo[]>;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
private getXpathsByPoint;
|
|
29
|
+
private getElementInfoByXpath;
|
|
30
|
+
cacheFeatureForRect(rect: Rect, options?: {
|
|
31
|
+
targetDescription?: string;
|
|
32
|
+
modelConfig?: IModelConfig;
|
|
31
33
|
}): Promise<ElementCacheFeature>;
|
|
32
34
|
rectMatchesCacheFeature(feature: ElementCacheFeature): Promise<Rect>;
|
|
33
35
|
getElementsNodeTree(): Promise<ElementTreeNode<ElementInfo>>;
|
|
@@ -74,6 +76,8 @@ export declare class Page<AgentType extends 'puppeteer' | 'playwright', Interfac
|
|
|
74
76
|
scrollLeft(distance?: number, startingPoint?: Point): Promise<void>;
|
|
75
77
|
scrollRight(distance?: number, startingPoint?: Point): Promise<void>;
|
|
76
78
|
navigate(url: string): Promise<void>;
|
|
79
|
+
reload(): Promise<void>;
|
|
80
|
+
goBack(): Promise<void>;
|
|
77
81
|
beforeInvokeAction(name: string, param: any): Promise<void>;
|
|
78
82
|
afterInvokeAction(name: string, param: any): Promise<void>;
|
|
79
83
|
destroy(): Promise<void>;
|
|
@@ -88,3 +92,12 @@ export declare class Page<AgentType extends 'puppeteer' | 'playwright', Interfac
|
|
|
88
92
|
longPress(x: number, y: number, duration?: number): Promise<void>;
|
|
89
93
|
}
|
|
90
94
|
export declare function forceClosePopup(page: PuppeteerPage | PlaywrightPage, debugProfile: DebugFunction): void;
|
|
95
|
+
/**
|
|
96
|
+
* Force Chrome to render select elements using base-select appearance instead of OS-native rendering.
|
|
97
|
+
* This makes select elements visible in screenshots captured by Playwright/Puppeteer.
|
|
98
|
+
*
|
|
99
|
+
* Reference: https://developer.chrome.com/blog/a-customizable-select
|
|
100
|
+
*
|
|
101
|
+
* Adds a style tag with CSS rules to make all select elements use base-select appearance.
|
|
102
|
+
*/
|
|
103
|
+
export declare function forceChromeSelectRendering(page: PuppeteerPage | PlaywrightPage): void;
|
|
@@ -3,6 +3,7 @@ import { Agent as PageAgent } from '@midscene/core/agent';
|
|
|
3
3
|
import type { Page as PuppeteerPage } from 'puppeteer';
|
|
4
4
|
import { PuppeteerWebPage } from './page';
|
|
5
5
|
export { PuppeteerWebPage } from './page';
|
|
6
|
+
export type { WebPageAgentOpt } from '../web-element';
|
|
6
7
|
export declare class PuppeteerAgent extends PageAgent<PuppeteerWebPage> {
|
|
7
8
|
constructor(page: PuppeteerPage, opts?: WebPageAgentOpt);
|
|
8
9
|
}
|
|
@@ -16,7 +16,6 @@ export default class StaticPage implements AbstractInterface {
|
|
|
16
16
|
evaluateJavaScript<T = unknown>(script: string): Promise<T>;
|
|
17
17
|
getElementsInfo(): Promise<never>;
|
|
18
18
|
getElementsNodeTree(): Promise<never>;
|
|
19
|
-
getXpathsById(id: string): Promise<never>;
|
|
20
19
|
getXpathsByPoint(point: Point): Promise<never>;
|
|
21
20
|
getElementInfoByXpath(xpath: string): Promise<never>;
|
|
22
21
|
size(): Promise<{
|
|
@@ -11,6 +11,16 @@ export type WebPageOpt = {
|
|
|
11
11
|
waitForNavigationTimeout?: number;
|
|
12
12
|
waitForNetworkIdleTimeout?: number;
|
|
13
13
|
forceSameTabNavigation?: boolean;
|
|
14
|
+
enableTouchEventsInActionSpace?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Force Chrome to render select elements using base-select appearance instead of OS-native rendering.
|
|
17
|
+
* This makes select elements visible in screenshots captured by Playwright/Puppeteer.
|
|
18
|
+
*
|
|
19
|
+
* Reference: https://developer.chrome.com/blog/a-customizable-select
|
|
20
|
+
*
|
|
21
|
+
* When enabled, adds a style tag with `select { appearance: base-select !important; }` to the page.
|
|
22
|
+
*/
|
|
23
|
+
forceChromeSelectRendering?: boolean;
|
|
14
24
|
beforeInvokeAction?: () => Promise<void>;
|
|
15
25
|
afterInvokeAction?: () => Promise<void>;
|
|
16
26
|
customActions?: DeviceAction<any>[];
|
package/dist/types/web-page.d.ts
CHANGED
|
@@ -36,6 +36,9 @@ export interface ChromePageDestroyOptions {
|
|
|
36
36
|
closeTab?: boolean;
|
|
37
37
|
}
|
|
38
38
|
export declare abstract class AbstractWebPage extends AbstractInterface {
|
|
39
|
+
navigate?(url: string): Promise<void>;
|
|
40
|
+
reload?(): Promise<void>;
|
|
41
|
+
goBack?(): Promise<void>;
|
|
39
42
|
get mouse(): MouseAction;
|
|
40
43
|
get keyboard(): KeyboardAction;
|
|
41
44
|
clearInput(element: ElementInfo): Promise<void>;
|
|
@@ -56,4 +59,4 @@ export declare abstract class AbstractWebPage extends AbstractInterface {
|
|
|
56
59
|
y: number;
|
|
57
60
|
}, duration?: number): Promise<void>;
|
|
58
61
|
}
|
|
59
|
-
export declare const commonWebActionsForWebPage: <T extends AbstractWebPage>(page: T) => DeviceAction<any>[];
|
|
62
|
+
export declare const commonWebActionsForWebPage: <T extends AbstractWebPage>(page: T, includeTouchEvents?: boolean) => DeviceAction<any>[];
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"Browser use",
|
|
9
9
|
"Android use"
|
|
10
10
|
],
|
|
11
|
-
"version": "0.
|
|
11
|
+
"version": "1.0.0",
|
|
12
12
|
"repository": "https://github.com/web-infra-dev/midscene",
|
|
13
13
|
"homepage": "https://midscenejs.com/",
|
|
14
14
|
"main": "./dist/lib/index.js",
|
|
@@ -86,15 +86,6 @@
|
|
|
86
86
|
"import": "./dist/es/static/index.mjs"
|
|
87
87
|
}
|
|
88
88
|
},
|
|
89
|
-
"watch": {
|
|
90
|
-
"build": {
|
|
91
|
-
"patterns": [
|
|
92
|
-
"src"
|
|
93
|
-
],
|
|
94
|
-
"extensions": "tsx,less,scss,css,js,jsx,ts",
|
|
95
|
-
"quiet": false
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
89
|
"bin": {
|
|
99
90
|
"midscene-playground": "./bin/midscene-playground"
|
|
100
91
|
},
|
|
@@ -112,22 +103,24 @@
|
|
|
112
103
|
"http-server": "14.1.1",
|
|
113
104
|
"socket.io": "^4.8.1",
|
|
114
105
|
"socket.io-client": "4.8.1",
|
|
115
|
-
"@midscene/
|
|
116
|
-
"@midscene/
|
|
117
|
-
"@midscene/shared": "0.
|
|
106
|
+
"@midscene/core": "1.0.0",
|
|
107
|
+
"@midscene/playground": "1.0.0",
|
|
108
|
+
"@midscene/shared": "1.0.0"
|
|
118
109
|
},
|
|
119
110
|
"devDependencies": {
|
|
120
|
-
"@types/js-yaml": "4.0.9",
|
|
121
|
-
"devtools-protocol": "0.0.1380148",
|
|
122
111
|
"@playwright/test": "^1.44.1",
|
|
123
|
-
"@rslib/core": "^0.
|
|
112
|
+
"@rslib/core": "^0.18.3",
|
|
124
113
|
"@types/chrome": "0.0.279",
|
|
125
114
|
"@types/cors": "^2.8.17",
|
|
126
115
|
"@types/http-server": "^0.12.4",
|
|
116
|
+
"@types/js-yaml": "4.0.9",
|
|
127
117
|
"@types/node": "^18.0.0",
|
|
128
|
-
"
|
|
129
|
-
"
|
|
118
|
+
"@types/semver": "7.7.0",
|
|
119
|
+
"devtools-protocol": "0.0.1380148",
|
|
130
120
|
"js-yaml": "4.1.0",
|
|
121
|
+
"langsmith": "0.3.74",
|
|
122
|
+
"playwright": "1.44.1",
|
|
123
|
+
"puppeteer": "24.6.0",
|
|
131
124
|
"tsx": "^4.19.2",
|
|
132
125
|
"typescript": "^5.8.3",
|
|
133
126
|
"vitest": "3.0.5"
|
|
@@ -154,10 +147,10 @@
|
|
|
154
147
|
},
|
|
155
148
|
"license": "MIT",
|
|
156
149
|
"scripts": {
|
|
157
|
-
"dev": "npm run build
|
|
150
|
+
"dev": "npm run build:watch",
|
|
158
151
|
"dev:server": "npm run build && ./bin/midscene-playground",
|
|
159
152
|
"build": "rslib build",
|
|
160
|
-
"build:watch": "rslib build --watch",
|
|
153
|
+
"build:watch": "rslib build --watch --no-clean",
|
|
161
154
|
"playground": "DEBUG=midscene:* tsx demo/playground.ts",
|
|
162
155
|
"test": "vitest --run",
|
|
163
156
|
"test:u": "vitest --run -u",
|