必须手动配置 launch.json,因为 VS Code 的 F5 调试依赖 Node.js 调试器直接启动 Playwright CLI 进程,而插件不接管调试入口;不配则 page/browser 为 undefined,核心原因是缺少 --debug 参数导致无法 attach worker 进程。

VSCode 默认不支持 Playwright 测试的 F5 单步调试,必须手动配 launch.json;否则断点能停住,但 page、browser 全是 undefined。
为什么 launch.json 必须手动写,不能靠插件自动启用 debug
Playwright Test for VSCode 插件只负责“运行”和“报告”,不接管调试流程。F5 本质是用 VS Code 的 Node.js 调试器启动 CLI 进程,而插件没提供这个入口。不配 launch.json,VS Code 就按普通 Node 脚本跑,根本不会加载 Playwright 的测试上下文。
- 常见错误现象:
Cannot find module '@playwright/test'、调试时变量为空、断点后page.goto报错 - 根本原因:没指定可执行文件路径、没传
test子命令、没告诉它用哪个 browser project - 验证前提:项目里已安装
@playwright/test(不是playwright),且node_modules/.bin/playwright存在
launch.json 的 program 和 args 怎么写才有效
program 必须指向本地 CLI 可执行文件,不能只写 playwright;args 至少包含 test 和浏览器 project 名,否则 CLI 不知道你要干啥。
-
program值:macOS/Linux 是"${workspaceFolder}/node_modules/.bin/playwright",Windows 是"${workspaceFolder}/node_modules/.bin/playwright.cmd" -
args至少含"test",加上"--project=chromium"(必须和playwright.config.ts里定义的 project 名完全一致,大小写敏感) - 加
"${fileBasename}"可让调试器自动运行当前打开的.spec.ts文件,避免每次手动改参数 - 务必加
--debug(Playwright v1.40+),否则调试器无法 attach 到 worker 进程,page对象始终不可见
调试时 page/browser 显示 undefined 怎么办
这是最典型的“断点命中但变量看不到”问题,根源是 Playwright 测试运行在独立 worker 进程中,VS Code 默认不 attach 子进程。
- 唯一可靠解法:在
args里加--debug,例如["test", "--project=chromium", "--debug", "${fileBasename}"] - 别混用
--headed和--debug:前者启 GUI,后者启 inspector 协议,某些环境会抢资源导致卡死或白屏 - 日常调试建议用无头 +
--debug:DevTools 的 Sources/Network/Console 面板比弹窗更可控,也更容易复现异步问题 - 如果用了 TypeScript,确认
playwright.config.ts能被正确解析;不行就换playwright.config.js,省去 ts-node 依赖
真正容易被忽略的是 --debug 参数——它不是可选优化项,而是调试能力的开关。没它,VS Code 就只是在主进程打了个断点,worker 里的 page 永远不会被调试器看见。


















