作为一名经常使用 Playwright 进行自动化测试的开发者,你是否遇到过这样的困扰:每次运行测试脚本时,Playwright 都要重新下载几百 MB 的浏览器文件,不仅浪费时间,还消耗大量带宽?特别是在网络环境不佳的情况下,这简直是开发者的噩梦!
今天,我将分享一个简单而有效的解决方案,让你彻底告别重复下载的烦恼,让 Playwright 的运行速度飞起来!
痛点分析:为什么 Playwright 总是重复下载?
在深入解决方案之前,我们先来理解问题的根源。
默认行为的问题
Playwright 默认会将浏览器二进制文件下载到系统的临时目录或用户目录下的特定位置。在某些情况下,这些文件可能会被清理或者 Playwright 无法正确识别已下载的浏览器,导致重复下载。
常见触发场景
- 项目切换:在不同项目间切换时
- 环境清理:系统清理临时文件后
- 版本更新:Playwright 版本更新后
- 权限问题:文件权限导致的访问失败
这些问题不仅影响开发效率,在 CI/CD 环境中更是资源浪费的重灾区。
核心解决方案:PLAYWRIGHT_BROWSERS_PATH
解决这个问题的关键在于使用 PLAYWRIGHT_BROWSERS_PATH
环境变量,它允许我们指定浏览器的存储位置,确保 Playwright 能够找到并重用已下载的浏览器。
方案优势
- 一次下载,永久使用:浏览器文件存储在指定位置 ,不会被意外清理
- 项目间共享:多个项目可以共享同一套浏览器文件
- 可控管理:明确知道浏览器文件的存储位置,便于管理
- CI/CD 友好:可以在构建环境中缓存浏览器文件
实战配置步骤
步骤 1:选择存储目录
首先,选择一个合适的目录来存储浏览器文件。推荐几种方案:
方案 A:项目级存储
# 在项目根目录下创建浏览器存储目录
mkdir pw-browsers
export PLAYWRIGHT_BROWSERS_PATH=./pw-browsers
方案 B:全局存储
# 在用户目录下创建全局浏览器存储目录
mkdir ~/playwright-browsers
export PLAYWRIGHT_BROWSERS_PATH=~/playwright-browsers
方案 C:自定义路径
# 使用自定义路径
export PLAYWRIGHT_BROWSERS_PATH=/opt/playwright-browsers
步骤 2:永久设置环境变量
为了避免每次都要手动设置环境变量,将其添加到 Shell 配置文件中:
对于 zsh 用户(macOS 默认):
echo 'export PLAYWRIGHT_BROWSERS_PATH=~/playwright-browsers' >> ~/.zshrc
source ~/.zshrc
对于 bash 用户:
echo 'export PLAYWRIGHT_BROWSERS_PATH=~/playwright-browsers' >> ~/.bashrc
source ~/.bashrc
步骤 3:安装浏览器
设置好环境变量后,运行安装命令:
# 安装所有支持的浏览器
npx playwright install
# 或者只安装特定浏览器
npx playwright install chromium
npx playwright install firefox
npx playwright install webkit
步骤 4:验证配置
检查浏览器是否正确安装到指定目录:
ls -la $PLAYWRIGHT_BROWSERS_PATH
你应该能看到类似这样的输出:
drwxr-xr-x 5 user staff 160 Jan 27 10:30 chromium-1091
drwxr-xr-x 5 user staff 160 Jan 27 10:30 firefox-1408
drwxr-xr-x 5 user staff 160 Jan 27 10:30 webkit-1883