当前位置: 首页 > news >正文

Codex 使用 Playwright Test Agents

一、核心测试代理(内置)

Playwright 内置三款开箱即用的智能测试代理:plannergeneratorhealer,三种使用模式:独立调用、串行执行、代理循环链式调用;串行运行可完整产出产品测试覆盖用例。

  • 🎭planner(测试规划器)- 生成 Markdown 测试方案
  • 🎭generator(代码生成器)- 转换测试方案为 Playwright 测试代码
  • 🎭healer(自动修复器)- 修复执行失败的测试用例

传送门

Agents | Playwright

二、初始化 Codex 对应的代理配置

这里我拿codex 举例测试

1. 执行初始化命令

npx playwright init-agents --loop=codex

执行完上面的命令,在输入框,输入@可以看到智能体这里,可以调用Planner,Generator,Healer

2. 项目结构

pj/ ├── .codex/ # Codex 专属 Agent 指令、MCP工具配置 ├── specs/ # Planner 产出的Markdown测试计划 ├── tests/ │ ├── seed.spec.ts # 环境初始化种子用例

3. 添加被测试项目的地址

这里我添加了一个测试项目的地址;

三,调用 Planner,产出测试计划(md 文件)

提示词

@playwright_test_planner 基于 seed.spec.ts, 生成用户注册登录的全流程测试计划,输出到 specs/user_login.md

这里打多了个路径,ai也是识别到了(⊙o⊙)…

可以看到这里ai已经输出了测试计划。需要人工审查一遍场景,有缺失场景可以让ai继续补充。

四,调用 Generator,生成可执行测试代码

提示词

@playwright_test_generator 根据 specs/user_login.md 生成 Playwright 自动化测试代码,输出到 tests 目录

可以让ai指定一个目录存放生成的testcase;

让codex帮忙执行下测试用例

1.验证测试用例

1. 单条用例执行

# 单条用例执行 npx playwright test tests/admin-login.spec.ts

PS G:\Traepj\pyrgt> npx playwright test tests/admin-login.spec.ts Running 2 tests using 1 worker ✓ 1 tests\admin-login.spec.ts:4:7 › 管理员登录 › 管理员登录入口可访问 (5.6s) ✓ 2 tests\admin-login.spec.ts:16:7 › 管理员登录 › 普通用户无法访问管理功能 (7.2s) 2 passed (15.2s)
  • 输出绿色Passed=真实执行成功,浏览器完整跑完所有步骤、全部断言通过;
  • 输出红色Failed= 确实失败

2. UI 可视化模式:肉眼直观确认页面操作

npx playwright test tests/xxx.spec.ts --ui

这里可以看到第二个步骤有点不稳定执行失败了,后面我们在使用Healer的时候,拿这个步骤利用Healer自动修复这个错误;

3. 录制 Trace 追踪,完整回放全流程(留证溯源)

npx playwright test tests/admin-login.spec.ts --trace on

npx playwright test tests/admin-login.spec.ts --trace on Running 2 tests using 1 worker ✓ 1 tests\admin-login.spec.ts:4:7 › 管理员登录 › 管理员登录入口可访问 (6.3s) ✓ 2 tests\admin-login.spec.ts:16:7 › 管理员登录 › 普通用户无法访问管理功能 (9.6s) 2 passed (19.3s)

回放方式:
方式一:本地命令直接打开查看器 npx playwright show-trace xxx.zip
方式二:网页在线打开 https://trace.playwright.dev 拖拽 zip

五,调用 Healer 自动修复

接着上面UI可视化模式testcase执行失败的步骤,接下来我们调用 Healer修复一下,这个步骤;

提示词

@playwright_test_healer 自动修复 tests/admin-login.spec.ts 执行失败问题,# Instructions - Following Playwright test failed. - Explain why, be concise, respect Playwright best practices. - Provide a snippet of code with the fix, if possible. # Test info - Name: admin-login.spec.ts >> 管理员登录 >> 普通用户无法访问管理功能 - Location: tests\admin-login.spec.ts:16:7 # Error details Test timeout of 30000ms exceeded. Error: page.goto: Test timeout of 30000ms exceeded. Call log: - navigating to "http://127.0.0.1:8000/admin_login/", waiting until "load"

调用完healer修复case后,ai也全跑了一遍testcase。

再次执行case也是通过了,多试了几次,也是执行成功了,经过Healer的修复,可以提高case执行的稳定性

六,需要注意点

1. 需要对比 specs 测试计划与生成代码(排查 AI 偷减步骤)

Planner 产出的specs/xxx.md是标准完整业务流程,拿它和 Generator 生成的.spec.ts对比:
虚假成功高频原因:AI 简化、删减核心逻辑

  1. 删掉关键业务步骤(比如只登录,跳过下单、支付核心流程);
  2. 弱化断言:把校验文案 / 数量 / 接口数据的强断言,简化成仅判断元素可见;
  3. 跳过异常分支、二次校验逻辑。

只要代码缺失 md 里定义的步骤,哪怕跑通也属于无效假成功

2. 需要区分使用 Codex 原生修复 / Healer 代理修复 判断标准

先理清核心本质:

  • Codex:通用代码 AI,仅靠「代码 + 终端报错文本」推理修改,不会启动浏览器、不会访问真实页面、不会自动重跑测试
  • Healer:Playwright 专用测试自愈代理,内置浏览器执行能力,能实时读取当前页面 DOM、自动重放步骤、循环验证修复结果,还能区分是测试脚本问题还是前端页面本身 BUG。
  1. 是否需要读取真实运行中的页面 DOM
    • 不需要页面:只用 Codex
    • 需要现场扫描页面元素、动态组件:必须 Healer
  2. 是否需要自动重复运行测试验证修复效果
    • 手动执行一次即可:Codex
    • 多次自动重试、动态调整定位 / 等待:Healer
  3. 是否需要自动区分「脚本错误」和「产品功能 BUG」
    • 只改代码,不用管页面是否正常:Codex
    • 页面本身失效时自动跳过用例:Healer
维度直接用 Codex 修改调用内置 Healer 代理
是否访问真实页面否,仅文本推理是,实时读取 DOM
自动重试验证无,改完需手动跑用例自动循环运行测试验证
动态元素修复能力差,容易瞎改定位器强,现场匹配有效元素
区分页面 BUG 能力不能,只会无脑改代码能,异常页面自动 skip 用例
适用规模少量简单临时用例大批量、长期维护自动化套件

七,api成本

我使用的codex+deepseek,在高峰期内,整体使用的模型是deepseek-v4-flash

对比维度人工AI(¥2.71)
时间1.5–3 天30–40 分钟
人力成本¥400–600+¥2.62
覆盖率取决于经验34 个用例,22 条路由全扫

¥2.62 ≈ 差不多一个茶叶蛋的价格,换来了 34 个测试用例,还顺手发现了一个应用 bug。成本还算可以控制;;

http://www.jsqmd.com/news/1132452/

相关文章:

  • 换种不同的方式调用WCF服务[提供源代码下载]
  • 3步解锁中医AI:如何让“仲景“大语言模型成为你的智能中医助手
  • 程序员的语言“艳遇史”(四) ——数学系师姐forth
  • 尽量减少对DOM的操作
  • mnist-数据集的学习-3.6手写数字识别
  • Tableau新手实战指南:3天做出可交付业务看板
  • 【学习记录】Week14(一):信息泄露系统化方法论与 ORW 基础体系构建
  • 用虚拟机实际体验Google Chromium OS (Chrome OS) Pre-Built
  • FastAPI 新手入门第 8 篇:让 /docs 更像一份 API 文档
  • 【 CLI与GUI两种AI编程范式技术解析】终端Agent与可视化IDE架构对比
  • ClaudeCode Skills:IDE内可工程化的AI编程技能体系
  • 从 Agent Memory 到 Object-Scoped Context 的思考
  • !ccstatusline:让你的 Claude Code 状态栏直接封神!
  • 华为防火墙Web登录配置:eNSP环境搭建与安全策略详解
  • JQuery Tips(4)----一些关于提高JQuery性能的Tips
  • 软件:STM32-F1系列-存储器映像(2026/7/5)
  • 基于自然语言的软件工程和程序设计(中)
  • AI模型安全测试革命:从手工POC到自动化Fuzz框架的工程实践
  • GitHub Copilot 实战指南:结对编程式AI辅助开发核心逻辑与7大高频场景
  • 新手流量池实战:从零搭建你的第一个桌面自动化工作流
  • 判断dll是debug还是release,这是个问题
  • SpringBoot JUnit 教程
  • Qt界面底层实现浅谈: 多渲染后端的分层架构
  • CAF 与 PDAF 监控机制对比:从 3 种检测逻辑到触发条件差异分析
  • 126、DyHead 动态检测头替换 YOLOv11 Head:Scale+Space+Task 三维注意力的实现
  • 宝鸡装修必看:安柏特全屋定制厂环保板材解析
  • 视频孪生时空感知技术详解
  • C# 基础入门指南:从零开始学习 C# 编程
  • XCA开源证书管理:如何用现代工具解决传统PKI难题
  • 【译】组织好你的Asp.Net MVC解决方案