# @futdevpro/dynamo-e2e 中文文档

规范地址：https://npmcn.com/package/%40futdevpro/dynamo-e2e/

版本：1\.18\.49
npm 元数据更新时间：2026-11-15T11:34:52.932Z
中文译文更新时间：2026-11-15T20:09:15.714Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40futdevpro/dynamo-e2e
原文对照：https://npmcn.com/package/%40futdevpro/dynamo-e2e/?lang=original
项目主页：http://futdevpro.hu/projects/dynamo
源码仓库：https://github.com/futdevpro/dynamo-e2e

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.5 MB，697 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-06-10T04:17:13.123Z
- 最新版本发布：2026-11-15T11:34:52.749Z
- 近 30 天下载量：3044（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：57（近 12 个月 57 个）

## 中文简介

Dynamo+FDP生态系统的端到端测试引擎——自发生成的形式覆盖测试,取景点审计矩阵,CWV诊断. 设置 - POJO - 第一.

## 安装

```sh
npm install @futdevpro/dynamo-e2e
```

也可以使用：`pnpm add @futdevpro/dynamo-e2e`、`yarn add @futdevpro/dynamo-e2e`、`bun add @futdevpro/dynamo-e2e`

## README

# @futdevpro/ dynam- e2e (英语)

[![npm](https://img.shields.io/npm/v/@futdevpro/dynamo-e2e.svg?label=npm)](https://www.npmjs.com/package/@futdevpro/dynamo-e2e) [![coverage](https://img.shields.io/badge/coverage-98.37%25-brightgreen.svg)](https://npmcn.com/package/%40futdevpro/dynamo-e2e/coverage/) [![specs](https://img.shields.io/badge/specs-254%2F0-brightgreen.svg)](https://npmcn.com/package/%40futdevpro/dynamo-e2e/src/) [![hyperplan](https://img.shields.io/badge/hyperplan-109%2F112-brightgreen.svg)](https://npmcn.com/package/%40futdevpro/dynamo-e2e/__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md)

Dynamo+FDP生态系统的端到端测试引擎.

## 什麽

将表格 v2 设置 POJOs 变成 Playwright 的 Dynamo 基岩包 测试套房—— **自动生成**, (中文(简体) ), **类型**, (中文(简体) ), **压倒一切**, (中文(简体) ), **可调试**。 。 。 .

一组三层:

1.  **表格覆盖** ——每个字段类型都有一个预测正+负 输入矩阵; 生成器从单一个形式发出~20-50个测试 设置 POJO .
2.  **视图端口矩阵** _(华维-2)_ ——7个标准以上的自动脱产测试 取景口+溢出/触地-目标a11y检测.
3.  **核心网络生命特征诊断** _(行)_ 合成LCP / CLS / INP / TTFB 测量 + 百分位聚合 + 归属.

## 状态

**波-1.4.4 + MP-10/MP-11** (2026-06-10)-A层合同 B层 发电机(窗体-套装+取景口-套装+CWV-套装), C层运行时间 已登记的CCD管道监督员, **75分测试 覆盖门** 活动( 报表) **97.84% (简体中文)**,分支 **87.13%**, (中文(简体) ), 函数 **98.55%**线条 **97.84% (简体中文)**104个规格,0个失败.

计划网: `__documentations/plans/dynamo-e2e-foundation/HYPERPLAN.md` (11名议员,4900+当地办事处规划).

## 安装

```bash
pnpm add -D @futdevpro/dynamo-e2e @playwright/test
```

`@futdevpro/fsm-dynamo` 是同位素 – 带来自己的( 或者没有设置) POJO 源码, 如果您只使用运行时间预设的话 .

## 快开始

```typescript
import { DyFM_TextFieldNew_Settings } from '@futdevpro/fsm-dynamo/ngx-models';
import { DyE2E_FormSuite_Generator } from '@futdevpro/dynamo-e2e/generators';

const settings = new DyFM_FormNew_Settings({
  key: 'login',
  fields: [
    new DyFM_TextFieldNew_Settings({ key: 'email', /* ... */ }),
  ],
});

const specSource = DyE2E_FormSuite_Generator.emit({
  formSettings: settings,
  formRoute: '/login',
  formSelector: 'dynamo-form-new',
});

// → write specSource to `e2e/tests/generated/login-form.spec.ts`
```

## 分出口

-   `@futdevpro/dynamo-e2e/contracts` - POJO类型
-   `@futdevpro/dynamo-e2e/generators` ——节点排放发动机
-   `@futdevpro/dynamo-e2e/runtime` — Playwright 固定装置 + 页面对象 (Wave-4) + 实时通知探测器 (单位:千美元)`DyE2E_NotificationDetector_Util`,见下文)
-   `@futdevpro/dynamo-e2e/presets` 预建套房+ `DyE2E_getPlaywrightConfig` 编号 : `DyE2E_getGlobalSetup` 剧作家-配置工厂(fleet e2e-config SSOT)
-   `@futdevpro/dynamo-e2e/game` ——能力定型游戏接缝,故障文物和双向出行目录验证
-   `@futdevpro/dynamo-e2e/cwv` - 核心网络生命(Wave-3)
-   `@futdevpro/dynamo-e2e/ui-check` – 脚本,每error级UI检测器,返回VERDICTS(一个可以实现的控制) 无所事事,双层滚动,一个不切换的复选框; 越来越多的默认列表, 编码放弃, 一个安全警卫 用于按下控件。 目录 + 证明: [`__documentations/UI-CHECK-DETECTORS.md`](https://npmcn.com/package/%40futdevpro/dynamo-e2e/__documentations/UI-CHECK-DETECTORS.md)

```ts
import { DyE2E_UICheckRunner_Util } from '@futdevpro/dynamo-e2e/ui-check';

const report = await DyE2E_UICheckRunner_Util.run(page, { url: page.url(), accountKind: 'anonymous' });
DyE2E_UICheckRunner_Util.assertClean(report); // throws with every finding's measurement
```

-   `@futdevpro/dynamo-e2e/visual-gate` ——视觉回归门:关闭TEST警告和cookie栏通过 应用程序( e)`DyE2E_BlockingOverlays_Util.prepareStorageState`),然后检查每个密钥页 HU + EN 时为 1440 + 390 (`DyE2E_VisualGate_Util.cases`:当一个覆被仍被覆盖时,红色会显示(几乎) 没有,它比屏幕大,或者它与承诺的基准不同(`toHaveScreenshot`) (中文(简体) ). 外观 (单位:千美元)`DyE2E_VisualGateLook_Util`, BFR-FUTDEVPRO-081):"未找到"的屏幕,一个空的内容区域,绿色/青色/蓝色 而不是中性的灰色, 屏幕上的文本, 原始图标词, 占位符; 带有 `referenceUrl`,则 标出页数的标题和段落大小 `isOnReference`与 `testInfo`,截图 (科技和生产)列入报告.

```ts
import { DyE2E_BlockingOverlays_Util, DyE2E_VisualGate_Util } from '@futdevpro/dynamo-e2e/visual-gate';

for (const gateCase of DyE2E_VisualGate_Util.cases({ pages: [ { name: 'login', path: '/login' } ] })) {
  test(`| visual: ${gateCase.id}`, async ({ browser }) => {
    const { storageState } = await DyE2E_BlockingOverlays_Util.prepareStorageState({
      browser, baseUrl: BASE_URL, locale: gateCase.language.locale,
    });
    const context = await browser.newContext({ storageState, locale: gateCase.language.locale,
      viewport: { width: gateCase.viewport.width, height: gateCase.viewport.height } });
    const page = await context.newPage();

    await page.goto(BASE_URL + gateCase.page.path);
    await DyE2E_VisualGate_Util.assertPage(page, gateCase, {
      contentSelector: 'main', notFoundSelector: 'app-a-block-message-screen',
      referenceUrl: 'https://example.hu', testInfo: test.info(),
    }); // layout + look first, then the production font sizes, then the screenshot comparison
  });
}
```

## Playwright 预设—— CI 超时和失败预算

```ts
import { DyE2E_getPlaywrightConfig, DyE2E_ciTimeout } from '@futdevpro/dynamo-e2e/presets';

export default DyE2E_getPlaywrightConfig({
  defaultBaseUrl: 'https://test.example.hu',
  ciTimeoutFactor: 3,   // CI only: timeout / expectTimeout / actionTimeout / navigationTimeout × 3 (default 1)
  maxFailuresInCi: 1,   // CI only: stop after the first failure (default: unset = unchanged)
});
```

> ⚠️ **电话站 `{ timeout }` 覆盖配置 .** `expect(x).toBeVisible({ timeout: 15_000 })` 忽略预设 `expect.timeout` 联合国 `ciTimeoutFactor`) (中文(简体) ). 缩放这些值为 `DyE2E_ciTimeout(15_000)` 当地不变, × `E2E_CI_TIMEOUT_FACTOR` (或3个) `CI`测量:共用CI跑车比本地机器慢2.3-4.7×, 而一个带有硬码呼叫站点超时的烟雾套房却被红了好几个月,而它的配置"看起来是正确的".

## 实时通知探测器( R)`/runtime`(中文(简体) )

记录每个用户可见的通知——DyNX `dynamo-notification-card` 编号 : `dynamo-notifications-area`垫口巴 (单位:千美元)`red-` 编号 : `yellow-` 编号 : `blue-` 编号 : `green-snackbar`, (中文(简体) ), `[role=alert]` - 此时此刻,它欢迎,所以敬酒 测试结束前自动解职仍在报告内。 它也会快照可见的错误横幅( 有 `rawTechnicalLeak` 文本的旗帜 `Http failure response`, (中文(简体) ), `/api/`, (中文(简体) ), `[object Object]`)并收集页面 `console` 错误/警告和未发现 `pageerror`编号.

```ts
import { DyE2E_NotificationDetector_Util } from '@futdevpro/dynamo-e2e/runtime';

await DyE2E_NotificationDetector_Util.attach(context);   // before the first navigation
// ... the flow ...
const report = await DyE2E_NotificationDetector_Util.collect(page);
expect(report.notifications.filter((n) => n.type === 'error')).toEqual([]);
console.log(DyE2E_NotificationDetector_Util.summarize(report, 'login'));
```

捕捉在一整页的导航中幸存下来(通过Playwright绑定向Node报告). 页面侧码 是普通 Java 脚本,所以没有 `__name` shim是需要根据 `tsx` / 兴起. `collect()` 丢入不包含的上下文 `attach()` ——空报告否则会被理解为"没有通知".

## 登录流程通知扫描( I)`/runtime` +CLI) 组合键

建于探测器上: 打开许多工程的登录页, 以 WRONG 密码提交( 所以是 EROR 分支) 在没有测试账户的情况下进行测量),并打印每个项目的一个矩阵行——通知 ——错误/警告 ——横幅 —— 模式对话框 : 原始技术泄漏 : 控制台出错 。 框架层面的缺陷仅在许多项目出现时才会出现 同样的测量方法.

```bash
dye2e notification-sweep --targets TEST-TARGETS.md --json sweep.json      # or a JSON [{ key, loginUrl | baseUrl }]
dye2e notification-sweep --targets targets.json --only a,b --fail-on-leak # exit 1 on a raw technical leak
```

```ts
const outcomes = await DyE2E_NotificationSweep_Util.sweep(browser, targets, { settleMs: 5000 });
console.log(DyE2E_NotificationSweep_Util.matrix(outcomes.map((o) => o.row)));
```

编码中的警卫,而不是文件中的警卫:探测器地址必须在保留域上(`example.com`, (中文(简体) ), `*.test`, (中文(简体) ), `*.invalid` . ) (中文(简体) ) 或用一个你宣布 `ownDomains` – 在打开一页前投出其它任何内容; 表格只提交于 测试主机( e)`test.*`, (中文(简体) ), `*.test`, (中文(简体) ), `localhost` ...,或者说 `allowSubmitHosts`——其他东西被装入,但没有提交, 和行说. `real: true` 编号 : `--real` 用途 `E2E_PERSISTENT_USER_EMAIL` 编号 : `_PASSWORD`没有他们,排说 它掉回了探测器。 Modal对话框(一个"不是生产系统"的通知,一个错误对话框)被记录—— 文本 + 漏出旗—— 在关闭前; 非模式 cookie 栏被留下.

详细的游戏预设合同 : [`__documentations/game-preset.md`](https://npmcn.com/package/%40futdevpro/dynamo-e2e/__documentations/game-preset.md)。 。 。 .

## 常见问题

### @futdevpro/dynamo-e2e 是什么？

Dynamo\+FDP生态系统的端到端测试引擎——自发生成的形式覆盖测试,取景点审计矩阵,CWV诊断\. 设置 - POJO - 第一\.

### 如何安装 @futdevpro/dynamo-e2e？

在项目目录运行 npm install @futdevpro/dynamo-e2e，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dye2e，可以用 npx dye2e 直接运行。

### @futdevpro/dynamo-e2e 支持 TypeScript 吗？

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

### @futdevpro/dynamo-e2e 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @futdevpro/dynamo-e2e 可以商用吗？

@futdevpro/dynamo-e2e 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @futdevpro/dynamo-e2e 的下载量有多少？

根据 npm 官方下载统计，@futdevpro/dynamo-e2e 在 2026/10/16 – 2026/11/14 这 30 天内被下载 3,044 次，日均约 101 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @futdevpro/dynamo-e2e 还在维护吗？

最新版本 1\.18\.49 发布于 2026/11/15（今天）；至今共发布 57 个版本，其中过去 12 个月发布了 57 个；首次发布于 2026/06/10。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

