惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
罗磊的独立博客
腾讯CDC
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
U
Unit 42
I
InfoQ
D
DataBreaches.Net
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
美团技术团队
IT之家
IT之家
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
GbyAI
GbyAI
S
SegmentFault 最新的问题

Eson Wong's Blog

终端、SSH、launchd、tmux:zsh 启动文件到底读了哪些 我为什么开发 AI 英语听力生成器:Im-Listening 如何使用 LlamaIndex 构建一个 RAG 检索系统 批评 Milvus 入门教程 怎么在网页中实现自动调整视频的清晰度 什么是检索增强生成(Retrieval-Augmented Generation)? Phonics 自然拼读常见规则 - 辅音字母的发音规律 ESP8266EX 自动下载电路 浅聊 esp8266 墨水屏 Todo List 制作教程 2023 年我买过的最好用的商品 转变自我的密码:《Atomic Habits》读后感 Phonics 自然拼读常见规则 - 音节和元音字母的发音规律 怎么用 Github Actions 部署 Next.js 项目到服务器 使用 v4l 采集摄像头 怎么解决 Prettier 和 ESLint 在 VSCode 里的冲突? 《微习惯》 - 读书笔记 在 iPad 使用 VS Code 写代码 在 Macbook 上运行 ChatGLM-6B
Playwright E2E 测试框架入门教程
本文作者: Eson Wong · 2025-10-26 · via Eson Wong's Blog

Playwright

www.einktodo.com 是我为 E-ink Todo List 设备开发的网站,为了减少在它上面的测试工作的时间,我使用了 Playwright 来进行 E2E 测试。

Playwright 是一个由微软开发的 E2E 测试框架,它可以模拟用户在浏览器中的操作,比如点击、输入、滚动等等。Playwright 支持多种浏览器,包括 Chrome、Firefox、Safari 等等,而且它还支持多种编程语言,比如 Javascript、Python、C# 等等。

在这篇文章中,我将向你展示如何使用 Playwright 来进行 E2E 测试。我们将会使用 Typescript 来编写测试代码。

在项目根目录下,运行以下命令来在项目中初始化 Playwright:

1
2
3
4
5

npm init playwright@latest


yarn create playwright

初始化完成后,Playwright 会在项目中生成一个 playwright.config.ts 文件,和一个测试示例文件 example.spec.ts

Playwright 配置

生成的 playwright.config.ts 文件用 testDir 字段来指定测试文件的目录,projects 字段来指定义 Playwright 中的 Project 概念。

1
2
3
4
5
6
7
8
9
10
11
12
13
import { PlaywrightTestConfig } from "@playwright/test";

export default defineConfig({

testDir: "tests",




projects: [

],
});

第一个测试

初始化完成后,Playwright 会在测试文件目录中生成一个测试示例的测试文件 example.spec.ts,我们可以在这个文件中编写我们的第一个测试。

下面以 www.einktodo.com 的首页标题为例,来编写一个测试。

  1. @playwright/test中导入testexpect函数
  2. 使用test函数来定义一个测试
  3. 使用page.goto方法来打开网站
  4. 使用expecttoHaveTitle方法来判断页面的标题是否为E-ink Todo List
1
2
3
4
5
6
import { test, expect } from "@playwright/test";

test("E-ink Todo List 首页标题", async ({ page }) => {
await page.goto("https://www.einktodo.com");
await expect(page).toHaveTitle("E-ink Todo List");
});

运行测试

默认模式

运行所有的 Projects

1
2
3
4
5

npx playwright test


yarn playwright test

运行一个 Project

1
2
3
4
5

npx playwright test --project=projectName


yarn playwright test --project=projectName

UI 模式

1
2
3
4
5

npx playwright test --ui


yarn playwright test --ui

Playwright 中的 Project

Playwright 中的 Project 概念用于组织多个可以并行运行的测试文件、Project 运行的依赖和运行结束的后置任务,以及 Project 的环境配置。

mindmap
  root((Project))

Projects 们的依赖关系

保存和使用登陆状态

参考