@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.
Files changed (112) hide show
  1. package/dist/es/bin.mjs +0 -4
  2. package/dist/es/bin.mjs.map +1 -1
  3. package/dist/es/bridge-mode/agent-cli-side.mjs +22 -11
  4. package/dist/es/bridge-mode/agent-cli-side.mjs.map +1 -1
  5. package/dist/es/bridge-mode/common.mjs +8 -2
  6. package/dist/es/bridge-mode/common.mjs.map +1 -1
  7. package/dist/es/bridge-mode/io-client.mjs +10 -16
  8. package/dist/es/bridge-mode/io-client.mjs.map +1 -1
  9. package/dist/es/bridge-mode/io-server.mjs +21 -19
  10. package/dist/es/bridge-mode/io-server.mjs.map +1 -1
  11. package/dist/es/bridge-mode/page-browser-side.mjs +10 -11
  12. package/dist/es/bridge-mode/page-browser-side.mjs.map +1 -1
  13. package/dist/es/chrome-extension/agent.mjs.map +1 -1
  14. package/dist/es/chrome-extension/cdpInput.mjs.map +1 -1
  15. package/dist/es/chrome-extension/dynamic-scripts.mjs.map +1 -1
  16. package/dist/es/chrome-extension/page.mjs +85 -89
  17. package/dist/es/chrome-extension/page.mjs.map +1 -1
  18. package/dist/es/playwright/ai-fixture.mjs +43 -14
  19. package/dist/es/playwright/ai-fixture.mjs.map +1 -1
  20. package/dist/es/playwright/index.mjs +18 -2
  21. package/dist/es/playwright/index.mjs.map +1 -1
  22. package/dist/es/playwright/page.mjs.map +1 -1
  23. package/dist/es/playwright/reporter/index.mjs +30 -16
  24. package/dist/es/playwright/reporter/index.mjs.map +1 -1
  25. package/dist/es/puppeteer/agent-launcher.mjs +48 -22
  26. package/dist/es/puppeteer/agent-launcher.mjs.map +1 -1
  27. package/dist/es/puppeteer/base-page.mjs +67 -26
  28. package/dist/es/puppeteer/base-page.mjs.map +1 -1
  29. package/dist/es/puppeteer/index.mjs +18 -2
  30. package/dist/es/puppeteer/index.mjs.map +1 -1
  31. package/dist/es/puppeteer/page.mjs.map +1 -1
  32. package/dist/es/static/static-agent.mjs.map +1 -1
  33. package/dist/es/static/static-page.mjs +1 -10
  34. package/dist/es/static/static-page.mjs.map +1 -1
  35. package/dist/es/utils.mjs +8 -0
  36. package/dist/es/utils.mjs.map +1 -0
  37. package/dist/es/web-element.mjs +2 -24
  38. package/dist/es/web-element.mjs.map +1 -1
  39. package/dist/es/web-page.mjs +71 -41
  40. package/dist/es/web-page.mjs.map +1 -1
  41. package/dist/lib/bin.js +1 -5
  42. package/dist/lib/bin.js.map +1 -1
  43. package/dist/lib/bridge-mode/agent-cli-side.js +23 -12
  44. package/dist/lib/bridge-mode/agent-cli-side.js.map +1 -1
  45. package/dist/lib/bridge-mode/browser.js +2 -2
  46. package/dist/lib/bridge-mode/browser.js.map +1 -1
  47. package/dist/lib/bridge-mode/common.js +17 -5
  48. package/dist/lib/bridge-mode/common.js.map +1 -1
  49. package/dist/lib/bridge-mode/index.js +3 -3
  50. package/dist/lib/bridge-mode/index.js.map +1 -1
  51. package/dist/lib/bridge-mode/io-client.js +12 -18
  52. package/dist/lib/bridge-mode/io-client.js.map +1 -1
  53. package/dist/lib/bridge-mode/io-server.js +25 -23
  54. package/dist/lib/bridge-mode/io-server.js.map +1 -1
  55. package/dist/lib/bridge-mode/page-browser-side.js +12 -13
  56. package/dist/lib/bridge-mode/page-browser-side.js.map +1 -1
  57. package/dist/lib/chrome-extension/agent.js +2 -2
  58. package/dist/lib/chrome-extension/agent.js.map +1 -1
  59. package/dist/lib/chrome-extension/cdpInput.js +2 -2
  60. package/dist/lib/chrome-extension/cdpInput.js.map +1 -1
  61. package/dist/lib/chrome-extension/dynamic-scripts.js +2 -2
  62. package/dist/lib/chrome-extension/dynamic-scripts.js.map +1 -1
  63. package/dist/lib/chrome-extension/index.js +3 -3
  64. package/dist/lib/chrome-extension/index.js.map +1 -1
  65. package/dist/lib/chrome-extension/page.js +87 -91
  66. package/dist/lib/chrome-extension/page.js.map +1 -1
  67. package/dist/lib/index.js +6 -6
  68. package/dist/lib/index.js.map +1 -1
  69. package/dist/lib/playwright/ai-fixture.js +46 -17
  70. package/dist/lib/playwright/ai-fixture.js.map +1 -1
  71. package/dist/lib/playwright/index.js +32 -6
  72. package/dist/lib/playwright/index.js.map +1 -1
  73. package/dist/lib/playwright/page.js +2 -2
  74. package/dist/lib/playwright/page.js.map +1 -1
  75. package/dist/lib/playwright/reporter/index.js +32 -18
  76. package/dist/lib/playwright/reporter/index.js.map +1 -1
  77. package/dist/lib/puppeteer/agent-launcher.js +57 -28
  78. package/dist/lib/puppeteer/agent-launcher.js.map +1 -1
  79. package/dist/lib/puppeteer/base-page.js +73 -29
  80. package/dist/lib/puppeteer/base-page.js.map +1 -1
  81. package/dist/lib/puppeteer/index.js +31 -5
  82. package/dist/lib/puppeteer/index.js.map +1 -1
  83. package/dist/lib/puppeteer/page.js +2 -2
  84. package/dist/lib/puppeteer/page.js.map +1 -1
  85. package/dist/lib/static/index.js +4 -4
  86. package/dist/lib/static/index.js.map +1 -1
  87. package/dist/lib/static/static-agent.js +2 -2
  88. package/dist/lib/static/static-agent.js.map +1 -1
  89. package/dist/lib/static/static-page.js +3 -12
  90. package/dist/lib/static/static-page.js.map +1 -1
  91. package/dist/lib/utils.js +40 -0
  92. package/dist/lib/utils.js.map +1 -0
  93. package/dist/lib/web-element.js +6 -28
  94. package/dist/lib/web-element.js.map +1 -1
  95. package/dist/lib/web-page.js +73 -43
  96. package/dist/lib/web-page.js.map +1 -1
  97. package/dist/types/bridge-mode/agent-cli-side.d.ts +23 -2
  98. package/dist/types/bridge-mode/common.d.ts +9 -0
  99. package/dist/types/bridge-mode/io-server.d.ts +3 -2
  100. package/dist/types/bridge-mode/page-browser-side.d.ts +2 -1
  101. package/dist/types/chrome-extension/page.d.ts +19 -6
  102. package/dist/types/playwright/ai-fixture.d.ts +16 -2
  103. package/dist/types/playwright/index.d.ts +1 -0
  104. package/dist/types/playwright/reporter/index.d.ts +2 -0
  105. package/dist/types/puppeteer/agent-launcher.d.ts +3 -4
  106. package/dist/types/puppeteer/base-page.d.ts +18 -5
  107. package/dist/types/puppeteer/index.d.ts +1 -0
  108. package/dist/types/static/static-page.d.ts +0 -1
  109. package/dist/types/utils.d.ts +6 -0
  110. package/dist/types/web-element.d.ts +10 -0
  111. package/dist/types/web-page.d.ts +4 -1
  112. 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
- private attachDebugger;
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
- private detachDebugger;
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
- getXpathsById(id: string): Promise<any>;
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>(prompt: string) => Promise<T>;
94
- aiAction: (taskPrompt: string) => ReturnType<PageAgent['aiAction']>;
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 { Cache, MidsceneYamlScriptWebEnv } from '@midscene/core';
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
- testId?: string;
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
- getXpathsById(id: string): Promise<any>;
27
- getXpathsByPoint(point: Point, isOrderSensitive: boolean): Promise<any>;
28
- getElementInfoByXpath(xpath: string): Promise<any>;
29
- cacheFeatureForRect(rect: Rect, opt?: {
30
- _orderSensitive: boolean;
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<{
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Get a require function that won't be processed by webpack.
3
+ * Returns __non_webpack_require__ if available (in webpack environment),
4
+ * otherwise falls back to the standard require.
5
+ */
6
+ export declare function getWebpackRequire(): typeof require;
@@ -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>[];
@@ -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.30.10",
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/playground": "0.30.10",
116
- "@midscene/core": "0.30.10",
117
- "@midscene/shared": "0.30.10"
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.11.2",
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
- "playwright": "1.44.1",
129
- "puppeteer": "24.2.0",
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 && npx npm-watch",
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",