@a11ign/screenreader-fleet
Windows NVDA 捕捉工人车队的东道方生命周期、健康和能力。 运行在机器上 驱动器 工人——没有NVDA,没有向导,没有Windows.
npm install @a11ign/screenreader-fleet
npx a11ign-doctor # can I run right now? every check names its own fix
import { leaseWorker } from "@a11ign/screenreader-fleet";
const lease = await leaseWorker({ after: "stop" });
try {
// ... capture against lease.url
} finally {
await lease.release(); // puts the VM back the way it was found
}
一个租借,而不是你拥有的生命周期
leaseWorker 确定优先抓捕对象:您指定的明确工作者,然后
inventory.yml光金属船队,如果一个被宣布,然后一个 当地UTM VM(已贬值——"UTM是
被腐烂,那是测试的东西,"仓库所有者,2026-09-05,然后是历史
http://localhost:8765 默认。 到达 UTM 分支打印一个警告命名 fleet:* 作为
替换;并非完全拒绝,因为有些机器仍然只有UTM客人可以联系,以及
删除管理它的~2,460行是一个单独的决定,而不是警告它. 只有越战案件
拥有一个生命周期来管理——一个光金属盒总是在——所以 release() 是一个不对别人开放
来源. 它开始什么是缺失和 发现时放回VM: 已经运行的是
左跑,一个被停止的再次停止。 长跑不能停止 另一跑是
使用 .
停止的工人VM是正确的休息状态. all stopped 是一个准备状态,而不是一个错误—— a11ign-doctor
说得很清楚,因为"去开工"是错误的本能和花费时间.
当地的UTM VM并不是这个项目的本体是如何被捕获的. 默认为
独身贡献者没有光金属机队, 继续工作正因为它仍然是正确的路径
这起案子... 这起雷波的人身案... 是被十名光金属工人抓获的
inventory.yml,哪个 leaseWorker 先检查一下 如果你正在单独消耗这个包
自有 Windows 框, 下方的 VM 生命周期仍然适用于您 .
能力是衡量的,从未假定过
import { availableHostMemoryMb, workersHostCanRun } from "@a11ign/screenreader-fleet/capacity";
工人的VM费用 ~8 个GB,而不是它配置的 4 GB——QEMU 在客机RAM的上方
那个Windows的脏东西 再也不会回来 3个不适合36GBMac, 过度承诺不只是
慢跑:同页取出44.5 s 有3个客人,27.4 s 有1个客人, 饥饿的客人生产
"NVDA正在运行但不能说话"失败和 /health 断电 从外面读作: 工人们
有辱人格,这就是它是如何被误诊一天.
遵循了两条规则, 都学会了艰难的方法:
- 从不
os.freemem()。 。 。 . 它在一个主机上报告了402 MB,其中~12 GB要给出,因为macOS计数压缩 和使用的不活动页。 读取来自vm_stat。 。 。 . vm_stat被它必须检测到的状况扭曲了 ——互换出场嘉宾的页面计为: 可用,所以估计数 上升数 当主机生病时,它发布13.7GB的免费广告,而两名客人是 饿死了 因此,上限是这一估计数的下限,上限来自实际记录和档案管理,没有 反馈回路可以移动.
保健:观察 recoveries,而不是失败
import { assessWorker } from "@a11ign/screenreader-fleet/health";
这船队制造的工人最糟糕的过失 零失败一名嘉宾的NVDA在四分之四失声 捕捉,工人自己的再试 吸收了每一个, 所以每个捕捉成功 和驱逐规则——三 连续 失败 永远不能开火。 唯一的症状是每捕获一个健康的同龄人122.9分 第40.6节.
vitals.recoveries 计算一个工人的过错 是数字上升的同时,一切仍然
似乎工作着.
装有包裹的补给脚本
import { fleetScriptPaths } from "@a11ign/screenreader-fleet";
fleetScriptPaths().workerCtl; // absolute path to worker-ctl.sh
它们是外壳,所以是消费者产出它们,它们由模块而不是cwd解决——a
cwd-相对路径在cwd为回波根时是完全正确的. 搞错了不是微妙的:在这期间
提取 doctor 在一个有3个注册VMs的主机上报告"这里没有本地VM工具".
macOS + UTM 软件 vM生命周期假设. utmctl 需要运行 UTM 应用程序, 或者一个完全健康的 VM
报告状态为: unknown;和 UTM 无法使用模拟的 NVMe 设备中止来宾, 因此停止/ 启动为
唯一真正的生命周期——冷靴子准备是15-45 s,这很好.
未导出 : host-metrics, (中文(简体) ), worker-stats, (中文(简体) ), fleet-consistency它们都是测量内部的形状
每当新事物被测量时 都会改变.
在这里工作
此寄存器是软件包 : package.json, (中文(简体) ), src/ 而这个README坐落在根上,README是npm的页面. 它从这里搬过来
a11ign/a11ign 它的历史。 这取决于
@a11ign/screenreader-worker 财务报告和审定财务报表 @a11ign/judge 姓名,来自登记册。 。 。 .
舰队驱动没有认证的工人. 任何能到达工人端口的人都可以驱动浏览器和屏幕
机器上的读取器(SECURITY.md 内 a11ign/a11ign 说什么别人必须先知道。 只在您控制的网络上运行 .
pnpm install --frozen-lockfile
pnpm test # what the `gate` check runs on every pull request and merge-queue entry, with lint, typecheck and layout-check
main 通过合并队列只取拉动请求,每个请求都有一个批准审查. pnpm exec layout-check 是寄存器显示
检查从 @a11ign/toolchain: 它失败了一个软件包的工作空间, 一个不因其软件包命名的目录, 一个第二个 README 和一个剩余
lerna.json。 。 。 .
未到之处:27次测试
软件包的测试目录是为单列波所写的,其53个测试文件中有27个读取了不在本寄存器内的东西:
packages/control游戏本和目录, packages/lab捕捉客户,私人 guards 软件包,或者根的
scripts/运行在这里,他们在无法找到的文件上失败,所以他们是 没有 被带入此仓库
a11ign/a11ign在他们读到的书之外, 直到它的第3504行转移他们。 他们的名字是 COUPLED 列表中
packages/lab/src/packaging/screenreader-fleet-extraction.test.ts 在这里。 其他26人跑到这儿来 gate 运行, 使用
scripts/package-boundary.test.ts 将软件包保存到自己的目录.
释放
这个寄存器是自行发布,而不是与 a11ign/a11ign。一个应该达到 npm 的更改包含一个更改et
(单位:千美元)pnpm exec changeset),以及 合并到 main 是释放数字 : .github/workflows/release.yml 打给那个
可在 a11ign/toolchain,由哪个版本合并到一个脱开的承诺、发布、标记和
释放它。 没有版本拉动请求,也没有写给 main,因此,这是 package.json 版本和
CHANGELOG.md 后一个标签后退( n).changeset/README.md) (中文(简体) ). 出版时使用 npm 信任的出版
原产地和没有储存的代币。 第一份版本0.1.0在本工作流程存在之前出版;
没有 git 标签名称, 所以第一个 浮出水面的释放基础 main0.1.0岁.