Playwright系列:第11章 CI/CD集成(Jenkins/Gitlab)

news2024/12/26 3:33:59

下方查看历史精选文章

重磅发布 - 自动化框架基础指南pdfv1.1
大数据测试过程、策略及挑战

测试框架原理,构建成功的基石

在自动化测试工作之前,你应该知道的10条建议

在自动化测试中,重要的不是工具

CI/CD即持续集成/持续交付,是软件开发的一种自动化流程。借助CI/CD ,我们可以自动运行测试、代码质量检查、构建打包发布等步骤。结合Playwright可以实现自动化UI测试的CI/CD流水线。

CI/CD原理

一个典型的CI/CD流水线包括:

1. 提交代码:开发人员在版本控制系统(如Git)中提交源代码。

2. 代码扫描:自动扫描提交的代码,检查代码质量、安全漏洞等。

3. 编译打包:自动编译代码、运行单元测试和打包构建成Build版本。

4. UI自动化测试:使用Playwright等工具自动运行UI测试,验证Build是否通过测试。

5. 人工审核(可选):人工检查测试报告和相关指标,决定是否发布。

6. 自动部署:将测试通过的Build自动部署至测试环境、预发布环境或生产环境。

7. 监控运维:持续监控发布环境,如出现问题可以快速定位修复。

借助CI/CD流水线,我们可以在每次代码提交后快速运行测试和部署,大大提高软件开发效率和质量。

Playwright CI/CD步骤

1. 每次开发完成后,在Git中提交源代码。

2. CI服务(如Jenkins、GitLab CI)监听到Git提交事件。

3. CI服务自动取出最新源代码,运行Playwright测试等质量检查。

4. 如果检查通过,构建Docker镜像或其他发布包。如果不通过,发送失败报告。

5. 测试通过的镜像发送至CD服务(如GitLab CD),自动部署至开发环境。

6. 人工确认环境运行正常后,promotes镜像至下一级环境。直至生产环境。

7. 持续监控各环境,如出现问题可以快速回滚操作。

8. 每次Git提交后重复第3-7步,完成持续集成与交付流程。

Jenkins Pipeline集成示例‍

pipeline {
    agent any
    stages {
        stage('Build & Test') {
            steps {
                sh 'npm install playwright'
                sh 'npx playwright test'
            }
        }
    }
    post {
        always {
            junit 'junit.xml'
        }
    }
}

该Pipeline在每次代码推送后:

1. 安装playwright依赖。

2. 使用npx playwright test命令运行Playwright测试。

3. always块中的junit命令会收集测试报告,并显示在Jenkins UI上。

4. 如果测试通过,可以继续添加构建和部署阶段。

GitLab CI Pipeline集成示例

test:
    image: node:latest
    cache:
        paths:
            - node_modules/
    before_script:
        - npm install playwright
    script:
        - npx playwright test
    artifacts:
        reports:
            junit: junit.xml

该Pipeline在每次Push事件后:

1. 使用node:latest镜像启动容器。

2. 安装playwright依赖。

3. 使用npx playwright test命令运行Playwright测试。

4. 保存测试报告为junit.xml格式。

5. 如果测试通过,构建Docker镜像并部署至开发环境。

总结

理解CI/CD原理及其Playwright集成步骤,可以帮助我们实现UI自动化测试在开发流程中的深度集成。本章提供的Pipeline示例可以作为一个模板,供大家在项目中定制属于自己的Playwright CI/CD流水线。

2525f30abf09c7da86b5cc4ae7c890de.jpeg

18557b3ddbf58f27a6edcc3b2794b0ff.png

微信搜一搜 或 长按加群

2d9b087208cec52dff32bd5747328c4b.png

开源优测

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

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

相关文章

UDP通信相关

Linux网络编程-UDP单播服务客户端代码实现 1、服务端 只接收一个字符串 #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <sys/types.h> #…

部署问题集合(十四)VMware复制完整的虚拟机

前言&#xff1a; 由于原先的服务器内存和磁盘空间都不太够&#xff0c;所以需要将其中的程序部署到新的服务器上但部署过程总因为各种奇奇怪怪的问题报错&#xff0c;所以干脆想着将整个虚拟机都复制到新的服务器上&#xff0c;这样需要改动的东西最少&#xff0c;仅需要处理…

黄金圈法则/思维

黄金圈法则/思维 美国作家西蒙.斯涅克因&#xff08;国际知名广告、营销专家&#xff09;在TED演讲中提出黄金圈法则而一举扬名。 模型介绍 黄金圈法则的核心思想是&#xff1a;在沟通表达的时候&#xff0c;按照一个特定的结构why->how->what进行表达。它本质也是一种思…

乔哈里窗模型

乔哈里窗由心理学家乔瑟夫和哈里在20世纪50年代提出的&#xff0c;也常被称之为"自我意识的发现/反馈模型”&#xff0c;或“信息交流过程管理工具”。 模型介绍 该模型把人的内心信息分成四个区域&#xff0c;即&#xff1a; 第一个区域&#xff0c;我知道&#xff0c;你…

104. 二叉树的最大深度

104. 二叉树的最大深度 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 104. 二叉树的最大深度 https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 完成情况&#xff1a; 解题思路&#xff1a; //想…

【开发者指南】如何在MyEclipse中使用HTML或JSP设计器?(上)

MyEclipse v2022.1.0正式版下载 一、HTML & JSP 可视化设计器 本文简要介绍了 MyEclipse HTML 和 JSP Web 设计器的概念、功能和基本操作过程。这两个设计器具有相似的功能和相同的操作模型&#xff0c;但本文为专门针对其类型的内容。本文档中的示例是使用 MyEclipse HT…

国货大佬“卡脖子”后王者风范不减?小米卷出光学拍摄“天花板”?| 手机行业社媒心智品牌榜出炉

Social Power 核心解读 1、智能手机“乍暖还寒”&#xff0c;龙头品牌仍稳占消费者心智 比拼屏幕、赶超系统、迭代形态、拓展概念&#xff1f;眼花缭乱过后&#xff0c;产品精益求精&#xff0c;建立稳固的消费者认知&#xff0c;才是“保鲜”关键。在最新发布的数说故事5月…

Text-to-SQL提示工程【Prompt Engineering】

我们刚刚启动了一个开源项目pg-text-query&#xff0c;目标是为文本到 SQL 制作生产就绪的大型语言模型 (LLM) 提示。 我们的目标是 利用 LLM、我们自己对 PostgreSQL 数据库的深入了解以及严格的测试来开发一流的文本到 SQL 的翻译。 推荐&#xff1a;用 NSDT设计器 快速搭建…

T-GCN:用于交通流预测的时序图卷积网络

1.文章信息 本次介绍的文章是2020年发表在IEEE 智能交通系统汇刊上的《T-GCN: A Temporal Graph Convolutional Network for Traffic Prediction》。 2.摘要 为了同时捕获空间和时间依赖性&#xff0c;本文提出了一种新的基于神经网络的交通流预测方法——时间图卷积网络(T-GCN…

Java中的Socket通信和HTTP通信有什麽不同

文章目录 Socket通信HTTP通信两者之间的区别总结 Java中的Socket通信和HTTP通信是两种不同的网络通信方式。Socket通信是一种面向连接的通信协议&#xff0c;而HTTP通信则是基于TCP/IP协议的无连接的应用层协议。在本文中&#xff0c;我将会简要介绍两者的区别&#xff0c;并且…

开放原子训练营(第三季)inBuilder低代码开发实验室初体验

一、活动介绍 开放原子训练营开启inBuilder低代码实验室活动。无论您是计算机行业相关从业者、低代码开发爱好者还是普通用户&#xff0c;都可以基于inBuilder低代码开发平台社区版&#xff08;基于UBML开源项目的一个可以广泛使用的发行版&#xff09;&#xff0c;体验向导式、…

基于FPGA的车牌识别

基于FPGA进行车牌识别 基于FPGA进行车牌识别 1. 文件说明2. 程序移植说明3. 小小的编程感想 本项目的原理讲解视频已经上传到B站“基于FPGA进行车牌识别”。 本项目全部开源&#xff0c;见我本人的Github仓库“License-Plate-Recognition-FPGA”。 1. 文件说明 小技巧&…

chatgpt赋能Python-pyecharts_雷达图

Pyecharts雷达图&#xff1a;最佳数据可视化工具 Pyecharts是一个流行的Python库&#xff0c;用于创建美观、交互式和动态数据可视化。其中一个强大的工具是雷达图&#xff0c;它可以帮助你更好地理解数据趋势和关系。 现在&#xff0c;我们将深入研究Pyecharts雷达图&#xf…

深度学习 - 49.SIM 搜索兴趣网络 GSU 与 Soft Search 简单实现 By Keras

目录 一.引言 二.GSU 结构分析 1.Input Layer 输入层 2.Embedding Layer 嵌入层 3.Pooling Layer 池化层 4.MLP 深层网络 5.Soft Search 软搜索 三.GSU 结构实现 1.Init 初始化 2.Build 构建 3.call 调用 4.GSU Layer 完整代码 四.GSU 模型训练 1.Input Layer …

日语文法PPT截图1-15

B站课程链接 aspect 关注事件的流动 相当于英语中现在进行时 这些是简体&#xff0c;是不能表达对听话人的礼貌的。 格助词一般只能接在名词后面&#xff0c;表达名词在句子中所做的成分。 副助词除了可以接在名词的后…

UDP和TCP详解

1. UDP 1.1 UDP协议段格式 16位UDP长度, 表示整个数据报(UDP首部UDP数据)的最大长度, 即数据报最大大小为2^16byte 64KB如果校验和出错, 就会直接丢弃 1.2 UDP特点 1.2.1 无连接不可靠 无连接 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠 没有确认机制, 没有…

小型双轮差速底盘实现触须避障

1. 功能说明 在R023d机器人车体上安装2个 触须传感器 &#xff0c;实现机器人小车避障功能。 2. 电子硬件 在这个示例中&#xff0c;我们采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09;‍ 扩展板 Bigfish2.1扩展…

netstat 连接通信的信息和状态

netstat t 只显示tcpu只显示udpnnum 数字形式显示地址和端口号l listen 显示监听端口 pprogram 显示进程aall 所有连接和监听r显示路由表 netstat -lnp 显示服务监听端口tcpudpsocket &#xff0c;socket 文件也用来同一台服务器的进程之间通信的。 netsta…

12.2RAC 实例State 为 UNKNOWN

去年10月份接手一个12.2 RAC环境&#xff0c;使用crsctl status res -t查看&#xff0c;发现有个实例状态是UNKNOWN。一直都没有停机维护时间&#xff0c;在测试环境中也没有模拟不出来&#xff0c;原以为删除实例再添加可以解决了。就一直等待维护机会来处理&#xff0c; ASM…

114个ChatGPT全网最热话题

前言 当你使用ChatGPT时&#xff0c;你可能有很多问题需要回答。ChatGPT是一个非常强大的自然语言处理工具&#xff0c;可以用于许多不同的任务&#xff0c;包括聊天机器人、智能客服、文本生成和语言翻译等。 在这篇博客中&#xff0c;我将介绍一些关于如何问ChatGPT的技巧和…