@app-studio/qa-core

中文文档
0.11.6发布于 2026/11/06UNLICENSEDTypeScriptES Module近 30 天下载 2350

绑定合同的每个其它@app- studio/ qa 套件写道: schema, 加载器,跨进程锁,命令跑取器和默认的层叠.

中文使用文档
文档目录5 节
  1. 这是什么
  2. 绑定文件
  3. 锁,三个决定
  4. 明确限定的取景口的设计接受度
  5. 所需资源

@app-studio/qa-core (英语)

合同其他的 @app-studio/qa 包读取.

主机存储器一次声明其QA事实, 在 qa.bindings.json 其根源: 哪些命令存在,哪些是测试套件的分层,哪些是测试 种子被活化 种子被活化 种子被活化 这个 执行时 钩子和医生都读了那个文件 没什么 复制到主机中,然后左去 stale.

这条规则不具有标准性。 从一个仓库复制到另一个仓库的质量保证系统 而不重写它的约束 产生一个守卫,它的图案 匹配没有文件 - 它一无所有,却一无所获 有关. @app-studio/qa-doctor 存在使状态不可能实现 包是它所检查的合同.

这是什么

导出目的
bindingsSchema, (中文(简体) ), QaBindings佐德计划及其类型. strict() 全部:一个未知的密钥是一个错误,因为一个沉默无所事事的字典就是束缚如何变成谎言.
loadBindings, (中文(简体) ), findBindingsFile从任意目录到寄存器根并验证 。 以数据返回失败, 这样医生可以报告它而不是崩溃 .
acquireLock, (中文(简体) ), withLock通过取出键的跨进程锁 。 原子的创造;一个被报告为僵硬的锁,从不自动删除.
runCommand, (中文(简体) ), startBackground以信号转发和SIGTERM SIGKILL 关闭命令执行 .
waitForUrl, (中文(简体) ), ensurePortFree, (中文(简体) ), isPortFree用于管弦服务器的准备和港口卫生.
DEFAULT_LAYERS, (中文(简体) ), selectLayers, (中文(简体) ), runLayers, (中文(简体) ), describeLayers分层行走:自下而上,在第一课间休息时停止,说什么不是跑和为什么跑.
Rule, (中文(简体) ), Finding, (中文(简体) ), DoctorContext医生的插件合同,在这里,包可以贡献规则而不取决于医生.
appStudioFeatureSpecSchema, (中文(简体) ), appStudioFormSpecSchemaApp Studio最初的功能/形式合同及其交叉引用验证.
compileAppStudioFeatureSpec编译 feature.userExperience 输入没有重复的情景文件的活化名义和有条件浏览器路径.

绑定文件

{
  "$schema": "./node_modules/@app-studio/qa-core/schema/qa.bindings.schema.json",
  "version": "2",
  "repo": { "name": "my-app" },

  // The canonical registry. Layers, gates and docs reference the KEYS, never
  // the shell strings, so "what this repository runs" is written down once.
  "commands": {
    "typecheck": "pnpm typecheck",
    "test.unit": "pnpm vitest run --project unit",
    "test.integration": "pnpm vitest run --project integration",
    "test.e2e": "pnpm playwright test",
    "seed.apply": "pnpm seed",
    "seed.check": "pnpm seed:check"
  },

  // Bottom-up. `qa run` stops at the first break.
  "layers": [
    {
      "key": "logic",
      "title": "Pure logic",
      "restsOn": "nothing — no database, no application",
      "means": "a sanitiser or a validator is wrong. Nothing above can be trusted.",
      "commands": ["test.unit"]
    }
  ],

  "paths": { "seeds": "src/features/*/seed/index.ts", "tests.e2e": "tests/e2e" },
  "ports": { "api": { "port": 3000, "boundBy": "playwright.config.ts" } },
  "seedAccounts": [
    { "role": "ADMIN", "email": "[email protected]", "password": { "kind": "seeded-constant", "value": "password123456" } }
  ]
}

restsOn 财务报告和审定财务报表 means 不是装饰. qa run --list 打印它们,一个 已断层打印 means 在它没有运行的地层列表旁边—— 所以红色跑车说哪层破了 为什么上面的地板是 跳过,而不是五百个失败 是一个虫子穿不同的 名称.

锁,三个决定

  1. 以退出键入,将寄存器根散开到锁文件名中,所以 同一项目种子的两棵工作树和两颗炮弹同时进入 同样的退票.
  2. 原子创造 (单位:千美元)open(path, 'wx')) (中文(简体) ). 检查时创建会留下窗口 他们都相信自己赢了.
  3. 旧锁被报告,从未自动取出. 两个服务生可以 既观察已死亡的持有者, 也同时删除文件 —— 第二个删除 驱逐了第一扇锁 刚刚合法取走。 错误名称 持有并打印 rm 命令; 人类的决定.

明确限定的取景口的设计接受度

普通类 design-acceptance 记录至少需要两个不同的视图 标签。 签了合同,授权一个景点 由可选 scope 字段 :

{
  "scope": {
    "kind": "single-viewport",
    "viewport": { "name": "desktop", "width": 1440, "height": 900 },
    "contract": {
      "file": "knowledge/design/feature-ui.md",
      "sha256": "<SHA-256 of the signed contract>"
    },
    "reason": "The signed contract limits this review to the desktop viewport."
  }
}

这是一个范围碎片,而不是接受判决。 现有记录仍然 需要其审查者、时间、状态、来源摘要和证据 检查. checks.responsive.viewports 必须准确包含瞄准镜的标签; 宽度和高度是正整数,描述授权的取景口. 合同档案也必须出现在 sources 与相同的文摘. CLI对磁盘上的文件进行汇总检查,就像对每个来源一样. 记录刷新源码, 但不会默默更新范围 合同散列:变更后的合同需要明确的范围审查.

计划不解释合同的道词或检查截图. 设计师核实范围和尺寸与所签合同相符 和观察的证据。 限制响应范围并不放弃 无障碍性、设计-系统、判断、固定识别或源头-新鲜度检查. 普通记录和范围记录都拒绝重复标签.

所需资源

节点.js20或更新.

版本与发布记录

@app-studio/qa-core 共发布 34 个版本,首次发布于 2026/08/09;过去 12 个月发布了 34 个版本。

版本发布日期距今
0.11.6latest2026/11/061 天前
0.11.32026/11/017 天前
0.11.22026/10/2217 天前
0.11.12026/10/1622 天前
0.10.22026/10/0830 天前
0.10.3next2026/10/0830 天前

关于 @app-studio/qa-core 的常见问题

@app-studio/qa-core 是什么?

绑定合同的每个其它@app- studio/ qa 套件写道: schema, 加载器,跨进程锁,命令跑取器和默认的层叠.

如何安装 @app-studio/qa-core?

在项目目录运行 npm install @app-studio/qa-core,或使用 pnpm add / yarn add / bun add。

@app-studio/qa-core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@app-studio/qa-core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@app-studio/qa-core 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@app-studio/qa-core 可以商用吗?

@app-studio/qa-core 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@app-studio/qa-core 的下载量有多少?

根据 npm 官方下载统计,@app-studio/qa-core 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,350 次,日均约 78 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@app-studio/qa-core 还在维护吗?

最新版本 0.11.6 发布于 2026/11/06(1 天前);至今共发布 34 个版本,其中过去 12 个月发布了 34 个;首次发布于 2026/08/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。