【发布时间】:2020-03-02 20:11:56
【问题描述】:
我正在 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也没有改变。 - 默认运行,2、3、9、15...工人。
- 使用
node --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage检查堆使用情况并发现一些泄漏 - 堆使用量逐渐从 ~100MB 增加到 1100MB - 尝试在机器上本地运行(如果有的话,没有 Jenkins 对资源的限制...)
我的问题是我是否遗漏了什么(标志、Jenkins 代理政策)?也许我应该出于 E2E 的目的尝试不同的测试运行器,因为 jest 更多地针对单元测试?
【问题讨论】:
标签: jenkins continuous-integration jestjs puppeteer e2e-testing