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

HoRain云--Playwright 多项目配置(Projects)

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

什么是 Project

基础多浏览器配置

实例

devices 设备预设

实例

自定义项目配置

实例

项目依赖(dependencies)

实例

通过 testProject 共享配置

实例


什么是 Project

在 Playwright 中,一个 Project 代表一组在特定浏览器和设备配置下运行的测试。

通过配置多个 Project,你可以用同一套测试代码在 Chromium、Firefox、WebKit 以及移动端设备上运行。


基础多浏览器配置

实例

// 文件路径:playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
],
});

运行特定浏览器的测试:

# 仅在 Chromium 上运行 npx playwright test --project=chromium # 在 Chromium 和 Firefox 上运行 npx playwright test --project=chromium --project=firefox

devices 设备预设

Playwright 内置了大量设备预设(来自@playwright/testdevices),模拟真实设备的视口、User-Agent、像素比等。

实例

import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
projects: [
// 桌面端
{
name: 'desktop-chrome',
use: { ...devices['Desktop Chrome'] },
},

// 移动端
{
name: 'mobile-iphone',
use: { ...devices['iPhone 15'] },
},
{
name: 'mobile-pixel',
use: { ...devices['Pixel 7'] },
},

// 平板
{
name: 'tablet-ipad',
use: { ...devices['iPad Pro'] },
},
],
});

常用的设备预设:

预设名称设备类型视口大小
Desktop Chrome桌面1280×720
Desktop Firefox桌面1280×720
Desktop Safari桌面1280×720
iPhone 15手机393×852
Pixel 7手机412×915
iPad Pro平板1024×1366

自定义项目配置

你可以在 Project 的use中覆盖全局配置:

实例

export default defineConfig({
use: {
baseURL: 'http://localhost:3000',
locale: 'zh-CN',
timezone: 'Asia/Shanghai',
},

projects: [
{
name: 'chromium-desktop',
use: {
...devices['Desktop Chrome'],
// 继承全局的 locale 和 timezone
},
},
{
name: 'chromium-mobile',
use: {
...devices['Pixel 7'],
// 覆盖为英文环境
locale: 'en-US',
timezone: 'America/New_York',
},
},
// 测试深色模式
{
name: 'chromium-dark',
use: {
...devices['Desktop Chrome'],
colorScheme: 'dark',
},
},
// 测试浅色模式
{
name: 'chromium-light',
use: {
...devices['Desktop Chrome'],
colorScheme: 'light',
},
},
],
});


项目依赖(dependencies)

一个项目可以依赖另一个项目,确保依赖的项目先运行。

最常见的用法是 Setup 项目(认证)先运行,其他项目依赖它。

实例

export default defineConfig({
projects: [
// Setup 项目 —— 生成认证状态
{
name: 'setup',
testMatch: /auth\.setup\.ts/,
},

// 测试项目依赖 setup,确保认证状态先生成
{
name: 'chromium',
use: {
...devices['Desktop Chrome'],
storageState: 'playwright/.auth/user.json',
},
dependencies: ['setup'],
},
{
name: 'firefox',
use: {
...devices['Desktop Firefox'],
storageState: 'playwright/.auth/user.json',
},
dependencies: ['setup'],
},
],
});

setup项目只会运行一次,所有依赖它的项目会等待它完成后才启动。


通过 testProject 共享配置

如果要让多个项目共享配置而不重复,可以提取一个基础项目:

实例

// 文件路径:playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

const desktopProject = {
use: {
...devices['Desktop Chrome'],
viewport: { width: 1920, height: 1080 },
locale: 'zh-CN',
},
} as const;

export default defineConfig({
projects: [
{
name: 'chromium',
...desktopProject, // 继承 desktopProject 的配置
use: {
...desktopProject.use, // 先继承
browserName: 'chromium', // 再覆盖
},
},
{
name: 'firefox',
use: {
...devices['Desktop Firefox'],
// 覆盖 viewport 和 locale
viewport: { width: 1920, height: 1080 },
locale: 'zh-CN',
},
},
],
});

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

http://www.jsqmd.com/news/941736/

相关文章:

  • 为什么抖音去水印解析失败?2026实测横评:3大原因+2款王牌工具解决 - 科技热点发布
  • DNA测序数据纠错:共识算法与k-mer频谱分析实战指南
  • LinkSwift:九大网盘直链下载助手,免费解锁高速下载新体验
  • 婺源县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 华为/长江计算 国产信创服务器:基于 BMC 远程 KVM 安装操作系统
  • 开了 16 倍过采样,数据还是跳?别怪 ADC,看看你的信号有没有“呼吸”
  • 泉山区26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 新沂市26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • Kali Linux里crunch的隐藏玩法:不止生成密码,还能做数据脱敏和压力测试
  • 避坑指南:在Ubuntu 24.04上搞定Madagascar地震数据处理软件(附22.04差异点)
  • 西湖区26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 2026大提花面料定制厂家面料工艺实测牛津布面料现货厂家原料与成品综合性能测评分析 - 栗子测评
  • 论文精读:过去十年计算机视觉与深度学习在作物生长管理中的核心技术方法
  • 词达人自动化助手:3分钟完成30分钟词汇任务的智能解决方案
  • 告别云平台迷茫:用STM32CUBEMX和广和通L610,5分钟搞定腾讯云IoT设备属性上报
  • 面试必知的Java网络编程知识,让你脱颖而出
  • 耗时3小时的部署,这个Hermes部署包5分钟搞定
  • 别再为gradle下载慢发愁了!手把手教你用腾讯镜像源搞定UniApp安卓原生插件开发环境
  • 如东县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • PUBG压枪难题终极解决方案:罗技鼠标宏开源项目深度解析
  • 峡江县26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 【花雕学编程】Arduino BLDC 之智能导盲犬式跟随机器人
  • 浦口区26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • 从Pwn到实战:用IDA Pro和Ghidra手把手分析CTF二进制逆向题(附解题脚本)
  • 【西游劫:第三篇】 API 路由设计详解
  • 如皋市26年最新专业手表包包回收权威店铺推荐,TOP排行榜 - 莘州文化
  • Python开发中的常见陷阱与最佳实践
  • 微信聊天记录永久保存指南:揭秘开源备份工具的核心技术
  • 【算法篇】初识双指针
  • 【省去繁琐配置】Hermes 本地 AI 助手部署,Windows 快捷安装包实操避坑指南(含安装包)