
Vault UI 测试套件怎么跑全量、仅非企业版与浏览器过滤三种方式【免费下载链接】vaultA tool for secrets management, encryption as a service, and privileged access management项目地址: https://gitcode.com/GitHub_Trending/va/vaultVault 仓库里的ui/目录是一个 Ember 应用也就是 Vault 的官方 Web UI。修改 UI 代码后最直接的正确性验证就是跑它的测试套件。测试入口是ui/package.json里的一组pnpm run test*脚本它们统一经过包装脚本 start-vault.js该脚本会先启动一个 Vault dev server再执行ember exam跑测试因此验收测试acceptance tests打的是真实后端而不是 mock。本文覆盖三种运行方式CI 使用的全量套件、仅非企业版的子集、以及浏览器模式下按名字过滤单个测试。准备条件ui/README.md 的 Prerequisites 一节列出的环境依赖Gitnvm文档中为外部链接此处仅作说明安装按 nvm 官方方式进行即可pnpmGoogle ChromeNode.js 版本以仓库根目录.nvmrc/.node-version文件为准当前仓库固定为24.19.0ui/package.json中engines.node为24。以下命令都假定你位于ui/目录nvm use # 切换到 .nvmrc 指定的 Node 版本 pnpm i # 安装依赖另有一个前置条件start-vault.js通过vault命令启动 dev server。带CI环境变量时它使用仓库本地的../bin/vault需要先按根目录 README 的说明构建出 Vault 二进制本地运行时则假定vault已在 PATH 中。测试运行时实际启动的服务参数见 start-vault.js为vault server -dev -dev-ha -dev-transactional -dev-root-token-idroot -dev-listen-address127.0.0.1:9200testem.js 把测试内对/v1的请求代理到http://127.0.0.1:9200也就是这个 dev server。方式一全量运行pnpm run testui/README.md 描述该命令为 “lint run all the tests (CI uses this)”即 CI 使用的完整入口。它在ui/package.json中对应node scripts/start-vault.js不传过滤参数跑全部测试。只想跑测试、跳过 lint 步骤时pnpm run test:quick对应脚本是node scripts/start-vault.js --split8 --preserve-test-name --parallel1README 描述为 “run all the tests without linting”。另一个从仓库根目录进入的入口是 Makefile 的test-embertarget它先执行cd ui pnpm i再执行cd ui pnpm run test:oss即方式二的非企业版套件。方式二仅跑非企业版测试pnpm run test:ossui/README.md 描述为 “lint run all the non-enterprise tests (CI uses this)”。ui/package.json中对应pnpm test -f!enterprise即 QUnitfilter设为!enterprise排除测试名中包含enterprise的用例。ui/package.json里还有对应的反向入口test:entnode scripts/start-vault.js -fenterprise仅跑企业版测试README 未收录该命令。方式三浏览器模式下按名字过滤调试单个测试时README 提供了一个不拆分并行、直接在浏览器中打开全部测试的自定义脚本pnpm test:filter # 在浏览器中运行非企业版测试-f 默认为 !enterprise pnpm test:filter -ftest name # 按测试名过滤test name替换为你要调试的测试名README 给出的示例是pnpm run test:filter -fpolicies。过滤参数对应 QUnit 的filter配置QUnitfilter按测试全名做子串匹配!前缀表示排除。该模式在ui/package.json中是node scripts/start-vault.js --server -f!enterprise--server走 testem 的 server 模式测试不拆分并行便于定位问题。README 说明这是 “自动在浏览器中打开全部测试” 的脚本用-f目标到正在调试的那条测试。输出判读与已知行为本地浏览器自动切 Firefox非 CI 环境且未带--server时即方式一、二start-vault.js会自动追加--launchFirefox。脚本注释说明原因headless Chrome 下Hds::Modal的一个事件监听器不触发导致 pending test waiter 和超时所以本地运行改用 Firefox 作为权宜方案。终端输出testem.js 配置了tap_failed_tests_only: true和tap_quiet_logs: trueTAP 流只输出失败的测试通过用例会安静跳过判断是否全绿主要看失败条目。CI 产物CI环境下 testem 使用xunitreporter结果写入test-results/qunit/results.xmllaunch_in_ci为 Chrome容器内运行需要--no-sandbox参数testem.js中已按process.env.CI处理。README 与 package.json 的两处出入写这篇文章时核对了ui/README.md与ui/package.json的脚本定义有两处不一致以命令实际行为为准时应以 ui/package.json 为准README 称pnpm run test与pnpm run test:oss都 “包含 lint”但这两个脚本定义本体分别是node scripts/start-vault.js与pnpm test -f!enterprise脚本内没有 lint 步骤lint 应是在 CI 中单独执行的。README 列出了pnpm run test:quick-oss不带 lint 的非企业版测试但ui/package.json当前未定义该脚本。继续写测试时看什么如果要新增或组织测试ui/docs/tests.md 说明了目录约定/acceptance放走真实 API 的工作流测试会引发并发不稳定或缺第三方依赖的场景才用 mock、/helpers放共享的 selectors 与 API 响应 stub、unit放 utils/adapters/serializers 的测试。组件、路由等编码约定见 ui/README.md Contributing 一节列出的ui/docs/文档。【免费下载链接】vaultA tool for secrets management, encryption as a service, and privileged access management项目地址: https://gitcode.com/GitHub_Trending/va/vault创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考