Playwright 并行标签页管理器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/playwright-parallel-tab-manager。
技能介绍
并行测试的上下文管理困境
在使用 Playwright 做并行测试时,一个常见难题是:多个测试用例需要各自独立的浏览器上下文(BrowserContext),但频繁调用 chromium.launch() 会引入可观的启动开销。如果手动管理这些 context,开发者很快会遇到三类问题——资源泄漏(忘记调用 context.close(),导致浏览器进程堆积)、状态串扰(共享 context 下 cookie 和 localStorage 互相影响)、视口僵化(无法在测试运行中灵活调整窗口大小或切换设备模拟)。
技能如何工作
这个技能把并发管理拆成三个阶段:
- 池化初始化:启动一个共享的 browser 实例,预先创建一组
BrowserContext放入池中。后续请求直接从池中取,而不是每次launch()冷启动 - 标签页调度:每个 context 内部按需创建
page(标签页)。不同 page 共享同一个 context 的存储隔离域,但页面状态互不干扰;多个 context 并行跑,对应多视口同时测试 - 自动回收:page 使用完毕归还池中复用;context 达到生命周期上限或闲置超时后自动
close(),释放对应的浏览器进程资源
实际使用时,大致流程是:
- 技能初始化时调用
chromium.launch()拿到共享 browser - 从 context 池获取一个可用实例
- 在该 context 内
newPage()创建标签页,设置所需视口参数 - 执行测试逻辑
- 测试结束,page 归还池中或销毁,context 按需回收
适用边界
- 浏览器支持:资料明确提到
chromium.launch(),Firefox(firefox.launch())和 WebKit(webkit.launch())的适配情况未说明,跨浏览器项目需要自行测试 - 池容量限制:context 池有上限,并发数超过池大小会排队,不会无限扩张资源占用
- 异常清理:自动清理依赖正常退出路径。如果测试进程被
kill -9强制终止,残留的浏览器子进程可能需要手动处理
使用场景
- 编写端到端测试时需要同时跑多组账号登录用例,靠隔离的 BrowserContext 避免 cookie 串扰
- 回归测试要覆盖桌面、平板、手机三种视口,想复用一个浏览器实例并行跑同一批用例
- CI 流水线并行执行上千条用例,担心浏览器进程泄漏拖垮构建机,需要自动回收机制
- 并发量随测试套件规模波动大,不想为每条用例单独调用 launch 造成冷启动拖慢耗时
适合人员
- 前端 QA 工程师:负责端到端测试套件,需要在 CI 中并行跑用例,又不想手动管理浏览器进程生命周期
- 测试基础设施开发者:搭建并行回归流水线,关注 context 池化复用和资源回收的稳定性
- 全栈工程师:维护项目的 Playwright 冒烟脚本,希望多视口快速验证页面布局而不反复启动浏览器
- 持续集成维护者:负责构建集群资源预算,担心并行测试导致的浏览器进程泄漏影响其他任务