test: stabilize conversation capture checks in release CI
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
Focus the real Electron window before native keyboard input and give the two long-history App scenarios the existing 15-second per-test allowance. Keep all capture, source navigation, persistence, and keyboard assertions. Record the initial Linux CI failures and the revised local validation: 5317 passed, 79 skipped, with typecheck, lint, and release notes verified. Product behavior and approved Desktop/Agent 0.15.0 notes are unchanged.
This commit is contained in:
@@ -61,6 +61,28 @@ Host Key、加密凭据连接。重新捆绑当前源码的 Agent CLI、daemon
|
||||
后续均使用等待退出并记录脱敏输出的启动器;本轮探针 Electron 进程已退出。
|
||||
本地诊断证据在临时 `opencode/release-015-host/`,不提交脚本、日志或凭据。
|
||||
|
||||
## 首次候选 CI 与测试修正
|
||||
|
||||
用户批准的首次候选 `5a6ba6c14f5c58f3da5e9afe281b18e0cbdb1ae8`
|
||||
已推送至 `origin/main` 和 `github/main`,未创建两个发布标签。
|
||||
|
||||
- [Agent CI 36329271991](https://github.com/mesalogo/goodbuddy/actions/runs/36329271991)
|
||||
源码验证及 Linux x64、Linux arm64、Darwin arm64 原生构建全部通过。
|
||||
- [Desktop CI 36329271967](https://github.com/mesalogo/goodbuddy/actions/runs/36329271967)
|
||||
为 5,342 通过、51 跳过、3 失败。两个 App 长历史场景超过默认 5 秒单用例时限;
|
||||
会话采集 Electron 场景等待 Escape 返回笔记列表超时。生产构建未运行。
|
||||
- 测试修正仅让原生键盘辅助函数显示窗口、获取焦点并等待 `document.hasFocus()`,
|
||||
然后发送真实输入;两个长历史场景采用仓库既有的 15 秒单用例时限。
|
||||
不修改产品实现、不跳过 Linux、不关闭沙箱、不删除或放宽数据和键盘断言。
|
||||
- Windows 聚焦复验三个失败场景通过,其中真实 Electron 覆盖完整 502 条历史、
|
||||
214px 窄栏键盘操作、浅深主题确认按钮、真实 IPC/SQLite 和重开保留。
|
||||
修正后首次全量复验被中断,不计为通过;随后完整重跑为 **5,317 通过、
|
||||
79 跳过、0 失败**,453 个文件通过、11 个跳过,耗时 646.48 秒。
|
||||
类型检查、lint 和发布说明校验均通过,新候选 Linux CI 仍需独立通过。
|
||||
- 本次只改测试和验证文档,不改变 Agent、远程 Runtime 或模型桥;
|
||||
沿用上方当前源码 Host 验证,不新增真实模型请求。
|
||||
- 新提交必须重新取得准确 SHA 批准,原发布说明正文保持不变。
|
||||
|
||||
## 数据、兼容与验收边界
|
||||
|
||||
Desktop schema 48 新增魔法笔记会话来源元数据。升级前应备份完整用户数据,
|
||||
|
||||
@@ -43,6 +43,9 @@ main CI `36164698647`:原生能力重试用例在启动状态未稳定时打
|
||||
是否消除 CI 失败以修复提交的 Linux CI 结果为准。
|
||||
同日 Windows 全量测试及独立复跑中,Magic Notes 原生拖拽分别停在索引列 168 和
|
||||
AI 列 280。测试同步原生输入与实际状态后独立复跑通过,保留原有宽度和持久化断言。
|
||||
2026-09-27 的 0.15.0 主分支 CI 中,会话采集测试向隐藏 Electron 窗口发送 Escape,
|
||||
未返回笔记列表。原生键盘辅助函数同样必须显示窗口、取得焦点并等待
|
||||
`document.hasFocus()`,再发送输入;不靠跳过 Linux 或关闭沙箱处理。
|
||||
|
||||
## 整窗遮罩与原生拖动区域
|
||||
|
||||
|
||||
@@ -13979,7 +13979,7 @@ describe("App", () => {
|
||||
expect(screen.getByLabelText('笔记标题')).toHaveValue('Captured discussion')
|
||||
fireEvent.click(within(screen.getByRole('region', { name: '快速笔记' })).getByRole('button', { name: '加入笔记' }))
|
||||
await waitFor(() => expect(api.magicNotes.create).toHaveBeenCalledWith(expect.objectContaining({ source: expect.objectContaining({ kind: 'conversation', conversationId: conversation.id, messageIds: messages.map(message => message.id) }), content: { version: 1, ops: [{ insert: 'Frozen edited capture\n' }] } })))
|
||||
})
|
||||
}, 15_000)
|
||||
|
||||
it('adds an assistant reply to an explicitly selected note and opens the returned entry in the full workspace', async () => {
|
||||
await api.updates!.updateSettings({ magicNotesEnabled: true, magicNoteCommentMode: 'after-save-manual' })
|
||||
@@ -14075,7 +14075,7 @@ describe("App", () => {
|
||||
fireEvent.click(screen.getByRole('button', { name: '返回原会话' }))
|
||||
expect(await screen.findByRole('button', { name: '原会话已不存在' })).toBeDisabled()
|
||||
expect(screen.getByText('Saved text')).toBeVisible()
|
||||
})
|
||||
}, 15_000)
|
||||
|
||||
it('guards disabling Magic Notes with an unsaved quick draft before saving application settings', async () => {
|
||||
await api.updates!.updateSettings({ magicNotesEnabled: true })
|
||||
|
||||
@@ -57,6 +57,10 @@ app.whenReady().then(async () => {
|
||||
await run(`${expression}.click()`)
|
||||
}
|
||||
async function key(keyCode: string): Promise<void> {
|
||||
win.show()
|
||||
win.focus()
|
||||
win.webContents.focus()
|
||||
await wait('document.hasFocus()', 'native window focus for keyboard input')
|
||||
win.webContents.sendInputEvent({ type: 'keyDown', keyCode })
|
||||
if (keyCode === 'Enter') win.webContents.sendInputEvent({ type: 'char', keyCode: '\r' })
|
||||
win.webContents.sendInputEvent({ type: 'keyUp', keyCode })
|
||||
|
||||
Reference in New Issue
Block a user