前端自动化框架typescript+puppeteer+jest整合

龙猫      2022-02-12     347

关键词:

前提:掌握Jest + Puppeteer

1.Jest环境配置

2.Jest-MATCHERS匹配器

3.Jest-全局变量设置

4.Puppeteer安装

5.Puppeteer元素获取

6.Puppeteer文本值获取

7.Puppeteer iframe切换

8.Puppeteer 拖拽

9.Puppeteer Js脚本执行

一 需要安装的插件

安装包 命令
TypeScript npm install typescript --save-dev
Jest npm install jest --save-dev
ts-jest npm install ts-jest --save-dev
@types/jest npm install @types/jest --save-dev

二 安装步骤

1.mkdir UIAuto_Puppeteer //创建文件夹
2.cd UIAuto_Puppeteer // 进入该文件夹
3.安装以上包
4.tsc --init // 初始化相关配置文件,生成tsconfig.json
5.jest --init //初始化,生成jest.config.js

三 tsconfig.json配置

需要注意的是target 修改成es6,我们现在按照es6的语法特性

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "dist",
  }
}

四 jest配置

(一) 配置文件

  1. package.json : "scripts":{test": "jest"}
  2. jest.config.js : module_exports = {配置项}

(二) jest.config.js配置项解析

  1. roots : 当前目录
  2. testMatch : 设置识别哪些文件是测试文件(glob形式),与testRegex互斥,不能同时写
  3. moduleFileExtensions : 测试文件的类型
  4. transform : 用ts-jest 处理ts文件
module.exports = {
  roots:[
    "<rootDir>"
  ],
  "moduleFileExtensions": [
    "ts",
    "js",
  ],
  // 匹配__tests__文件夹下的后缀为 .test.ts文件
  "testMatch": [
    "**/__tests__/**/*.test.ts"
  ],
  "transform": {
    "^.+\\.ts$": "ts-jest"
  }
};

五 文件目录

--UIAuto_Puppeteer
---__tests__
----demo
-----1.test.ts
-----2.test.ts
---node_mudules
---jest.config.js
---tsconfig.js
---package.json
---package-lock.json
$ UIAuto_Puppeteer : npm rum test

六 Puppeteer 配置

(一) 依赖的安装包

安装包 命令
puppeteer npm install puppeteer --save-dev
解决Chromium无法下载 npm i --save puppeteer --ignore-scripts
解决Chromium无法下载 set PUPPETEER_DOWNLOAD_HOST = https://storage.googleapis.com.cnpmjs.org
@types/puppeteer npm install @types/puppeteer --save-dev
@types/jest-environment-puppeteer npm install @types/puppeteer --save-dev
@types/jest npm install @types/jest --save-dev
jest-puppeteer npm install jest-puppeteer --save-dev
jest-environment-puppeteer npm install jest-environment-puppeteer --save-dev

(二) 步骤

1.创建puppeteer_enviroment.js
2.配置jest.config.js,再jest.config.js里添加以下项,
  1. globalSetup:全部变量,再之前运行
  2. globalTeardown:全部变量,再之后运行
  3. testEnvironment:测试环境
  "globalSetup": "jest-environment-puppeteer/setup",
  "globalTeardown": "jest-environment-puppeteer/teardown",
  "testEnvironment": "./puppeteer_enviroment.js",
4.配置puppeteer_enviroment.js

具体可以看看jest-environment-puppeteer的源码,这个代码很简单,setUp继承了jest-environment-puppetee,teardown() 继承了jest-environment-puppetee 里的teardown()

const PuppeteerEnviromenent = require('jest-environment-puppeteer');
class CustomEnvironmemnt extends PuppeteerEnviromenent {
    async setup() {
        await super.setup();
    }

    async teardown() {
        await super.teardown()
    }

}
module.exports = CustomEnvironmemnt

七 跑测试用例

代码如下,测试套件这边就不说了,比较简单

import { Page } from 'puppeteer';
describe('ly.com demo cases', () => {
    let page: Page;
    beforeEach(async () => {
        page = await browser.newPage();
        await page.goto('https://www.ly.com/');
    });
    afterEach(async ()=> {
        await page.close();
    })
    test('test-ly-demo', async () => {
        const logo = await page.$eval('.logo', el => el.getAttribute('title'));
        console.log('logo');
        await expect(logo).toEqual('同程旅游');
    });
})

参考 https://jestjs.io/docs/zh-Hans/puppeteer
github代码地址:https://github.com/wangxiao9/puppeteer_demo

基于jest和puppeteer的前端自动化测试实战

前端测试现状经常听到后端同学说“单元测试”,前端写过测试用例的有多少?答案是:并不多,为什么呢?两个主要原因1、前端属于GUI软件,浏览器众多,兼容问题让人头大,用户量有一定规模的浏览器包括:  IE8、... 查看详情

前端ui自动化puppeteer实践

...,要经常对表单基本功能进行回归,曾经考虑过使用webUI自动化工具,减少重复性的操作,但是因为之前用过appium,对UI自动化的体验不是很好,所以有些纠结,但是,再仔细想一下,有可能存在比较好用又确实能提升效率的工... 查看详情

ui自动化测试学习

UI自动化我使用的是puppeteer+jest+typescript的框架,记录一下我的学习过程。首先看了B站的视频,讲的puppeteer,很详细,可以直接看项目实战,操作中遇到问题再去前面的基础内容里找。B站链接:https://space.bilibili.com/306107070?share_med... 查看详情

玩转puppeteer

...果是爬虫,直接返回由Puppeteer服务端渲染的html文件。2.4自动化UI测试使用Puppeteer可以模拟Chrome浏览器环境,结合JavaScript测试框架(如Jest)可以实现自动化UI测试。Puppeteer提供了Mouse类来模拟鼠标操作,提供了Keyboard类来模拟键盘... 查看详情

有哪些前端框架是使用typescript写的?

...经被用于Google的多款产品当中。从Angular2版本开始,使用TypeScript开发,完全重写框架,性能提升巨大。目前最新版本为8.1.0.IonicIonicFramework是一个开源的UI工具包,用Web技术(HTML,CSS和JavaScript)构建高性能的高质量移动和桌面应... 查看详情

前端之道

...与数据结构11:小程序12:微信公众号13:HTML14:CSS15:ECMScript16:Typescript17:Flutter18:前端框架19:Node.js  查看详情

自动化运维之puppet服务部署(代码片段)

...代码,它便会自动的完成所有的工作,这批工具就是运维自动化puppet,它可以针对多台服务器进行 查看详情

puppet自动化管理

puppet介绍puppet是一个IT基础设施自动化管理工具,它能够帮助管理员管理基础设施的整个生命周期:供应配置联动(编排)报告支持的并发性很好,适用于企业级较大规模puppet是用ruby语言写的 facter是puppet的一个模块ansible靠模块... 查看详情

自动化运维之puppet(代码片段)

Puppet原理Puppet的目录是让管理员只集中于要管理的目标,而忽略实现的细节。Puppet即可以运行在单机上,也可以以C/S结构使用。在大规模使用puppet的情况下,通常使用C/S结构,在这种结构中puppet客户端只运行puppeclient,puppet服务... 查看详情

自动化运维---puppet入门

1.puppet简介Puppet:集中式的配置管理工具,通过自有配置语言对节点进行目标状态定义,并能够基于网络实现目标状态的维护。Puppet可管理配置文件、用户、cron任务、软件包、服务系统等。Puppet把这些系统实体称之为资源,puppet... 查看详情

puppet实现自动化运维

Puppet实现自动化运维本文出自“卢春宁”博客,谢绝转载! 查看详情

自动化运维之puppet(代码片段)

Puppet工作原理让管理员只集中于要管理的目标,而忽视实现的细节。puppet既可以在单机上使用,也可以以C/S结构使用。在大规模使用puppet的情况下,通常使用C/S结构,在这种结构中puppet客户端只运行puppetclient,Puppet服务端只运行... 查看详情

[自动化]puppet服务安装和部署(代码片段)

puppet简介puppet是一种基于ruby语言开发的Lnux、Unix、windows平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。puppet依赖于C/S(客户端/服务器)的部署架... 查看详情

自动化运维之puppet(代码片段)

自动化运维之puppetpuppet介绍puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对... 查看详情

使用puppet实现自动化运维

使用puppet实现自动化运维 服务概述:1、什么是puppetpuppet是一个为实现数据中心自动化管理而设计的配置管理软件。是一种Linux、Unix平台的集中配置管理系统,使用ruby语言,可管理配置文件、用户、cron任务、软件包、系统服... 查看详情

puppet自动化运维之tag标签puppet自动化运维之tag标签

   标签能更好的让puppet识别一段代码。同时,客户端也可以执行指定的tag,而不需要全部都执行。 tag元参数,用于标签资源;tag函数,用于标签容器;tagged函数,用于判断一个容器,是否有某个标签,即用于检查... 查看详情

自动化运维工具puppet详解(代码片段)

...、puppet介绍 1、puppet是什么  puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期:供应(provisioning)、配置(configuration)、联动(orchestration)及报告(reporting)。  基于puppet,可实现自动... 查看详情

自动化运维三贱客之puppet安装(代码片段)

Puppet简介puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以... 查看详情