{"case_id": "C01", "name": "首屏加载与分享版提示", "timestamp_utc": "2026-11-07T09:18:36.720438+00:00", "steps": ["session create", "action open-url", "action eval (body.innerText)", "action screenshot"], "expected": "显示引导页与分享版 Key 提示，页面无 JS 报错", "observed": {"body_head": "知行\n学业助手 · V1\n未完成画像\n完善你的学业信息 🎓\n这是「知行」的唯一信息入口。填一次，下面的年份 / 学校 / 专业 / 办学类型会自动同步到 AI 助手、今日路线图、培养方案和知识库，不用再到处重填。填好后会自动联网查你的培养方案与升学策略。\n入学年份 *\n请选择\n2027 级（未入学）\n2026 级（大一）\n2025 级（大二）\n2024 级（大三）\n2023 级（大四）\n2022", "visible_page": "page-onboard", "js_errors": 0}, "status": "pass", "latency_ms": 9622, "screenshot": {"file": "evidence/case-01-onboard.png", "bytes": 142251}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C02", "name": "点「稍后再说」跳过引导进入今日页", "timestamp_utc": "2026-11-07T09:18:45.359482+00:00", "steps": ["action click button[onclick*=today]", "action eval (visible pages)", "action screenshot"], "expected": "切到今日页且渲染出可见内容", "observed": {"click": {"rc": 0, "ok": true, "ms": 491, "err": ""}, "visible_page": "page-today", "body_head": "知行\n学业助手 · V1\n未完成画像\n早上好\n11月7日 ·\n📋 还差你的 入学年份、学校、专业 没填，AI 现在只能基于你主动发的内容做事，没法按真实课表/培养方案精准推送。去完善画像\n🍅 专注番茄钟\n选个任务，定个时长，专心 25 分钟\n开始专注\n0\n紧急\n0\n注意\n0\n从容\n今天\n·\n日\n·\n一\n·\n二\n·\n三\n·\n四\n·\n五\n·\n📜 今日习惯 ", "body_len": 312, "js_errors": []}, "status": "pass", "latency_ms": 8638, "screenshot": {"file": "evidence/case-02-skip-onboard.png", "bytes": 89577}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-today", "name": "导航跳转：today", "timestamp_utc": "2026-11-07T09:18:57.529329+00:00", "steps": ["action click button[data-p=today]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-today", "observed": {"click": {"rc": 0, "ok": true, "ms": 487, "err": ""}, "visible_page": "page-today", "body_head": "知行\n学业助手 · V1\n未完成画像\n早上好\n11月7日 ·\n📋 还差你的 入学年份、学校、专业 没填，AI 现在只能基于你主动发的内容做事，没法按真实课表/培养方案精准推送。去完善画像\n🍅 专注番茄钟\n选个任务，定个时长，专心 25 ", "body_len": 312, "js_errors": []}, "status": "pass", "latency_ms": 12169, "screenshot": {"file": "evidence/case-03-nav-today.png", "bytes": 89577}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-tasks", "name": "导航跳转：tasks", "timestamp_utc": "2026-11-07T09:19:07.613721+00:00", "steps": ["action click button[data-p=tasks]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-tasks", "observed": {"click": {"rc": 0, "ok": true, "ms": 2473, "err": ""}, "visible_page": "page-tasks", "body_head": "知行\n学业助手 · V1\n未完成画像\n新建任务\n载入演示数据\n任务内容 *\n课程 *\n截止日期 (DDL) *\n计划哪天做（可选）\n添加任务\n暂无任务\n入门\n今日\n任务\n资料\n知识\nAI 助手\n我的\n🎙️", "body_len": 103, "js_errors": []}, "status": "pass", "latency_ms": 10084, "screenshot": {"file": "evidence/case-03-nav-tasks.png", "bytes": 55971}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-library", "name": "导航跳转：library", "timestamp_utc": "2026-11-07T09:19:13.457237+00:00", "steps": ["action click button[data-p=library]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-library", "observed": {"click": {"rc": 0, "ok": true, "ms": 1487, "err": ""}, "visible_page": "page-library", "body_head": "知行\n学业助手 · V1\n未完成画像\n资料库\n课件、作业要求、板书照片……扔进来，需要时发给 AI 拆解。文件只存在你自己的设备上。\n＋ 上传课件 / 截图\n全部类型\n图片\n文档\n还没有资料。作业截图、老师要求、课件，都扔进来。\n入门\n今日", "body_len": 142, "js_errors": []}, "status": "pass", "latency_ms": 5843, "screenshot": {"file": "evidence/case-03-nav-library.png", "bytes": 50124}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-kb", "name": "导航跳转：kb", "timestamp_utc": "2026-11-07T09:19:16.193710+00:00", "steps": ["action click button[data-p=kb]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-kb", "observed": {"click": {"rc": 0, "ok": true, "ms": 413, "err": ""}, "visible_page": "page-kb", "body_head": "知行\n学业助手 · V1\n未完成画像\n🧠 知识库\n这是「知行」的长期记忆（RAG），分 学习 与 生活 两类：学习收录经典书的思维习惯；生活收录实验室安全、宿舍防火、反诈、心理、健康等上大学用得上的内容。AI 回答会自动检索相关条目作为参", "body_len": 11040, "js_errors": []}, "status": "pass", "latency_ms": 2736, "screenshot": {"file": "evidence/case-03-nav-kb.png", "bytes": 225694}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-ai", "name": "导航跳转：ai", "timestamp_utc": "2026-11-07T09:19:18.863944+00:00", "steps": ["action click button[data-p=ai]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-ai", "observed": {"click": {"rc": 0, "ok": true, "ms": 397, "err": ""}, "visible_page": "page-ai", "body_head": "知行\n学业助手 · V1\n未完成画像\n⚠️ 画像未完整（AI 现在不认识你）\n学校 / 专业 / 年级还没填全，AI 只能基于你当次发的内容聊，无法按你的真实情况个性化。补全后才会自动联网查你的培养方案。\n去填画像\n🤖 规则助手已自动启用", "body_len": 438, "js_errors": []}, "status": "pass", "latency_ms": 2670, "screenshot": {"file": "evidence/case-03-nav-ai.png", "bytes": 113249}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-me", "name": "导航跳转：me", "timestamp_utc": "2026-11-07T09:19:21.582513+00:00", "steps": ["action click button[data-p=me]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-me", "observed": {"click": {"rc": 0, "ok": true, "ms": 381, "err": ""}, "visible_page": "page-me", "body_head": "知行\n学业助手 · V1\n未完成画像\n基本信息（AI 推送和任务规划都基于这里）\n填一次后，AI 会自动联网查你这所大学 + 这个专业的 培养方案 和 保研策略，并把核心要点存进资料库、纳入任务规划。\n未填年份\n未填学校\n未填专业\n未填办学", "body_len": 1321, "js_errors": []}, "status": "pass", "latency_ms": 2718, "screenshot": {"file": "evidence/case-03-nav-me.png", "bytes": 179943}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C03-onboard", "name": "导航跳转：onboard", "timestamp_utc": "2026-11-07T09:19:28.390829+00:00", "steps": ["action click button[data-p=onboard]", "action eval (visible pages)", "action screenshot"], "expected": "显示 page-onboard", "observed": {"click": {"rc": 0, "ok": true, "ms": 389, "err": ""}, "visible_page": "page-onboard", "body_head": "知行\n学业助手 · V1\n未完成画像\n完善你的学业信息 🎓\n这是「知行」的唯一信息入口。填一次，下面的年份 / 学校 / 专业 / 办学类型会自动同步到 AI 助手、今日路线图、培养方案和知识库，不用再到处重填。填好后会自动联网查你的培养", "body_len": 675, "js_errors": []}, "status": "pass", "latency_ms": 6808, "screenshot": {"file": "evidence/case-03-nav-onboard.png", "bytes": 142251}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C04", "name": "载入演示数据", "timestamp_utc": "2026-11-07T09:19:33.491138+00:00", "steps": ["action click nav tasks", "action click loadDemo()", "action screenshot"], "expected": "页面内容随演示数据变化", "observed": {"click": {"rc": 0, "ok": true, "ms": 484, "err": ""}, "changed": true, "after_head": "知行\n学业助手 · V1\n未完成画像\n新建任务\n载入演示数据\n任务内容 *\n课程 *\n截止日期 (DDL) *\n计划哪天做（可选）\n添加任务\n进行中（8）\n第三章习题 P87 1-10 题\n高等数学\n紧急\n推测\n11月8日 · 剩2天\n✕\n口语展示：3分钟话题陈述稿\n大学英语\n紧急\n推测\n11月9日 · 剩3天\n✕\n实验报告三（循环结构）\nC语言程序设计\n注", "js_errors": []}, "status": "pass", "latency_ms": 5100, "screenshot": {"file": "evidence/case-04-demo-data.png", "bytes": 121397}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C05", "name": "任务搜索输入过滤", "timestamp_utc": "2026-11-07T09:19:38.780078+00:00", "steps": ["action fill #taskSearch=高数", "action eval", "action screenshot"], "expected": "按关键词过滤且 UI 有反馈", "observed": {"fill": {"rc": 0, "ok": true, "ms": 1364, "err": ""}, "body_head": "知行\n学业助手 · V1\n未完成画像\n新建任务\n载入演示数据\n任务内容 *\n课程 *\n截止日期 (DDL) *\n计划哪天做（可选）\n添加任务\n没有匹配「高数」的任务\n入门\n今日\n任务\n资料\n知识\nAI 助手\n我的\n🎙️\n已载入 8 条演示任务", "js_errors": []}, "status": "pass", "latency_ms": 5288, "screenshot": {"file": "evidence/case-05-task-search.png", "bytes": 56768}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C06", "name": "填写并添加任务（仅临时会话本地存储）", "timestamp_utc": "2026-11-07T09:19:53.157617+00:00", "steps": ["action fill #f_title/#f_course/#f_ddl", "action click addTask()", "action eval", "action screenshot"], "expected": "新任务出现在列表中", "observed": {"fills": [{"rc": 0, "ok": true, "ms": 425, "err": ""}, {"rc": 0, "ok": true, "ms": 1429, "err": ""}, {"rc": 0, "ok": true, "ms": 3418, "err": ""}, {"rc": 0, "ok": true, "ms": 3438, "err": ""}], "click": {"rc": 0, "ok": true, "ms": 1491, "err": ""}, "task_appeared": true, "body_head": "知行\n学业助手 · V1\n未完成画像\n新建任务\n载入演示数据\n任务内容 *\n课程 *\n截止日期 (DDL) *\n计划哪天做（可选）\n添加任务\n进行中（9）\n第三章习题 P87 1-10 题\n高等数学\n紧急\n推测\n11月8日 · 剩2天\n✕\n口语展示：3分钟话题陈述稿\n大学英语\n紧急\n推测\n11月9日 · 剩3天\n✕\n实验报告三（循环结构）\nC语言程序设计\n注意\n推测\n11月10日 · 剩4天\n✕\nUnit 3 单词自测\n大学英语\n注意\n", "js_errors": []}, "status": "pass", "latency_ms": 14377, "screenshot": {"file": "evidence/case-06-add-task.png", "bytes": 122617}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C07", "name": "知识页搜索与分类切换", "timestamp_utc": "2026-11-07T09:20:02.548465+00:00", "steps": ["action click nav kb", "action fill #kbSearch=习惯", "action click #kbTabStudy", "action screenshot"], "expected": "搜索与分类均有响应", "observed": {"fill": {"rc": 0, "ok": true, "ms": 1394, "err": ""}, "tab_click": {"rc": 0, "ok": true, "ms": 1454, "err": ""}, "after_search": "知行\n学业助手 · V1\n未完成画像\n🧠 知识库\n这是「知行」的长期记忆（RAG），分 学习 与 生活 两类：学习收录经典书的思维习惯；生活收录实验室安全、宿舍防火、反诈、心理、健康等上大学用得上的内容。AI 回答会自动检索相关条目作为参考。\n全部\n📚 学习\n🏠 生活\n📚 按书筛选（全部 33 本）", "after_tab": "知行\n学业助手 · V1\n未完成画像\n🧠 知识库\n这是「知行」的长期记忆（RAG），分 学习 与 生活 两类：学习收录经典书的思维习惯；生活收录实验室安全、宿舍防火、反诈、心理、健康等上大学用得上的内容。AI 回答会自动检索相关条目作为参考。\n全部\n📚 学习\n🏠 生活\n📚 按书筛选（全部 33 本）", "js_errors": []}, "status": "pass", "latency_ms": 9390, "screenshot": {"file": "evidence/case-07-kb.png", "bytes": 223249}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C08", "name": "AI 助手在未配置 Key 时发送消息", "timestamp_utc": "2026-11-07T09:20:07.537717+00:00", "steps": ["action click nav ai", "action fill #chatInput", "action click .sendbtn", "action screenshot"], "expected": "给出清晰的前端提示，不白屏、不静默失败", "observed": {"fill": {"rc": 0, "ok": true, "ms": 332, "err": ""}, "click": {"rc": 0, "ok": true, "ms": 391, "err": ""}, "changed": true, "after_head": "知行\n学业助手 · V1\n未完成画像\n⚠️ 画像未完整（AI 现在不认识你）\n学校 / 专业 / 年级还没填全，AI 只能基于你当次发的内容聊，无法按你的真实情况个性化。补全后才会自动联网查你的培养方案。\n去填画像\n🤖 规则助手已自动启用\n不联网、不消耗 token、不需要 Key，能陪你聊：今天该做什么 / 怎么规划 / 保研留学 / 拆作业怎么走。我已经根据你的任务和画像准备好本地规则回复了。\n想解锁「看图识作业、长文理解、自动归纳速记/纪要」？在「我的 → AI 能力配置」填一个智谱 GLM-4-Flash ", "js_errors": []}, "status": "pass", "latency_ms": 4989, "screenshot": {"file": "evidence/case-08-ai-no-key.png", "bytes": 150079}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C09", "name": "速记工具浮动菜单展开与收起", "timestamp_utc": "2026-11-07T09:20:10.658218+00:00", "steps": ["action click #fab", "action eval (fabMenu display)", "action click #fab", "action eval"], "expected": "展开后可见，再次点击收起", "observed": {"click_open": {"rc": 0, "ok": true, "ms": 382, "err": ""}, "click_close": {"rc": 0, "ok": true, "ms": 370, "err": ""}, "display_after_open": "flex", "display_after_close": "none", "js_errors": []}, "status": "pass", "latency_ms": 3120, "screenshot": {"file": "evidence/case-09-fab.png", "bytes": 173970}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C10", "name": "我的页主题切换", "timestamp_utc": "2026-11-07T09:20:13.977502+00:00", "steps": ["action click nav me", "action click #themeBtn", "action eval (theme)", "action screenshot"], "expected": "主题状态发生可观测变化", "observed": {"click": {"rc": 0, "ok": true, "ms": 410, "err": ""}, "before": "default", "after": "dark", "js_errors": []}, "status": "pass", "latency_ms": 3319, "screenshot": {"file": "evidence/case-10-theme.png", "bytes": 157145}, "target_url": "https://[站点A·域名已脱敏]/"}
{"case_id": "C11", "name": "移动端视口 375x812 横向溢出检查", "timestamp_utc": "2026-11-07T09:20:22.404035+00:00", "steps": ["session create --window-size 375,812", "action open-url", "action eval (viewport metrics)", "action screenshot"], "expected": "无横向溢出（scrollWidth <= innerWidth）", "observed": {"metrics": "{\"innerWidth\":375,\"scrollWidth\":360,\"innerHeight\":812,\"scrollHeight\":1088}", "horizontal_overflow": false}, "status": "pass", "latency_ms": 5176, "screenshot": {"file": "evidence/case-11-mobile.png", "bytes": 100741}, "target_url": "https://[站点A·域名已脱敏]/"}
