@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';