美文网首页
Sentry 的前端测试实践:从 Enzyme 迁移到 RTL

Sentry 的前端测试实践:从 Enzyme 迁移到 RTL

作者: 涅槃快乐是金 | 来源:发表于2023-04-29 23:37 被阅读0次

在 Sentry,我们采用了持续交付实践,也就是说,代码一旦被合并到主分支就可以立即发布。我们因此能够快速地迭代产品,尽可能频繁地在生产环境中提供新功能、进行错误修复、配置变更和实验。我们每月合并超过 700 个 PR。自动化测试——特别是我们大型的 React 代码库自动化测试——是我们 CI/CD 流程的重要组成部分,确保我们的产品可以按照预期运行。在这篇文章中,我们将讨论如何将我们的组件测试从 Enzyme 迁移到 React Testing Library(RTL)。这项工作花费了一年零四个月的时间,有 17 名工程师参与,涉及 803 个测试套件和 4937 个测试,其中每一个测试都需要做出修改。

什么是 RTL

React Testing Library(RTL)是一个 React 组件测试库,它通过与 DOM 交互来测试组件,不像 Enzyme 那样直接使用了 React 内部的东西。RTL 是目前测试 React 组件最流行的方案,但 Sentry 在 RTL 出现之前就已经在使用 React 了。

故事开始

我们希望使用最新的现代化工具和实践,但不会因为它们是新的就一把梭哈。我们会仔细评估新技术,了解它们将给我们带来什么好处。当时我们已经知道有 RTL 了,但并没有强烈的理由要将它引入到我们的代码库中。我们用来测试组件库的 Enzyme 可以满足我们的需求。2020 年,一些之前使用过 RTL 的工程师加入了 Sentry。基于他们使用 RTL 库的经验,他们向我们的前端技术指导委员会(Frontend TSC)提出了将 RTL 引入到我们的代码库中的建议。Frontend TSC 致力于 Sentry 的 JavaScript 代码库开发工作,他们每两周开会一次,为公司整体的前端开发团队讨论和总结最佳开发实践。当时,我们已经在大规模地向 TypeScript 迁移,虽然迁移到 RTL 的想法听起来不错,而且我们也知道 Airbnb 已经将 Enzyme 的所有权转到了 GitHub,并且现在也在使用 RTL,但我们还没有为新的迁移做好准备。尽管如此,我们还是希望对此做一些概念验证(PoC),比较一下 RTL 和 Enzyme,并评估迁移将给我们带来哪些好处。我们对性能提升这一块特别感兴趣,因为我们当时的测试执行得非常慢。

相关文章

  • 【前端单元测试入门03】Sinon

    前端测试存在的问题 在讲Sinon之前,我们得先讲一下在学习了Mocha、chai以及enzyme之后,我们的前端...

  • 基于Jest+Enzyme的React单元测试

    本文为实践的产物,总结从搭建到使用过程中遇到的问题,初学者可以参考。 Jest 和 Enzyme 的基本介绍 测试...

  • Enzyme

    http://airbnb.io/enzyme/docs/api/index.html 使用Enzyme测试Rea...

  • Enzyme: 测试React

    对于新手来说,找到一个能上手的Enzyme测试React的教程不难,难的是应该怎么把 Enzyme提供的测试方法用...

  • 【深度好文,值得万转】不想再错过加薪和年终奖,快来试试自动化测试

    这篇文章是前端自动化测试系列的开始,自动化测试系列会从理论走向实践,真正带领大家学会使用前端自动化测试框架,并能在...

  • react-native单元测试

    react-natice单元测试 基于 Jest + Enzyme 的 React 单元测试 Jest、Enzym...

  • 杂记4:React的测试

    React 的测试主要使用 jest 和 enzyme。 jest jest 主要用于测试 Redux 部分的内容...

  • RTL适配实践

    背景 阿拉伯语适配是一个比较麻烦的事情,不仅仅在于它文案的适配,更多的是在于其语言习惯的变化。由从左到右(Left...

  • Enzyme

    Enzyme主要包括三个测试: ① shallow:是官方测试工具库 react-addons-test-util...

  • 前端测试

    前端测试的现状 前端测试可以从API测试和GUI测试入手,虽然部分的代码是可以通过API测试来保证质量,但在前端项...

网友评论

      本文标题:Sentry 的前端测试实践:从 Enzyme 迁移到 RTL

      本文链接:https://www.haomeiwen.com/subject/swtnjdtx.html