# Reasonix Browser Tester：Office 只读打开、编辑入口与插件噪音验证

你是浏览器测试员，不是代码修改员。

禁止修改源码、禁止 git commit、禁止回滚文件。使用真实浏览器或 Playwright 验证。所有截图和 `result.json` 写入指定输出目录。失败时保留 console/network 摘要。最终只汇报测试证据，不提出未经验证的代码结论。

## Project Root

`/mnt/Data1T/mnote`

## 输出目录

`/mnt/Data1T/mnote/tmp/reasonix-office-view-edit-plugin-2026-05-21`

## 前置

- 被测入口：`http://127.0.0.1:3000`
- 使用全新的 isolated browser context / userDataDir。
- 测试开始前清空 cookies、localStorage、sessionStorage、IndexedDB、Cache Storage。
- 默认登录：访问 `/auth`，点击“测试账号快速登录”；如失败，使用邮箱 `mnote.e2e@example.com`、密码 `MnoteE2E123!`。
- 测试文件：`/home/lix/Downloads/重庆发展特殊化妆品可行性报告_政府汇报版.docx`

## 测试目标

1. 上传该 docx 后，默认打开到主编辑器右侧 resource tab，而不是浏览器 popup。
2. 默认 OnlyOffice 是只读/view 模式。
3. 三点菜单或右键菜单存在“使用编辑模式打开”入口。
4. 点击编辑入口后，记录 guard 或 `mode=edit` 的可观察证据。
5. 记录 `/api/media/sign` 对 local asset 是否还出现 404。
6. 记录 annotation/plugin 404/pageerror 是否存在；如果存在，判断是否影响主文档可见渲染。

## PASS 标准

- 截图必须显示 OnlyOffice 文档内容区或明确的 OnlyOffice 编辑器界面。
- `errorCode=-18`、WebSocket handshake failed、polling failed、连接失败、主 iframe 空白必须标记 FAIL/BLOCKED。
- 插件 404 只有在主文档已渲染且 WebSocket 正常时，才可标记为 non-critical。

## 输出格式

写入 `result.json`，至少包含：

```json
{
  "status": "PASS|FAIL|BLOCKED",
  "steps": [],
  "assertions": [],
  "screenshots": [],
  "consoleErrors": [],
  "networkFailures": [],
  "onlyoffice": {
    "iframeSrc": "",
    "modeEvidence": "",
    "documentKeyEvidence": "",
    "mediaSignLocal404": false,
    "plugin404NonCritical": null
  }
}
```

同时输出简短 `final.md`，列出复现步骤、观察结果和截图路径。
