@12-apps/payments-e2e

中文文档
2.12.0发布于 2026/11/05TypeScriptES Module零依赖构建来源已验证近 30 天下载 2.2万

付款买家的行程,因为Gherkin 东道主运行 自己的应用

中文使用文档
文档目录8 节
  1. 为什么一个港口
  2. 把它连接起来
  3. 有三件事你搞错了就失败了
  4. 什麽 open 必须离开屏幕
  5. PaymentsStore ——一种情景所要求的形状
  6. 为什么这个软件包船编译了 JavaScript
  7. 平台操作之行 (opt-in)
  8. 用相同的词汇书写你自己的规格

@12-apps/payments-e2e

买家去付账,因为Gherkin你跑 反对你 自己的应用程序。 。 。 .

正在挂载 createPaymentFlows 给你退房 这个给你 端到端覆盖: 13个特征的36种情景——PIX,卡片, 数字钱包,主机交接和返回,供应商故障,发行器 倒闭,一个未解决的收费, 一个商店,完全无法收费, 每个提供者屏幕,在退票外保存一张卡,激活一个提供者 包括核查费、死亡的OAuth赠款及其重新连接费和 以主机平台名发声的设置指南. 另有5个设想 以两个特征覆盖平台-操作表面,在它们自己的背后 选入端口( o)下级()——41人进入 都说吧 您执行一个端口并添加三行配置 。 没有复制,所以在此添加一个假想 之后在您的应用程序中运行 在下一个版本的起伏.

为什么一个港口

这些假设是可移植的,因为其中的每一项断言都读取了测试id 付款部分本身使: card-number, (中文(简体) ), list-option-CARD, (中文(简体) ), pix-code, (中文(简体) ), payment-paid 每个消费者都一样.

这是什么 没有 便携就是周围的一切: 你的应用如何通向一个 检查,一个特定形状的商家是如何存在的,在哪里记录 穿过电线的东西 这,只有,是 PaymentsWorld。 。 。 .

把它连接起来

1. 实施港口在自己的模块中 steps 缩写 :

// tests/e2e/steps/payments-world.ts
import { definePaymentsWorld } from '@12-apps/payments-e2e';

definePaymentsWorld({
  // Put the browser on a checkout for a store of this shape.
  open: async (page, store) => { /* route + seed however you do */ },
  raiseHostedPayable: async (page) => { /* …and wait for the interstitial */ },
  returnFromProvider: async (page) => { /* a real return trip */ },
  hostedReturnStatus: (page) => page.getByTestId('…'),
  authorizeOAuth: async (page) => { /* play the provider's consent screen */ },
  fixtures: { headProvider, tailProvider, hostedUrlFragment, payableRef, taxId, platformBrand, oauthProvider },
  wire: {
    paths, chargeKeys, chargeBody, tokensByProvider, providerCharges, providerChargeCount, navigated,
    connectionStatus, connectionEnabled, rotation, heartbeat /* optional */,
  },
});

它必须生活在 steps glob 因为剧作家 bdd 导入每个步骤文件 第一次选举之前 Given 运行——这是在每一阶段的世界记录 工人们.

2. 将你的bdd配置指向包:

import { paymentsFeatures, paymentsFeaturesRoot, paymentsSteps } from '@12-apps/payments-e2e';

const journeys = defineBddConfig({
  features: [paymentsFeatures, 'tests/e2e/features/**/*.feature'],
  featuresRoot: paymentsFeaturesRoot,
  steps: [paymentsSteps, 'tests/e2e/steps/**/*.ts'],
  outputDir: '.features-gen',
});

自己留着吧 steps 列表中的缩略语——这就是你的 definePaymentsWorld 召唤生命.

有三件事你搞错了就失败了

这些不是风格笔记。 每个都产生一个 绿色跑道,零行程, (中文(简体) ), 这比红的还糟.

  • 使用导出的缩写, 不用手写 node_modules/… 路径. {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}嗯 不错 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}嗯 存储为嵌入式,工作空间链接不是您可以猜测的目录。 一个光彩 没有匹配的bddgen 编译它发现的,什么都没有 运行通行证.
  • 设定 featuresRoot。 。 。 . bddgen 镜像每个特性的路径相对它. 左边 未设置, 切片编译为 .features-gen/node_modules/@12-apps/payments-e2e/…, (中文(简体) ), 和 Playwright 默认值 testIgnore 丢弃包含的每个路径 node_modules. 编辑了7个特性,零收集,绿色.
  • 记起你的旅程. 不管什么机制,放个支票 你所期望的情景数.

什麽 open 必须离开屏幕

对于退房形状, open 与购买者返回 单项付款列表 (单位:千美元)payment-list从 paymentList),商店的退市配置已经 已经解决 文件没有 CPF: 组合步骤类型 帕加门托list-buyer-taxId) 当列表要求一个时,选择一行 (单位:千美元)list-option-<METHOD>-radio并按下栏杆(list-pay) (中文(简体) ). 每次买 通过这个列表(FUT-4028),所以它是旅行证明的屏幕.

关于名单的四件事 东道主必须规定:

  • 每家有Pix银行流量的商店 (单位:千美元)pixBank复制代码的原样 生成并降落在复制后的脸。 在电脑上,不再面对 绘制代码,所以检查步骤读取买方的剪贴板. 单位 open,对于每个商店的列表 pixBank页面 clipboard-read 财务报告和审定财务报表 clipboard-write,并清空剪贴板 (单位:千美元)navigator.clipboard.writeText('')在结账之前,所以代码 先前复制的无法通过 .
  • "什么都没有写"需要现场探测器. 在一家不能收费的商店里, 步骤读取 wire.paths 用于一个短窗口, 并且任何文字都失败 。 这个 证明探测器是先录制的 执行 wire.heartbeat一个知道 通过录音机读取您的取出用途, 返回行它 记录。 没有它,探测器必须 持有读取;空探测器是 从来没有接受.
  • 充值卡等五秒钟 在清单的收费栏后面 发送。 给上面的预计超时空间(吊带使用15s).
  • 纸牌是 list-option-CARD。 。 。 . 一张牌的牌被分了 提取资金 list-option-CARD-CREDIT 财务报告和审定财务报表 list-option-CARD-DEBIT 相反, 和卡片步骤之间没有选择.

链条要求的其他字段(手机、名称、电子邮件)是 关于你建的商店的事实,所以 open 充满他们。 一个有CPF档案的买家 得到支付线 而不是CPF 字段, 所以不要带一个。 这个 Dados 台阶和Pix/Cartão 标签 曾经驾驶的台阶都从这里走了 @12-apps/payments-frontend (FUT-4028),他们的分行也在这里.

PaymentsStore ——一种情景所要求的形状

一个场景命名为商家;你决定如何生产出商家。 一把绳子 在页面中宣布一个供应商链;真正的商店前种子是租户。 特点 文件不会以两种方式更改.

pix-only • 妇女 card • 妇女 both-methods • 妇女 hosted • 妇女 awaiting • 妇女 settles • 妇女 declined • 妇女 unresolved • 妇女 unavailable • 妇女 no-provider • 妇女 no-provider-remedy • 妇女 payments-off • 妇女 two-mintable • 妇女 redirect-head • 妇女 google-pay • 妇女 apple-pay • 妇女 apple-pay-unsupported • 妇女 wallet • 妇女 activation • 妇女 screen-on-page • 妇女 screen-handoff • 妇女 screen-undeclared • 妇女 screen-unknown • 妇女 setup-guide • 妇女 reconnect-required

添加成员是主机的突破性变化, 刻意: 需要的情景 没有人能建造的商店 是一个默默无闻的场景.

wallet (为FUT-183/FUT-478所添加)是属于以下类别的成员之一: 没有a 离职数字 : open(page, 'wallet') 必须让买家在货包上着陆 管理卡表面( u)screens.ManageCards 从 createPaymentFlowsa 时 存储其单一提供者可以金库的库-链头宣布适配器 vault 接合,连接以 stub 模式运行,钱包开始为空 . 行程类型 : DECLINE_PAN 拒绝路径,所以没有存储 旗帜决定结果;卡片决定结果。 整个版本的主机升级 成员必须加入成员 open 地图或者他们的世界停止编译—— 这就是重点.

activation (加到FUT-689)是另一个,第一个 管理员-边 形状 : open(page, 'activation') 必须在 OWNER 设置面板上降落 一个提供者宣布 activationCharge,以 stub 模式连接,并 从未充电——销售开关开始锁定. 主持人 renderVerification 槽必须使共享的卡表加上 activation-* 测试标识 src/steps/activation.steps.ts 文档(支付按钮, 结果,退款线, 和原始的启用试探对。 一样 wallet, (中文(简体) ), 输入卡决定结果 : DECLINE_PAN 以名称拒绝 理由,任何其它支付 分钱并获得退款.

为什么这个软件包船编译了 JavaScript

其弟妹出道为生 .ts 通过其 exports 地图,因为 应用程序的 捆绑器 吞噬他们,并折射出一切迹象 临Τ 这些文件由 节点 -  playwright.config.ts 进口 此模块和 bddgen 导入步骤文件 。 节点拒绝剥去类型 从任何下 node_modules (单位:千美元)ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING) (中文(简体) ). Playwright 自己的 TS 转换 也不救他们;它跳过 node_modules 根据设计.

船运来源将制作一个包 核对、公布, 安装,然后进行首次测试.

平台操作之行 (opt-in)

买方在任何挂起出票的应用程序上行走。 一秒钟, 单独 设定覆盖运行 PLATFORM 的应用程序 连接应用程序咨询屏幕和平台 (单位:千美元)ConnectApplicationPanel 编号 : PlatformHomologacao 从 @12-apps/payments-frontend) (中文(简体) ). 大多数退房消费者没有这样的表面, 因此,这些船在自己的港口后面, 并被三分之一地遮住: 内 paymentsFeatures 或者说 paymentsSteps一个从未列出它们的宿主 无所未有.

// tests/e2e/steps/platform-world.ts — inside your super-admin steps glob
import { definePaymentsPlatformWorld } from '@12-apps/payments-e2e';

definePaymentsPlatformWorld({
  openConnectApplication: async (page, shape) => { /* sign in + route */ },
  openHomologacao: async (page, shape) => { /* sign in + produce the shape */ },
});
import {
  paymentsPlatformFeatures,
  paymentsPlatformFeaturesRoot,
  paymentsPlatformSteps,
} from '@12-apps/payments-e2e';

defineBddConfig({
  features: [paymentsPlatformFeatures],
  featuresRoot: paymentsPlatformFeaturesRoot,
  steps: [paymentsPlatformSteps, 'tests/e2e/steps/**/*.ts'],
  outputDir: '.features-gen/platform',
});

相同的三个无声失败是逐字应用的——使用导出光谱,设置 featuresRoot坚持你的假设数。 还有 openHomologacao 必须 制作它的外形,不只是导航: 一个情景记录了一个结果,所以 待会 unrequested 打开必须再次清除它.

用相同的词汇书写你自己的规格

买家的手势也是出口的,所以手写在旅途旁 读取方式相同:

import { fillCard, payCard, reachPayment, VALID_CPF } from '@12-apps/payments-e2e';

版本与发布记录

@12-apps/payments-e2e 共发布 25 个版本,首次发布于 2026/08/08;过去 12 个月发布了 25 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.12.0latest2026/11/051 天前
2.11.12026/10/289 天前
2.11.02026/10/2710 天前
2.10.12026/10/2610 天前
2.10.02026/10/2610 天前
2.9.02026/10/2215 天前

关于 @12-apps/payments-e2e 的常见问题

@12-apps/payments-e2e 是什么?

付款买家的行程,因为Gherkin 东道主运行 自己的应用

如何安装 @12-apps/payments-e2e?

在项目目录运行 npm install @12-apps/payments-e2e,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:playwright-bdd(>=8.0.0)、@playwright/test(>=1.40.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@12-apps/payments-e2e 支持 TypeScript 吗?

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

@12-apps/payments-e2e 支持 ESM 还是 CommonJS?

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

@12-apps/payments-e2e 可以商用吗?

@12-apps/payments-e2e 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@12-apps/payments-e2e 的下载量有多少?

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

@12-apps/payments-e2e 还在维护吗?

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