如何通过Jest减少测试运行时间?

我正在用EC2 Jenkins从站上的Jest和Puppeteer运行60个E2E测试。测试时间介于7-90秒之间,平均为24秒-表示依次运行约24-25分钟时的总时间。 在运行jest -w 10时,它会并行运行10个测试,但是每个测试都花费更长的时间,时间类似于jest --runInBand都在大约24-26分钟左右结束。

我阅读了this和相关链接,由于假定资源有限,并且仍然没有影响,因此将我正在运行的计算机更改为r5ad.12xlarge(48核,384 GB!)。总运行时间。我做了更多尝试:

  • 尝试使用--ci --detectOpenHandles和不使用NODE_OPTIONS=--max_old_space_size=4096仍然没有。
  • node --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage也没有更改。
  • 使用默认的2、3、9、15 ...个工人来工作。
  • 使用xml检查了堆的使用情况,并发现了一些泄漏-堆的使用量逐渐从约100MB增加到1100MB
  • 尝试在计算机上本地运行(没有詹金斯的资源限制...)

我的问题是我是否缺少某些东西(国旗,詹金斯经纪人政策)?也许出于E2E的目的,我应该尝试其他测试者,因为开玩笑的目标更多是单元测试?

wydly443 回答:如何通过Jest减少测试运行时间?

经过几次尝试,我发现了主要问题:

  1. 当您更新管道中的defaultValue时,詹金斯(Jenkins)中有一个bug,它只有在另一个构建之后才生效。因此,即使删除--detectOpenHandles,也会使我的构建变长。另外,它使得结果难以追踪。
  2. 玩笑真的取决于可用的内核数量,因此我将机器更改为具有16个vCPU的c5.4xlarge,这也带来了很大的不同。我的最佳选择是设置--maxWorkers=33%,因为我们的Web应用程序也可以在同一台计算机上运行。

希望这对某人有帮助。

本文链接:https://www.f2er.com/3152890.html

大家都在问