尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
e2e报告生成源码导读:list、markdown与JUnit如何产出
e2e报告生成源码导读list、markdown与JUnit如何产出【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2ee2e 是一个面向 Web 与移动端的新一代e2e 测试框架内置了list、markdown、JUnit三种报告产出格式终端里实时滚动的 list 报告、可直接贴进 Pull Request 的 markdown 报告以及供 CI 平台摘要使用的 JUnit XML。本文带你读完 packages/e2e/src/report/ 目录下的核心源码弄懂每种报告从哪来、怎么写、写在哪。报告体系总览4 个内置 Reporter1 份契约所有内置报告器集中注册在一个常量里配置解析器、CLI 和 runner 都以它为唯一事实来源避免三处漂移export const BUILTIN_REPORTERS [list, json, junit, markdown] as const见 builtin.ts#L14。这个设计保证配置里能写的 id和实际存在的报告器永远一致——漏注册会在编译期直接报错。它们都实现同一个Reporter契约types.ts#L1396-L1403只有两个钩子钩子作用谁实现onEvent(event)运行中逐条消费运行事件实时渲染仅listonRunFinished(run, signal)报告落盘后一次性渲染可返回汇总行json、junit、markdown两条重要约定报告器永远不能改变运行状态或退出码——它坏了只是一行 stderr 警告onRunFinished带 1 分钟预算超时的signal会中止它发起的请求。 一句话记忆list 是直播json/junit/markdown 是录像回放——后三者都只读最终的report.json文档wire 格式report-1由 report-v1.schema.json 锁定不触碰 runner 的实时状态。list 报告事件流驱动的终端实时渲染list是唯一带状态的报告器由 runner 每次运行单独构造builtin.ts#L19-L23。核心类ListReporterlist.ts#L224是一个事件汇handle方法按switch分发十几种事件run-started、plan、test-started、step、test-finished……它最终呈现四段内容文件块每个测试文件 × 目标一行徽章行文件内所有测试跑完后整体打印含各测试行与嵌套的 agent 步骤Failed Tests 区红底横幅 每个失败案例的错误码、首行错误、代码帧code frame、失败截图/视频与 trace 页路径Run Errors 区运行级错误如服务起不来单独成区对齐汇总Test Files / Tests / AI 用量 / Cache / Duration 等行。在交互式终端TTY上它还会渲染一个实时窗口下方固定区域显示正在运行的测试树和计数器日志往上流在非 TTY 的 CI 日志里则退化为纯流式输出——每步完成即打印保证日志里每个名字恰好出现一次。markdown 报告把 report.json 渲染成 PR 评论页markdownReportermarkdown.ts#L568-L578在onRunFinished里把整份 report-1 文档交给renderMarkdownReportmarkdown.ts#L516渲染成单页 markdown写入report.json同级的summary.md。页面布局按读者先看什么排序标题行/ 状态图标 通过/失败计数下方一行花费agent 步骤数、缓存回放数、token、成本运行级错误每条引用块一行失败块每个失败测试一段——出错在第几步、错误与 agent 的原话引用、预期/实际事实列表、证据截图/视频与 trace 页链接折叠区flaky 测试与全部测试表格都收在details里绿色运行时几乎无事可读。为适配 GitHub 评论的 65536 字符上限源码设了硬性预算markdown.ts#L81-L90正文 ≤ 60000 字符、失败块最多 30 个、运行错误最多 20 条、测试行最多 400 行超出则用贪心裁剪并注明完整报告见report.json。 配合 e2e-dev/github 包这份 markdown 还能自动作为评论贴到 Pull Request 上。JUnit 报告为 CI 测试摘要而生的 XMLjunitReporterjunit.ts#L216输出junit.xml结构与 CI 摘要工具完美对齐一个测试文件 一个testsuite一个测试 × 目标组合 一个testcaserenderJunitReport运行级错误单独成run套件像APP_UNREACHABLE这种没跑成测试的失败在 CI 里也直接可见状态映射flaky 记为通过并附system-out说明先失败了 N 次skipped/interrupted都映射为skipped断言类错误用failure其余如超时、模型不可用用errorXML 安全所有文本先做实体转义XML 1.0 禁止的控制字符替换为UFFFD避免一个坏字符让解析器拒绝整份文档junit.ts#L29-L44。报告写到哪里.e2e 目录布局与原子落盘三个文件型报告器共用一个工厂函数 fileReporter它把渲染结果写到report.json所在目录的同级文件并返回一行标签 相对路径打印在终端汇总下方。写入走原子写先写临时文件再替换父目录缺失时自动创建。默认输出目录是项目根下的.e2etypes.ts#L1443-L1453一次运行后长这样.e2e/ ├── report.json # 报告真身report-1 文档 ├── junit.xml # junit 报告器产出 ├── summary.md # markdown 报告器产出 ├── ai-trace.json # 可选--ai-trace ├── results/ # 每个测试一个目录含 trace.md 与截图 └── artifacts/ # 每次运行开始即清空json报告器则不落盘直接把 report-1 文档打到 stdout方便脚本管道处理。如何配置与选择报告格式在e2e.config.ts的reporters字段里按 id 勾选即可详见 docs/reference/reporters.mdxexport default { targets: [/* ... */], reporters: [list, markdown, junit], };默认是list加入json会顶替list终端只出 JSONmarkdown/junit则与list并存也可以塞入自定义Reporter对象它始终运行、不会被--reporter移除。官方示例项目 examples/with-next/ 展示了从配置到跑通的完整流程可作为你接入报告体系的参照。源码地图快速定位关键文件关心什么看哪里报告器注册表与 id 约束builtin.tslist 实时渲染与失败区list.tsmarkdown 页面渲染与字符预算markdown.tsJUnit XML 结构与转义junit.ts报告器契约Reporter/FinishedRuntypes.ts#L1348-L1403原子落盘工厂fileReporterwrite.tsreport-1 数据契约report-v1.schema.json读代码的建议路径先读Reporter契约 → 再看fileReporter这条最短的落盘链路 → 然后任选junit.ts约 210 行最能体现从文档到产物的全过程→ 最后回到list.ts感受事件流渲染的完整度。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

DeepSeek系列_国产大模型的技术创新解析

DeepSeek系列_国产大模型的技术创新解析

文章目录1. 先把问题讲清楚:DeepSeek 路线关注的是能力/成本比2. MoE:总参数变大,但每个 token 不必用完3. MoE 成本账:总参数、激活参数、显存、通信分开看4. MoE 的难点:路由和负载均衡5. MLA:长上下文的…

📅 2026/10/8 21:50:44
战略前瞻是个伪命题,匹配未来才是真功夫

战略前瞻是个伪命题,匹配未来才是真功夫

《战略前瞻是个伪命题,匹配未来才是真功夫》——最危险的不是看不见未来,而是用错了看未来的望远镜未来不是迷雾,是方法本身在决定你能看到多少。先讲一个常见的场面。年底战略会,投影仪上是三十页趋势报告,四个情景故…

📅 2026/10/8 21:50:44
手搓生产级 AI Agent 系统(25):MCP 全链路落地前的架构梳理

手搓生产级 AI Agent 系统(25):MCP 全链路落地前的架构梳理

在构建生产级 AI Agent 的进程中,工具调用与外部数据源集成始终是核心挑战。MCP(Model Context Protocol)作为开放协议,试图通过统一标准降低 LLM 与工具、数据源之间的接入成本。本篇作为系列第 25 篇,不重复具体代码…

📅 2026/10/8 21:50:43
MORE NEWS

更多资讯

📰

毕设实战:MHK在线学习小程序全栈链路拆解与避坑指南

简介:面向微信小程序毕业设计的MHK在线学习小程序项目包,基于微信开发者工具JavaMySQL实现,采用前后端分离结构,覆盖学生与管理员双角色完整闭环。学生端支持注册登录、考试资讯浏览与详情查看,并内置听力训练、阅读训…

📰

飞书CLI开源后,Claude Code办公自动化实战大纲:从Base URL改到TaoToken开始

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Claude Fable 5 正式发布,TaoToken 统一 Key 接入 Anthropic 新模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

headcount 16部门选型完全指南:CFO、CTO、CISO等角色该装哪些技能

headcount 16部门选型完全指南:CFO、CTO、CISO等角色该装哪些技能 【免费下载链接】headcount An agent organization structured as a company — 15 departments, 125 skills, each independently installable, citing the standards and regulators that settle …

📰

Hermes Desktop多Profile多Agent协作指南:多主机AI工作流如何搭建

Hermes Desktop多Profile多Agent协作指南:多主机AI工作流如何搭建 【免费下载链接】hermes-desktop The safest, simplest way to manage Hermes from your Mac. Pure SSH. No gateways, no exposed ports, no browser layer. 项目地址: https://gitcode.com/gh_m…

📰

东莞高导热低膨胀液态芯片封装胶制造厂家企业全景分析,晋咸新材料资质齐全

核心原理科普:芯片封装胶如何破解大功率算力时代的散热与应力难题在AI算力爆发、服务器芯片功率持续攀升的当下,芯片封装材料正成为制约设备稳定性的关键一环。简单来说,芯片工作时产生的热量需要通过封装胶快速导出,同时封装胶还…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬