| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /**
- * 基础配置选项,所有配置对象的基类
- *
- * @description
- * 提供通用的配置选项,所有工具函数的配置对象都应该继承此接口。
- *
- * @example
- * ```ts
- * interface MyOptions extends BaseOptions {
- * customOption?: string;
- * }
- * ```
- */
- export interface BaseOptions {
- /** 超时时间(毫秒)*/
- timeout?: number;
- }
- /**
- * 错误上下文接口,用于提供结构化的错误信息
- *
- * @description
- * 包含操作失败时所需的完整上下文信息,帮助开发者快速定位问题。
- *
- * @example
- * ```ts
- * const errorContext: ErrorContext = {
- * operation: 'selectRadixOption',
- * target: '残疾类型',
- * expected: '视力残疾',
- * actual: '未找到选项',
- * available: ['听力残疾', '言语残疾'],
- * suggestion: '检查选项值是否正确'
- * };
- * ```
- */
- export interface ErrorContext {
- /** 操作类型(如 'selectRadixOption')*/
- operation: string;
- /** 目标(如下拉框标签)*/
- target: string;
- /** 期望值 */
- expected?: string;
- /** 实际值 */
- actual?: string;
- /** 可用选项列表 */
- available?: string[];
- /** 修复建议 */
- suggestion?: string;
- }
- /**
- * 异步 Select 选项配置
- *
- * @description
- * 用于异步加载选项的 Radix UI Select 组件。
- *
- * @property {number} timeout - 超时时间(毫秒),默认 5000ms
- * @property {boolean} waitForOption - 是否等待选项加载完成,默认 true
- * @property {boolean} waitForNetworkIdle - 是否等待网络空闲后再操作,默认 true
- *
- * @example
- * ```ts
- * // 默认配置(等待网络空闲和选项加载)
- * await selectRadixOptionAsync(page, '省份', '广东省');
- *
- * // 自定义超时并禁用网络空闲等待
- * await selectRadixOptionAsync(page, '城市', '深圳市', {
- * timeout: 10000,
- * waitForNetworkIdle: false
- * });
- * ```
- */
- export interface AsyncSelectOptions extends BaseOptions {
- /** 是否等待选项加载完成(默认:true)*/
- waitForOption?: boolean;
- /** 等待网络空闲后再操作(默认:true)*/
- waitForNetworkIdle?: boolean;
- }
- /**
- * 文件上传选项配置
- *
- * @description
- * 用于文件上传工具函数的配置选项。
- *
- * @property {string} fixturesDir - fixtures 目录路径,默认为 'web/tests/fixtures'
- * @property {boolean} waitForUpload - 是否等待上传完成,默认为 true
- *
- * @example
- * ```ts
- * // 默认配置
- * await uploadFileToField(page, 'photo-upload', 'sample-id-card.jpg');
- *
- * // 自定义 fixtures 目录
- * await uploadFileToField(page, 'photo-upload', 'sample-id-card.jpg', {
- * fixturesDir: 'custom/fixtures/path'
- * });
- *
- * // 自定义超时
- * await uploadFileToField(page, 'photo-upload', 'sample-id-card.jpg', {
- * timeout: 10000
- * });
- * ```
- */
- export interface FileUploadOptions extends BaseOptions {
- /** fixtures 目录路径,默认为 'tests/fixtures' */
- fixturesDir?: string;
- /** 是否等待上传完成,默认为 true */
- waitForUpload?: boolean;
- }
- /**
- * 表单步骤配置
- *
- * @description
- * 用于表单填写工具函数的配置选项。
- *
- * @beta 此类型为计划中的功能,对应的工具函数尚未实现。
- *
- * @example
- * ```ts
- * // 计划中的功能
- * await fillFormField(page, selector, 'value', {
- * timeout: 3000,
- * scrollToElement: true
- * });
- * ```
- */
- export interface FormStepOptions extends BaseOptions {
- /** 是否在填写前滚动到元素(默认:true)*/
- scrollToElement?: boolean;
- }
- /**
- * 对话框操作配置
- *
- * @description
- * 用于对话框工具函数的配置选项。
- *
- * @beta 此类型为计划中的功能,对应的工具函数尚未实现。
- *
- * @example
- * ```ts
- * // 计划中的功能
- * await closeDialog(page, {
- * timeout: 2000,
- * closeWaitTime: 500
- * });
- * ```
- */
- export interface DialogOptions extends BaseOptions {
- /** 对话框关闭后的等待时间(毫秒,默认:500)*/
- closeWaitTime?: number;
- }
- // 重新导出 Playwright 类型以便使用者使用
- export type { Page } from '@playwright/test';
|