[Gauge]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇)
其他两篇相关文章为
Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)
Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)
在本地构建一个测试项目
- 一个简单的gauge项目大概长这样:
spec规范:是由用自然语言编写的测试用例组成的测试组,每个测试用例根据测试场景分解为一些操作步骤。
# 某平台## 管理员登录* 打开主页 "https://example.com" * 输入用户名 "admin_username" * 输入密码 "admin_password" * 点击登录按钮 * 结果:显示面板(包含"管理面板")
js脚本:这里使用taiko库进行浏览器操作,对应了spec规范里的每个操作步骤
"use strict"; const path = require('path'); const {openBrowser,write,closeBrowser,goto,press,screenshot,above,click,checkBox,listItem,toLeftOf,link,text,into,textBox,evaluate } = require('taiko'); const assert = require("assert"); const headless = process.env.headless_chrome.toLowerCase() === 'true';step("打开主页 <url>",async(url)=>{await goto(url); })step("输入用户名 <username>",async(username)=>{await write(username,into(textBox("Username"))); }) step("输入密码 <password>",async(password)=>{await write(password,into(textBox("Password"))); }) step("点击登录按钮",async()=>{await press('Enter'); }) step("结果:显示面板(包含<adminText>)",async(adminText)=>{assert.ok(await text(adminText).exists(1000,5000)); })
运行测试:
gauge run specs/
,这样会运行specs/
文件夹下的所有spec规范的所有场景。
制作Gauge的国内Docker镜像
Taiko+Gauge,官方DockerFile
Taiko In Docker
Update Gauge/Taiko/node docker image
Failed to launch chrome! -While executing taiko in a docker container
docker apt-get 换源问题
使用docker run命令将参数传递给Dockerfile中的CMD(Use docker run command to pass arguments to CMD in Dockerfile)
shell中脚本参数传递的两种方式
如何向Docker容器传递参数
How to get the numeric exit status of an exited docker container?
taiko官方提供了DockerFile,但遗憾的是,其中一些需要科学的操作没办法做到,于是我费尽周折改造了一番,自己制作了一个适用于国内的镜像。
步骤1:手动配置一个可用的gauge镜像node-chromium
docker pull node
:拉取官方node镜像。docker run -dit node
:运行node容器docker exec -it 容器id bash
:进入node容器,接下来执行容器内操作下载vim工具及locales:
apt-get update apt-get -y install vim apt-get -y install locales
创建gauge目录,在其中预下载gauge的插件(html报告、js支持、chromium浏览器)和环境。这里就使用了淘宝npm镜像源加快速度
mkdir /gauge cd /gauge npm install -g cnpm --registry=https://registry.npm.taobao.org cnpm install -g @getgauge/cli gauge install js gauge install screenshot gauge install html-report gauge config check_updates false
vim /etc/locale.gen
:修改语言配置,使得容器支持中文显示### 取消这两行注释 :157 en_US.UTF-8 UTF-8 :473 zh_CN.UTF-8 UTF-8 ###
locale-gen
:生成语言exit
:退出容器
docker commit 容器id your_registry.com/node-chromium:latest
:提交容器改动,并打上tagdocker login --username 账户 --password 密码 your_registry.com
:登录到远程镜像仓库docker push your_registry.com/node-chromium:latest
:上传到远程镜像仓库
步骤2:准备一个entrypoint.sh文件,将其放于测试项目的根目录,用来容器启动后自动运行gauge项目和输出测试结果。
#!/bin/bash npm test result=$? echo "result=" $resultif [ $result == "0" ];thenexit 0 elseexit 1 fi
- 首先执行测试,将命令的return值(不是输出)赋值给
result
- 最后根据测试结果(0或1),使容器在退出时带有不同的状态码
- 首先执行测试,将命令的return值(不是输出)赋值给
步骤3:结合测试项目与taiko进一步加工成完整的DockerFile,现在将其放于测试项目的根目录,如果进行构建,就能将测试项目放入容器并可供运行。
FROM your_registry.com/node-chromium:latestENV PATH /usr/local/lib:$PATH# 替换apt-get镜像源 RUN sed -i "s@http://deb.debian.org@http://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list \&& sed -i "s@http://security.debian.org@http://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list \&& rm -Rf /var/lib/apt/lists/* \&& rm -Rf /etc/apt/source.list.d/* \&& apt-get clean# 使用中文语言和字体,并下载headless Chrome所需的依赖 RUN apt-get update \&& apt-get -y install locales \&& apt-get -y install ttf-wqy-microhei ttf-wqy-zenhei \&& fc-cache -fv && apt-get install -y git-all gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 \libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget \&& rm -rf /var/lib/apt/lists/* ENV LANG C.UTF-8 ENV LC_ALL C.UTF-8# Add the Taiko browser arguments ENV TAIKO_BROWSER_ARGS=--no-sandbox,--start-maximized,--disable-dev-shm-usage ENV headless_chrome=true ENV TAIKO_SKIP_DOCUMENTATION=true# Uncomment the lines below to use chrome bundled with this image #ENV TAIKO_SKIP_CHROMIUM_DOWNLOAD=true #ENV TAIKO_BROWSER_PATH=/usr/bin/google-chrome# Set working directory WORKDIR /gauge# Copy the local working folder COPY . .# 已经有gauge和cnpm环境,这里是进行其他包的补充下载 RUN cnpm install \&& gauge installENTRYPOINT ["./entrypoint.sh"]
在项目的
package.json
中可以配置npm test
所执行的脚本{"name": "gauge-taiko-template","description": "Starter template for writing JavaScript tests for Gauge","scripts": {"test": "gauge run specs/"}, }
使用GitLab流水线构建镜像并推送至镜像仓库
因为上面最终的镜像(使用DockerFile构建的)会拷贝项目进去,所以每次项目发生更新时,我们也要重新构建一次镜像,这里就可以利用GitLab流水线来完成自动构建和推送操作。
stages:- buildbuild: # 编译阶段stage: buildscript:- chmod +x ./entrypoint.sh- docker build -t your_registry.com/gauge-taiko:master .- docker push your_registry.com/gauge-taiko:master- docker images
- 可以用变量保护仓库的URL明文
MINE MIND系列将在我的GitHub上实时更新,同时精选部分汇总于CSDN专栏
GitHub仓库:https://github.com/IcyLeaves/MINE-MIND
CSDN专栏:https://blog.csdn.net/qq_37398834/category_10975647.html
[Gauge]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇)相关推荐
- [Mattermost]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)
其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇) ...
- [Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)
其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost ...
- jenkins流水线(jenkinsfile)详解,保姆式教程
jenkins流水线(jenkinsfile)详解 在学习本篇文章的时候,可以去看看jenkins官网的文档,jenkins官网支持中文,观看十分便捷 此教程使用的是gitee+docker+jenk ...
- navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线
本文转载自:Jenkins 中文社区 这也是一种自定义流水线 DSL 的方法 几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续 ...
- Jenkins 流水线 获取git 分支列表_Jenkins扩展共享库进阶
读完需 16 分钟 速读需 7 分钟 前言 前面我们介绍了Jenkins多分支流水线.Jenkins流水线即代码之扩展共享库,其实都是"流水线即代码"的体现.我们将Jenkinsf ...
- 使用jenkins流水线完成自动部署服务到K8s
说明 通过本文章,您可以轻松入门cicd过程.本地测试环境为springboot微服务项目.用户提交代码到gitlab,触发jenkins拉取gitllab上的代码,然后完成编译构建成jar包,同步完 ...
- Jenkins 流水线说明
.Jenkins 流水线 .CI/CD .流水线 1.承前 作为运维,逃不掉的工作之一就是Jenkins .哪怕开发同学自己会搭也一定会等你来完成,不然像抢了某人的责任田一样. 2. Jenkins ...
- APP测试UI、功能方法
UI测试 UI测试即用户界面测试,具体测试方法如下: 1.首先确保UI界面设计符合国家的.行业的.企业的标准规范: 2.关注窗口.菜单.对话框以及按钮控件的布局.风格是否满足用户要求: 3.不同界面中 ...
- jenkins pipeline_DevOps编程操练:用Jenkins流水线建立代码质量预警机制
解决痛点 代码上线故障多 不知如何用docker搭建Jenkins操练环境 不知如何开始为Java代码编写自动化单元测试 不知如何将单元测试运行在Jenkins流水线上 不知如何将繁琐的手工Jenki ...
最新文章
- Java项目命名规范
- Catel(翻译)-为什么选择Catel
- Mendix 披露低代码方法论,解读真实技术趋势
- iis6中FTP配置的技巧和细节
- Putty常用属性设置
- html获取qq头像代码,jQuery在线获取QQ名称和头像
- Android之如何判断当前是阿拉伯布局的方法
- 使用CLI扩展和重新平衡Couchbase集群
- android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
- 十行代码实现十亿图片检索,我们把它开源了
- Android_组件的显示与隐藏
- 【PMP认证考试之个人总结】第 3 章 项目整合管理
- linux ping raw socket -(signal),***之旅――原始套接字(Raw Socket)透析(3)--用Raw Socket实现Ping...
- 笔记-51,k60,stm32
- 回归中的相关系数以及R平方值和Python应用举例
- html js css 简明教程,HTML+CSS+JavaScript网页制作简明教程
- python re模块_python 正则表达式 (重点) re模块
- CLion输出中文乱码解决方案
- Ubuntu16.04安装搜狗拼音
- 面向智能网联汽车边缘网络的分布式端-边协同算法