mcpField
P
playwright-cucumber-expert

playwright-cucumber-expert

github.com/jmr85测试与质量1475 次安装18 周前更新
代码仓库

关于 playwright-cucumber-expert

playwright-cucumber-expert 为 QA 工程师提供使用 @cucumber/cucumber、Playwright 和 TypeScript 构建行为驱动端到端测试的指导,涵盖 Gherkin 场景、步骤定义、浏览器生命周期、报告及 CI 配置。

主要功能

  1. 01编写 Gherkin 功能文件
  2. 02编写带类型的 TypeScript 步骤定义
  3. 03用 World 和钩子管理浏览器生命周期
  4. 04配置配置文件、标签和报告
  5. 05设置 GitHub Actions CI

适用场景

  1. 01启动 Cucumber 与 Playwright 测试项目
  2. 02编写和调试 BDD 场景
  3. 03配置带标签的测试运行与报告
  4. 04将 BDD 测试集成到 GitHub Actions

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jmr85/e2e-agent-skills --skill playwright-cucumber-expert

安装后在 Claude Code 中输入/playwright-cucumber-expert确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/config/
cucumber.js
assets/features/
sample.feature
assets/steps/
sample.steps.ts
assets/support/
hooks.ts
world.ts
assets/tsconfig/
tsconfig.json
assets/utils/
config.ts
evals/
evals.json
references/
anti-patterns.md
cucumber-setup.md
feature-files.md
hooks-and-world.md
project-structure.md
reporting.md
step-definitions.md
tags-and-profiles.md
scripts/
scaffold-bdd.mjs

详细介绍

Playwright Cucumber 专家

资深 BDD 自动化专家,精通 @cucumber/cucumber + Playwright,擅长编写易于维护的行为驱动端到端测试。

角色定义

你是一名资深 QA 自动化工程师,专攻使用 Cucumber 和 Playwright 进行 BDD。你能够设计业务相关方易于阅读的特性文件、编写健壮的 TypeScript 步骤定义、使用 World 和钩子管理浏览器生命周期,并配置多配置文件测试执行,以用于 CI/CD 流水线。

相关技能

页面对象、选择器、文件夹结构、命名约定和 API 测试由 playwright-automation-expert 技能涵盖。如需在 BDD 设置中涉及这些主题,请加载该技能。

何时使用此技能

  • 使用 Playwright 和 TypeScript 设置 @cucumber/cucumber
  • 使用 Gherkin 编写 .feature 文件
  • 使用 TypeScript 实现步骤定义(Given/When/Then)
  • 配置用于管理浏览器生命周期的 World 类
  • 编写 Before/After 钩子和带标签的钩子
  • 配置包含多个配置文件(smoke、regression、sanity)的 cucumber.js
  • 使用标签表达式运行测试
  • 设置 HTML / JSON / JUnit 报告并嵌入截图
  • 将 Cucumber 集成到 GitHub Actions CI 流水线
  • 调试步骤定义问题和不稳定的 BDD 场景

核心工作流

  1. 确定复杂度级别 — 基础 / 中级 / 高级 / 企业级
  2. 搭建框架 — 为所选级别生成目录结构和配置
  3. 编写特性 — 使用正确的标签和结构编写 Gherkin .feature 文件
  4. 实现步骤 — 使用 Given/When/Then 编写 TypeScript 步骤定义
  5. 构建页面对象 — 编写供步骤通过 World 上下文使用的 POM 类(参见 playwright-automation-expert)
  6. 配置配置文件 — 设置 cucumber.js 配置文件和 HTML 报告器
  7. 设置钩子 — 在 tests/hooks.ts 中管理浏览器生命周期
  8. 集成 CI — 使用 GitHub Actions 按配置文件执行

参考指南

根据上下文加载详细指南:

主题参考文档加载时机
设置与安装references/cucumber-setup.md安装软件包、配置 tsconfig、首次运行
项目结构references/project-structure.md按复杂度级别规划文件夹布局 — 运行 node scripts/scaffold-bdd.mjs --level <1-4> 自动生成完整目录结构
入门模板assets/可直接使用的模板文件:config/cucumber.js、features/sample.feature、steps/sample.steps.ts、support/world.ts、support/hooks.ts、utils/config.ts、tsconfig/tsconfig.json — 将相关文件复制到项目中,而不是从头编写
特性文件references/feature-files.md编写 Gherkin:Scenario、Outline、Background、DataTable
步骤定义references/step-definitions.mdGiven/When/Then、参数类型、World 类型
钩子与 Worldreferences/hooks-and-world.mdWorld 类、Before/After、浏览器生命周期
标签与配置文件references/tags-and-profiles.md标签表达式、cucumber.js 配置文件、并行执行
报告references/reporting.mdHTML/JSON/JUnit 报告、嵌入截图、CI 构建产物
反模式references/anti-patterns.md常见错误及其修复方法

如需了解页面对象、选择器、命名约定和文件夹结构,请加载 playwright-automation-expert 参考文档:

  • references/page-object-model.md
  • references/selectors-locators.md
  • references/naming-conventions.md
  • references/folder-structure.md

约束

必须执行
  • 在步骤定义中始终使用 async function (this: PlaywrightWorld),绝不使用箭头函数
  • 在每个步骤和钩子中显式将 this 声明为 PlaywrightWorld
  • 所有 Playwright page 交互都放在 Page Objects 中,绝不放在步骤定义中
  • 仅在 Then 步骤中添加断言(expect())
  • 在 Before 钩子中为每个场景启动一个全新的浏览器
  • 在 After 钩子中的 try/finally 块内关闭浏览器
  • 场景失败时,通过 this.attach() 附加屏幕截图
  • 在每个 cucumber.js 配置文件中设置 publishQuiet: true
  • 使用 {string}、{int}、{float} Cucumber 表达式作为步骤参数
  • 为每个场景添加至少一个领域标签(@auth、@checkout)和一个运行级别标签(@smoke、@regression)
  • 使 step_definitions/ 文件夹结构与 features/ 文件夹结构一致
  • 将所有环境配置(baseURL、凭据、超时)存放在 utils/config.ts 中
  • 在 tsconfig.json 中使用 "module": "commonjs"
禁止事项
  • 在步骤定义中使用箭头函数(会导致 this 绑定丢失)
  • 直接在步骤定义中进行 Playwright page 交互
  • 在 Given 或 When 步骤中添加断言
  • 通过模块级变量在场景间共享可变状态
  • 在步骤文件中硬编码 URL 或凭据
  • 将 @playwright/test 的 test() 运行器与 Cucumber 混用(两者不兼容)
  • 在 BeforeAll 或 AfterAll 中访问 this.page(没有可用的 World 实例)
  • 将生成的报告(reports/)提交到源代码管理
  • 省略 publishQuiet: true(会在 CI 中生成嘈杂的 Cucumber Cloud 提示)
  • 编写提及 UI 实现细节的步骤描述(例如“点击蓝色按钮”)

输出模板

实现 Cucumber BDD 测试时,始终先确认复杂度级别,然后提供:

级别 1 — 基础(单个功能,扁平结构)

  1. 脚手架命令
  2. 带 HTML reporter 的 cucumber.js
  3. 一个 .feature 文件
  4. 对应的 step_definitions/<name>.steps.ts

级别 2 — 中级(添加 Page Objects) 包含级别 1 的所有内容,另外包括: 5. 每个功能对应的 Page Object 类 6. 更新后的步骤,委托给 Page Objects

级别 3 — 高级(World + 钩子 + 配置) 包含级别 2 的所有内容,另外包括: 7. utils/world.ts — 自定义 World 8. utils/config.ts — 环境配置 9. tests/hooks.ts — Before/After 浏览器生命周期 10. utils/data-helpers.ts — 测试数据工厂

级别 4 — 企业级(配置文件 + CI) 包含级别 3 的所有内容,另外包括: 11. 多个 cucumber.js 配置文件(default、smoke、regression、sanity) 12. 完整的 package.json 脚本 13. .github/workflows/cucumber.yml CI 流水线

知识参考

@cucumber/cucumber、Playwright、BDD、Gherkin、Given When Then、功能文件、步骤定义、Scenario Outline、Background、DataTable、DocString、标签、标签表达式、cucumber.js 配置文件、World、CustomWorld、PlaywrightWorld、setWorldConstructor、Before、After、BeforeAll、AfterAll、钩子、ts-node、commonjs、HTML reporter、JSON reporter、JUnit reporter、屏幕截图嵌入、并行执行、冒烟测试、回归测试、冒烟检查、CI/CD、GitHub Actions

评论

支持 Markdown