获取浏览器二进制
为 Chromium、 Chrome 安装特定浏览器版本用于测试、 Firefox 边缘及其相配 硒网司机。 。 。 .
开始
下面的样本显示如何安装最新的铬并使用 硒网驱动器:
import { BROWSERS } from "@eyeo/get-browser-binary";
(async function example() {
let { binary } = await BROWSERS.chromium.installBrowser("latest");
console.log(`Chromium executable location: ${binary}`);
let driver = await BROWSERS.chromium.getDriver("latest");
await driver.navigate().to("https://example.com/");
await driver.quit();
})();
测试/浏览器.js 提供了图书馆的其他用法实例.
详情请查阅 API 文档。 。 。 . 如果您已经在文档页面上, 您可以在 右边.
支持的浏览器版本
- 铬 127
- 测试颜色 127
- Firefox 128 (英语)
- Edge 127 (Linux), Edge 最新版本 (MacOS, Windows)
这些遵循了由eyo扩展支持的浏览器版本. 版本数 的浏览器折旧政策.
用于测试的铬与铬
两者都以铬为原料,但来自不同的配电管道:
铬 由开源铬项目建造。 快照构建为 由他们的承诺而不是稳定的版本串识别, 和克流克流必须分别源码并手动同步. 抓图 由于老建筑可能会从CDN中消失,因此无法保证供应.
Chromium同时支持MV2和MV3.
测试用铬(CfT) 是Google官方发布的 专门用于自动化测试。 关键差异 :
- 每个发行由稳定的Chrome版本字符串(例如.
113.0.5672.0(中文(简体) ) 以及带有相配色相的船舶,消除了版本不匹配的问题. - 发行版被永久存档,因此被封装的版本仍然可以再出.
- 可通过 测试可用性仪表板的颜色。 。 。 .
- 仅支持MV3.
就CI管道而言,试验的铬比较可取,因为 有版本,配对的铬河分布使得能建立更可再生.
当需要MV2支持时,铬快照仍然有用.
微博记录
设定 VERBOSE 环境变量改为 "true" 获取动词记录
下载请求.
离线执行
可以运行浏览器离线,只要它们以前是 已安装。 示例
// Online
let { binary } = await BROWSERS[browser].installBrowser(version);
console.log(binary); // keep the browser binary location to use it offline
let driver = await BROWSERS[browser].getDriver(version); // let the driver binary download
// Offline
let customBrowserBinary = "<browser binary location>";
let driver = await BROWSERS[browser].getDriver(version, {
customBrowserBinary,
});
发展
先决条件
- 节点 QQ 18
- npm 第9页
unzip在 Linux 和 macOS 上,需要安装 Chromium 和 Chrome 用于 测试( Windows 使用内置tar.exe(中文(简体) )
安装/更新依赖关系
npm install
忽略/ 缓存的文件夹
所有浏览器和 Webdriver 文件将提取到 ./browser-snapshots
文件夹,它可能被忽略(例如将其添加到
.gitignore) (中文(简体) ).
另一方面, ./browser-snapshots/<browser_name>/cache 将持有所有
下载所需的安装文件 <browser_name>因此,这可能是
用于添加 ./browser-snapshots/*/cache 中缓存文件夹列表
您的线程配置 .
定型和格式化
npm run lint # ESLint + Prettier check
npm run lint-fix # auto-fix ESLint issues and reformat with Prettier
测试
运行所有测试 :
npm test
选项
这个 grep 选项过滤要用正则表达式运行的测试。 示例
npm test -- --grep "chromium.*latest"
这个 timeout 选项将超过 .mocharc.json。 。 。 .
增加超时可能对缓慢的连接环境有用:
npm test -- --timeout <ms>
默认情况下,测试会删除 ./browser-snapshots 每个字之前 Browser 套间
运行。 为了改变行为,你可以设置 TEST_KEEP_SNAPSHOTS 环境
变量为 true示例:
TEST_KEEP_SNAPSHOTS=true npm test
测试服务器
测试使用本地 http 服务器, 该服务器由 npm test 命令。 若为
,测试服务器也可以独立运行 :
npm run test-server
然后可以在单独的会话中进行测试. 示例
npm run test-suite -- --grep "chromium.*latest"
正在对 Docker 进行测试
有助于复制环境 test:browsers:linux 任务.
英特尔/AMD架构
docker build -f test/docker/Dockerfile -t browsers .
docker run --shm-size=512m -it browsers
这个 grep 财务报告和审定财务报表 timeout 选项也可以通过 TEST_ARGS
参数 :
docker run --shm-size=512m -e TEST_ARGS="--grep chromium.*latest --timeout 100000" -it browsers
ARM架构 (M1/M2 苹果硅)
跑步是模拟AMD架构完成的. 所需经费:
- (文图拉)
- 罗塞塔
- 在多克启用了“使用Rosetta在苹果硅上模拟x86/amd64”的功能
这个 --platform 选项
docker run --platform linux/amd64 --shm-size=512m -e TEST_ARGS="--grep chromium.*latest" -it browsers
在 macOS 中装入扩展
macOS TCC(透明度、同意性和控制性) 增加额外保护 以下文件夹 :
- 文档
- 下载
- 桌面
如果扩展名恰好位于部队派遣国文件夹内,则Chrome试图 装入,macOS拒绝他们访问.
通常接下来是权限对话框 。 但是,在无头模式下,没有 显示权限对话框, 而扩展未静默地加载 .
之后的错误可能大相径庭。 这里有一个例子:
updates an extension:
TimeoutError: /index.html did not open
Wait timed out after 8008ms
为避免这类问题,将扩展文件夹移出受部队派遣国保护的文件夹 目录(例如直接在您主目录下).
编制文件
npm run docs
发布指令
发布指令在 GitLab 维基百科。 。 。 .
重置依赖于 get-browser-binary (例如:. Extensions 财务报告和审定财务报表 testpages.adblockplus.org(中文(简体) )
需要更新,以便在发布后消耗新版本.
行为守则
这个项目的所有参与者都必须阅读并跟踪我们 行为守则。 。 。 .