ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

e2e配置指南:e2e.config.ts 每个字段都讲明白

e2e配置指南:e2e.config.ts 每个字段都讲明白 e2e配置指南e2e.config.ts 每个字段都讲明白【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e 是一个面向 Web 和移动应用的下一代端到端e2e测试框架用自然语言描述目标AI Agent 就会驱动应用去达成再用定位器和断言检查结果。而所有这一切的起点就是项目根目录里的e2e.config.ts配置文件。本文将把这个 e2e 配置文件里的每个字段——targets、tests、timeout、trace、agents、cache、secrets等——逐个讲明白并给出每个字段的默认值帮你快速写出第一份可用的配置。如何找到和加载你的 e2e.config.ts 配置在讲字段之前先搞清楚三件小事文件名e2e.config.ts或e2e.config.mts也可以直接用e2e run --config path指定查找规则运行器从工作目录逐级向上查找直到仓库根目录。选中文件所在的目录就是项目根目录同一目录里两个名字都存在会报CONFIG_AMBIGUOUS严格校验任何不认识的键都会被拒绝并报错INVALID_CONFIG所有数值必须是安全整数。可选字段要么给值、要么整个省略不允许显式写undefined。一个最小可用的 e2e 配置长这样完整示例见 examples/with-next/e2e.config.tsimport type { E2EConfig } from e2e; import { web } from e2e-dev/web; export default { targets: [ { engine: web(), app: { url: http://localhost:3100 } }, ], } satisfies E2EConfig;下面这张「字段速查表」列出了顶层全部字段及默认值完整参考docs/reference/config.mdx字段必填默认值一句话说明targets✅无至少 1 个测试目标引擎 被测应用tests❌tests/**/*.e2e.ts测试文件的 glob!开头为排除timeout❌120000 ms单个测试的总时限launchTimeout❌60000 ms引擎初始化与启动预算actionTimeout❌30000 ms每个引擎操作的预算assertionTimeout❌5000 msexpect断言的默认等待cleanupTimeout❌30000 ms清理钩子与引擎收尾预算retries❌本地 0 / CI 1每个测试的重试次数0–10workers❌本地 CPU 核数一半 / CI 1并行 worker 数1–1024trace/video❌on/off录制模式详见下文output❌.e2e报告与产物输出目录reporters❌list报告输出器junit、markdown、json等agents❌无具名 AI Agent 配置cache❌本地读-写 / CI 只读Agent 操作回放缓存credentials/secrets❌无测试账号与密钥自动脱敏projectId❌根package.json的 name稳定的项目标识artifacts❌仅本地把产物推送到远端存储failOnSkippedFailure❌false失败后跳过是否让整个运行失败targets每个 e2e 测试目标讲明白targets是 e2e 配置的核心——每个 target 由三部分构成name报告里的名字--target参数也用它、engine驱动应用的方式web(...)、mobile(...)或自定义引擎、app被测应用本身。targets: [ { name: web, engine: web({ viewport: { width: 1440, height: 900 } }), app: { url: http://localhost:3000, command: { executable: npm, args: [run, dev] }, readyUrl: http://localhost:3000/health, }, }, ],app被测应用字段速查键适用作用urlweb基础 URLapp.open()从它开始bundleIdmobile设备上已安装应用的标识appPathmobile要安装的.app/.apk构建产物identity通用回放缓存的稳定身份键默认取 URL 的 origin 路径environment通用test/staging/production标签launchArguments/permissionsmobile每次冷启动的参数与权限设置command通用测试前自动拉起的进程如 dev serverreadyUrl通用轮询此 URL 直到 200–499判定command就绪几个新手常踩的点web()target 必须有app.url且不能出现bundleId、appPath等移动端键反之亦然混用直接INVALID_CONFIGcommand支持{port}占位符。把url写成http://127.0.0.1:0可让运行器自动分配空闲端口command.args里的{port}会被替换成实际端口多个 target 声明同一个command时共享一个进程reuseExisting: true时如果端口上已有服务在跑就直接复用CI 中会被忽略。engine的选项则管的是怎么驱动web({ browser, viewport, headers, basicAuth, userAgent, locale, timezoneId, ... })见 docs/reference/web.mdxmobile({ platform, device, session, transition })见 docs/reference/mobile.mdx。下面的 Next.js 示例应用就是被app.url指向、由测试驱动的目标页面tests、超时与并行控制测试如何运行export default { tests: [tests/**/*.e2e.ts, !tests/wip/**], timeout: 120_000, // 单个测试的总时限 assertionTimeout: 5_000, // expect 默认等待 retries: 1, // 本地跑也想重试就显式写 workers: 4, // 并行 worker 数 } satisfies E2EConfig;tests是相对项目根的 glob 列表!开头的条目做排除排除项与顺序无关只写排除项是不合法的四个超时字段分工很清晰timeout管整个测试launchTimeout管引擎启动actionTimeout管单次操作assertionTimeout管断言轮询cleanupTimeout管收尾retries和workers的默认值会随 CI 环境自动切换本地retries: 0、CIretries: 1本地 worker 取核数一半、CI 强制为 1。trace 与 videoe2e 录制模式怎么选trace操作轨迹和video录屏共用同一组 5 种RecordingMode取值从小到大模式录什么保留什么off不录无on每次尝试全部retain-on-failure每次尝试仅失败尝试的on-first-retry仅第一次重试该次录制on-all-retries首次之后的每次全部录制默认值本地trace: on、CItrace: on-first-retry全量 trace 会让运行时间增加约四分之一CI 默认只录重试那次很合理video默认一律off因为视频最贵且会原样记录屏幕上的敏感内容。优先级从低到高是配置文件顶层 → target 上的trace/video→ 命令行--trace/--video→ 单个测试自己的选项。export default { trace: on-first-retry, video: retain-on-failure, targets: [ { engine: web(), app: { url: http://localhost:3000 } }, { name: firefox, engine: web({ browser: firefox }), app: { url: http://localhost:3000 }, video: on }, ], } satisfies E2EConfig;output 与 reporterse2e 测试报告去哪了一次运行写的所有东西都收在output目录默认.e2e下report.json规范报告--last-failed读它、junit.xml/summary.md对应报告器、artifacts/截图、trace、视频、下载文件每次运行的最新证据等。改了output记得把它加进.gitignore。reporters可以叠加输出器内置的有list、junit、markdown、json还能加自定义报告器对象。官方仓库自己的 Web 基准套件apps/web-benchmark/e2e.config.ts就是这样把结果发到 Pull Request 评论的reporters: [list, github({ key: web })], // 来自 e2e-dev/github移动端基准套件apps/mobile-benchmark/e2e.config.ts则展示了多 target 写法iOS 模拟器 Android 模拟器各一个 targetworkers跟随设备池数量。cache、credentials 与 secrets缓存和密钥字段cache回放缓存——Agent 执行过的操作在后续断言通过后才被记录下次运行直接回放、零模型调用。三个模式read-write本地默认、read-onlyCI 默认、off。可选配置项cache: { mode: read-only, dir: .e2e/cache, // 默认位置e2e init 会把它写入 .gitignore想共享回放就删掉那行 strict: true, // 录制已失效时以 REPLAY_STALE 失败而不是交还给 Agent },credentials / secrets——写进配置的账号密码和 API 密钥运行器会自动在截图、日志、trace、报告中脱敏成secret:namecredentials: { admin: { username: admintester.army, password: at-least-6-chars }, }, secrets: { previewPassword: process.env.PREVIEW_PASSWORD, // 也支持 () string 的供应商函数 },之后用credentials.user(admin).password或secrets.get(previewPassword)拿到不透明句柄直接传给locator.fill即可测试代码永远读不到明文。环境变量的E2E_USER_NAME_USERNAME/_PASSWORD和E2E_SECRET_NAME优先级高于配置值。agents 配置给 e2e AI 测试接上大脑只有用到agentfixture 的测试才需要这一节。agents是一个具名映射测试默认使用defaultagents: { default: { model: gateway(openai/gpt-6-luna-fast), // 任意 AI SDK 模型实例 system: You are a thorough QA agent. Verify every outcome., context: Plans are called tiers. Billing lives under Settings., }, buyer: { model: gateway(openai/gpt-6-luna-fast), system: You are a first-time buyer., maxSteps: 40, }, } satisfies E2EConfig;常用子项model驱动 Agent 的模型实例必填无隐式默认、judge断言/等待/抽取用的模型默认同model、context告诉模型这个应用把东西叫什么、maxSteps与maxModelCalls每次调用的动作与请求上限默认 25、judgmentTimeout默认 30000 ms。注意Agent 之间不互相继承每个条目都从内置默认值起步。也可以用executor字段换上自定义大脑。CI 与本地默认值对照表最后用一张表总结不写也会生效的环境差异CI 由CI环境变量判定设置本地CIretries01workers核数的一半1cache未显式设置时read-writeread-onlytraceonon-first-retrytest.only允许报错ONLY_IN_CIcommand.reuseExisting生效忽略总是新起进程写在最后记住这份 e2e 配置指南的心法其实很简单targets里的engine管怎么驱动、app管测什么其余字段都是围绕超时、并行、录制、报告、缓存、密钥的开关所有未知键都会让配置加载失败并给出最接近的正确拼写提示写错了跑不起来反而省心。想动手试试最快的路径是npx e2e init或直接对照仓库里四个可直接运行的示例examples/with-vite/e2e.config.tsexamples/with-next/e2e.config.tsexamples/with-expo/e2e.config.tsexamples/with-swiftui/e2e/e2e.config.tsVite 示例应用的被测页面长这样跑通它只需要上面那份最小配置更细的字段语义、错误码INVALID_CONFIG、UNSUPPORTED_ARTIFACT等和完整 TypeScript 接口定义查阅 docs/reference/config.mdx 即可。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表