IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Jest 28版本升级与关注点(shard分片调度测试) -> 正文阅读

[开发工具]Jest 28版本升级与关注点(shard分片调度测试)

前言

直入正题,jest 28 发布信息如下:

阅读本文前,我们默认你已经具备了应用 jest 的基础知识。

正文

依赖升级

以下 jest 基础依赖需要升级:

{
  // ↓ 这个包还没升级 v28 ,社区维护的
  "@types/jest": "^27.4.1",
  // ↓ 以下包都是 jest 官方维护的,major 版本一致
  "@jest/types": "28.0.2",
  "jest": "^28.0.3"
}

可能你升级时,版本与上文中不一致,升级至最新版本即可。

如果有 React 场景,你还需要升级:

{
  // ↓ RTL deps
  "@testing-library/jest-dom": "^5.16.4",
  "@testing-library/react": "^13.1.1",
  // ↓ jsdom 不再默认内置于 jest v28 ,需要显示安装
  "jest-environment-jsdom": "^28.0.2"
}

注:这里一定要显示安装 jsdom ( jest-environment-jsdom ) v28 (你可以在 v28 release changelog 中找到相关说明)。

As of Jest 28 “jest-environment-jsdom” is no longer shipped by default. make sure to install it separately.

两个关注点

下面聊两个比较关注的新 Feature 点。

Sharding of test run

jest 28 开始支持分片运行 test ,特别是在 ci 场景,若支持多台机器调用(如 github actions),将会极大减少 test 消耗时间。

Refer 1 : github actions practices

你可以在 facebook/jest - Actions 仓库找到多机调用的历史。

可以看到 jest 官库每次会调度 87 台机子:

Refer 2 : github actions configs

此外你可以在 jest 官库 workflows 寻找开启 shard 分片测试相关的 github actions 配置。

这里给出一份简单的核心配置指南:

  # ......
  
  strategy:
    fail-fast: false
    matrix:
      node-version: [12.x, 14.x, 16.x, 17.x, 18.x]
      os: [ubuntu-latest, macOS-latest, windows-latest]
      # ↓ 新增该行,配置分片来多倍调度机器
      shard: ['1/4', '2/4', '3/4', '4/4']

  # ......

  # 新增该行为,获取 github actions 机器 cpu 核数
  - name: Get number of CPU cores
    id: cpu-cores
    uses: SimenB/github-actions-cpu-cores@v1

  # ......
  
  # 测试时,需要新增 `max-workers` 和 `shard` 参数
  - name: Run tests (${{ matrix.shard }})
    run: pnpm jest -- --max-workers ${{ steps.cpu-cores.outputs.count }} --shard ${{ matrix.shard }}

  # ......

注意,这里需要关注几个点:

  • shard : 分片多少自行决定,但需要注意最好为偶数,否则可能存在除不尽。

  • pnpm params : pnpm v6 需要使用 -- 传导 jest 参数,v7 可以直接传导,无需 --

  • 参数说明 :通常 jest 会默认 cpu - 1 来并发 test ,但在 ci 中为了充分利用机器性能,会显示指定满 --max-workers 并发量为 cpu 值;--shard 代表所属片。

资源问题

虽然分片可以成倍的削减 test 运行时间,获得极大收益,但要确保你 确实有 大量的机器可以调度,如 github actions 的 macos 资源有限,通常只能一次并发 4 - 5 台,如果分片过多,会导致排队,总体 ci 时间更长,得不偿失。

GitHub Actions Reporter

jest 28 支持在 PR files change 中有更好的报错信息显示,被称为 github actions reporter 。

FYI

总结

关于更多信息和 Breaking change ,以及相应对策与解法,请从官方相关文档中寻找答案。

以上。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:42:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:08:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码