- 桌面应用
【免费下载链接】browser-laptop
[DEPRECATED] Please see https://github.com/brave/brave-browser for the current version of Brave
本篇技术指南围绕开源仓库 browser-laptop 中的 TESTPLAN.md 展开,系统梳理 Brave 浏览器 0.11.6 版本发布前的手动测试计划:包括 Autofill、Bookmarks、History、Ledger(Brave Payments 账本)四大功能域的验证清单,以及一批跨模块的 Bug 修复回归项。读完本文,你将掌握该版本每个测试区的核心验证要点、与仓库源码(如 app/autofill.js、app/browser/api/ledger.js、各 Reducer 与单元测试)的对应关系,并理解如何借助 package.json 中的测试脚本与 test 目录下的自动化用例,把这份手工清单转化为可重复执行的回归流程。
测试计划的定位与运行前提
TESTPLAN.md 是 0.11.6 开发周期(对应 v0.11.6dev 版本线)的功能验收清单,全部条目采用「勾选清单」形式组织,每个测试项都关联一个具体的 GitHub issue 编号。这实际上是一份发布前的冒烟/回归验证矩阵,覆盖了该版本改动最集中的五个区域。
在执行这份测试计划前,需要先搭建可运行的测试环境。仓库在 package.json 中预置了完整的脚本体系:
| 脚本 | 作用 |
|---|---|
npm test | 运行全部测试(test/**/*Test.js) |
npm run unittest | 先执行 Python 测试工具,再运行单元测试,并注入chrome,DOMParser,XMLSerializer全局对象 |
npm run inttest | 运行集成测试(test/integration/**/*Test.js) |
npm run unittest-cov | 基于 istanbul 生成单元测试覆盖率报告 |
npm run lint | 使用 standard 规范检查代码风格 |
npm start | 以开发模式启动浏览器(--user-data-dir-name=brave-development) |
测试运行器配置集中在 test/mocha.opts:使用 TDD 风格的describe/it接口(--ui tdd)、超时 600 秒、spec 报告器、--check-leaks内存泄漏检查,并通过babel-register直接运行 ES2015+ 源码。因此,仓库中的单元测试(test/unit)、组件测试(test/about、test/navbar-components、test/tab-components等目录)、集成测试(test/integration)与 TESTPLAN.md 中的人工验证项互为补充:人工清单用于验证真实交互与视觉细节,自动化用例用于守护核心逻辑。
Autofill 表单自动填充验证
TESTPLAN.md 将 Autofill 列为第一测试区,验证重点集中在三个方向:弹出面板的样式与位置、表单填充行为本身、数据的增删改持久化。
弹出面板与布局对齐
- 新增 Autofill 数据弹窗的标题对齐与内边距应与"Clear Browsing Data"弹窗一致(#3360、#3369)
- Autofill 上下文菜单位置修正(#3389)
- 表单自动填充弹窗应出现在当前聚焦输入框的下方(#3359)
- Add Funds 弹窗的对齐问题同样在 Ledger 区被反复强调,说明 0.11.6 对弹窗体系做了统一的对齐与裁剪修正
表单填充行为
- 表单自动填充基础支持(#3241、#860)
- 关键交互约束:URL 栏不自动填充表单,只有点击自动补全列表项才触发(#3012、#3225)
- 提交表单时 Brave 偶发 segmentation fault 崩溃(#3398)
数据持久化与编辑
- 编辑 Autofill 条目后未保存、产生空白条目(#3368)
- 新增条目按钮不可用(#3455)
- 已保存的值被清空(#3491)
从源码看,表单数据的读写集中在 app/autofill.js,它直接代理 Electronsession.defaultSession.autofill能力:
// 新增/删除地址 session.defaultSession.autofill.addProfile({...}) session.defaultSession.autofill.removeProfile(guid) // 新增/删除信用卡 session.defaultSession.autofill.addCreditCard({...}) session.defaultSession.autofill.removeCreditCard(guid) // 登录表单的增删改查与清空 session.defaultSession.autofill.addLogin(form) session.defaultSession.autofill.updateLogin(form) session.defaultSession.autofill.removeLogin(form) session.defaultSession.autofill.clearLogins(form) session.defaultSession.autofill.clearAutofillData()测试计划中的"编辑不保存""值被清空"等问题,恰好对应autofillDataChanged(profileGuids, creditCardGuids)通知链路与本地持久化的同步时机,验证时应重点检查修改后触发数据变更事件、刷新页面后数据仍在这两个闭环。
Bookmarks 书签验证
Bookmarks 测试区共有 14 个验证点,覆盖书签条、书签菜单、文件夹、标题回退逻辑四类问题。
书签条与工具栏显隐
- 通过标签页托盘添加书签后应自动打开书签条(#3331)
- 从上下文菜单添加第一个书签时书签工具栏应显示(#3355)
- "自动为第一个书签打开书签工具栏"的既有测试需更新(#2941)
- "仅显示收藏图标"模式下,书签条的 overflowIndicator 与文件夹也应包含在内(#3525、#3529)
标题与元数据
- 取消收藏再重新收藏时书签标题未更新(#3284);添加书签时应正确更新标题并修复渲染(#3339)
- 书签条上悬停提示的书签标题无法更新(#3080)
- 站点无标题时书签应默认使用 URL 作为标题(#3344、#3442)
书签菜单与文件夹
- 书签应像其他浏览器一样在 Bookmarks 菜单中列出(#1993、#3055)
- 允许创建无名称的书签文件夹(#3188、#3190);文件夹名应包含可见文本(#3347、#3412)
- 对话框中的书签文件夹无法删除(#3409)
源码层面,书签的状态管理集中在 app/browser/reducers/bookmarksReducer.js,其配套单元测试 test/unit/app/browser/reducers/bookmarksReducerTest.js 已覆盖"新增书签时前置关闭书签操作""书签数据缺失/键缺失的兜底""删除书签条目并清理缓存""调用bookmarkUtil.closeToolbarIfEmpty关闭空工具栏"等场景。手工验证时重点比对上下文菜单删除路径(#3332)与 reducer 中removeBookmark分支的行为一致性。
History 历史记录验证
History 测试区围绕about:history 页面、快捷键、上下文菜单、清除逻辑展开。
about:history 页面与导航
about:history中混入书签项且无法清除(#3330);书签收藏的 about 页面出现在历史中(#3366)- 书签文件夹出现在浏览历史中(#3453)
- 书签历史条目应在 about:history 中显示上下文菜单(#3336)
- about:history 上下文菜单中多余的分隔符修复(#3444)
- 历史页面整体更新与后续跟进(#3320、#3253、#3459)
- 新增 about:history、设置前进/后退导航上限、更高效的动态菜单(#3206)
快捷键
Ctrl + Y应打开历史记录(#444、#3312)
清除逻辑
- 使用模态框清除历史时应同时清除书签时间戳(#3501)
- 无论页面是否被收藏,清除浏览历史都应生效(#3346)
- 清除历史时应同时清空"Recently Closed"列表(#3287)
历史相关状态由 app/browser/reducers/historyReducer.js 管理,配套 test/unit/app/browser/reducers/historyReducerTest.js 守护基本增删与去重逻辑。手工验证时可结合书签时间戳被一并清除这一细节,确认清除操作作用于统一的时间戳数据源而非仅浏览条目。
Ledger(Brave Payments)验证
Ledger 是 0.11.6 测试计划中条目最多的区域(28 项),这也与 app/browser/api/ledger.js 承担账本客户端初始化、钱包管理、发布者同步、媒体访问追踪等职责相符。测试点可归纳为四类。
钱包创建与 BTC 地址
- Ledger beta 集成(#3195)
- 打包构建中无法创建钱包(#3308)
- 已有比特币钱包地址未显示(#3440)
- Coinbase 注册流程导致浏览器崩溃(#3382)
偏好设置页面(Preferences → Payments)UI
- Add Funds 模态框与钱包地址对齐偏差(#3378、#3267)
- Add Funds 中 Transfer BTC 链接指向错误(#3380)
- 月度预算下拉框缺少单位(#3266);月度预算显示错位(#3476)
- 创建钱包控件的文本与状态在禁用/启用 Brave Payments 时闪烁(#3376)
- 非英语环境下 Ledger 欢迎页出现重复文本(#3379)
- 主账本界面元素应左对齐(#3395、#3396)
- 本地化字符串在文本框中发生裁剪(#3539)
- 合作伙伴 Logo 不应悬浮在 payments 文本下方(#3551)
- Ledger 设置框对齐与样式修正(#3523)
- 用户选择 10、15、20 美元月度值时,应在 Add Funds 对话框中隐藏 Coinbase 按钮(#3565)
- Ledger 列按需右对齐(#3567)
账本同步与余额
- 若已有历史状态,应在客户端被赋值前执行 updateLedgerInfo(#3470)
- 未确认余额修复与展示延迟(#3495、#3480)
- 支持 ledger 发布者规则集中的
new Set(...)语法(#3553、#3545) - 从 ledger-client 错误中恢复时增大退避间隔(#3573)
日志与环境
- Linux 终端上 Ledger 日志频繁且非请求输出(#3452)
- 使用环境变量控制 ledger-* 包选项(#3462)
- Windows 构建体积因 Ledger 增长约 26MB(#3475)
- 杂项小问题(#3554)
对应自动化覆盖可见 test/unit/app/browser/api/ledgerTest.js,其中包含initialize(调用 notifications.init、Payments 关闭/开启时是否检查已验证发布者)、synopsisNormalizer(prune、pinned 项低于 100%)、checkVerifiedStatus、onMediaRequest/processMediaData(媒体访问计量)、onMediaPublisher等大量用例;test/unit/app/browser/reducers/ledgerReducerTest.js 与 app/browser/reducers/ledgerReducer.js 守护状态归约逻辑。手工验证时应优先覆盖钱包创建 → 预算设置 → 媒体访问 → 余额显示的端到端链路。
Fixes:跨模块回归验证区
Fixes 区是最大的一张回归清单,覆盖隐私防护、媒体、UI、构建等杂项,验证时可结合对应源码模块逐项确认。
隐私与广告屏蔽
- 非脚本版 DuckDuckGo 在屏蔽脚本时无法从上下文菜单/地址栏加载(#3285、#3189、#3205);在过滤层拦截非脚本版 DDG(#3293)
- 3rd party 存储未被完全屏蔽(#3214);Filesystem API cookie 未被拦截(#3286)
- Adblock 数据文件应只下载一次(#3222)
- 屏蔽项开启时 Shields 面板显示灰色块(#3307)
- 默认移除占位广告(#3506)
- HTTPS-E 改进:targets.host 应设为 UNIQUE 以自动建索引(#3215);更新到 HTTPS Everywhere 5.2.0(#2581)
- 按 tabId 路由 safebrowsing 与 httpse 消息(#3411)
- 从 URL 栏打开 excellentmovies.net 时未显示警告(#3367)
这些项目与 app/filtering.js、app/adBlock.js、app/httpsEverywhere.js、app/trackingProtection.js 直接相关。对协议/资源类型过滤逻辑的单元覆盖可参考 test/unit/app/browser/ads/adBlockUtilTest.js 对 app/browser/ads/adBlockUtil.js 中shouldDoAdBlockCheck的验证(http/https 允许检查、ftp 不允许、第三方/第一方 URL、YouTube 第一方 host、未知资源类型跳过、主框架第三方 URL 不检查等)。
全屏、标签页与窗口
- 从全屏视频按 Esc 退出后浏览器停留在全屏而非窗口模式(#3338)
- Esc 处理根据权限切换窗口/全屏模式(#3464)
- 关闭标签页导致退出全屏(#3519)
- 标签页专属通知在标签页关闭时应一并关闭(#3169)
- 新增标签页按钮的悬停效果失效(#3297);位置偏高(#3208、#3213)
- 前进/后退导航后标签页显示 URL 而非页面标题(#3200、#3202)
- 标签页图标分辨率不佳(Linux)(#3229、#3230)
地址栏与输入
- 无法处理含空格的 URL(#3167、#3168)
- 未设置默认搜索引擎时地址栏输入被忽略(#3254、#3275)
- "打开文件"操作不应触发默认搜索引擎搜索(#3296)
- 删除文本时导致后退(#3497)
弹窗、认证与密码
- 重定向到 basic auth 时无限挂起(#3354);用户名/密码输入框不显示(#3578)
- 窄窗口下模态框未居中导致裁剪(#3575)
- about:passwords 上无法删除已保存密码(#3481)
- 升级后密码管理器上下文菜单不显示(#3549)
- 默认设置下密码未保存(#3516)
- 更新测试失败(#3337,多次出现)
性能、构建与数据迁移
- Windows 构建需要繁琐变通方案(#3548);开发版本使用不同文件名(#3472);添加 cibuild 脚本(#3507)
- 升级到 0.11.6 失败(#3550);升级前检查数据有效性并在清理后分配默认值(#3537)
- 新配置文件的自动补全数据库初始化失败(#3577)
- 减少不必要的 IPC 消息(#3393);从元数据请求的响应对象中获取状态码(#3407);为站点添加 themeColor 数据(#3406)
- 修复偏好设置面板中按钮因 CSS 被裁剪/变窄(#3563)
- 改进查找栏 UI/UX(#3315)
- 菜单项在启动后应立即可用(#3022);无法从汉堡菜单退出(#3310);按 #1893 布局重排汉堡菜单(#3003)
- 0.11.6-beta3 在 macOS 正常退出时总想上报崩溃(#3394)
- 为 webpack file-loader 添加
.jpg扩展名(#3309);location.reload()不刷新页面标题(#2798);书签与历史管理界面美化(#441);更新本地化文件(#3414) - 华尔街日报市场图问题(#2102)
- 单元测试"带分区固定"用例失败但功能正常(#2942)
- 临时移除插入(ad insertion,对应 #3211)
从手工清单到自动化回归体系
TESTPLAN.md 的价值不仅在于"逐项打勾",更在于它能指导自动化用例的补充方向。当前仓库已具备分层测试结构:
- 单元测试(test/unit):覆盖 Reducer、API 与工具函数,如 bookmarksReducerTest.js、ledgerTest.js、adBlockUtilTest.js;
- 组件/页面测试(test/about、test/navbar-components、test/tab-components):针对 about 页面与 UI 组件的交互测试;
- 集成测试(test/integration):以
npm run inttest驱动,验证跨进程的真实场景; - Vagrant 虚拟机测试(test/vms/vagrant):提供跨平台复现环境(如
npm run vagrant-up-linux)。
实践建议:将 TESTPLAN.md 中可自动化的行为类条目(如 Autofill 数据持久化、书签标题回退、历史清除联动、Ledger 发布者同步)转化为单元/集成用例,将视觉与交互类条目(对齐、裁剪、悬停效果、模态框居中)保留为人工冒烟项,形成"自动化守逻辑、人工验体验"的双轨回归机制。
结语
TESTPLAN.md 是 browser-laptop 0.11.6 发布质量的门禁清单。通过本文的逐区拆解,你可以把这份清单当作功能域的验收地图:Autofill 关注弹窗与持久化、Bookmarks 关注标题与工具栏联动、History 关注清除与上下文菜单、Ledger 关注钱包与余额同步、Fixes 关注回归面覆盖。配合 package.json 的测试脚本与 test 目录的自动化用例,即可在开发或测试环境中高效完成该版本的验收工作。
- 桌面应用
【免费下载链接】browser-laptop
[DEPRECATED] Please see https://github.com/brave/brave-browser for the current version of Brave
相关推荐
brave/browser-laptop快捷键测试:自动化验证与冲突检测
brave/browser laptop快捷键测试:自动化验证与冲突检测 快捷键系统架构解析 Brave浏览器的快捷键系统基于Electron框架实现,核心逻辑
桌面应用Brave/browser-laptop多语言测试:自动化与人工验证结合
Brave/browser laptop多语言测试:自动化与人工验证结合 多语言测试是确保Brave浏览器在全球范围内提供一致用户体验的关键环节。本文将详细介绍
桌面应用AI内容魔方:技术架构深度解析与高性能AI开发实践指南
AI内容魔方:技术架构深度解析与高性能AI开发实践指南 AI内容魔方是一个精心策划的AI开发资源聚合平台,为开发者提供从本地部署到云端服务、从基础模型到智能体开
文档知识库人工智能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考