@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.cjs +126 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +136 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +136 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +136 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +126 -8
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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
|
package/dist/index.d.cts.map
CHANGED
|
@@ -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,
|
|
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
|
package/dist/index.d.mts.map
CHANGED
|
@@ -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,
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"]}
|