如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

我一直在为我们的婚礼和一个用于在旅行时翻译食物的食物翻译网站工作一些网站。我发现的有趣的事情之一是如何测试这些网站,并确保一切正常。

什么是测试驱动开发(tdd)?

我发现(或者更确切地说,被告知)的两个工具称为 sirv 和 playwright,可以帮助您运行网站并测试网站的某些部分。一旦完成一些测试并弄清楚如何让事情变得更好,您就可以根据这些测试进行更新和更改。这称为测试驱动开发,其中测试揭示了应用程序中的差距,并且您根据测试进行更改。

通常这些差距以测试失败的形式出现。例如,如果您的网站上有一个表单,但在根据饮食要求输入标点符号时失败,那么您可以更改表单输入以允许使用标点符号。这使您的应用程序更适合您的用户,并且您现在拥有基于您运行的原始测试的新功能。

那么如何为应用程序编写测试呢?

什么是 sirv 和剧作家?

sirv 是一个静态站点服务器。它是用于处理静态资产请求的优化中间件。因此,如果您有静态站点,sirv 效果最佳。

playwright 另一方面是一种针对 web 应用程序的测试方法。将它们一起使用意味着 playwright 是我们将用来编写和运行测试的工具。 sirv 是我们可以看到应用程序运行的界面,并查看哪些测试通过或失败。

编写测试

要测试您的代码,您需要编写测试。在此示例中,我正在编写一个测试来查看网页上是否有某个单词或标题。我使用 github copilot 帮助编写一个测试来执行此操作。 playwright 文档为我提供了编写测试的正确起点。

为了使用 playwright 进行测试写作,您需要导入它。这是编写测试的起点:

从’@playwright/test’导入{测试,期望};

我为我们的婚礼建立了一个网站,我想测试一下页面上是否检测到标题“mish 和 max”。这是我用来测试这个的代码:

test('Contact Mish and Max', async ({ page }) => {    // Navigate to the page    await page.goto('http://localhost:8080/contact.html');    // Assert that the title says "Contact Mish and Max"    await expect(page).toHaveTitle("Contact Mish and Max")});

您将向项目添加一个扩展名为 .spec.test 的新文件。确保保存它,并在每次进行更改时保存它。现在我们已经编写了测试,让我们运行它。

使用 sirv 和 playwright 进行测试

首先,您需要 node 才能使其工作。按照 node.js 文档中的指南安装适用于 windows、maco 或 linux 的 node。

准备好测试代码时,在 vs code 或您选择的编辑器中打开终端。我使用的是 vs code,因此这里的演示使用 vs code。通过从菜单栏中选择“查看 > 终端”或按 ctrl + ` 键盘快捷键来打开终端。

一旦有了终端,您需要运行一些命令:

npm install @playwright/test – 这通过安装测试库来设置 playwright 测试。

npx playwright install – 这会下载 chrome、firefox、safari 等的测试版本。

npx sirv-cli 。 – 这会运行本地版本的 sirv 进行测试。

现在您已经完成了 sirv 和 playwright 设置并准备就绪,我们可以运行测试了。在 vs code(或您选择的编辑器)中打开一个新终端,然后运行以下命令:

npx playwright test –ui 这将运行测试并打开一个新窗口,我们可以在其中运行并查看正在运行的测试。

这是上面运行的所有命令:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

playwright终端测试窗口:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

阅读并修复测试

我们可以在上面的测试中看到它运行失败。当我们研究为什么会发生这种情况时,我们就可以确定如何解决它。通过查看“错误”选项卡,我们可以看到发生了什么错误:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

在这种情况下,它说:

预期字符串:“contact mish 和 max”
收到字符串:“联系方式”

换句话说,它本来希望收到“contact mish and max”,但它却显示“contact”。如果我看一下我的 *.html 文件,我们可以看到我有两个

标签:</p> <p><noscript><img decoding="async" src="https://cdn.chuangxiangniao.com/www/2025/12/172303802384658.png" alt="如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)"></noscript><img decoding="async" class="j-lazy" src="https://www.chuangxiangniao.com/wp-content/themes/justnews/themer/assets/images/lazy.png" data-original="https://cdn.chuangxiangniao.com/www/2025/12/172303802384658.png" alt="如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)"></p> <p>hmtl 仅读取第一个标题标签,即使还有其他标题标签。我们可以通过将第一个标题标签更改为 </p> <p><title>contact mish 和 max 来快速修复此错误。现在我们可以再次运行测试:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

这次,我们看到了✔️并且测试通过了?.

编写测试和编写代码

现在您知道如何使用 sirv 和 playwright 编写和运行测试,您可以继续编写更复杂的测试。例如,在上面的同一个联系表单上,我使用 github copilot 的帮助编写了一个测试,以检查是否可以填写并提交联系表单:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

我可以运行此测试,并逐步完成测试的每个部分,在 ui 中查看网站上进行的更改:

如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)

亲自尝试一下,让我知道您正在编写哪些测试,以及本指南是否有帮助。

以上就是如何测试网站:使用 SIRV 和 Playwright 进行测试驱动开发 (TDD)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1490078.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 12:55:51
下一篇 2025年12月19日 12:56:01

相关推荐

  • 循环:For 循环、While 循环、ForOf 循环、ForIn 循环

    循环的目的是重复一些功能。 一些类型的循环包括: for 循环while 循环for…of 循环for…循环 for循环 to 可以写一个简单的 for 循环如下: for (let i = 1; i <= 10; i++) { console.log(i); // p…

    2025年12月19日
    000
  • 使用 Nodejs 和 MongoDB 本机驱动程序构建快速灵活的 CRUD API

    将 node.js 和 express 与 mongodb 本机驱动程序结合使用:原因和方式 如果您使用 node.js 和 express,您可能遇到过 mongoose,这是一个流行的 mongodb odm(对象数据建模)库。虽然 mongoose 提供了许多有用的功能,但您可能有理由选择直接…

    2025年12月19日
    000
  • 领导并留住开发人员

    很明显,公司是多么努力地留住软件工程师、开发人员、数据科学家和其他技术专业人员。他们试图让工作环境尽可能凉爽,在办公室里放置了爆米花机、各种零食、装有啤酒和软饮料的迷你吧、乒乓球桌、电子游戏、泡芙,甚至愿意付费购买技术、英语,访问 Netflix、Spotify 的课程以及其他一些有吸引力的福利。 …

    2025年12月19日
    000
  • 我如何在启动 ScriptKavi/Hooks 后数周内获得星星

    介绍 当我第一次构想 scriptkavi/hooks 时,我的目标是创建一个能够简化 React 应用程序中的状态管理和副作用的库。作为一名热衷于干净代码和高效开发工作流程的开发人员,我看到需要一种可以简化这些流程的工具。我几乎不知道,在启动 ScriptKavi/Hooks 的短短两周内,该项目…

    2025年12月19日
    000
  • Chrome、Safari 和 Firefox 中的用户代理减少

    简介:什么是用户代理减少和客户端提示? 近年来,隐私问题推动了浏览器处理用户代理字符串的方式发生了重大变化。传统上用于识别浏览器和设备信息的用户代理字符串已被减少以限制共享的信息量,从而保护用户隐私。为了解决减少用户代理的局限性,客户端提示作为一种解决方案应运而生,提供了一种更加受控且尊重隐私的方式…

    2025年12月19日
    000
  • JavaScript 中的地址格式

    地址是我们日常生活的基本组成部分,无论我们是发送邮件、订购包裹还是导航到新位置。但在代码中处理地址时,事情可能会变得棘手。不同的国家/地区具有独特的地址格式,即使在同一个国家/地区内,地址的结构也可能存在差异。在本指南中,我们将探讨地址格式化的基础知识,并了解一些在 javascript 中处理地址…

    2025年12月19日
    000
  • 卢迪亚纳的全栈网站开发课程

    在 Digital Grow Up,我们经过认证的全栈 Web 开发课程经过精心设计,旨在为您提供网页设计和开发方面的坚实基础。从 HTML 和 CSS 到高级 JavaScript 和数据库管理,我们确保您做好充分准备来应对实际项目。不要错过通过卢迪亚纳最佳网站设计课程提升您职业生涯的机会。加入 …

    2025年12月19日
    000
  • 如何使用 NVM 安装 Nodejs LTS

    如果您是 javascript 开发人员或刚刚进入 node.js 开发世界,您可能听说过 node.js 的不同版本以及不同项目之间的兼容性问题。 node version manager (nvm) 对于任何需要轻松管理 node.js 多个版本的人来说都是必备工具。 什么是nvm? node …

    2025年12月19日
    000
  • 使用 Cyclops 和 Kubernetes 扩展 Hideout

    Hideout 是一款独特的应用程序,允许旅行者存储和分享不同地方的精髓,创建一个充满活力的社区。随着平台的发展,确保其保持可扩展性、可靠性和良好性能至关重要。在本教程中,我们将探索如何利用 Cyclops 和 Kubernetes 来扩展 Hideout 并增强其功能。 先决条件 在我们开始之前,…

    2025年12月19日
    000
  • 入门:设置您的 JavaScript 开发环境

    欢迎来到 javascript 开发的世界!设置开发环境是成为成功开发人员的第一步。在本指南中,我们将引导您完成启动和运行环境的基本步骤。 1. 选择您的 ide 集成开发环境 (ide) 是您编写和测试代码的地方。以下是一些流行的选项: visual studio code (vs code):一…

    2025年12月19日
    000
  • 测试 AWS AppSync JavaScript 解析器

    “还有什么比测试 JavaScript 文件更容易的呢?” 这是我上个月开始开发 AppSync JavaScript 解析器时问自己的问题。我需要转换 HTTP 调用的响应并执行一些错误检查。这应该需要进行一些单元测试,我将在半小时内完成。 错了. 是什么让这个特殊的测试如此困难? AppSync…

    2025年12月19日
    000
  • 在 Javascript 中使用此函数将字符串转换为驼峰命名法

    曾经需要将字符串转换为驼峰命名法吗?我在探索开源 supabase 存储库时发现了一个有趣的代码片段。这是他们使用的方法: function featuretocamelcase(feature: feature) { return feature .replace(/:/g, ‘_’) .spli…

    2025年12月19日
    000
  • 探索 React JS 从哪里开始?

    几乎到处都听到React,我也忍不住去探索一下!虽然我不需要 React 作为后端工程师,但我觉得它可能是接触前端世界并帮助我了解全局的好方法(确实如此!)。我开始了解前端开发的观点/挑战,并在设计后端系统时牢记它们。更重要的是,了解事物端到端的工作原理是令人满足的。 但是从哪里开始呢? 如果您有 …

    2025年12月19日
    000
  • 如何 Docker 化 React 应用程序

    如何 docker 化 react 应用程序 对 react 应用程序进行 docker 化可以简化您的开发工作流程,确保不同开发阶段的环境一致,并简化部署流程。本指南将引导您完成 dockerize react 应用程序的步骤,从设置 docker 环境到构建和运行 docker 映像。 先决条件…

    2025年12月19日
    000
  • 使用 useCallback 在 useSWR 中缓存您的 fetcher

    我在gitroom源代码中找到了一种使用usecallback在useswr中缓存fetcher的方法。 上图来自platform-analytics/render.analytics.tsx。让我们尝试理解这段代码。 我们将探索如何结合使用 usecallback 钩子和 useswr 来优化 r…

    2025年12月19日
    000
  • 缓存

    向您介绍Encache!! 轻量级,易于为您的Nodejs服务器使用Async缓存库。 Encache 是作为 NPM 上可用的所有现有内存中易失性缓存库的下一个迭代而开发的,将其提升到一个全新的水平,同时保持简单性,因为整个缓存只需 4 行代码即可设置。 显着特点 目前Encache支持多种驱逐策…

    2025年12月19日
    000
  • C++如何创建一个静态库(.lib/.a)?(详细步骤)

    C++静态库是将编译后的目标文件(.obj/.o)打包成归档文件(Windows为.lib,Linux/macOS为.a),仅提供已编译符号定义;需分离头文件与实现、只编译不链接、再用ar/lib工具打包,最后在链接时指定头文件路径、库路径及库名。 在C++中创建静态库,本质是把编译后的目标文件(.…

    2025年12月19日
    000
  • c++的PGO(Profile-Guided Optimization)是什么 如何让编译器深度优化【性能调优】

    PGO是通过真实运行时数据指导编译优化的技术,分插桩、采集、重编译三阶段,依赖高质量剖面数据,可提升性能5%~20%,关键在真实输入、合理配置与环境一致性。 PGO(Profile-Guided Optimization,基于性能剖析的优化)是 C++ 编译器利用真实运行时行为数据来指导优化决策的技…

    2025年12月19日
    000
  • c++如何使用Clang的静态分析器_c++ Scan-build发现潜在bug【代码质量】

    c++kquote>Clang 的 scan-build 是轻量易用的静态分析工具,可检测空指针解引用、内存泄漏等潜在 bug;无需修改代码或深度集成构建系统,支持 macOS/Xcode 自带及 Linux/WSL 安装,通过包裹编译命令生成 HTML 报告,并提供增强选项与误报处理机制。 …

    2025年12月19日
    000
  • C++如何检测内存泄漏_C++ Valgrind工具与CRT库的使用

    使用Valgrind和CRT调试堆库可有效检测C++内存泄漏:Valgrind在Linux下通过memcheck模块分析程序运行时内存错误,需编译时加-g选项并运行valgrind –leak-check=full命令,输出详细泄漏信息;Windows平台则利用Visual Studio…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信