@stablyai/playwright-base 2.0.16 → 2.1.1

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/index.d.cts CHANGED
@@ -3,8 +3,8 @@ import { BrowserContext, Page, Locator, MatcherReturnType, Browser, BrowserType
3
3
  import * as z4 from 'zod/v4/core';
4
4
 
5
5
  type AnthropicModel = "anthropic/claude-sonnet-4-5-20250929";
6
- type GeminiModel = "google/gemini-2.5-computer-use-preview-10-2025";
7
- type Model = AnthropicModel | GeminiModel | (string & {});
6
+ type GeminiModel$1 = "google/gemini-2.5-computer-use-preview-10-2025";
7
+ type Model = AnthropicModel | GeminiModel$1 | (string & {});
8
8
 
9
9
  /**
10
10
  * Options for configuring agent behavior during execution.
@@ -82,16 +82,64 @@ declare class Agent {
82
82
  act(prompt: string, options: AgentActOptions): Promise<void>;
83
83
  }
84
84
 
85
+ type OpenAIModel = "openai/o4-mini";
86
+ type GeminiModel = "google/gemini-3-pro-preview" | "google/gemini-3-flash-preview";
87
+ /**
88
+ * AI model to use for Stably API calls.
89
+ *
90
+ * Predefined models:
91
+ * - `"openai/o4-mini"` - OpenAI's efficient reasoning model
92
+ * - `"google/gemini-3-pro-preview"` - Google's most capable model
93
+ * - `"google/gemini-3-flash-preview"` - Google's fast, efficient model
94
+ *
95
+ * Custom models can also be specified as strings.
96
+ */
97
+ type AIModel = OpenAIModel | GeminiModel | (string & {});
98
+
85
99
  type ExtractSchema = {
86
100
  safeParseAsync(data: unknown, params?: z4.ParseContext<z4.$ZodIssue>): Promise<z4.util.SafeParseResult<z4.output<any>>>;
87
101
  } & z4.$ZodType;
88
102
  type SchemaOutput<T extends ExtractSchema> = z4.output<T>;
89
103
 
104
+ type GetLocatorsByAIResult = {
105
+ locator: Locator;
106
+ count: number;
107
+ reason: string;
108
+ };
109
+ type GetLocatorsByAIOptions = {
110
+ /**
111
+ * AI model to use for element location.
112
+ */
113
+ model?: AIModel;
114
+ };
115
+
90
116
  type MatcherContext = {
91
117
  isNot: boolean;
92
118
  message?: () => string;
93
119
  };
94
120
  declare const stablyPlaywrightMatchers: {
121
+ /**
122
+ * Asserts that the page or locator satisfies a natural language condition using AI vision.
123
+ *
124
+ * Takes a screenshot of the target and uses AI to verify whether the specified condition is met.
125
+ * The AI analyzes the visual content and provides reasoning for its determination.
126
+ *
127
+ * @param condition - A natural language description of what should be true about the page/locator
128
+ * @param options - Optional screenshot options (e.g., fullPage, timeout)
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Assert page content
133
+ * await expect(page).aiAssert('The login form is visible with email and password fields');
134
+ *
135
+ * // Assert locator content
136
+ * await expect(page.locator('.header')).aiAssert('The navigation menu contains a logout button');
137
+ * ```
138
+ */
139
+ readonly aiAssert: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
140
+ /**
141
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
142
+ */
95
143
  readonly toMatchScreenshotPrompt: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
96
144
  };
97
145
 
@@ -104,9 +152,24 @@ declare function augmentBrowserType<TBrowser extends Browser>(browserType: Brows
104
152
  declare function setApiKey(apiKey: string): void;
105
153
  declare function requireApiKey(): string;
106
154
 
107
- type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions;
155
+ type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions & {
156
+ /**
157
+ * AI model to use for screenshot prompt assertion.
158
+ */
159
+ model?: AIModel;
160
+ };
108
161
 
109
162
  type Expect<T = Page> = {
163
+ /**
164
+ * Asserts that the target satisfies a natural language condition using AI vision.
165
+ *
166
+ * @param condition - A natural language description of what should be true
167
+ * @param options - Optional screenshot options
168
+ */
169
+ aiAssert(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
170
+ /**
171
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
172
+ */
110
173
  toMatchScreenshotPrompt(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
111
174
  };
112
175
  declare module "@playwright/test" {
@@ -131,11 +194,27 @@ declare module "@playwright/test" {
131
194
  * @param prompt - A natural language description of what information to extract
132
195
  * @param options - Configuration object containing the Zod schema for validation
133
196
  * @param options.schema - Zod schema to validate and type the extracted data
197
+ * @param options.model - AI model to use for extraction
134
198
  * @returns Typed data matching the provided schema
135
199
  */
136
200
  extract<T extends ExtractSchema>(prompt: string, options: {
137
201
  schema: T;
202
+ model?: AIModel;
138
203
  }): Promise<SchemaOutput<T>>;
204
+ /**
205
+ * Extracts information from this locator using Stably AI.
206
+ *
207
+ * Takes a screenshot of the locator and uses AI to extract information based on the
208
+ * provided prompt.
209
+ *
210
+ * @param prompt - A natural language description of what information to extract
211
+ * @param options - Configuration object with optional model selection
212
+ * @param options.model - AI model to use for extraction
213
+ * @returns A string containing the extracted information
214
+ */
215
+ extract(prompt: string, options: {
216
+ model?: AIModel;
217
+ }): Promise<string>;
139
218
  }
140
219
  interface Page {
141
220
  /**
@@ -158,11 +237,64 @@ declare module "@playwright/test" {
158
237
  * @param prompt - A natural language description of what information to extract
159
238
  * @param options - Configuration object containing the Zod schema for validation
160
239
  * @param options.schema - Zod schema to validate and type the extracted data
240
+ * @param options.model - AI model to use for extraction
161
241
  * @returns Typed data matching the provided schema
162
242
  */
163
243
  extract<T extends ExtractSchema>(prompt: string, options: {
164
244
  schema: T;
245
+ model?: AIModel;
165
246
  }): Promise<SchemaOutput<T>>;
247
+ /**
248
+ * Extracts information from this page using Stably AI.
249
+ *
250
+ * Takes a screenshot of the page and uses AI to extract information based on the
251
+ * provided prompt.
252
+ *
253
+ * @param prompt - A natural language description of what information to extract
254
+ * @param options - Configuration object with optional model selection
255
+ * @param options.model - AI model to use for extraction
256
+ * @returns A string containing the extracted information
257
+ */
258
+ extract(prompt: string, options: {
259
+ model?: AIModel;
260
+ }): Promise<string>;
261
+ /**
262
+ * Gets Locators from a page using AI based on the page's accessibility tree.
263
+ *
264
+ * Analyzes the page's aria snapshot and uses AI to identify elements matching
265
+ * the provided natural language prompt. Returns Playwright Locators that can
266
+ * be used for interactions and assertions.
267
+ *
268
+ * Requires Playwright v1.54.1 or higher.
269
+ *
270
+ * @param prompt - Natural language description of the elements to find.
271
+ * Should describe elements by their accessible properties (labels, roles, text)
272
+ * rather than visual attributes (colors, positioning).
273
+ * @param options - Optional configuration including model selection
274
+ *
275
+ * @returns Object containing:
276
+ * - `locator`: Playwright Locator for the found elements (empty if none found)
277
+ * - `count`: Number of elements found (0 if none)
278
+ * - `reason`: AI's explanation of what it found and why
279
+ *
280
+ * @example
281
+ * // Find a single element
282
+ * const { locator: loginBtn } = await page.getLocatorsByAI("the login button");
283
+ * await loginBtn.click();
284
+ *
285
+ * @example
286
+ * // Find multiple elements
287
+ * const { locator: cards, count } = await page.getLocatorsByAI("all product cards in the grid");
288
+ * console.log(`Found ${count} product cards`);
289
+ * await expect(cards).toHaveCount(count);
290
+ *
291
+ * @example
292
+ * // With model selection
293
+ * const { locator } = await page.getLocatorsByAI("the submit button", {
294
+ * model: "google/gemini-3-flash-preview"
295
+ * });
296
+ */
297
+ getLocatorsByAI(prompt: string, options?: GetLocatorsByAIOptions): Promise<GetLocatorsByAIResult>;
166
298
  }
167
299
  interface BrowserContext {
168
300
  /**
@@ -223,5 +355,5 @@ declare module "@playwright/test" {
223
355
  }
224
356
 
225
357
  export { Agent, augmentBrowser, augmentBrowserContext, augmentBrowserType, augmentLocator, augmentPage, requireApiKey, setApiKey, stablyPlaywrightMatchers };
226
- export type { Expect, ExtractSchema, SchemaOutput, ScreenshotPromptOptions };
358
+ export type { AIModel, Expect, ExtractSchema, GetLocatorsByAIOptions, GetLocatorsByAIResult, SchemaOutput, ScreenshotPromptOptions };
227
359
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/extract.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAK,WAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAG,WAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;ACnFxD,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACT7D,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;6CAE3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;AChB9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAiB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACpId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACQvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;AAY5D,KAAM,MAAM,KAAKA,IAAY;yDAGrB,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;iCAeE,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BXC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["InternalPage","__playwright_augment_methods_agent.Agent"]}
1
+ {"version":3,"file":"index.d.cts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/models.ts","../src/ai/extract.ts","../src/ai/get-locators-by-ai.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAKA,aAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAGA,aAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;AC9F9D,KAAK,WAAW;AAGhB,KAAK,WAAW;AAIhB;;;;;;;;;;AAUM,KAAM,OAAO,GAAG,WAAW,GAAG,WAAW;;ACLzC,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACFvD,KAAM,qBAAqB;aACtB,OAAO;;;;AAKZ,KAAM,sBAAsB;;;;YAIxB,OAAO;;;AClBjB,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;;;;;;;;;;;;;;;;;;;8BAoB3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;;6CA+EpB,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;ACpH9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAkB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACtId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACkBvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;;;YAItD,OAAO;;;AAab,KAAM,MAAM,KAAKC,IAAY;;;;;;;0CAOK,uBAAuB,GAAG,OAAO;;;;yDAO3D,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;iCAerC,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAwClD,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BpBC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["GeminiModel","InternalPage","__playwright_augment_methods_agent.Agent"]}
package/dist/index.d.mts CHANGED
@@ -3,8 +3,8 @@ import { BrowserContext, Page, Locator, MatcherReturnType, Browser, BrowserType
3
3
  import * as z4 from 'zod/v4/core';
4
4
 
5
5
  type AnthropicModel = "anthropic/claude-sonnet-4-5-20250929";
6
- type GeminiModel = "google/gemini-2.5-computer-use-preview-10-2025";
7
- type Model = AnthropicModel | GeminiModel | (string & {});
6
+ type GeminiModel$1 = "google/gemini-2.5-computer-use-preview-10-2025";
7
+ type Model = AnthropicModel | GeminiModel$1 | (string & {});
8
8
 
9
9
  /**
10
10
  * Options for configuring agent behavior during execution.
@@ -82,16 +82,64 @@ declare class Agent {
82
82
  act(prompt: string, options: AgentActOptions): Promise<void>;
83
83
  }
84
84
 
85
+ type OpenAIModel = "openai/o4-mini";
86
+ type GeminiModel = "google/gemini-3-pro-preview" | "google/gemini-3-flash-preview";
87
+ /**
88
+ * AI model to use for Stably API calls.
89
+ *
90
+ * Predefined models:
91
+ * - `"openai/o4-mini"` - OpenAI's efficient reasoning model
92
+ * - `"google/gemini-3-pro-preview"` - Google's most capable model
93
+ * - `"google/gemini-3-flash-preview"` - Google's fast, efficient model
94
+ *
95
+ * Custom models can also be specified as strings.
96
+ */
97
+ type AIModel = OpenAIModel | GeminiModel | (string & {});
98
+
85
99
  type ExtractSchema = {
86
100
  safeParseAsync(data: unknown, params?: z4.ParseContext<z4.$ZodIssue>): Promise<z4.util.SafeParseResult<z4.output<any>>>;
87
101
  } & z4.$ZodType;
88
102
  type SchemaOutput<T extends ExtractSchema> = z4.output<T>;
89
103
 
104
+ type GetLocatorsByAIResult = {
105
+ locator: Locator;
106
+ count: number;
107
+ reason: string;
108
+ };
109
+ type GetLocatorsByAIOptions = {
110
+ /**
111
+ * AI model to use for element location.
112
+ */
113
+ model?: AIModel;
114
+ };
115
+
90
116
  type MatcherContext = {
91
117
  isNot: boolean;
92
118
  message?: () => string;
93
119
  };
94
120
  declare const stablyPlaywrightMatchers: {
121
+ /**
122
+ * Asserts that the page or locator satisfies a natural language condition using AI vision.
123
+ *
124
+ * Takes a screenshot of the target and uses AI to verify whether the specified condition is met.
125
+ * The AI analyzes the visual content and provides reasoning for its determination.
126
+ *
127
+ * @param condition - A natural language description of what should be true about the page/locator
128
+ * @param options - Optional screenshot options (e.g., fullPage, timeout)
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Assert page content
133
+ * await expect(page).aiAssert('The login form is visible with email and password fields');
134
+ *
135
+ * // Assert locator content
136
+ * await expect(page.locator('.header')).aiAssert('The navigation menu contains a logout button');
137
+ * ```
138
+ */
139
+ readonly aiAssert: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
140
+ /**
141
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
142
+ */
95
143
  readonly toMatchScreenshotPrompt: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
96
144
  };
97
145
 
@@ -104,9 +152,24 @@ declare function augmentBrowserType<TBrowser extends Browser>(browserType: Brows
104
152
  declare function setApiKey(apiKey: string): void;
105
153
  declare function requireApiKey(): string;
106
154
 
107
- type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions;
155
+ type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions & {
156
+ /**
157
+ * AI model to use for screenshot prompt assertion.
158
+ */
159
+ model?: AIModel;
160
+ };
108
161
 
109
162
  type Expect<T = Page> = {
163
+ /**
164
+ * Asserts that the target satisfies a natural language condition using AI vision.
165
+ *
166
+ * @param condition - A natural language description of what should be true
167
+ * @param options - Optional screenshot options
168
+ */
169
+ aiAssert(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
170
+ /**
171
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
172
+ */
110
173
  toMatchScreenshotPrompt(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
111
174
  };
112
175
  declare module "@playwright/test" {
@@ -131,11 +194,27 @@ declare module "@playwright/test" {
131
194
  * @param prompt - A natural language description of what information to extract
132
195
  * @param options - Configuration object containing the Zod schema for validation
133
196
  * @param options.schema - Zod schema to validate and type the extracted data
197
+ * @param options.model - AI model to use for extraction
134
198
  * @returns Typed data matching the provided schema
135
199
  */
136
200
  extract<T extends ExtractSchema>(prompt: string, options: {
137
201
  schema: T;
202
+ model?: AIModel;
138
203
  }): Promise<SchemaOutput<T>>;
204
+ /**
205
+ * Extracts information from this locator using Stably AI.
206
+ *
207
+ * Takes a screenshot of the locator and uses AI to extract information based on the
208
+ * provided prompt.
209
+ *
210
+ * @param prompt - A natural language description of what information to extract
211
+ * @param options - Configuration object with optional model selection
212
+ * @param options.model - AI model to use for extraction
213
+ * @returns A string containing the extracted information
214
+ */
215
+ extract(prompt: string, options: {
216
+ model?: AIModel;
217
+ }): Promise<string>;
139
218
  }
140
219
  interface Page {
141
220
  /**
@@ -158,11 +237,64 @@ declare module "@playwright/test" {
158
237
  * @param prompt - A natural language description of what information to extract
159
238
  * @param options - Configuration object containing the Zod schema for validation
160
239
  * @param options.schema - Zod schema to validate and type the extracted data
240
+ * @param options.model - AI model to use for extraction
161
241
  * @returns Typed data matching the provided schema
162
242
  */
163
243
  extract<T extends ExtractSchema>(prompt: string, options: {
164
244
  schema: T;
245
+ model?: AIModel;
165
246
  }): Promise<SchemaOutput<T>>;
247
+ /**
248
+ * Extracts information from this page using Stably AI.
249
+ *
250
+ * Takes a screenshot of the page and uses AI to extract information based on the
251
+ * provided prompt.
252
+ *
253
+ * @param prompt - A natural language description of what information to extract
254
+ * @param options - Configuration object with optional model selection
255
+ * @param options.model - AI model to use for extraction
256
+ * @returns A string containing the extracted information
257
+ */
258
+ extract(prompt: string, options: {
259
+ model?: AIModel;
260
+ }): Promise<string>;
261
+ /**
262
+ * Gets Locators from a page using AI based on the page's accessibility tree.
263
+ *
264
+ * Analyzes the page's aria snapshot and uses AI to identify elements matching
265
+ * the provided natural language prompt. Returns Playwright Locators that can
266
+ * be used for interactions and assertions.
267
+ *
268
+ * Requires Playwright v1.54.1 or higher.
269
+ *
270
+ * @param prompt - Natural language description of the elements to find.
271
+ * Should describe elements by their accessible properties (labels, roles, text)
272
+ * rather than visual attributes (colors, positioning).
273
+ * @param options - Optional configuration including model selection
274
+ *
275
+ * @returns Object containing:
276
+ * - `locator`: Playwright Locator for the found elements (empty if none found)
277
+ * - `count`: Number of elements found (0 if none)
278
+ * - `reason`: AI's explanation of what it found and why
279
+ *
280
+ * @example
281
+ * // Find a single element
282
+ * const { locator: loginBtn } = await page.getLocatorsByAI("the login button");
283
+ * await loginBtn.click();
284
+ *
285
+ * @example
286
+ * // Find multiple elements
287
+ * const { locator: cards, count } = await page.getLocatorsByAI("all product cards in the grid");
288
+ * console.log(`Found ${count} product cards`);
289
+ * await expect(cards).toHaveCount(count);
290
+ *
291
+ * @example
292
+ * // With model selection
293
+ * const { locator } = await page.getLocatorsByAI("the submit button", {
294
+ * model: "google/gemini-3-flash-preview"
295
+ * });
296
+ */
297
+ getLocatorsByAI(prompt: string, options?: GetLocatorsByAIOptions): Promise<GetLocatorsByAIResult>;
166
298
  }
167
299
  interface BrowserContext {
168
300
  /**
@@ -223,5 +355,5 @@ declare module "@playwright/test" {
223
355
  }
224
356
 
225
357
  export { Agent, augmentBrowser, augmentBrowserContext, augmentBrowserType, augmentLocator, augmentPage, requireApiKey, setApiKey, stablyPlaywrightMatchers };
226
- export type { Expect, ExtractSchema, SchemaOutput, ScreenshotPromptOptions };
358
+ export type { AIModel, Expect, ExtractSchema, GetLocatorsByAIOptions, GetLocatorsByAIResult, SchemaOutput, ScreenshotPromptOptions };
227
359
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/extract.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAK,WAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAG,WAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;ACnFxD,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACT7D,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;6CAE3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;AChB9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAiB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACpId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACQvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;AAY5D,KAAM,MAAM,KAAKA,IAAY;yDAGrB,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;iCAeE,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BXC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["InternalPage","__playwright_augment_methods_agent.Agent"]}
1
+ {"version":3,"file":"index.d.mts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/models.ts","../src/ai/extract.ts","../src/ai/get-locators-by-ai.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAKA,aAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAGA,aAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;AC9F9D,KAAK,WAAW;AAGhB,KAAK,WAAW;AAIhB;;;;;;;;;;AAUM,KAAM,OAAO,GAAG,WAAW,GAAG,WAAW;;ACLzC,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACFvD,KAAM,qBAAqB;aACtB,OAAO;;;;AAKZ,KAAM,sBAAsB;;;;YAIxB,OAAO;;;AClBjB,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;;;;;;;;;;;;;;;;;;;8BAoB3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;;6CA+EpB,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;ACpH9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAkB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACtId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACkBvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;;;YAItD,OAAO;;;AAab,KAAM,MAAM,KAAKC,IAAY;;;;;;;0CAOK,uBAAuB,GAAG,OAAO;;;;yDAO3D,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;iCAerC,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAwClD,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BpBC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["GeminiModel","InternalPage","__playwright_augment_methods_agent.Agent"]}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,8 @@ import { BrowserContext, Page, Locator, MatcherReturnType, Browser, BrowserType
3
3
  import * as z4 from 'zod/v4/core';
4
4
 
5
5
  type AnthropicModel = "anthropic/claude-sonnet-4-5-20250929";
6
- type GeminiModel = "google/gemini-2.5-computer-use-preview-10-2025";
7
- type Model = AnthropicModel | GeminiModel | (string & {});
6
+ type GeminiModel$1 = "google/gemini-2.5-computer-use-preview-10-2025";
7
+ type Model = AnthropicModel | GeminiModel$1 | (string & {});
8
8
 
9
9
  /**
10
10
  * Options for configuring agent behavior during execution.
@@ -82,16 +82,64 @@ declare class Agent {
82
82
  act(prompt: string, options: AgentActOptions): Promise<void>;
83
83
  }
84
84
 
85
+ type OpenAIModel = "openai/o4-mini";
86
+ type GeminiModel = "google/gemini-3-pro-preview" | "google/gemini-3-flash-preview";
87
+ /**
88
+ * AI model to use for Stably API calls.
89
+ *
90
+ * Predefined models:
91
+ * - `"openai/o4-mini"` - OpenAI's efficient reasoning model
92
+ * - `"google/gemini-3-pro-preview"` - Google's most capable model
93
+ * - `"google/gemini-3-flash-preview"` - Google's fast, efficient model
94
+ *
95
+ * Custom models can also be specified as strings.
96
+ */
97
+ type AIModel = OpenAIModel | GeminiModel | (string & {});
98
+
85
99
  type ExtractSchema = {
86
100
  safeParseAsync(data: unknown, params?: z4.ParseContext<z4.$ZodIssue>): Promise<z4.util.SafeParseResult<z4.output<any>>>;
87
101
  } & z4.$ZodType;
88
102
  type SchemaOutput<T extends ExtractSchema> = z4.output<T>;
89
103
 
104
+ type GetLocatorsByAIResult = {
105
+ locator: Locator;
106
+ count: number;
107
+ reason: string;
108
+ };
109
+ type GetLocatorsByAIOptions = {
110
+ /**
111
+ * AI model to use for element location.
112
+ */
113
+ model?: AIModel;
114
+ };
115
+
90
116
  type MatcherContext = {
91
117
  isNot: boolean;
92
118
  message?: () => string;
93
119
  };
94
120
  declare const stablyPlaywrightMatchers: {
121
+ /**
122
+ * Asserts that the page or locator satisfies a natural language condition using AI vision.
123
+ *
124
+ * Takes a screenshot of the target and uses AI to verify whether the specified condition is met.
125
+ * The AI analyzes the visual content and provides reasoning for its determination.
126
+ *
127
+ * @param condition - A natural language description of what should be true about the page/locator
128
+ * @param options - Optional screenshot options (e.g., fullPage, timeout)
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Assert page content
133
+ * await expect(page).aiAssert('The login form is visible with email and password fields');
134
+ *
135
+ * // Assert locator content
136
+ * await expect(page.locator('.header')).aiAssert('The navigation menu contains a logout button');
137
+ * ```
138
+ */
139
+ readonly aiAssert: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
140
+ /**
141
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
142
+ */
95
143
  readonly toMatchScreenshotPrompt: (this: MatcherContext, received: Page | Locator, condition: string, options?: ScreenshotPromptOptions) => Promise<MatcherReturnType>;
96
144
  };
97
145
 
@@ -104,9 +152,24 @@ declare function augmentBrowserType<TBrowser extends Browser>(browserType: Brows
104
152
  declare function setApiKey(apiKey: string): void;
105
153
  declare function requireApiKey(): string;
106
154
 
107
- type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions;
155
+ type ScreenshotPromptOptions = _playwright_test.PageAssertionsToHaveScreenshotOptions & {
156
+ /**
157
+ * AI model to use for screenshot prompt assertion.
158
+ */
159
+ model?: AIModel;
160
+ };
108
161
 
109
162
  type Expect<T = Page> = {
163
+ /**
164
+ * Asserts that the target satisfies a natural language condition using AI vision.
165
+ *
166
+ * @param condition - A natural language description of what should be true
167
+ * @param options - Optional screenshot options
168
+ */
169
+ aiAssert(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
170
+ /**
171
+ * @deprecated Use `aiAssert` instead. This method will be removed in a future version.
172
+ */
110
173
  toMatchScreenshotPrompt(condition: string, options?: ScreenshotPromptOptions): Promise<void>;
111
174
  };
112
175
  declare module "@playwright/test" {
@@ -131,11 +194,27 @@ declare module "@playwright/test" {
131
194
  * @param prompt - A natural language description of what information to extract
132
195
  * @param options - Configuration object containing the Zod schema for validation
133
196
  * @param options.schema - Zod schema to validate and type the extracted data
197
+ * @param options.model - AI model to use for extraction
134
198
  * @returns Typed data matching the provided schema
135
199
  */
136
200
  extract<T extends ExtractSchema>(prompt: string, options: {
137
201
  schema: T;
202
+ model?: AIModel;
138
203
  }): Promise<SchemaOutput<T>>;
204
+ /**
205
+ * Extracts information from this locator using Stably AI.
206
+ *
207
+ * Takes a screenshot of the locator and uses AI to extract information based on the
208
+ * provided prompt.
209
+ *
210
+ * @param prompt - A natural language description of what information to extract
211
+ * @param options - Configuration object with optional model selection
212
+ * @param options.model - AI model to use for extraction
213
+ * @returns A string containing the extracted information
214
+ */
215
+ extract(prompt: string, options: {
216
+ model?: AIModel;
217
+ }): Promise<string>;
139
218
  }
140
219
  interface Page {
141
220
  /**
@@ -158,11 +237,64 @@ declare module "@playwright/test" {
158
237
  * @param prompt - A natural language description of what information to extract
159
238
  * @param options - Configuration object containing the Zod schema for validation
160
239
  * @param options.schema - Zod schema to validate and type the extracted data
240
+ * @param options.model - AI model to use for extraction
161
241
  * @returns Typed data matching the provided schema
162
242
  */
163
243
  extract<T extends ExtractSchema>(prompt: string, options: {
164
244
  schema: T;
245
+ model?: AIModel;
165
246
  }): Promise<SchemaOutput<T>>;
247
+ /**
248
+ * Extracts information from this page using Stably AI.
249
+ *
250
+ * Takes a screenshot of the page and uses AI to extract information based on the
251
+ * provided prompt.
252
+ *
253
+ * @param prompt - A natural language description of what information to extract
254
+ * @param options - Configuration object with optional model selection
255
+ * @param options.model - AI model to use for extraction
256
+ * @returns A string containing the extracted information
257
+ */
258
+ extract(prompt: string, options: {
259
+ model?: AIModel;
260
+ }): Promise<string>;
261
+ /**
262
+ * Gets Locators from a page using AI based on the page's accessibility tree.
263
+ *
264
+ * Analyzes the page's aria snapshot and uses AI to identify elements matching
265
+ * the provided natural language prompt. Returns Playwright Locators that can
266
+ * be used for interactions and assertions.
267
+ *
268
+ * Requires Playwright v1.54.1 or higher.
269
+ *
270
+ * @param prompt - Natural language description of the elements to find.
271
+ * Should describe elements by their accessible properties (labels, roles, text)
272
+ * rather than visual attributes (colors, positioning).
273
+ * @param options - Optional configuration including model selection
274
+ *
275
+ * @returns Object containing:
276
+ * - `locator`: Playwright Locator for the found elements (empty if none found)
277
+ * - `count`: Number of elements found (0 if none)
278
+ * - `reason`: AI's explanation of what it found and why
279
+ *
280
+ * @example
281
+ * // Find a single element
282
+ * const { locator: loginBtn } = await page.getLocatorsByAI("the login button");
283
+ * await loginBtn.click();
284
+ *
285
+ * @example
286
+ * // Find multiple elements
287
+ * const { locator: cards, count } = await page.getLocatorsByAI("all product cards in the grid");
288
+ * console.log(`Found ${count} product cards`);
289
+ * await expect(cards).toHaveCount(count);
290
+ *
291
+ * @example
292
+ * // With model selection
293
+ * const { locator } = await page.getLocatorsByAI("the submit button", {
294
+ * model: "google/gemini-3-flash-preview"
295
+ * });
296
+ */
297
+ getLocatorsByAI(prompt: string, options?: GetLocatorsByAIOptions): Promise<GetLocatorsByAIResult>;
166
298
  }
167
299
  interface BrowserContext {
168
300
  /**
@@ -223,5 +355,5 @@ declare module "@playwright/test" {
223
355
  }
224
356
 
225
357
  export { Agent, augmentBrowser, augmentBrowserContext, augmentBrowserType, augmentLocator, augmentPage, requireApiKey, setApiKey, stablyPlaywrightMatchers };
226
- export type { Expect, ExtractSchema, SchemaOutput, ScreenshotPromptOptions };
358
+ export type { AIModel, Expect, ExtractSchema, GetLocatorsByAIOptions, GetLocatorsByAIResult, SchemaOutput, ScreenshotPromptOptions };
227
359
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/extract.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAK,WAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAG,WAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;ACnFxD,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACT7D,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;6CAE3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;AChB9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAiB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACpId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACQvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;AAY5D,KAAM,MAAM,KAAKA,IAAY;yDAGrB,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;iCAeE,OAAO;;;;;;;;;;;;0BAYd,aAAa;;YAG5B,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BXC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["InternalPage","__playwright_augment_methods_agent.Agent"]}
1
+ {"version":3,"file":"index.d.ts","sources":["../src/playwright-augment/methods/agent/models.ts","../src/playwright-augment/methods/agent.ts","../src/ai/models.ts","../src/ai/extract.ts","../src/ai/get-locators-by-ai.ts","../src/expect.ts","../src/playwright-augment/augment.ts","../src/runtime.ts","../src/index.ts"],"mappings":";;;;AAAA,KAAK,cAAc;AACnB,KAAKA,aAAW;AACV,KAAM,KAAK,GAAG,cAAc,GAAGA,aAAW;;ACchD;;;AAGA,KAAK,eAAe;;;;UAIZ,IAAI;;;;;;;;;;;YAWF,KAAK;;AAQf;;;;;;;;;;;;;;AAcA,cAAa,KAAK;6BACqB,cAAc;gCAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAsChB,eAAe,GAAG,OAAO;;;AC9F9D,KAAK,WAAW;AAGhB,KAAK,WAAW;AAIhB;;;;;;;;;;AAUM,KAAM,OAAO,GAAG,WAAW,GAAG,WAAW;;ACLzC,KAAM,aAAa;2CAGZ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,IAEpC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM;IAC1C,EAAE,CAAC,QAAQ;AAET,KAAM,YAAY,WAAW,aAAa,IAAI,EAAE,CAAC,MAAM;;ACFvD,KAAM,qBAAqB;aACtB,OAAO;;;;AAKZ,KAAM,sBAAsB;;;;YAIxB,OAAO;;;AClBjB,KAAK,cAAc;;;;AA+BnB,cAAa,wBAAwB;;;;;;;;;;;;;;;;;;;8BAoB3B,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;;6CA+EpB,cAAc,YACV,IAAI,GAAG,OAAO,+BAEd,uBAAuB,KAChC,OAAO,CAAC,iBAAiB;;;ACpH9B,iBAAgB,cAAc,WAAW,OAAO;AAchD,iBAAgB,WAAW,WAAW,IAAI;AAkB1C,iBAAgB,qBAAqB,WAAW,cAAc;AA8B9D,iBAAgB,cAAc,WAAW,OAAO;AAuChD,iBAAgB,kBAAkB,kBAAkB,OAAO,eAC5C,WAAW,aACvB,WAAW;;ACtId,iBAAgB,SAAS;AAQzB,iBAAgB,aAAa;;ACkBvB,KAAM,uBAAuB,GAEjC,gBAAyB,CAAE,qCAAqC;;;;YAItD,OAAO;;;AAab,KAAM,MAAM,KAAKC,IAAY;;;;;;;0CAOK,uBAAuB,GAAG,OAAO;;;;yDAO3D,uBAAuB,GAChC,OAAO;;AAGZ;;;;;;;;;;;;iCAa6B,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;iCAerC,OAAO;;;;;;;;;;;;;0BAad,aAAa;;oBAEC,OAAO;YACpC,OAAO,CAAC,YAAY;;;;;;;;;;;;;oBAYoB,OAAO;YAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAwClD,sBAAsB,GAC/B,OAAO,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BpBC,KAAkD;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BlDA,KAAkD","names":["GeminiModel","InternalPage","__playwright_augment_methods_agent.Agent"]}