Agent Skills
返回列表
💻

Playwright 并行标签页管理器

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 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(),释放对应的浏览器进程资源

实际使用时,大致流程是:

  1. 技能初始化时调用 chromium.launch() 拿到共享 browser
  2. 从 context 池获取一个可用实例
  3. 在该 context 内 newPage() 创建标签页,设置所需视口参数
  4. 执行测试逻辑
  5. 测试结束,page 归还池中或销毁,context 按需回收

适用边界

  • 浏览器支持:资料明确提到 chromium.launch(),Firefox(firefox.launch())和 WebKit(webkit.launch())的适配情况未说明,跨浏览器项目需要自行测试
  • 池容量限制:context 池有上限,并发数超过池大小会排队,不会无限扩张资源占用
  • 异常清理:自动清理依赖正常退出路径。如果测试进程被 kill -9 强制终止,残留的浏览器子进程可能需要手动处理

使用场景

  • 编写端到端测试时需要同时跑多组账号登录用例,靠隔离的 BrowserContext 避免 cookie 串扰
  • 回归测试要覆盖桌面、平板、手机三种视口,想复用一个浏览器实例并行跑同一批用例
  • CI 流水线并行执行上千条用例,担心浏览器进程泄漏拖垮构建机,需要自动回收机制
  • 并发量随测试套件规模波动大,不想为每条用例单独调用 launch 造成冷启动拖慢耗时

适合人员

  • 前端 QA 工程师:负责端到端测试套件,需要在 CI 中并行跑用例,又不想手动管理浏览器进程生命周期
  • 测试基础设施开发者:搭建并行回归流水线,关注 context 池化复用和资源回收的稳定性
  • 全栈工程师:维护项目的 Playwright 冒烟脚本,希望多视口快速验证页面布局而不反复启动浏览器
  • 持续集成维护者:负责构建集群资源预算,担心并行测试导致的浏览器进程泄漏影响其他任务