其他两篇相关文章为

  • 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:提交容器改动,并打上tag

    • docker 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),使容器在退出时带有不同的状态码
  • 步骤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篇)相关推荐

  1. [Mattermost]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost篇)

    其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇) ...

  2. [Jenkins]Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Jenkins篇)

    其他两篇相关文章为 Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Gauge篇) Gauge测试UI+Jenkins流水线+Mattermost消息订阅(Mattermost ...

  3. jenkins流水线(jenkinsfile)详解,保姆式教程

    jenkins流水线(jenkinsfile)详解 在学习本篇文章的时候,可以去看看jenkins官网的文档,jenkins官网支持中文,观看十分便捷 此教程使用的是gitee+docker+jenk ...

  4. navicat运行db文件_使用 YAML 文件配置 Jenkins 流水线

    本文转载自:Jenkins 中文社区 这也是一种自定义流水线 DSL 的方法 几年前,我们的 CTO 写了一篇关于 使用 Jenkins 和 Docker 为 Ruby On Rails 应用提供持续 ...

  5. Jenkins 流水线 获取git 分支列表_Jenkins扩展共享库进阶

    读完需 16 分钟 速读需 7 分钟 前言 前面我们介绍了Jenkins多分支流水线.Jenkins流水线即代码之扩展共享库,其实都是"流水线即代码"的体现.我们将Jenkinsf ...

  6. 使用jenkins流水线完成自动部署服务到K8s

    说明 通过本文章,您可以轻松入门cicd过程.本地测试环境为springboot微服务项目.用户提交代码到gitlab,触发jenkins拉取gitllab上的代码,然后完成编译构建成jar包,同步完 ...

  7. Jenkins 流水线说明

    .Jenkins 流水线 .CI/CD .流水线 1.承前 作为运维,逃不掉的工作之一就是Jenkins .哪怕开发同学自己会搭也一定会等你来完成,不然像抢了某人的责任田一样. 2. Jenkins ...

  8. APP测试UI、功能方法

    UI测试 UI测试即用户界面测试,具体测试方法如下: 1.首先确保UI界面设计符合国家的.行业的.企业的标准规范: 2.关注窗口.菜单.对话框以及按钮控件的布局.风格是否满足用户要求: 3.不同界面中 ...

  9. jenkins pipeline_DevOps编程操练:用Jenkins流水线建立代码质量预警机制

    解决痛点 代码上线故障多 不知如何用docker搭建Jenkins操练环境 不知如何开始为Java代码编写自动化单元测试 不知如何将单元测试运行在Jenkins流水线上 不知如何将繁琐的手工Jenki ...

最新文章

  1. Java项目命名规范
  2. Catel(翻译)-为什么选择Catel
  3. Mendix 披露低代码方法论,解读真实技术趋势
  4. iis6中FTP配置的技巧和细节
  5. Putty常用属性设置
  6. html获取qq头像代码,jQuery在线获取QQ名称和头像
  7. Android之如何判断当前是阿拉伯布局的方法
  8. 使用CLI扩展和重新平衡Couchbase集群
  9. android重新编译res,使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中lt;meta-datagt;变量的值...
  10. 十行代码实现十亿图片检索,我们把它开源了
  11. Android_组件的显示与隐藏
  12. 【PMP认证考试之个人总结】第 3 章 项目整合管理
  13. linux ping raw socket -(signal),***之旅――原始套接字(Raw Socket)透析(3)--用Raw Socket实现Ping...
  14. 笔记-51,k60,stm32
  15. 回归中的相关系数以及R平方值和Python应用举例
  16. html js css 简明教程,HTML+CSS+JavaScript网页制作简明教程
  17. python re模块_python 正则表达式 (重点) re模块
  18. CLion输出中文乱码解决方案
  19. Ubuntu16.04安装搜狗拼音
  20. 面向智能网联汽车边缘网络的分布式端-边协同算法

热门文章

  1. 学Python的目的
  2. 手把手教你python--爬取网站首页(学生必看)
  3. HTML如何制作百度页面
  4. Vue基础案例(水果搜索,购物车,todolist,留言板,跑马灯)
  5. 编程新手入门:初学编程的正确学习方法!快速提升你的学习效率
  6. 华大智造国产基因测序仪全球装机量再创新高,突破1000台
  7. TCP SACK和DACK(TCP是累积确认)
  8. nwjs sdk linux x64,Ubuntu环境下的nwjs安装及使用教程
  9. 乱序图片 极验_Geetest 极验验证 验证图片拼图
  10. Chrome的恐龙版-超级玛丽彩蛋