ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Positron E2E 测试环境搭建指南:从全新克隆仓库到可运行 Playwright 测试套件

Positron E2E 测试环境搭建指南:从全新克隆仓库到可运行 Playwright 测试套件 开发工具代码编辑器数据科学【免费下载链接】positronPositron, a next-generation data science IDE项目地址https://gitcode.com/gh_mirrors/po/positron点击查看免费下载导读Positron 的端到端E2E测试以 Playwright 为框架覆盖 Electron 桌面应用、Chromium/浏览器环境以及外部服务器Workbench、Connect等多种运行形态。本文以仓库内 .claude/skills/author-e2e-tests/references/test-setup.md 为核心骨架完整讲解在无任何历史构建产物、无构建守护进程的全新克隆仓库上从零准备测试运行环境所需的全部步骤并结合仓库中的 npm 脚本、Playwright 配置、测试夹具fixture与 CI 工作流逐条解释每条命令的底层作用和执行细节。读完本文你将能在本地复现与 CI 一致的环境准备流程并学会排查环境类故障。一、总体流程五步准备一个可运行的测试环境按照 test-setup.md 的定义环境准备的核心假设是freshly cloned repository without previous build artifacts or build daemons running——即仓库刚克隆完毕、尚无任何编译缓存、也没有在后台运行的类型检查/构建守护进程。在这个前提下依次执行以下五步即可让机器具备运行测试的条件# 1. 为 Positron 本体安装 Node 依赖生成 node_modules npm install # 2. 为 e2e 测试安装独立依赖 npm --prefix test/e2e install # 3. 编译 Positron 并安装 Electron npm exec -- npm-run-all --max-old-space-size8192 -p compile electron # 4. 安装 Playwright 及浏览器系统依赖 npx playwright install --with-deps # 5. 安装启动 Positron 所需的依赖如引导扩展 bootstrapped extensions npm run prelaunch提示前两步的依赖安装是分开进行的。Positron 根仓库与test/e2e各自维护独立的package.json见 根 package.json 与 test/e2e/package.json测试代码的依赖并不随主仓库安装自动带入这也是为什么必须先执行npm --prefix test/e2e install。这五步的先后顺序是有讲究的编译步骤第 3 步依赖前两步装好的 node_modulesPlaywright 浏览器安装第 4 步需要项目内的playwright/test依赖就绪而prelaunch第 5 步会下载内置扩展Builtin Extensions并执行npm run electron是测试真正启动 Positron 前的最后一道准备。下面逐条深入。二、逐步拆解每条命令做了什么、为什么需要它1.npm install—— 安装 Positron 本体依赖仓库根目录的npm install会为整个 Positron 主程序src/下的 workbench、扩展体系、CLI 等生成node_modules。它是后续一切编译动作的基础。CI 视角在 .github/workflows/test-e2e-ubuntu.yml 中这一步骤由bash scripts/install-npm-parallel.sh完成带缓存恢复、重试与扩展过滤逻辑并设置了PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1、ELECTRON_SKIP_BINARY_DOWNLOAD: 1等环境变量以跳过安装阶段的浏览器/Electron 下载——因为这两个二进制会在后面的专用步骤中处理。本地开发无需这些开关。2.npm --prefix test/e2e install—— 安装测试专属依赖测试套件的依赖独立声明在 test/e2e/package.json 中其中值得注意的有resemblejs5.0.0与canvas^3.2.0用于绘图类测试的黄金截图golden screenshot像素对比。canvas是原生模块需要本机具备编译环境相关说明见 test/e2e/README.md 中的 Machine Setup 指引aws-sdk/client-s3、node-fetch、archiver用于将测试报告上传到 S3 报告桶CI 场景playwright/test属于根仓库依赖测试文件统一从 test/e2e/tests/_test.setup.ts 引入而不是直接 importplaywright/test。3.npm exec -- npm-run-all --max-old-space-size8192 -p compile electron—— 编译并安装 Electron这条命令通过npm-run-all以**并行-p**方式执行两个任务并给 Node 堆上限--max-old-space-size81928 GB避免大型 TypeScript 编译触发内存不足compile编译 Positron 的 TypeScript 源码生成out/等构建产物。E2E 测试的 Page Object 代码在编译时依赖这些产物中的类型声明——这正是 test/e2e/README.md 中提到在首次运行 builder 前可能看到测试文件报错的原因electron下载并安装与当前构建匹配的 Electron 二进制到.build/electron。CI 佐证同样的命令出现在 .github/workflows/test-e2e-ubuntu.yml 的 Compile Positron and Download Electron 步骤中CI 使用的是npm exec -- npm-run-all --max-old-space-size8192 -p compile electron x64显式指定架构。CI 中还额外做了chown root / chmod 4755设置chrome-sandbox的 SUID 权限因为prelaunch会重新解压 Electron 二进制并重置权限——这是容器/CI 环境特有的步骤本地桌面环境一般不需要。4.npx playwright install --with-deps—— 安装浏览器与系统依赖npx playwright install会下载 Playwright 所需的浏览器内核--with-deps会进一步调用系统包管理器apt/dnf 等安装浏览器运行所需的系统库。CI 特例在 .github/workflows/test-e2e-ubuntu.yml 中浏览器被安装到项目内目录.playwright-browsers通过PLAYWRIGHT_BROWSERS_PATH以便复用构建缓存仅 Electron 场景如果只运行e2e-electron项目使用 Electron 内嵌的 Chromium理论上不必安装独立浏览器但e2e-chromium、e2e-workbench等 web 项目依赖独立 Chromium因此统一执行该步骤最稳妥。5.npm run prelaunch—— 安装内置扩展与运行前准备根 package.json 中prelaunch脚本指向node build/lib/preLaunch.ts。它负责下载 Positron 内置扩展Builtin Extensions集成测试与 E2E 测试都需要它们并触发npm run electron完成 Electron 二进制的最终就位。CI 工作流中该步骤的注释也明确指出其目的Downloads Builtin Extensions (needed for integration e2e testing)。三、环境变量测试运行前的必要条件test-setup.md 提示更完整的设置帮助包括必需的环境变量请见 test/e2e/README.md。核心要求是Positron 需要知道加载哪个版本的 R 和 Python因此必须设置四个环境变量。仓库根目录提供了模板文件 .env.e2e.example使用方法是复制为.env.e2e并按需修改# 复制模板 cp .env.e2e.example .env.e2e模板中的四个核心变量及其在当前仓库中的示例值环境变量含义模板示例值POSITRON_PY_VER_SEL主 Python 解释器版本3.10.15POSITRON_PY_ALT_VER_SEL备用 Python 解释器版本如 Pyenv 管理3.9.6POSITRON_R_VER_SEL主 R 解释器版本4.4.1POSITRON_R_ALT_VER_SEL备用 R 解释器版本4.3.2注意Pyenv 约定若备用 Python 使用 Pyenv 提供变量值需写成3.13.0 (Pyenv)这种带括号标注的格式见 test/e2e/README.md 与 CI 中POSITRON_PY_ALT_VER_SEL: 3.13.0的用法。请确保本机确实安装了所选版本的解释器。模板中还包含 CI 才会用到的可选凭据类变量ANTHROPIC_KEY、E2E_POSTGRES_PASSWORD、REDSHIFT_*、DATABRICKS_*、SNOWFLAKE_ACCOUNT等本地只跑基础套件时可留空。这些变量在源码层面是强校验的在 test/e2e/tests/_test.setup.ts 的envVarsworker 夹具中通过loadEnvironmentVars(projectName)加载.env.e2e随后调用validateEnvironmentVars([...四个变量...], { allowEmpty: false })——缺失任一变量会直接导致测试失败而不是静默跳过。若运行e2e-workbench/e2e-jupyter项目还会额外强制校验POSIT_WORKBENCH_PASSWORD。四、理解测试运行形态Playwright 项目与目录结构环境就绪后测试以 Playwright 项目project为维度运行。项目定义集中在 playwright.config.ts常见形态包括项目名运行形态标签筛选e2e-electron标准 Electron 桌面应用默认项目排除:web-onlye2e-chromiumChromium 浏览器 托管服务器:webe2e-server浏览器 外部 Positron 服务器http://localhost:8080/?tkndev-token:webe2e-workbench浏览器 包含 Positron 与 Workbench 的容器http://localhost:8787:workbenche2e-windows/e2e-macOS-ci跨平台桌面套件:wine2e-firefox/e2e-webkit/e2e-edge跨浏览器套件:cross-browser测试代码的目录组织见 test/e2e/README.mdtest/ └── e2e/ ├── infra/ # driver、browser、electron、test runner 等基础设施 ├── pages/ # 全部 Positron Page Object ModelPOM ├── tests/ # 按功能领域组织的全部测试 └── test-files/ # 测试工作区内容R/Python 脚本与数据文件架构原则来自 .claude/skills/author-e2e-tests/SKILL.mdWorker 级 app 实例每个测试文件suite启动一个独立的 Positron 应用实例通过test.use({ suiteId: __filename })强制每个套件独占一个 worker 与全新 appTest 级夹具page、sessions等每个测试用例独立刷新Page Object ModelUI 交互统一经app.workbench.*POM 方法不直接使用裸 locator标签过滤测试按平台与功能标签过滤运行失败自动收集证据失败时自动附加 tracing、截图等。五、与 CI 对齐以 test-e2e-ubuntu.yml 为参照排查本地问题test-setup.md 特别建议遇到问题时可以查看 GitHub Actions 工作流了解全新环境如何准备——仓库内对应文件即 .github/workflows/test-e2e-ubuntu.yml。其核心步骤与本地流程的对应关系如下本地命令CI 对应步骤差异点npm installbash scripts/install-npm-parallel.sh带缓存恢复与重试CI 跳过浏览器/Electron 下载npm --prefix test/e2e installnpm --prefix test/e2e ci --prefer-offline --no-audit --no-fundCI 用ci严格锁文件compile electronnpm exec -- npm-run-all --max-old-space-size8192 -p compile electron x64CI 显式指定 x64npx playwright installnpx playwright installPLAYWRIGHT_BROWSERS_PATH.playwright-browsersCI 使用项目内浏览器目录npm run prelaunchnpm run prelaunch相同—chrome-sandbox SUID 权限设置容器环境专用—npx playwright test --project ... --grep ... --workers 2CI 默认 grep:critical2 个 worker--max-failures 10另外值得注意的 CI 细节测试环境变量CI 在运行阶段注入POSITRON_PY_VER_SEL3.10.12、POSITRON_R_VER_SEL4.5.2、POSITRON_PY_ALT_VER_SEL3.13.0、POSITRON_R_ALT_VER_SEL4.4.2等与本地.env.e2e模板版本不同取决于 CI 镜像中预装的解释器报告产物失败时 HTML 报告含错误信息、测试步骤、截图、trace、日志会被上传到 S3 报告桶trace 仅对失败用例保留Postgres 服务CI 通过容器服务提供 Postgres端口 5432供数据连接类测试使用。六、验证环境就绪快速运行一次测试完成上述全部步骤后可以用最简单的方式验证环境是否可用。Playwright 配置中项目名称为e2e-electron运行指定测试文件的标准写法为npx playwright test test-name.test.ts --project e2e-electron更常见的做法是使用根仓库 npm 脚本见 test/e2e/README.md# 运行整个 electron 测试套件 npm run e2e # 运行整个 web 测试套件e2e-chromium 项目 npm run e2e-chromium # 仅重跑上次失败的用例 npm run e2e-failed # 自定义组合项目 标签 worker 数 npx playwright test testName --project e2e-electron --grep someTag --workers 3注意测试是 TypeScript 编写的但不会被主仓库的构建守护进程自动转译。首次运行前需执行npm run --prefix test/e2e watch启动测试代码的编译 watcher否则会看到类型/语法层面的报错——这也是 test-setup.md 中compile步骤之外容易被遗漏的一环。此外若想针对某个已构建的 Positron 应用测试可设置BUILD环境变量指向该应用例如BUILD/Applications/Positron.app npm run e2e启动阶段脚本会自动检测并显示被测 Positron 的版本帮助确认使用的是预期的构建。七、常见问题与排查建议结合 test-setup.md、test/e2e/README.md 与 CI 工作流环境准备阶段的高频问题可按以下思路排查validateEnvironmentVars失败检查.env.e2e是否已从 .env.e2e.example 复制、四个*_VER_SEL变量是否齐全且本机确实安装了对应版本解释器测试文件报类型错误先确认已执行第 3 步的compile生成构建产物并运行过npm run --prefix test/e2e watch启动测试代码编译Electron 无法启动sandbox 相关容器环境参考 CI 中设置chrome-sandboxSUID 权限的做法本地可检查.build/electron的权限浏览器缺失执行npx playwright install --with-deps必要时为 web 项目指定PLAYWRIGHT_BROWSERS_PATH内置扩展缺失导致启动失败确认执行过npm run prelaunch对照 CI 排错将本地步骤与 .github/workflows/test-e2e-ubuntu.yml 逐步比对尤其是 CI 镜像中预装的 R/Python 版本与本地差异导致的解释器选择问题。八、延伸阅读环境准备总览.claude/skills/author-e2e-tests/references/test-setup.mdE2E 测试完整指南含依赖、运行方式、标签规则、CI 说明test/e2e/README.md测试文件结构、夹具、POM 与断言约定.claude/skills/author-e2e-tests/SKILL.md测试夹具与环境变量强校验实现test/e2e/tests/_test.setup.tsPlaywright 项目矩阵配置playwright.config.tsCI 环境准备参照.github/workflows/test-e2e-ubuntu.yml本地环境变量模板.env.e2e.example赞分享开发工具代码编辑器数据科学【免费下载链接】positronPositron, a next-generation data science IDE项目地址https://gitcode.com/gh_mirrors/po/positron点击查看免费下载相关推荐zsh-autosuggestions开发环境搭建从克隆代码到运行测试zsh autosuggestions开发环境搭建从克隆代码到运行测试 1. 开发环境准备清单 | 依赖项 | 版本要求 | 作用 | | | | | | GCLI开发工具十分钟部署 wvp-GB28181-proDocker 一键上线 GB28181 国标视频平台十分钟部署 wvp GB28181 proDocker 一键上线 GB28181 国标视频平台 园区入口的枪机刚装完现场要求半小时内把画面接到中心平台。wv后端音视频前端Zero To Production In Rust 配套仓库实战指南从环境搭建到运行测试Zero To Production In Rust 配套仓库实战指南从环境搭建到运行测试 《Zero To Production In Rust》是一本以实后端上一篇Naive UI Space 组件完全指南Flex 间距布局的配置、降级策略与源码原理下一篇PHP错误处理监控告警PagerDuty集成实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表