拓冰建站拓冰建站
首页 / 资讯中心 / 正文

PostHog QA Frontend Report

PostHog QA Frontend Report【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthogmarkdown subPostHog QA Frontend Report/sub从渲染校验的角度看这两行也是机器可检查的契约。evidence-and-output.md 要求在发布或打印前做三项 sanity-check第一行必须是该 Banner、第二行必须是符合模板的 verdict 行、最后一行必须是 footer 小字缺任一即视为渲染失败需要重新对照模板渲染。也就是说Banner 不只是品牌装饰更是编排器与人工审阅双重校验的锚点。Verdict 行一句话给出运行结论紧接 Banner 之下用单行文本呈现 verdict、通过计数、运行耗时与测试提交。模板给出五种合法 verdict 形态**PASS** · 3/3 · 5m21s · commit sha7 **FIXED** · 3/3 · 6m04s · commit sha7 · 1 high-sev auto-fixed **FAIL** · 1/3 · 5m48s · commit sha7 · 2 reported, no autonomous push **NEEDS-INTENT** · 2/3 · 4m55s · commit sha7 · 1 behavior needs product intent **REPORT-ONLY** · 3/3 · 4m12s · commit sha7 · fork PR, suggested patches only各字段语义PASS全部目标通过FIXED有自动修复落地并复验FAIL存在未修复 findingNEEDS-INTENT有行为无法由独立 oracle 判定、需要产品意图REPORT-ONLY仅评论输出fork PR、越界修复、低置信度等场景。3/3覆盖目标数 / 通过数5m21s本次运行总耗时commit sha7被测提交的 7 位短 SHA。附加信息如1 high-sev auto-fixed只在适用时出现。这五个 verdict 词与findings.json输出契约中的QA-VERDICT: verdict一一对应如QA-VERDICT: FIXED findings1 fixes1外层编排器可以直接 grep stdout 首行而无需解析 Markdown可见模板词表是跨层复用的公共协议。verdict 行下方是单行 blockquote 形式的 TL;DR语气与 MCP 报告的手写摘要保持一致 Exercised the changed dashboards-list filter UI; all targets green, no regressions in adjacent flows.TL;DR 的要点是人类可读的运行叙事覆盖了哪个变更面、结论如何、有无相邻流程回归而不是机械复述表格。Coverage 表覆盖计划与结果的唯一事实来源Coverage 是一张紧凑表格逐行列明每个计划目标及其结果。规范明确不用details折叠审阅者必须一眼看到测了什么 / 跳过了什么**Coverage** | Target | Action | Result | | ---------------- | ------------------------------------------------- | ------------ | | /dashboard/:id | Loaded scene, clicked Save | PASS | | /insights/new | Created trend, switched breakdown | PASS | | /surveys/new | Needs intent · template selection skips Questions | NEEDS INTENT | | /billing | Coverage gap · blocked by auth boundary | SKIP |Result 列的合法取值及语义PASS通过FAIL失败SKIP跳过 / 覆盖缺口FIXED仅当修复已在本目标落地时使用NEEDS INTENT期望行为需要产品意图INTERMITTENT首次失败但可复现性重试时未复现必须链接首次失败的证据。模板对两类非 PASS行有强约束覆盖缺口必须自成一行Action 写作Coverage gap · reasonResult 用SKIP禁止塞进 footer 一笔带过意图缺口必须自成一行Action 写作Needs intent · observed behaviorResult 用NEEDS INTENT。适用场景是浏览器确认了某行为、但期望结果无法从基础行为、测试、产品文案、周边不变量或用户确认中建立。INTERMITTENT与coverage_gap的来源可追溯到 browser-mcp-patterns.md 的可复现性规则每个候选 finding 必须先做一次强制重试若一次失败、重试通过且再次复跑仍通过则不报告为确认 finding而是在覆盖表中单列INTERMITTENT行并保留首次失败证据。Setup 块让读者判断该信多少Coverage 表之后紧跟一个 Setup 块说明本次运行使用的环境与数据。规范要求总是包含Always include it且从run-notes.md渲染禁止凭记忆重建**Setup** - Stack: Coder devbox running the PR branch at sha7, forwarded to localhost:8010 - Workspace: seed dev user in the local demo project (dummy data) - Data created: new unsaved survey with 2 freeform questions built in the editor; nothing persisted - Overrides: none (default flags, light theme) - Degraded: feature-flags process not running (explains /flags/ 502s)逐行覆盖仅当适用时stack本地或 devbox、分支、commit、base URL、使用的 workspace 与登录身份、与计费相关的 org/customer/plan 状态、运行期间创建或播种的数据以及是否持久化、feature-flag 或主题覆盖、控制台排查中被归因的降级本地进程。模板给出一条关键诚信原则如果某个结果依赖某个 setup 细节特定套餐、播种的数据形状、启用的 flag该细节必须出现在 Setup 中- 在错误的套餐上 PASS、或对空数据形状 PASS都不算 PASS。这与 stack-and-login.md 中种子数据必须打到浏览器所连的那台 stack的约束一脉相承BASE_URL被转发到远端 devbox 时本地manage.py shell写的是本地库属于错误目标要么在服务端播种要么记为覆盖缺口。Effort Saved可选诚实的一行价值陈述仅当本次运行确实节省了人工时才输出干净无 finding 的运行跳过**Effort saved** · 1 High caught · ~15 min of manual QA时间估算应反映开发者手动覆盖同样范围的真实耗时checkout PR、拉起本地 stack、打开每个受影响场景、执行 in-diff 行为、截图、对照期望结果、整理 findings。估算的是整次运行的总和而非单个目标并要考虑场景复杂度 - 单场景滚动并核对文案显然比需要数据播种、flag 切换或明暗主题对比的多步流程更快。模板特别强调数字必须诚实夸大估算会侵蚀整份报告的可信度。Findings结构化缺陷报告Findings 开始前用分隔线---每条 finding 是带状态后缀的三级标题--- ### Finding 1 · auto-fixed in sha ### Finding 2 · reported, no autonomous fix ### Finding 3 · suggested patch (out of PR diff) ### Needs intent 1 · product behavior unclear单条 finding 的完整六块布局模板原文可直接替换为自己的值### Finding 1 · auto-fixed in sha **Save button in dashboard header does not fire onClick** text severity ████████░░ HIGH frontend/src/scenes/dashboard/DashboardHeader.tsx · DashboardHeader diff - const handleSave () save const handleSave () save() **Failing step** text url: /dashboard/123 action: clicked Save expected: save toast appears, URL stays got: no UI change, no network call, no console error **Evidence** - flow - still details summaryFix cycle/summary - **re-run** · PASS · 0m52s · sha - verified fix - **initial** · FAIL · 2m38s · prev sha - bug found /details六块依次为带反引号的缺陷摘要、severity 条、文件与组件定位、修复 diff、Failing step 复现信息、证据与修复循环。两条裁剪规则无补丁时跳过 Fix diff 块未跑修复循环时跳过 Fix cycle 折叠块。Severity 条有固定字形约定████████░░ HIGH、█████░░░░░ MEDIUM、██░░░░░░░░ LOW。Failing step 的expected / got对是全文的核心证据格式URL、动作、期望、实际四个字段让审阅者无需复跑即可判断缺陷成立与否。这正是 browser-mcp-patterns.md 中可复现性重试之后才允许晋升为 finding 的产物。Needs Intent行为存疑不冒充 bug仅用于needs_intent条目。除非有独立 oracle 支持期望行为否则不得将其呈现为 bug。必须说清三点观察到了什么、为何本次运行无法判定是否为预期、审阅者需要回答什么问题### Needs intent 1 · product behavior unclear **Template selection skips the Questions step** text severity █████░░░░░ MEDIUM frontend/src/scenes/surveys/wizard/surveyWizardLogic.ts · selectTemplate **Observed step** text url: /surveys/guided/new action: selected a survey template expected: unclear - intent needed got: wizard landed on Targeting instead of Questions question: should template selection skip Questions for this flow? **Evidence** - stillObserved step 相比 Failing step 的差异expected写作unclear - intent needed并新增question字段直指产品决策点。该机制的行为学依据在 expected-behavior.mddiff 是证据不是规范只有oracle_confidence为unclear且无法确认意图时才走needs_intent路径PR 模式下它必须作为可见行出现在覆盖表中且此类未决意图存在时不得把运行标为干净的 PASS。Suggested patches未自动应用修复时的替代块当 finding 走 comment-only 路线out-of-diff 修复、禁区、fork PR、低置信度时用明确标注的建议补丁替换 Fix diff 块**Suggested patch** (not auto-applied: reason) diff diff reason必须如实说明未自动应用的原因。这与技能 Fix Loop 的边界一致自动修复只能改 PR 已变更的文件触及 auth/权限、SQL/HogQL 构造、Django/ClickHouse/数据迁移、CI 工作流、技能定义或大范围重构时一律降级为 comment-only见 safety-rules.md 的 Autonomous Fix Bounds。完整示例PASS 与 FIXED 的终态模板模板给出两份可整体复用的终态示例是格式即规范的黄金参照。Full PASS 示例## PostHog QA Frontend Report **PASS** · 3/3 · 4m38s · commit c03b5177 Exercised the new sources-table per-status counts; mixed-status and all-completed states render correctly. No regressions in adjacent flows. **Coverage** | Target | Action | Result | | ------------------- | ------------------------------------- | ------ | | /data-warehouse | Loaded sources, scanned status pills | PASS | | /data-warehouse?… | Filtered to completed only | PASS | | /data-warehouse/X | Drilled into source, verified schemas | PASS | **Effort saved** · ~10 min of manual QA subPostHog QA Frontend Report/sub注意干净运行也可以写 Effort saved此例约 10 分钟但按模板总则若运行确实毫无发现通常应跳过该块。Full FIXED 示例## PostHog QA Frontend Report **FIXED** · 3/3 · 5m21s · commit 8b36c7b5 · 1 medium-sev auto-fixed Found a wrong-source-field bug in the new Duplicate action; duplicates title was rendering as just (copy). Fixed and re-verified. **Coverage** | Target | Action | Result | | -------------- | ----------------------------------------- | ------ | | /surveys/new | Added Q2, clicked Duplicate on Q1 | FIXED | | /surveys/new | Verified copy title after fix | PASS | | /surveys/new | Edited duplicates choices, no leak to Q1 | PASS | **Effort saved** · 1 Medium caught · ~15 min of manual QA --- ### Finding 1 · auto-fixed in 8b36c7b5 **Duplicate questions title is built from the wrong field** text severity █████░░░░░ MEDIUM frontend/src/scenes/surveys/surveyLogic.tsx · duplicateQuestion listener diff - question: ${original.description ?? } (copy), question: ${original.question} (copy), **Failing step** text url: /surveys/new action: clicked Duplicate on Question 1 (Give us feedback…) expected: new Question 2 titled Give us feedback… (copy) got: new Question 2 titled (copy) - empty title with stray space **Evidence** - flow - still details summaryFix cycle/summary - **re-run** · PASS · 0m44s · 8b36c7b5 - verified fix - **initial** · FAIL · 2m11s · e94bff0 - empty-title bug found /details subPostHog QA Frontend Report/sub该示例展示了 FIXED 的核心叙事Coverage 表中先出现 FIXED 行修复落地目标、再出现两条 PASS 行复验与防泄漏Finding 内 Fix cycle 记录initial FAIL与re-run PASS的 SHA 对比形成完整的发现 - 修复 - 复验闭环。Evidence URLs证据的引用纪律证据使用hogli pr:upload-image打印的altMarkdown 行原样引用这些 URL 是 SHA-pinned 的PostHog/pr-assets仓库地址禁止重建、缩短或编辑。每次 finding 嵌入 1-2 张关键视觉flow动画 WebP 录屏仅在其被检查且保持可读时优先使用否则使用带标注的静态截图不要粘贴完整的本地截图清单。上传失败或跳过的回退形态**Evidence** - Reel: .qa-frontend/runs/run-id/frontend-qa.webp (upload failed) - Still: .qa-frontend/runs/run-id/011-detail.annotated.png (upload failed)本地模式始终使用本地路径不虚构外部 URL。从源码看上传命令的共享实现位于 tools/hogli-commands/hogli_commands/pr_upload.pypr:upload-image与pr:upload-video共用同一套 warn, validate, gate on --yes, publish, print markdown 流程AssetKind区分两者可接受的扩展名png/jpg/gif/webp视频另加 mp4/webm、10 MB 上限与 markdown 渲染形态源码中的_open_pull_request在无 PR 时静默返回 None确保上传动作永不被缺失的 PR 或网络阻塞。相关测试见 tools/hogli-commands/hogli_commands/tests/test_upload_image.py 与 test_upload_video.py。本地report.md中路径必须真实可点击报告位于运行目录内因此证据用相对报告文件的真实 Markdown 语法引用 -before在编辑器预览中内联渲染demo reel/demo video点击可打开录制。只有日志这类不应渲染的内容才用裸 code-span 路径。把报告回显到 stdout 或聊天时将相对引用替换为绝对路径终端与 agent 框架会将其转为可点击链接。Before / After 并排对比可见变更的诚实呈现当 PR 有可视变化新 UI 元素、布局位移、颜色/样式更新、明暗主题调整或自动修复循环落地buggy 到 fixed 的状态变化时用并排对比让审阅者一眼看到差异。GitHub 从纯 HTML 表格渲染该布局table tr tdstrongBefore/strongbr/img srcuploaded url buggy width450//td tdstrongAfter/strongbr/img srcuploaded url fixed width450//td /tr /table【免费下载链接】posthog:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.项目地址: https://gitcode.com/GitHub_Trending/po/posthog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门