当前位置: 首页 > news >正文

Cucumber + Playwright 教程

工作流程:


目录

1. 项目设置与依赖安装

2. 项目结构

3. 编写 Gherkin 功能文件 (search.feature)

4. 实现步骤定义 (search.steps.js)

5. 配置 Cucumber (cucumber.config.js)

6. 运行测试

主要优势

总结


1. 项目设置与依赖安装

首先,你需要初始化一个 Node.js 项目并安装必要的依赖。

# 1. 创建项目目录并初始化
mkdir cucumber-playwright-project
cd cucumber-playwright-project
npm init -y# 2. 安装 Cucumber 相关依赖 (BDD 框架)
npm install @cucumber/cucumber @cucumber/pretty-formater --save-dev# 3. 安装 Playwright (浏览器自动化)
npm install @playwright/test --save-dev# 4. (可选) 安装断言库,让断言更易读
npm install chai --save-dev

​关键依赖说明:​

  • @cucumber/cucumber: Cucumber 的核心库,用于解析 Gherkin 文件并运行测试。

  • @playwright/test: Playwright 库,用于控制浏览器(如 Chrome、Firefox、Safari)进行自动化操作。

  • chai: 一个流行的断言库,提供更自然、更丰富的断言语法(如 expect(result).to.equal(8))。


2. 项目结构

推荐结构如下:

cucumber-playwright-project/
├── features/
│   ├── step-definitions/    # 步骤定义目录
│   │   └── search.steps.js
│   ├── support/             # 支持文件目录
│   │   └── world.js         # 全局上下文和钩子
│   └── search.feature        # Gherkin 功能文件
├── cucumber.config.js       # Cucumber 配置文件
└── package.json

3. 编写 Gherkin 功能文件 (search.feature)

这是 BDD 的起点,用自然语言描述测试场景。

# features/search.feature
Feature: Google SearchAs a userI want to search on GoogleSo that I can find information I needScenario: Successful search returns resultsGiven I am on the Google search pageWhen I search for "Playwright"Then I should see search results related to "Playwright"

4. 实现步骤定义 (search.steps.js)

步骤定义是连接 Gherkin 语句和 Playwright 代码的“胶水”。

// features/step-definitions/search.steps.js
const { Given, When, Then } = require('@cucumber/cucumber');
const { expect } = require('chai');
const { chromium } = require('playwright');// 使用 World 来共享浏览器和页面上下文
Given('I am on the Google search page', async function () {this.browser = await chromium.launch({ headless: false }); // 设置为 true 则无头运行this.context = await this.browser.newContext();this.page = await this.context.newPage();await this.page.goto('https://www.google.com');
});When('I search for {string}', async function (searchQuery) {// 定位搜索框并输入内容await this.page.fill('textarea[name="q"]', searchQuery);// 模拟按下回车键await this.page.keyboard.press('Enter');// 等待搜索结果页面加载await this.page.waitForNavigation();
});Then('I should see search results related to {string}', async function (expectedKeyword) {// 获取页面标题const pageTitle = await this.page.title();// 使用 Chai 进行断言:检查标题是否包含关键词expect(pageTitle).to.include(expectedKeyword);// 或者,检查搜索结果容器的存在const resultsContainer = await this.page.$('#search');expect(resultsContainer).to.exist;// 测试结束后关闭浏览器await this.browser.close();
});

5. 配置 Cucumber (cucumber.config.js)

创建一个配置文件来简化运行命令。

// cucumber.config.js
module.exports = {default: {require: ['features/step-definitions/*.js'], // 步骤定义路径format: ['progress-bar',          // 控制台进度条'html:cucumber-report.html', // HTML 报告'@cucumber/pretty-formatter' // 更漂亮的输出],publishQuiet: true,        // 减少冗余日志}
}

6. 运行测试

配置 package.json中的脚本,以便轻松运行测试。

{"scripts": {"test": "cucumber-js --config cucumber.config.js"}
}

在终端中运行:

npm test

主要优势

  1. ​清晰的沟通​​:非技术人员可以轻松理解 .feature文件中的测试场景。

  2. ​强大的自动化​​:Playwright 提供快速、可靠的浏览器自动化,支持现代 Web 功能。

  3. ​活文档​​:.feature文件本身就是最新、可执行的文档。

  4. ​高可维护性​​:将“做什么”(Gherkin)和“怎么做”(Playwright 代码)分离,使测试代码更易于维护。

总结

​Cucumber + Playwright​​ 的组合非常适合需要​​团队协作、需求频繁变更、对软件质量要求高​​的项目。它确保了所有人对需求的理解一致,并通过自动化测试保证了最终产品的质量。

http://www.dtcms.com/a/461947.html

相关文章:

  • 门户网站开发设计方案山东聊城建设学校网站
  • LLMs之Ling:Ling-1T的简介、安装和使用方法、案例应用之详细攻略
  • DOpusInstall-13.2.exe 安装方法,简单几步完成
  • 免费的api接口网站wordpress中文主题框架
  • 芯科科技第三代无线SoC现已全面供货
  • 1.c++入门(中)
  • 路桥养护:多交通场景下的差异化实践
  • 算法-快速排序
  • TCP粘包
  • 企业网站源码 asp哪家网站制作 优帮云
  • 整数转字符串 itoa_s () 安全指南
  • OSPF GR(Graceful Restart,平滑重启)
  • 高并发场景下的Reddit访问优化:Cliproxy智能调度系统实测
  • 厦门市城市建设档案馆网站南昌做网站排名
  • 3-键盘录入
  • 网站建设的调研报告做网站常用的插件
  • Java程序导致CPU打满排查方法
  • Android车机开发-TTRSXXXAIDL技术总结
  • dedecms制作网站教程平面设计广告设计
  • 龙岗区住房和建设局在线网站作图工具
  • 导数、偏导数与梯度:机器学习数学基础
  • 六安市裕安区建设局网站天津企朋做网站的公司
  • 企业做淘宝客网站有哪些四平做网站佳业
  • 网站建立与推广手机商城网站
  • OpenAI Whisper 语音识别模型:技术与应用全面分析
  • C++17 新特性:std::optional —— 优雅处理函数返回值
  • 你好,因用户投诉并经平台审核,发现账号已发布的服务所选类目与小程序运营内容不符合,亲测有效
  • 怎样设计一个系统?
  • 橙色守护者
  • MySQL笔记---事务