Playwright端到端测试框架

一个基于Playwright和页面对象模型(POM)的端到端测试框架,支持环境管理、测试数据管理、页面对象封装、实用工具和夹具,适用于自动化测试场景。

  • by ReyadMorshed
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ReyadMorshed/OrangeHRP_Playwright_MCP

使用说明

以下是一个 结构清晰的提示 你可以将(使用Copilot或类似助手的)指令输入到你的Playwright MCP服务器中,以便它生成完全符合你需求的框架:


带有Copilot的Playwright MCP服务器提示符

您是专家级的Playwright端到端测试自动化助手。 生成一个 Playwright端到端测试框架 与;带着;用 页面对象模型(POM) 遵循以下规格。


🎯 一般指南

  1. 环境处理

    • 管理生产和预演环境 env.config.ts。
    • baseUrl 必须从……中挑选 playwright.config.ts,该(系统/设备)会根据环境进行切换。
  2. 测试数据管理

    • 将所有测试数据存储在内部的变量中 testData.ts。
  3. 页面对象

    • 为每个网页创建一个单独的类 pages/ 文件夹。
    • 示例: OrangeHRMLoginPage.ts 用于登录页面。
  4. 公共事业服务/公用设施

    • 创建一个 utils/ 用于可重用上下文和实用程序的文件夹。

    • 里面 utils/,为(某物/某人)创建一个专用的子文件夹 Playwright 动作包装器 (为点击、填写、跳转等操作定制封装器)。

    • 每个包装必须:

      • 使用 try/catch
      • 记录成功/失败
      • 在出现错误时截屏
  5. 设施设备(或具体指“设施”,根据上下文可灵活翻译)

    • 创造 testContext.ts 用于可重复使用的测试夹具。
    • 不要在规范文件中直接实例化页面——请使用固定装置(或“设置”)。
    • 添加 `beforeEach()` 钩子函数 在每个规范文件中,以自动运行登录操作。
  6. 文档

    • 每个函数(包装器、实用工具、页面方法)都必须包含 JS 文档字符串(或注释字符串) 解释:

      • 它的功能/作用
      • 参数
      • 返回类型
  7. 登录方法

    • 正常登录工具

      • 针对明确登录场景(例如,无效登录)的独立实用函数。
      • 接受 username, password,和 url。
    • 可重用登录测试夹具

      • 储存于 fixtures/ 文件夹。
      • 用途 auth.json (储存于 data/)用于会话存储。每次测试运行时都要执行全新登录(浏览器独立且可靠)
      • Fixture 返回一个已登录的页面对象(例如。, getLoggedInPage 或类似情况)。
  8. 请勿使用

    • 硬编码 .waitForTimeout() 或人为延迟。
    • 相反,进行配置 在 playwright.config.ts 中设置全局超时。

📝 测试场景1(登录测试)

特性/特点: 登录OrangeHRM 步骤:

  1. 导航至登录页面→ https://opensource-demo.orangehrmlive.com/web/index.php/auth/login
  2. 输入用户名 → Admin
  3. 输入密码 → admin123
  4. 点击登录按钮
  5. 通过检查文本是否存在来验证登录成功 "Dashboard"

🔄 必需的修改

  1. 在 OrangeHRMLoginPage.ts:

    • 不要将URL硬编码。
    • 使用 baseUrl 来自 env.config.ts,通过……控制 playwright.config.ts。
  2. 在 orangehrm-login.spec.ts:

    • 不要直接创建页面。
    • 使用来自(某处/某供应商的)夹具 testContext.ts。
  3. 实现两种登录方式:

    • 正常登录工具 用于显式登录测试。
    • 可重用的登录测试夹具 用于基于会话的登录。

⚙️ 可交付成果

  • env.config.ts (环境配置)

  • playwright.config.ts (带环境+全局超时)

  • testData.ts (凭据,静态值)

  • pages/OrangeHRMLoginPage.ts (登录页面的POM文件)

  • utils/

    • actionWrappers/ 自定义包装函数(例如,点击、填写、跳转),具备日志记录、错误处理和截图功能
    • loginUtils.ts → 正常登录功能
  • fixtures/testContext.ts → 可重用的测试夹具,包括登录夹具

  • data/auth.json → 用于记录登录状态的会话存储

  • tests/orangehrm-login.spec.ts → 实际登录测试


👉 输出应为 TypeScript Playwright 代码 遵循上述结构。 👉 确保 模块性、可读性和可维护性。 👉 避免走捷径——所有内容都应清晰地分为工具、固定装置、页面和配置。