SuperAPI AI 工具集

playwright-bdd-configuration

测试与质量

查看项目

更新于 10-16 02:06

技能介绍

用途

Playwright BDD 让开发者能够使用 Gherkin 语法编写 BDD 测试,并通过 Playwright Test 运行。本技能聚焦于该工具的配置、项目搭建以及与 Playwright 测试框架的集成。配置通过 playwright.config.ts 文件中的 defineBddConfig() 函数完成,该函数会从 .feature 文件生成 Playwright 测试文件。

安装

使用 npm 安装 playwright-bdd:

npm install -D playwright-bdd

或指定 Playwright 版本:

npm install -D playwright-bdd @playwright/test

主要能力

基础配置

最小化配置示例:

// playwright.config.ts
import { defineConfig } from '@playwright/test';
import { defineBddConfig } from 'playwright-bdd';

const testDir = defineBddConfig({
  features: 'features/**/*.feature',
  steps: 'steps/**/*.ts',
});

export default defineConfig({
  testDir,
});

defineBddConfig() 返回生成测试目录的路径,默认位于项目根目录的 .features-gen。可通过 outputDir 自定义输出目录。

配置选项

  • Feature 文件:支持单个模式、多个模式,以及 include/exclude 排除模式。
  • Step 定义:支持单个或多个模式,可混合 JavaScript 与 TypeScript。
  • 导入测试实例:使用自定义 fixtures 时,通过 importTestFrom 指定自定义测试实例路径。fixtures 文件需导出 test 实例,并使用 createBdd(test) 生成 Given、When、Then。
  • 多 Feature 集合:可为不同测试项目配置不同的 feature 集合与输出目录。
  • 语言配置:通过 language 选项配置 Gherkin 语言,支持 en(默认)、de、fr、es、ru 等遵循 Gherkin 规范的语言。
  • 引号风格:通过 quotes 选项配置生成文件中的引号风格,可选 'single'、'double'、'backtick'。
  • 详细模式:通过 verbose: true 在生成期间启用详细输出。

与 Playwright 配置集成

可将 defineBddConfig() 返回的 testDir 与 Playwright 的 fullyParallel、retries、workers、reporter、use、projects、webServer 等配置组合使用。也支持按环境(如 CI)区分配置,例如设置不同的超时、重试次数与 worker 数量。

使用方式

运行测试

# 从 feature 生成测试文件
npx bddgen

# 运行 Playwright 测试
npx playwright test

# 或合并执行
npx bddgen && npx playwright test

监听模式

# 监听 feature 与 step 文件
npx bddgen --watch

# 在另一个终端运行测试
npx playwright test --watch

导出 Step 定义

npx bddgen export

推荐目录结构

project/
├── playwright.config.ts
├── features/
│   ├── auth/
│   │   ├── login.feature
│   │   └── logout.feature
│   └── products/
│       └── catalog.feature
├── steps/
│   ├── auth/
│   │   ├── login.steps.ts
│   │   └── logout.steps.ts
│   ├── products/
│   │   └── catalog.steps.ts
│   └── fixtures.ts
└── .features-gen/          # 生成目录(应加入 gitignore)
    └── features/
        ├── auth/
        │   ├── login.feature.spec.js
        │   └── logout.feature.spec.js
        └── products/
            └── catalog.feature.spec.js

在 .gitignore 中添加:

# Playwright BDD generated files
.features-gen/

适用场景

  • 搭建新的 Playwright BDD 项目
  • 配置多个 feature 集合
  • 将自定义 fixtures 与 BDD 集成
  • 排查配置问题
  • 优化测试生成
  • 搭建 monorepo 测试
  • 配置语言/i18n 支持
  • 组件测试与 API 测试配置

常见配置模式

  • Monorepo 设置:在 packages/e2e/playwright.config.ts 中配置,使用环境变量指定 baseURL。
  • 组件测试:指定组件相关的 feature 与 step 路径,并配置 ctPort。
  • API 测试:指定 API 相关的 feature 与 step 路径,并配置 baseURL。

故障排查

  • 找不到 Step:检查 step 模式是否匹配目录结构、step 定义文本是否有拼写错误、step 文件是否包含在 steps 配置中,可运行 npx bddgen export 查看所有已注册的 step。
  • 导入错误:检查 importTestFrom 路径是否正确、文件是否导出 test 与 step 函数、TypeScript 配置是否包含 step 文件。
  • 生成错误:验证 feature 文件语法、检查缺失的 step 定义、使用 verbose: true 查看详情、验证 step 文件中的所有导入。

最佳实践

  • 按功能组织 feature 与 step
  • 使用 fixtures 共享 setup 逻辑
  • 保持 step 简单,每个 step 定义一个动作
  • 复用 step,编写跨 feature 通用的 step
  • 可选地提交生成文件以便调试
  • 在 CI 中先运行 bddgen 再运行测试
  • 使用 TypeScript 编写 step 定义以获得类型安全
  • 导出 step 供团队参考
  • 让 Playwright 处理并行执行
  • 将生成目录加入 gitignore

限制

本技能资料未提供关于收费、价格、平台支持范围或具体效果保证的信息。