浏览器模式会将已完成项目的页面保持打开状态,直到运行结束
作者: JCQuintas创建于 2026年8月18日更新于 2026年9月17日
描述错误
在浏览器模式下,一个已完成测试的项目的页面保持开放,直到整个工作空间运行结束. 它们仅由提供商的`接近()'关闭,在完成每个项目后运行。
由于项目同时运行,每个项目都打开 " 最大工人 " 网页,因此运行将 " 项目 * 最大工人 " 网页在其高峰时打开,完成的每个项目都提前保持其浏览器页面(以及装入其中的所有测试),直到完成最慢的项目。
通过空测试,页面是便宜的,所以复制只显示计数. 在真实的套件中,每页都存储着每个运行在其中的文件的模块,DOM和组件树.
在[mui/mui-x] (https://GitHub.com/mui/mui-x)中,浏览器套装有21个项目和"maxWorkers:2",因此运行保持了42个Chrimium标签开通并峰值为~12.8GB(在系统内存中通过全跑来测量为三角形). 超过16GB CI 容器的容量,因此一个渲染器被 OOM 杀死,运行失败,“浏览器页面崩溃”,然后是“[vitest]” 在进行测试时,浏览器的连接被关闭,总是在最后完成的项目上进行,而每次测试都通过。 将套间分为两个相继的 " vitest " 引用,将最高峰降至7.2GB,墙上时间从144个降至112个,这纯粹是因为有一半的页是同时活的。
- 复制
https://GitHub.com/JCQuintas/vitest-browser-pages-repro 互联网档案馆的存檔,存档日期2014-12-22.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? npm 安装 npx 剧作家安装铬 npm 测试
6个浏览器项目,每个项目都有一个单独的测试,睡眠时间不同,因此它们完成相隔500m. 当项目完成时,一个记者会打印每个提供者仍然有多少页:
- 项目-1(铬) * 项目-1. ts(1个测试) 504ms [开页] 2.4s项目"项目-1(铬)"完成:6页开页 QQ项目-1=1项目-2=1项目-3=1项目-4=1项目-5=1项目-6=1
- 项目-2(铬) * 项目-2. ts(1个测试) 1003ms [开页] 2.9s项目"项目-2(铬)"完成:6页开页 |项目-1=1项目-2=1项目-3=1项目-4=1项目-5=1项目-6=1项目. . . . . . . . .
- 项目-6(铬) * 项目-6.ts(1个测试) 6003ms [开通页]7.9s 项目"项目-6(铬)"完成:6页开通 |项目-1=1项目-2=1项目-3=1项目-4=1项目-5=1项目-6=1项目.
`项目-1 ' 的完成时间为2.4s,但其页面仍然开放时间为7.9s,总数从未降至6下。
* 预期行为
一旦一个工程的队列是空的,并且其测试器已经清理完毕,它的页面被关闭并释放出内存,所以峰值会跟随实际运行的工程而不是项目总数.
从哪里来?
`packages/test/src/node/pools/browser.ts'中的`run Next Test':当队列为空时,会话被清理并标记就绪,但页面仍然开着。
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你来干什么?
如果 (! 文件) {
相接隔离 = this. project.config.isolate
如果(同位素){
会议结束 (d) 国家
返回时
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
. . . . . . .内容来源: vitest-dev/vitest