浏览器 API 兼容数据与功能回退
使用公开兼容数据和运行时能力检测设计可靠的功能回退。
公开数据可以帮助选择测试矩阵,但不保证每个浏览器的 API 完全相同。运行时检测能力并提供可用回退。API 存在不代表用户身份或设备类别。
数据与能力检测
查看 MDN Browser Compatibility Data 及 Chrome 能力检测指南。在调用前确认所需能力,处理拒绝和异常,不解析 user-agent。
决策表
| 观察 | 决定 | 结果 |
|---|---|---|
| 方法存在 | 尝试主路径 | 显示进度 |
| API 缺失 | 使用回退 | 保留任务 |
| 权限拒绝 | 提供回退 | 保留控制权 |
| 调用失败 | 分类失败 | 不隐藏重试 |
| 调用完成 | 验证应用结果 | 确认可见结果 |
失败 fixture
const supported = typeof navigator.share === 'function';
const host = document.createElement('div');
host.innerHTML = '<p id="status"></p><button id="fallback" hidden>使用备用操作</button>';
document.body.append(host);
const result = supported
? await navigator
.share({ title: '合成项目', url: '/fixture' })
.then(() => 'completed')
.catch(() => 'rejected')
: 'missing';
const status = document.querySelector('#status');
if (result === 'missing' || result === 'rejected') {
document.querySelector('#fallback').hidden = false;
status.textContent = '请使用可用的备用操作';
}
if (result === 'completed') status.textContent = '已分享';
console.assert(
status.textContent.length > 0 && (result === 'completed' || !document.querySelector('#fallback').hidden)
);
host.remove();
在合成页面测试方法缺失和调用拒绝。BotBrowser 可提供受控 context 运行授权流程,但不保证 API、权限或回退设计。
维护与验证
浏览器版本、权限或安全上下文变化后,重新核对公开数据,并记录来源日期与观察状态。
主路径失败时保留用户输入,确保备用操作可以用键盘完成,并说明为何显示该操作。
BotBrowser 可为授权流程提供受控浏览器上下文和可重复的合成检查,但不保证 API 可用,也不会授予权限。
将浏览器结果与服务器结果分开记录;调用成功不等于业务操作完成。
相关示例
还可阅读 WebDriver BiDi 事件与浏览器自动化 以及 Credential Management 登录体验。
公开数据用于选择测试矩阵,调用前的能力判断用于选择实际路径。
断言应描述用户可见结果和观察边界,避免把一次合成结果当成普遍保证。
记录每个备用路径的原因和复核日期,避免保存敏感数据。
浏览器观察结果不代表服务器已保存记录,应确认应用的可见状态。
复核时保留第一个有意义的失败,区分超时与能力缺失,并说明仍可用的界面控件。
最终复核应记录浏览器上下文、权限状态、可见结果和备用操作,以便在不使用私有数据的情况下复现决定。
总结
文档应保留能力与结果之间的边界。
说明备用操作是否保留了用户输入,并将说明放在被测试控件附近。
清楚记录可见状态和下一步操作。
来源
#浏览器 API#兼容数据#能力检测#功能回退