Skip to content

fix: 完成八套样式的私有浏览器验收与回归修复 - #1

Draft
gongfpp wants to merge 20 commits into
dot/saved-reference-recoveryfrom
dot/atlas-private-browser-qa
Draft

gongfpp wants to merge 20 commits into
dot/saved-reference-recoveryfrom
dot/atlas-private-browser-qa

Conversation

@gongfpp

@gongfpp gongfpp commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

干净发布交接进行中

用户已批准项目改动合并 main 并更新现有部署。此 PR 保留私有 QA 历史,当前 head 是只负责验收的 runner 56fdbc8878a244517f3b14e6de3ab2e37cf35b89,不能直接合并其 QA-only 流程。

干净产品/回归候选 d5ee5cdeaf272685783ca78e6736807b8d293a30(tree cab09fef234489e659593c8d71df93202f31100d,父提交为原任务 3a4a5e0)已完成本地常规门禁和产物隔离审阅,正在独立三引擎私有验证。候选暂时没有发布 ref;通过后会用干净替代 PR 合并 main,再将本 PR 如实关闭为被替代,保留此分支和全部历史,不把本 PR 说成直接 merged。

以下为固定历史源码的回执,不能代替干净新树的验收;旧文中的暂停发布描述属于当时边界,已被上述最新授权取代。

保留的 b71 私有三引擎验收回执

历史已验收源码 b71ae596658489940049e768f502bf63842c7b49,源码树 078fc21a4a04e69330af82915330bb2ecb35122f,父提交 3b18e7b581205d5f5b540bb1803ac366e0595fcd。同一提交的 Actions 37331133169 已完整通过。

原任务分支 dot/saved-reference-recovery 保留在 3a4a5e087d6a740cc63df3db18a66a50aad68ee2;main 保留在 3222ac19f142b6043fa63dfe5a1400ae52ca1cc4。仓库仍为私有;本 PR 仍为草稿,没有合并、删除 ref 或公开部署。当前源码的 部署预览运行 为 skipped。

同一源码的真实执行范围

  • 336/336 单元测试;Astro check 0 errors / 0 warnings(114 hints);lint、398 页完整构建、搜索 Top-3 30/30 均通过。
  • Chromium 153.0.8010.12:21/21 Tooltip 视口门禁,85/85 独立重复交互,422/422 全量浏览器案例。
  • Firefox 155.0:16/16 代表组合,135/135 聚焦交互,18/18 历史失败重复回归,422/422 全量案例。
  • WebKit 26.6:16/16 代表组合,135/135 聚焦交互,18/18 历史失败重复回归,422/422 全量案例。
  • 每份报告均为 0 unexpected、0 skipped、0 flaky,重试配置为 0。18 项重复指六项历史失败各独立执行三次;不把重复次数混入全量计数。
  • 每个引擎检查 46 组件 × 8 风格 × 中英双语 × 390/1280 宽度,共 1,472 次风格选择。触发器实际聚焦、样式切换、页面宽度及相关交互均由真实引擎执行。
  • 使用 GitHub Actions Ubuntu 24.04、Node 22.23.3、锁定 Playwright 1.63.0 的官方构建。WebKit 完整套件用时约 35.7 分钟,任务正常完成,没有靠增加案例级超时或跳过失败通过。

视觉核验与可追溯证据

三个引擎各有 128 张代表截图:按钮、输入框、卡片、Tooltip × 8 风格 × 2 语言 × 2 宽度,共 384 张。每个引擎的 96 张非 Tooltip 图与其已审阅基线逐张 RGB 像素相同;32 张 Tooltip 通过最终联系表、原图及 RGB 对照复核。Chromium 的四张 Retro-Futurism 取景变化已检查;Firefox 32 张与上一轮完全相同。WebKit 32 张与上一轮完全相同,复查四张联系表及玻璃、Swiss 的八张原图;气泡、文字和触发器完整,保留下述非阻塞玻璃材质差异。

Artifact 中的 commit/tree/parent、浏览器版本、JSON 结果、截图 SHA-256 均对应上述 b71 提交。三份 ZIP digest 和清单内共 1,400 个 PNG(含副本与布局证据)逐一校验通过;它们不是 1,400 张不同的代表截图。

产品修复

  1. 窄屏标题与收藏按钮允许合理换行,覆盖收藏、撤销、存储失败及长标题。
  2. Tooltip 修复 Esc 后悬停状态残留,保留鼠标、键盘焦点和触屏点按的独立开关行为。
  3. Tooltip 按上下及水平视口边界翻转、限制尺寸,在滚动、resize 和内容尺寸变化时重测;使用原生 manual-popover 顶层,保留 DOM 归属与连续悬停间隔。
  4. WebKit 初次离屏聚焦时,暂停浮层不再保留能扩大文档宽度的隐藏 max-content 布局盒;回到视口后恢复原始 display 并测量。保留聚焦后立即宽度断言。
  5. 玻璃按钮使用可读的深色文字,保持材质与布局;渐变色标静态对比回归至少 4.5:1,不代表全站 WCAG 认证。
  6. 仅 Swiss Tooltip 补白色表面,防止底层标题穿透。
  7. 默认构建为 SolutionLab、ViewportPreview、DemoMount 三个注册器采用预加载兼容策略,解决 WebKit 失败模块在普通 reload 后未重新请求的恢复问题。

生产演示计时未改。测试用可控时钟检查原计时断言,并在最多 2.5 秒内观察原生滚动几何稳定,再执行一次正常点击或悬停;未使用强制点击、DOM 模拟点击、关闭平滑滚动、改变原 abort 故障或放宽断言。

预加载策略的 A/B 与取舍

保留 3b18e7b 原故障 A/B:未启用策略的基线 23/24、候选 24/24。原 abort → unroute → 点击原重载按钮及恢复断言不变。候选重载后同两份失败 input chunk 重新请求并返回 200;基线没有重发。基线失败仍使历史 job 失败,没有 continue-on-error。

策略仅取消三个源注册器的 JS 动态预加载,保留懒加载、其他 JS/HTML 预加载及 Vite CSS 行为。使用 bundler 正式 augmentChunkHash hook 的版本盐,不手工改写已定名资产。构建对照只更名三个注册器 JS,没有同名异内容资产;核心和 input 实现不变,总 JS 减少 34,926 字节。

各三次冷加载采样,在人工 120ms/本地 JS 请求延迟下,就绪中位数为 SolutionLab 1257→1705ms、ViewportPreview 981→1142ms、DemoMount 2290→1926ms;请求数 23→19、15→11、14→12。样本少且部分区间重叠,不作公网性能保证;保留可能增加首次加载往返的取舍,优先可靠恢复。当前默认配置已经启用策略,复现旧基线须检出历史 3b18e7b,不能把当前默认构建当旧基线。

历史回执保留

  • 首次 Chromium 验收 e4f36d8beea1f6b71503ca3ef56fa068658b4012,tree 872e981d8cf793cd2c282a0eb0ad79a02afbfa82:Actions、artifact,到期 2026-10-12 12:31:57 UTC;332 单元、19 视口、85 重复、420 全量及 128 视觉图通过。
  • 50a3f868 的 首次离屏修复后全量:Chromium/Firefox 全过,WebKit 416 通过、6 失败。五项涉及原生滚动中的移动目标点击前提,另一项为真实模块恢复问题;原失败记录不删除。
  • 3b18e7b 的 私有 A/B 保留失败基线。上述历史结果不替代当前 b71 的三引擎完整验收。

QA 隔离与合并边界

本 PR 包含 QA 专属流程,不能直接作为正常生产流程合并。只有精确 QA 分支 push 可测试,job 再核验私有仓库/账号/ref;令牌 contents:read,checkout 不持久化凭据。两个部署 workflow 的全部 job 显式关闭;全部三份 workflow 已审阅,没有 PR、pull_request_target 或 workflow_run 发布入口。分析/日志关闭,浏览器请求仅允许本机 127.0.0.1:4337,service worker 被阻断,未向 Giscus 提交内容。

合并与发布范围待澄清。已准备仅本地的干净交接清单:从原任务提交构造新树,保留产品与回归依赖,另行调整正常 CI,并将 QA 专用 workflow/config/证据说明从新树排除;原 QA 分支、提交、失败证据保持原样。原仓库的非 main push 会自动公开发布 preview,因此不能为准备合并先创建未保护的新分支。任何新树需重新验证,不能挪用 b71 的绿色结果。

已知边界

Linux Playwright WebKit 不等于 Apple Safari 产品、macOS 或 iOS 真机;触屏为模拟,未覆盖真实 iOS/Android、第三方留言服务、公开部署与发布后验证。无原生 Popover 的绝对定位回退有单元几何回归,但未证明跨祖先裁剪/层叠达到相同效果。

部分 Chromium/Firefox 390px 截图把触发器或示例下部留在屏幕下沿之外,提示气泡完整;这些图片不能单独证明整个触发器完整可见,交互/几何结论来自独立用例。WebKit Glassmorphism 存在淡淡底层文字/分隔线透出这一非阻塞材质差异,前景可读,不声称三引擎视觉完全等价。

仅调整已授权重检查触发器及手动源码引用;保留全部 job、校验命令、权限和证据步骤。本次不运行 Actions,不修改游戏运行代码、素材、公开发布仓或安全扫描。配置已通过本地结构检查及独立审查。

源仓混合发布入口改手动后,自动产物更新或镜像同步不再发生;本地验证后的独立普通发布仍需另外完成,不能把本配置提交当作游戏上线。

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant