实战日志 6 分钟

Codex 里的浏览器自动化,什么时候用自带浏览器,什么时候用 Playwright

一次把 Codex Browser、Playwright、Chrome 插件和 DevTools MCP 放到同一张选择表里的工具边界复盘。

背景

这次问题从一个很常见的前端开发场景开始:在 Codex 里做页面验收和浏览器调试时,到底要不要给项目安装 Playwright?如果 Codex 已经能打开页面、截图、点击按钮,那项目里的 Playwright 还有什么价值?

真正需要分清的不是“哪个工具更强”,而是“这次要的是临时观察、可重复测试,还是深度调试”。同样都是浏览器自动化,Codex 自带浏览器、Playwright、Chrome 插件、Chrome DevTools MCP 的责任边界并不一样。

这次解决了什么

这次把浏览器工具拆成四类:Codex 自带浏览器负责快速看页面和交互验证;Playwright 负责沉淀成可重复的端到端测试;Chrome 插件负责接入真实登录态和用户浏览器环境;Chrome DevTools MCP 负责更深的 Console、Network、Performance 和 Lighthouse 类调试。

这样之后,“要不要安装 Playwright”就有了一个清晰答案:如果只是让 Codex 边改边看页面,通常不需要;如果项目要跑 npx playwright test、接入 CI、保留回归用例,就应该把 @playwright/test 安装进项目,并安装对应浏览器。

关键过程

第一步是把 Codex 自带浏览器放回它最擅长的位置。它适合本地页面预览、视觉检查、点击验证、截图、移动端视口复核,以及“我刚改了这个按钮,你帮我看有没有溢出”这种开发时的快速反馈。它的优势是低摩擦,和 Codex 当前任务天然连在一起。

第二步是把 Playwright 和“测试资产”绑定起来。Playwright 的价值不是临时打开一次页面,而是把关键路径写成代码,让登录、表单、下单、审核、跳转、移动端布局这些行为可以在本地和 CI 中反复验证。只要一个流程未来还会反复验收,就值得考虑写成 Playwright 测试。

第三步是单独看真实 Chrome 场景。有些问题离不开用户自己的浏览器环境,例如已经登录的后台、OAuth 回调、扩展影响、Cookie 状态、已有标签页里的上下文。Codex 自带浏览器通常不适合承载这些状态,这时更应该用 Chrome 插件或连接真实 Chrome 的调试工具。

第四步是把 Chrome DevTools MCP 放在深度排障层。它更像“让 agent 使用 DevTools”,适合看 Console 报错、Network 请求、Performance trace、页面性能和 Lighthouse 类检查。它不是替代 Playwright 的测试框架,而是排查浏览器运行时问题的工具。

踩坑

第一个坑,是把“Codex 能操作浏览器”误解为“项目不需要端到端测试”。Codex Browser 可以帮你验证当前这次修改,但它不会天然变成团队以后能复跑的测试资产。重要业务路径还是应该沉淀成 Playwright 用例。

第二个坑,是把 Playwright 当成所有页面调试的默认入口。为了看一个按钮是否溢出,就先装依赖、写测试、装浏览器,反而把轻量工作变重了。前端快速迭代时,Codex 自带浏览器更合适。

第三个坑,是忽略真实浏览器状态。登录态、插件、真实 Cookie、公司后台权限这些问题,往往不是干净测试浏览器能完整复现的。遇到这类情况,应该明确切到 Chrome 插件或 Chrome DevTools MCP,而不是继续在无状态页面里猜。

第四个坑,是混淆“调试工具”和“测试框架”。DevTools MCP 很适合定位网络和性能问题,但它不是长期回归测试的最佳载体;Playwright 可以记录断言和用例,但它不一定是 Console/Performance 深挖的最高效入口。

最后方案

最终可以按一句话选择:临时看页面,用 Codex 自带浏览器;要长期回归,用 Playwright;要真实登录态,用 Chrome 插件;要深查浏览器运行时,用 Chrome DevTools MCP。

在项目里是否安装 Playwright,取决于是否要把浏览器行为变成可维护的测试资产。需要的话,安装路径很明确:

npm.cmd install -D @playwright/test
npx playwright install

如果只是让 Codex 在当前任务里打开页面、截图、点击、观察布局,就不需要先把 Playwright 加进项目。这样能保持项目依赖干净,也能让调试速度更快。

以后怎么做

以后遇到浏览器自动化需求,可以先问三个问题。

第一,这次验证是不是只服务于当前修改?如果是,用 Codex Browser。

第二,这条路径以后是不是要反复验收,甚至进 CI?如果是,写 Playwright。

第三,问题是不是依赖真实浏览器状态、插件、Cookie、登录态,或者需要看 Network、Console、Performance?如果是,优先切到 Chrome 插件或 Chrome DevTools MCP。

工具选择的核心不是追求最强,而是把不同层次的证据放在合适的位置。Codex Browser 给即时反馈,Playwright 给长期确定性,Chrome 相关工具给真实环境和深度诊断。分清这三层,前端调试会轻很多。