源站试验与实验性 Web 平台功能
用明确的注册范围、运行时能力判断、回退和回滚评估源站试验。
BotBrowser Team
Origin Trial 是受范围限制的实验,不是普遍支持。记录 origin、token、渠道、过期时间、任务、回退和回滚。实验 API 不用于推断身份或设备类别。
注册范围
阅读 Chrome Origin Trials 指南 与 MDN Web API。一个 origin 的 token 不证明子域名、iframe 或其他浏览器支持;https://app.example 页面不会自动注册另一个嵌入页面。
运行时检测
使用前确认 API 能力。区分 token 缺失、权限拒绝、策略阻止、调用拒绝和可见确认。不要解析 user-agent。
决策表
| 观察 | 决定 | 可见结果 |
|---|---|---|
| token 与方法有效 | 尝试一次 | 宣布进度 |
| token 缺失或过期 | 使用回退 | 保留任务 |
| 权限拒绝 | 解释并回退 | 保留控制权 |
| 调用拒绝 | 分类并停止隐式重试 | 显示恢复 |
| Promise 完成 | 检查应用确认 | 显示完成 |
失败 fixture
async function fixture() {
const host = document.createElement('div');
host.innerHTML = '<p id="status"></p><button id="fallback" hidden>使用回退</button>';
document.body.append(host);
try {
const ok = typeof navigator.share === 'function';
const state = ok
? await navigator
.share({ title: '合成试验', url: '/fixture' })
.then(() => 'completed')
.catch(() => 'failed')
: 'missing';
host.querySelector('#status').textContent = state === 'completed' ? '已完成' : '使用回退';
host.querySelector('#fallback').hidden = state === 'completed';
return state;
} finally {
host.remove();
}
}
注册状态 区分“未注册”“可用”“拒绝”“失败”和“完成”。缺少或过期的 token 应直接选择稳定路径,不进行隐藏重试。
上下文与用户手势 如果功能要求用户手势,就把手势写入 fixture。对于 iframe,要记录父 origin、允许列表和权限策略。
发布与维护
用同一合成任务比较稳定路径和实验路径。检查过期、权限、iframe、无障碍、焦点和回退文案。实验结束后移除 token,只保留简短回执。
BotBrowser
BotBrowser 可为授权 Origin Trial 流程提供受控 context 并重复检查回退。它不签发 token、不授予权限、不认证实验,也不能证明上游服务完成。参见隔离文档。
将实验作为产品变更评审
实验评审
评审应能看到用户任务、稳定路径、实验路径、token 负责人和移除日期,而不需要打开私有控制台。
分离证据
浏览器方法存在或 Promise 完成只说明浏览器状态。应用可见确认或合成服务回执必须单独记录。
权限与无障碍
把拒绝和取消作为正常分支测试。回退操作需要可访问名称、键盘焦点、状态播报,并保留已输入的数据。
可逆变更
修改 token 或浏览器渠道前保留稳定路径。回滚应停用注册,不删除回退实现或任务数据。
支持记录
保留功能、origin 类别、负责人标签、过期时间、渠道、检测状态、可见结果、回退结果和清理状态,不保存 token 值。
可观测注册 配置或构建清单标签可以标识实验来源,但不能暴露 token 值。
缺少标签时应视为未注册,不能因为构造函数存在就推断已注册。
origin 边界
分别测试产品支持的顶层页面、iframe 和本地测试 host。
app.example 的 token 不证明 admin.example 或客户嵌入页面已获授权。
应用结果
即使接收服务不可用,浏览器也可能完成 Promise。
在声明任务完成前等待可见确认、幂等状态或服务回执。
渠道比较
比较浏览器渠道时保持应用构建和 token 范围不变。
比较同一任务、回退文案、焦点顺序和清理结果;版本差异只是调查线索。
精简 fixture
缺 token、过期 token、权限拒绝和调用拒绝四个案例覆盖主要边界。
只有在对应受支持用户流程且结果可观察时才新增案例。
实验结束
结束实验前从配置中移除 token,并确认稳定路径仍然可用。
在支持期保留简短的合成回执,然后按常规策略过期相关产物。
另见 浏览器 API 回退指南 与 WPT 信心指南。