test: wait for theme transitions before comparing glass styles
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

The Linux full suite sampled a window-control color during its transition. Wait for CSS transitions to finish while retaining exact style, contrast, geometry, and native interaction assertions.
This commit is contained in:
mesalogo
2026-10-01 00:48:35 +08:00
parent cc451f698d
commit 8201c9c27e
3 changed files with 15 additions and 1 deletions
@@ -31,3 +31,12 @@ Agent 保持 0.15.1:相对其发布标签,daemon 与锁文件无变化。
Electron 磨砂、笔记布局、工作栏设置布局。
- `npm run typecheck`、`npm run lint` 通过;本轮新增付费模型调用 0 次。
- 完整测试和生产构建等待精确候选 CI,不运行本地生产构建、打包或安装包探针。
## 首轮 CI
候选 `cc451f6` 已含用户未提交样式修正并同步两个远端。Agent `36743915140`
通过,Desktop `36743915207` 为 5573 通过、57 跳过、1 失败,生产构建未执行。
磨砂测试切换主题后立即读取样式,窗口按钮 color 正在过渡,导致深色关闭态与
先前基线不同。测试改为等待当前 CSS Transition 完成,保留完整样式、几何、
拖拽、对比度及原生交互断言,不修改产品外观或全局超时。
修正后完整磨砂 Electron 回归、类型检查及 lint 通过;双语说明与产品源码不变。
+2
View File
@@ -67,6 +67,8 @@ Runtime 状态尚未匹配当前选择时按钮仍禁用,点击不会发出请
同日 CI 再现快速笔记打开完整记录后未滚动:数据请求完成后的动画帧仍可能早于
React 提交目标 DOM。定位操作应在目标记录提交后的布局 Effect 中执行,
而不是在请求 Promise 完成时猜测渲染时机;立即执行动画帧的回归可稳定暴露旧问题。
2026-10-01 磨砂外观 CI 在主题切换后读到窗口按钮颜色过渡的中间值。比较稳定样式前,
等待当前 CSS Transition 的 `finished`,不要固定睡眠、删除颜色断言或等待无限循环动画。
## 整窗遮罩与原生拖动区域
+4 -1
View File
@@ -33,7 +33,7 @@ app.whenReady().then(async () => {
let off
for (const state of [null, 'true', null, 'false']) {
const label = `${theme}/${state ?? 'absent'}`
const result = await win.webContents.executeJavaScript(`(() => {
const result = await win.webContents.executeJavaScript(`(async () => {
document.documentElement.dataset.theme = ${JSON.stringify(theme)};
const shell = document.querySelector('.app-shell');
const state = ${JSON.stringify(state)};
@@ -41,6 +41,9 @@ app.whenReady().then(async () => {
if (state === null) node.removeAttribute('data-frosted-glass');
else node.dataset.frostedGlass = state;
}
await Promise.all(document.getAnimations()
.filter(animation => animation instanceof CSSTransition)
.map(animation => animation.finished));
const panel = document.querySelector('.runtime-checklist__content');
if (shell.contains(panel) || !panel.closest('.floating-portal').matches(':popover-open'))
throw new Error('Checklist must render outside app-shell in the top layer');