Playwright 安装配置文件详解

Playwright 安装&配置文件详解

环境准备

  • Node.js 14.0+(推荐 LTS 版本)
  • npm(推荐使用最新版)
  • 支持 Windows、macOS、Linux

一步到位的官方推荐安装方式

1. 进入你的项目目录

# Windows
cd 路径\\你的项目
# macOS/Linux
cd /path/to/your/project

2. 初始化 Playwright 项目

npm init playwright@latest

操作提示:
在出现选项时,请用键盘的上下方向键选择你想要的内容,然后按**回车(Enter)**键确认。

执行后会进入交互式引导,每个选项说明如下

选项1:Do you want to use TypeScript or JavaScript?
  • TypeScript:推荐(如果你的项目文件是 .ts 结尾,选这个)
  • JavaScript:如果你只用 .js 文件可以选这个
选项2:Where to put your end-to-end tests?
  • 输入测试用例目录名,建议用 testse2e(如果已有同名目录会复用)
选项3:Add a GitHub Actions workflow? (y/N)
  • y:生成 GitHub Actions 工作流文件,方便 CI 自动化
  • n:不生成(本地开发可选 n)
选项4:Install Playwright browsers? (Y/n)
  • Y:自动下载 Chromium、Firefox、Webkit 三大主流浏览器(推荐)
  • n:跳过,后续可手动 npx playwright install

3. 运行初始化命令后的效果

Playwright 会自动:

  • 初始化 npm 项目(如无 package.json 会自动创建)
  • 安装 Playwright 及相关依赖
  • 下载主流浏览器
  • 生成测试配置和示例代码

生成的目录结构示例

playwright/
├── playwright.config.ts           # Playwright 测试配置文件
├── package.json                   # 项目依赖与脚本
├── package-lock.json              # 依赖锁定
├── node_modules/                  # 依赖包
├── tests/                         # 主测试目录
│   └── example.spec.ts            # 官方示例测试
├── tests-examples/                # 额外官方示例
│   └── demo-todo-app.spec.ts      # TodoMVC 端到端测试
├── .gitignore                     # 忽略文件
└── README.md                      # 项目说明

详细文件与目录说明

  • playwright.config.ts

    • Playwright 的主配置文件。

    • 作用:配置测试目录、并发、重试、报告、支持的浏览器(Chromium/Firefox/Webkit)等。

    • 详细配置说明:

      import { defineConfig, devices } from '@playwright/test';export default defineConfig({// 测试目录配置testDir: './tests',                    // 测试文件目录testMatch: '**/*.spec.ts',             // 测试文件匹配模式timeout: 30000,                        // 单个测试超时时间(毫秒)// 全局设置globalTimeout: 600000,                 // 所有测试总超时时间expect: {timeout: 5000,                       // expect 断言超时时间toHaveScreenshot: { maxDiffPixels: 100 }, // 截图对比配置},// 并发配置workers: process.env.CI ? 1 : undefined, // CI 环境单进程,本地多进程fullyParallel: true,                   // 是否完全并行运行测试// 重试配置retries: process.env.CI ? 2 : 0,       // CI 环境失败重试 2 次// 报告配置reporter: [['html'],                            // HTML 报告['list']                             // 命令行报告],// 浏览器配置use: {// 基础配置baseURL: 'http://localhost:3000',    // 基础 URLtrace: 'on-first-retry',             // 失败时记录追踪screenshot: 'only-on-failure',       // 失败时截图// 浏览器配置viewport: { width: 1280, height: 720 }, // 视窗大小ignoreHTTPSErrors: true,             // 忽略 HTTPS 错误video: 'on-first-retry',             // 失败时录制视频// 上下文配置locale: 'zh-CN',                     // 浏览器语言timezoneId: 'Asia/Shanghai',         // 时区geolocation: { longitude: 116.3, latitude: 39.9 }, // 地理位置permissions: ['geolocation'],        // 权限设置},// 多浏览器配置projects: [{name: 'chromium',use: { ...devices['Desktop Chrome'] },},{name: 'firefox',use: { ...devices['Desktop Firefox'] },},{name: 'webkit',use: { ...devices['Desktop Safari'] },},// 移动设备配置{name: 'Mobile Chrome',use: { ...devices['Pixel 5'] },},{name: 'Mobile Safari',use: { ...devices['iPhone 12'] },},],// 输出配置outputDir: 'test-results/',            // 测试结果输出目录// 其他配置preserveOutput: 'always',              // 保留输出文件forbidOnly: !!process.env.CI,          // CI 环境禁止 .onlyquiet: false,                          // 是否静默输出
      });
      
    • 配置项详解:

      1. 测试目录配置

        • testDir: 指定测试文件所在目录
        • testMatch: 指定测试文件匹配模式
        • timeout: 单个测试用例超时时间
      2. 全局设置

        • globalTimeout: 所有测试的总超时时间
        • expect: 断言相关配置
          • timeout: 断言等待超时时间
          • toHaveScreenshot: 截图对比配置
      3. 并发配置

        • workers: 并行运行的测试进程数
        • fullyParallel: 是否允许完全并行运行
      4. 重试配置

        • retries: 测试失败时的重试次数
        • 建议在 CI 环境设置重试,本地开发可不设置
      5. 报告配置

        • reporter: 测试报告格式
        • 支持多种报告格式:html、list、dot、json 等
        • 可同时使用多个报告器
      6. 浏览器配置

        • use: 全局浏览器配置
          • baseURL: 基础 URL,所有测试都会基于此 URL
          • trace: 追踪记录配置
          • screenshot: 截图配置
          • viewport: 视窗大小
          • video: 视频录制配置
          • locale: 浏览器语言
          • timezoneId: 时区设置
          • geolocation: 地理位置模拟
          • permissions: 浏览器权限设置
      7. 多浏览器配置

        • projects: 定义多个测试项目
        • 每个项目可以配置不同的浏览器和设备
        • 支持桌面端和移动端设备
        • 可以使用预定义的设备配置
      8. 输出配置

        • outputDir: 测试结果输出目录
        • preserveOutput: 输出文件保留策略
      9. 其他配置

        • forbidOnly: 是否禁止使用 .only
        • quiet: 是否静默输出
        • use: 全局使用配置
    • 最佳实践建议:

      1. 根据项目需求选择合适的配置项
      2. CI 环境和本地开发环境使用不同配置
      3. 合理设置超时时间和重试次数
      4. 使用多浏览器配置确保跨浏览器兼容性
      5. 配置适当的报告格式便于问题分析
      6. 合理使用追踪、截图和视频录制功能
  • package.json

    • Node.js 项目的依赖和脚本清单。
    • 作用:记录项目依赖(如 @playwright/test)、脚本命令、项目描述等。
    • 主要内容:
      • devDependencies:Playwright 及类型依赖。
      • scripts:可自定义测试命令。
      • descriptionauthorlicense 等元信息。
  • package-lock.json

    • 依赖锁定文件。
    • 作用:确保团队成员安装的依赖版本一致,避免"我的能跑你的不能跑"。
  • node_modules/

    • 依赖包目录。
    • 作用:存放所有通过 npm 安装的依赖。
    • 注意:此目录通常不需要提交到 git。
  • tests/

    • 主测试目录。
    • 作用:存放你的 E2E 测试用例。
    • 默认包含 example.spec.ts,内容演示 Playwright 的基本用法。
    • 你可以在此目录下添加、组织自己的测试文件。
  • tests/example.spec.ts

    • 官方自动生成的示例测试。
    • 作用:帮助你快速了解 Playwright 的基本断言、页面操作等。
    • 内容示例:
      • 访问官网,断言标题
      • 点击"Get started"链接,断言页面内容
  • tests-examples/

    • 额外官方示例目录。
    • 作用:提供更复杂的端到端测试案例,便于参考和学习。
  • tests-examples/demo-todo-app.spec.ts

    • TodoMVC 应用的完整端到端测试。
    • 作用:演示 Playwright 如何测试真实的前端应用,包括增删查改、状态断言等。
    • 内容较长,适合进阶学习。

4. 运行你的第一个测试

npx playwright test
  • 会自动运行 tests/ 目录下的所有测试用例
  • 首次运行会自动打开浏览器下载和测试报告

5. 常见问题与建议

  • TypeScript/JavaScript 选错了怎么办?
    • 重新运行 npm init playwright@latest,或手动调整文件后缀和配置
  • 已有测试目录/配置怎么办?
    • 初始化时如遇同名文件,Playwright 会提示是否覆盖,谨慎选择
  • 浏览器没装全?
    • 可随时运行 npx playwright install 补装
  • 如何自定义配置?
    • 修改 playwright.config.ts

6. 参考:自动生成的示例测试内容

tests/example.spec.ts 示例:

import { test, expect } from '@playwright/test';test('has title', async ({ page }) => {await page.goto('https://playwright.dev/');await expect(page).toHaveTitle(/Playwright/);
});test('get started link', async ({ page }) => {await page.goto('https://playwright.dev/');await page.getByRole('link', { name: 'Get started' }).click();await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible();
});

7. 小结

  • Playwright 官方初始化命令一步到位,自动生成配置、示例和依赖
  • 每个交互选项都可根据实际项目需求选择
  • 生成的目录和文件结构清晰,便于团队协作和持续集成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国古代史4

东汉 公元25年,刘秀建立东汉,定都洛阳,史称光武中兴 白马寺:汉明帝时期建立,是佛教传入中国后兴建的第一座官办寺院,有中国佛教的“祖庭”和“释源”之称,距今1900多年历史 班超—西域都护—投…

springboot + mysql8降低版本到 mysql5.7

springboot mysql8降低版本到 mysql5.7 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency>spring:datasource:driverClassName: com.mysql.jdbc.D…

4.4java常用类

在 Java 中&#xff0c;System 和 Runtime 类都是 java.lang 包下非常重要的类&#xff0c;它们提供了与系统交互以及管理 Java 虚拟机&#xff08;JVM&#xff09;运行时环境的功能。 System 类 System 类包含了一些有用的类字段和方法&#xff0c;它不能被实例化&#xff0…

【嵌入式笔记】Modbus TCP

1.概述 定义&#xff1a;Modbus TCP 是 Modbus 协议的变体&#xff0c;基于 TCP/IP 协议栈&#xff0c;用于通过以太网实现工业设备间的通信。 背景&#xff1a;由施耐德电气&#xff08;原 Modicon 公司&#xff09;在 1999 年发布&#xff0c;将传统的 Modbus RTU/ASCII 适配…

《解锁React Native与Flutter:社交应用启动速度优化秘籍》

React Native和Flutter作为当下热门的跨平台开发框架&#xff0c;在优化应用启动性能方面各有千秋。今天&#xff0c;我们就深入剖析它们独特的策略与方法。 React Native应用的初始包大小对启动速度影响显著。在打包阶段&#xff0c;通过精准分析依赖&#xff0c;去除未使用的…

R语言学习--Day02--实战经验反馈

最近在做需要用R语言做数据清洗的项目&#xff0c;在网上看再多的技巧与语法&#xff0c;都不如在项目中实战学习的快&#xff0c;下面是我通过实战得来的经验。 判断Rstudio是否卡死 很多时候&#xff0c;我们在运行R语言代码时&#xff0c;即使只是运行框选的几行代码&#…

How Sam‘s Club nudge customers into buying more

Here’s how Sam’s Club (or similar warehouse memberships) nudge customers into buying more: It’s a classic psychological strategy rooted in sunk cost fallacy and loss aversion. 1. Prepaid Membership Creates a “Sunk Cost” Once you’ve paid the annual …

OpenHarmony系统HDF驱动开发介绍(补充)

一、HDF驱动简介 HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架&#xff0c;为驱动开发者提供驱动框架能力&#xff0c;包括驱动加载、驱动服务管理、驱动消息机制和配置管理。 简单来说&#xff1a;HDF框架的驱动和Linux的驱动比较相似都是由配置文件和驱动…

自然语言处理 (NLP) 入门:NLTK 与 SpaCy 的初体验

自然语言处理入门&#xff1a;NLTK 与 SpaCy 的初体验 在当今数字化飞速发展的浪潮中&#xff0c;自然语言处理&#xff08;NLP&#xff09;已经成为了极具热度的技术领域。自然语言处理的核心目标是让计算机能够理解、分析并生成人类语言&#xff0c;其应用场景极为广泛&…

LLaVA:开源多模态大语言模型深度解析

一、基本介绍 1.1 项目背景与定位 LLaVA(Large Language and Vision Assistant)是由Haotian Liu等人开发的开源多模态大语言模型,旨在实现GPT-4级别的视觉-语言交互能力。该项目通过视觉指令微调技术,将预训练的视觉编码器与语言模型深度融合,在多个多模态基准测试中达到…

如何利用大模型对文章进行分段,提高向量搜索的准确性?

利用大模型对文章进行分段以提高向量搜索准确性,需结合文本语义理解、分块策略优化以及向量表示技术。以下是系统性的解决方案: 一、分块策略的核心原则 语义完整性优先 分块需确保每个文本单元在语义上独立且完整。研究表明,当分块内容保持单一主题时,向量嵌入的语义表征能…

Java高频面试之并发编程-17

volatile 和 synchronized 的区别 在 Java 并发编程中&#xff0c;volatile 和 synchronized 是两种常用的同步机制&#xff0c;但它们的适用场景和底层原理有显著差异。以下是两者的详细对比&#xff1a; 1. 核心功能对比 特性volatilesynchronized原子性不保证复合操作的原…

技术债务积累,如何进行有效管理

识别和评估技术债务、明确技术债务的优先级、制定系统的还债计划、持续监控与预防技术债务产生是有效管理技术债务积累的重要策略。其中尤其要注重识别和评估技术债务&#xff0c;只有准确识别技术债务的种类和严重程度&#xff0c;才能制定出高效且有针对性的解决方案&#xf…

安装windows版本的nacos

一、下载nacos安装包 浏览器搜索nacos&#xff0c;进入nacos官网 https://nacos.io/docs/latest/overview/ 选择下载windows版本的nacos 二、解压缩 三、进入bin目录&#xff0c;cmd命令行窗口 四、启动nacos 查看日志 五、打开可视化页面查看 以上&#xff0c;就是安装wind…

小结:Android系统架构

https://developer.android.com/topic/architecture?hlzh-cn Android系统的架构&#xff0c;分为四个主要层次&#xff1a;应用程序层、应用框架层、库和运行时层以及Linux内核层。&#xff1a; 1. 应用程序层&#xff08;Applications&#xff09; 功能&#xff1a;这一层包…

鸿蒙5.0项目开发——鸿蒙天气项目的实现(欢迎页)

【高心星出品】 文章目录 欢迎页面效果数据字典创建数据库表格Splash页面页面功能欢迎页代码亮点 项目按照从数据库连接层–视图层–业务逻辑层这种三层架构开发&#xff0c;所以先设计了数据库表格的结构&#xff0c;在EntryAbility中创建表格。 欢迎页面效果 数据字典 sear…

使用谱聚类将相似度矩阵分为2类

使用谱聚类将相似度矩阵分为2类的步骤如下&#xff1a; 构建相似度矩阵&#xff1a;提供的1717矩阵已满足对称性且对角线为1。 计算度矩阵&#xff1a;对每一行求和得到各节点的度&#xff0c;形成对角矩阵。 计算归一化拉普拉斯矩阵&#xff1a;采用对称归一化形式 LsymI−D…

MySQL 8.0 OCP 英文题库解析(三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题16~25 试题16:…

【SQL】如何在 SQL 中统计结构化字符串的特征频率

在数据分析场景中&#xff0c;我们经常会遇到需要解析结构化字符串并统计特征出现次数的需求。本文将以常用数据库为例&#xff0c;探讨如何高效处理类似 [特征A][特征B][特征C] 格式的字符串数据&#xff0c;并实现特征频率统计。以下是完整的实现思路和解决方案。 一、问题场…

Docker Compose 的安装方法

以下是 Docker Compose 的安装方法整理&#xff0c;综合了多篇指南的推荐步骤和注意事项&#xff1a; 一、安装前准备 确保已安装 Docker Docker Compose 依赖 Docker 引擎运行&#xff0c;需先安装 Docker。若未安装&#xff0c;可通过以下命令一键安装&#xff08;国内服…