import { ElectronApplication } from 'playwright-core'; /** * A serializable pattern for matching dialog options. * Strings match exactly (case-sensitive), regex patterns are serialized as {source, flags}. */ export type StringMatcher = string | { source: string; flags: string; } | undefined; /** * Convert a string or RegExp to a serializable StringMatcher. * RegExp objects cannot be transferred via Playwright's evaluate(), * so we serialize them as {source, flags}. */ export declare function toSerializableMatcher(pattern: string | RegExp | undefined): StringMatcher; /** * Check if a value matches a StringMatcher. * Used inside app.evaluate() where the matcher is already serialized. */ export declare function matchesPattern(value: string | undefined, pattern: StringMatcher): boolean; /** * Matchable options for showMessageBox/showMessageBoxSync. * All properties are optional - only provided properties will be matched. */ export type MessageBoxMatcher = { /** Match against MessageBoxOptions.type ('none' | 'info' | 'error' | 'question' | 'warning') */ type?: string | RegExp; /** Match against MessageBoxOptions.message */ message?: string | RegExp; /** Match against MessageBoxOptions.title */ title?: string | RegExp; /** Match against MessageBoxOptions.detail */ detail?: string | RegExp; /** Match against MessageBoxOptions.checkboxLabel */ checkboxLabel?: string | RegExp; /** Match against any button text in MessageBoxOptions.buttons array */ buttons?: string | RegExp; }; /** * Matchable options for showOpenDialog/showOpenDialogSync. */ export type OpenDialogMatcher = { /** Match against OpenDialogOptions.title */ title?: string | RegExp; /** Match against OpenDialogOptions.defaultPath */ defaultPath?: string | RegExp; /** Match against OpenDialogOptions.buttonLabel */ buttonLabel?: string | RegExp; /** Match against OpenDialogOptions.message (macOS) */ message?: string | RegExp; }; /** * Matchable options for showSaveDialog/showSaveDialogSync. */ export type SaveDialogMatcher = { /** Match against SaveDialogOptions.title */ title?: string | RegExp; /** Match against SaveDialogOptions.defaultPath */ defaultPath?: string | RegExp; /** Match against SaveDialogOptions.buttonLabel */ buttonLabel?: string | RegExp; /** Match against SaveDialogOptions.message (macOS) */ message?: string | RegExp; /** Match against SaveDialogOptions.nameFieldLabel (macOS) */ nameFieldLabel?: string | RegExp; }; /** * Matchable options for showErrorBox. */ export type ErrorBoxMatcher = { /** Match against the title parameter */ title?: string | RegExp; /** Match against the content parameter */ content?: string | RegExp; }; /** * Matchable options for showCertificateTrustDialog. */ export type CertificateTrustDialogMatcher = { /** Match against CertificateTrustDialogOptions.message */ message?: string | RegExp; }; export type SerializedMessageBoxMatcher = { type?: StringMatcher; message?: StringMatcher; title?: StringMatcher; detail?: StringMatcher; checkboxLabel?: StringMatcher; buttons?: StringMatcher; }; export type SerializedOpenDialogMatcher = { title?: StringMatcher; defaultPath?: StringMatcher; buttonLabel?: StringMatcher; message?: StringMatcher; }; export type SerializedSaveDialogMatcher = { title?: StringMatcher; defaultPath?: StringMatcher; buttonLabel?: StringMatcher; message?: StringMatcher; nameFieldLabel?: StringMatcher; }; export type SerializedErrorBoxMatcher = { title?: StringMatcher; content?: StringMatcher; }; export type SerializedCertificateTrustDialogMatcher = { message?: StringMatcher; }; /** * Return value type for showMessageBox */ export type MessageBoxReturnValue = { response: number; checkboxChecked: boolean; }; /** * Return value type for showOpenDialog */ export type OpenDialogReturnValue = { canceled: boolean; filePaths: string[]; bookmarks?: string[]; }; /** * Return value type for showSaveDialog */ export type SaveDialogReturnValue = { canceled: boolean; filePath?: string; bookmark?: string; }; /** * A matcher stub for showMessageBox. */ export type MessageBoxMatcherStub = { method: 'showMessageBox'; matcher: MessageBoxMatcher; value: Partial; }; /** * A matcher stub for showMessageBoxSync. */ export type MessageBoxSyncMatcherStub = { method: 'showMessageBoxSync'; matcher: MessageBoxMatcher; value: number; }; /** * A matcher stub for showOpenDialog. */ export type OpenDialogMatcherStub = { method: 'showOpenDialog'; matcher: OpenDialogMatcher; value: Partial; }; /** * A matcher stub for showOpenDialogSync. */ export type OpenDialogSyncMatcherStub = { method: 'showOpenDialogSync'; matcher: OpenDialogMatcher; value: string[] | undefined; }; /** * A matcher stub for showSaveDialog. */ export type SaveDialogMatcherStub = { method: 'showSaveDialog'; matcher: SaveDialogMatcher; value: Partial; }; /** * A matcher stub for showSaveDialogSync. */ export type SaveDialogSyncMatcherStub = { method: 'showSaveDialogSync'; matcher: SaveDialogMatcher; value: string | undefined; }; /** * A matcher stub for showErrorBox. */ export type ErrorBoxMatcherStub = { method: 'showErrorBox'; matcher: ErrorBoxMatcher; value: void; }; /** * A matcher stub for showCertificateTrustDialog. */ export type CertificateTrustDialogMatcherStub = { method: 'showCertificateTrustDialog'; matcher: CertificateTrustDialogMatcher; value: void; }; /** * Union type of all dialog matcher stubs. */ export type DialogMatcherStub = MessageBoxMatcherStub | MessageBoxSyncMatcherStub | OpenDialogMatcherStub | OpenDialogSyncMatcherStub | SaveDialogMatcherStub | SaveDialogSyncMatcherStub | ErrorBoxMatcherStub | CertificateTrustDialogMatcherStub; export type StubDialogMatchersOptions = { /** * If true, throw an error when a dialog is shown that doesn't match any stub. * If false (default), return the default value for that dialog method. */ throwOnUnmatched?: boolean; }; /** * Stub dialog methods with matchers that check dialog options before returning values. * This allows you to set up multiple different return values based on the dialog's * title, message, buttons, or other options. * * Matchers are checked in order - the first matching stub wins. * If no stub matches, either an error is thrown (if throwOnUnmatched is true) * or the default value is returned. * * @example * ```ts * // Set up multiple dialog stubs at the start of your test * await stubDialogMatchers(app, [ * { * method: 'showMessageBox', * matcher: { title: /delete/i, buttons: /yes/i }, * value: { response: 1 }, // Click "Yes" for delete dialogs * }, * { * method: 'showMessageBox', * matcher: { title: /save/i }, * value: { response: 0 }, // Click "Save" for save dialogs * }, * { * method: 'showOpenDialog', * matcher: { title: 'Select Image' }, * value: { filePaths: ['/path/to/image.png'], canceled: false }, * }, * { * method: 'showOpenDialog', * matcher: {}, // Match all other open dialogs * value: { canceled: true }, * }, * ]) * ``` * * @category Dialog * * @param app - The Playwright ElectronApplication instance. * @param stubs - Array of dialog matcher stubs to apply. * @param options - Optional configuration. * @returns A promise that resolves when the stubs are applied. */ export declare function stubDialogMatchers(app: ElectronApplication, stubs: DialogMatcherStub[], options?: StubDialogMatchersOptions): Promise; /** * Clear all dialog matcher stubs and restore original dialog methods. * Note: This requires the app to have stored the original methods, * which is not done by default. You may need to restart the app * to fully restore dialog functionality. * * @category Dialog * * @param app - The Playwright ElectronApplication instance. * @returns A promise that resolves when the stubs are cleared. */ export declare function clearDialogMatchers(app: ElectronApplication): Promise; //# sourceMappingURL=dialog_matchers.d.ts.map