前端测试——端对端测试框架 Playwright 总结

在进行前端测试前,我们需要明确我们需要怎样的前端测试。

前端测试类型总结

前端应用测试分为几种常见类型:

端到端(e2e) :一个辅助机器人,表现得像一个用户,在应用程序周围点击,并验证其功能是否正确。常见的测试框架是 Playwright 。
单元:验证单独的、孤立的部分按预期工作。常见的测试框架是 Jest。
静态:在你写代码的时候捕捉错别字和类型错误。常见的是使用 Typescript 检查

每种前端测试都有其适用场景:

端到端测试:验证业务页面功能的基本可用。
单元测试:验证组件的复杂场景应用。
静态测试:大部分前端代码中都尝试可以引入,提高代码的可维护性。

端到端(e2e)特点

像一个用户去访问页面,不关心接口和前端组件的代码变化,只关注具体功能实现是否正常。

前端页面和组件变化频繁,但是提供的核心业务功能基本不会变化。因此可以使用端到端测试来确保应用的健壮性。

实践

项目初始化

npm init playwright@latest

package.json中添加

"scripts": {"test": "playwright test","report": "playwright show-report"
},
# 进行测试
playwright test# 查看测试报告
playwright show-report

编写测试用例

编写测试用例主要分为两种 ,一种是代码编写,另一种是通过录制点击生成相应的流程代码。我更偏向于先进行录制生成基本代码,再进行代码修改,最后完成整个测试流程

录制代码

使用 Vscode,下载插件 Playwright Test for VSCode

在这里插入图片描述

在这里插入图片描述

点击 Record new 将会弹出一个无痕模式的浏览器,在浏览器里输入需要测试的域名进行点击操作。就会自动生成代码了。

例如:输入网址 playwright.dev/docs/writin…

在这里插入图片描述

生成代码

在这里插入图片描述

编写代码

一般来讲编写测试代码,我们需要确认元素名,这里我推荐在录制情况下点击 Pick locator

在这里插入图片描述

在 Vscode 上方就会出现相应的元素,可以复制过来做我们期望的操作

在这里插入图片描述

最后就是一些期望代码的编写,这些地方只能根据业务的需求去编写代码了。

在这里插入图片描述

容器化

通常我们会把 e2e 测试放在持续集成的框架中,这个时候我们需要容器化去执行。因此我们需要将 playwright 容器化,在项目下新建 Dockfile

# Get the base image of Node version 16
FROM node:16# Get the latest version of Playwright
FROM mcr.microsoft.com/playwright:focal# Set the work directory for the application
WORKDIR /app# Set the environment path to node_modules/.bin
# ENV PATH /app/node_modules/.bin:$PATH# COPY the needed files to the app folder in Docker image
COPY package.json /app/
COPY tests/ /app/tests/
COPY config/ /app/config/# Install the dependencies in Node environment
RUN npm install

在当前目录下根据Dockfile 构建一个新镜像

docker build -t playwright-docker . 

我们可以用以下命令去跑一次性的测试容器

docker run -it playwright-docker:latest npm run test

同时我们经常需要在测试中传递一些参数,在 docker 中使用 -e 可传递参数

docker run -it -e HOST='111' playwright-docker:latest npm run test

在代码中可以使用 process.env.HOST 获取

export const HOST = process.env.HOST ;

总结

前端测试可以从端对端测试整体应用开始,端对端测试可以提高前端的业务页面健壮性。 playwright 是其中一个不错的框架。支持录制代码、生成截屏报告等功能,简单易用。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!   

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

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

相关文章

第十届IEEE电气工程与自动化国际学术论坛(IFEEA 2023)

第十届IEEE电气工程与自动化国际学术论坛(IFEEA 2023) 2023 10th International Forum on Electrical Engineering and Automation IFEEA论坛属一年一度的国际学术盛会。因其影响力及重要性,IFEEA论坛自创建筹办以来,便受到国内…

新版原型和原型链详解,看完整个人都通透

了解原型、原型链前需要先了解构造函数,new操作符 构造函数 构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到…

手机提词器有哪些?简单介绍这一款

手机提词器有哪些?手机提词器在现代社会中越来越受欢迎,原因是它可以帮助人们提高演讲和朗读的效果。使用手机提词器可以让人们更加自信地面对演讲和朗读,不至于出现口误或读错字的情况。此外,手机提词器还可以帮助人们节省时间和…

认识Git的工作区、暂存区与版本库

使用 git init 命令在 gitcode 文件夹下创建如下图所示的Git仓库。现在思考这样一个问题:gitcode目录下创建的README文件可以直接被git管理和追踪吗? 答案是否定的,因为只有 Git 本地仓库中的文件才可以被版本控制。什么?难道当前…

TableConvert-免费在线表格转工具 让表格转换变得更容易

在线表格转工具TableConvert TableConvert 是一个基于web的免费且强大在线表格转换工具,它可以在 Excel、CSV、LaTeX 表格、HTML、JSON 数组、insert SQL、Markdown 表格 和 MediaWiki 表格等之间进行互相转换,也可以通过在线表格编辑器轻松的创建和生成…

【Spring使用三级缓存解决循环依赖的过程】

testService1和testService2相互依赖 当Spring创建testService1对象时,它会先从一级缓存中查找是否存在testService1的实例。如果缓存中不存在testService1实例,它将继续查找二级缓存中是否存在testService1。如果二级缓存中也不存在testService1实例&…

【SpringCloud微服务--Eureka服务注册中心】

SpringCloud微服务全家桶学习笔记【持续更新】 gitee仓库 内容:SpringCloud SpringCloud alibaba 技术栈:Java8mavengit,githubNginxRabbitMQSpringBoot2.0 微服务架构概述 微服务架构是一种架构模式,它提倡将单一应用程序划…

分布式多级缓存

例子(测试环境) 项目结构图 运行反向代理服务器也就是负责反向代理到三个nginx的nginx,该nignx也负责前端页面的跳转。 该nginx的conf为下: 突出位置就是该nginx需要反向代理的其他nginx的IP和端口。 Lua语法 linux安装Lua #安装lua环境 …

Uniapp中使用uQRCode二维码跳转小程序页面

下载插件 uQRCode官网地址 引入插件 文件如下 //--------------------------------------------------------------------- // github https://github.com/Sansnn/uQRCode //---------------------------------------------------------------------let uQRCode = {};(functio…

fabic如何将绘图原点移到画布中心

情况说明: fabic默认绘图原点为left:0,top:0 后端给我的内容是按照x,y返回的,需要将坐标系移到fabic画布的中心位置,找了下网上合适的砖,想一句命令直接设置,结果没有。…

改造el-dropdown ,实现多选效果,且当选项只剩下一个时,不允许取消

实现效果 实现代码 其中virtual-list是使用的插件,使得下拉数据多的时候,不会出现卡顿 正常不使用虚拟列表的时候可以这样写 <el-dropdown-menu slot"dropdown"><el-dropdown-item v-for"i in item.optionList" :key"i.id" :command&…

前端面试合集(三——浏览器)

浏览器的页面渲染 1.浏览器是如何渲染页面的&#xff1f;2. 什么是reflow(重排&#xff09;&#xff1f;3. 什么是repaint(重绘&#xff09;&#xff1f;4.为什么transform效率高&#xff1f; 1.浏览器是如何渲染页面的&#xff1f; 当浏览器的网络线程收到HTML文档之后&#…

AI已经改变游戏规则,新环境下如何用好这一新利器,提升开发团队的生产力

ChatGPT 4在今年3月刚刚发布&#xff0c;但在短短几个月内&#xff0c;它已经开始改变多个行业开发材料和资产的方式。 作为Perforce Software的首席技术官&#xff0c;我密切关注着新兴技术如何重新塑造和定义既定的工作步骤与流程。在我近30年的软件开发经验中&#xff0c;很…

【再识C进阶2(下)】详细介绍指针的进阶——利用冒泡排序算法模拟实现qsort函数,以及一下习题和指针笔试题

前言 &#x1f493;作者简介&#xff1a; 加油&#xff0c;旭杏&#xff0c;目前大二&#xff0c;正在学习C&#xff0c;数据结构等&#x1f440; &#x1f493;作者主页&#xff1a;加油&#xff0c;旭杏的主页&#x1f440; ⏩本文收录在&#xff1a;再识C进阶的专栏&#x1…

探究Nginx应用场景

1 静态资源 Nginx是一个流行的Web服务器和反向代理服务器&#xff0c;它可以用于托管静态资源。下面是一个简单的案例&#xff0c;展示了如何使用Nginx来提供静态资源。 假设你有一个名为example.com的域名&#xff0c;并且你希望使用Nginx来托管位于/var/www/html目录下的静…

CopyOnWriteArrayList源码分析

其中唯一的线程安全 List 实现就是 CopyOnWriteArrayList。 特点 由于读取操作不会对原有数据进行修改&#xff0c;因此&#xff0c;对于每次读取都进行加锁其实是一种资源浪费。相比之下&#xff0c;我们应该允许多个线程同时访问 List 的内部数据&#xff0c;毕竟对于读取操…

MeterSphere压测,出现HttpHostConnectException

现象&#xff1a;MeterSphere更换压力机后&#xff0c;压测出现出现HttpHostConnectException 解决方案&#xff1a; net.ipv4.tcp_tw_reuse默认是0或者2&#xff0c;更改为1 net.ipv4.tcp_tw_reuse&#xff0c;表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连…

时序分解 | MATLAB实现基于SSA奇异谱分析的信号分解分量可视化

时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化 目录 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 奇异谱分解奇异谱分析SSA 可直接替换txt数据运行 Matlab 1.包含3D分解效果图 频谱图等…

Linux UDP编程流程

文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下&#xff1a; socket()用来创建套接字&#xff0c;使用 udp 协议时&#xff0c;选择数据报服务 SOC…

Spring基础(2w字---学习总结版)

目录 一、Spirng概括 1、什么是Spring 2、什么是容器 3、什么是IoC 4、模拟实现IoC 4.1、传统的对象创建开发 5、理解IoC容器 6、DI概括 二、创建Spring项目 1、创建spring项目 2、Bean对象 2.1、创建Bean对象 2.2、存储Bean对象&#xff08;将Bean对象注册到容器…