ci(windows-smoke): tray, badge, taskbar, thumbbar and media-control commands (#4, #7) #44

Merged
jared merged 2 commits from ci/smoke-native-commands into main 2026-10-22 22:01:16 -04:00
Showing only changes of commit 31363e601c - Show all commits
+54
View File
@@ -312,6 +312,60 @@ try {
record('global hotkeys reach the page', /not found/i.test(msg) ? 'n/a' : 'fail', msg);
}
// 10. Tray / badge / taskbar / thumbbar / media-controls commands (#4, #7):
// the state they set is only visible to a person on a desktop, but each must
// accept what cinny sends and leave the app working. Then reset everything.
const calls = [
['set_badge_count', { count: 3 }],
['set_tray_unread', { unread: true }],
['set_call_active', { active: true }],
['set_tray_call_state', { active: true, muted: true, deafened: false }],
['set_thumbbar', { active: true, muted: true, deafened: false }],
['set_thumbbar', { active: true, muted: false, deafened: true }],
['set_smtc_call_state', { active: true, muted: true }],
['set_taskbar_progress', { status: 'normal', progress: 40 }],
['set_taskbar_progress', { status: 'indeterminate', progress: null }],
['set_jump_list', { items: [{ title: 'Smoke room', uri: 'matrix:r/lotus-smoke:example.org' }] }],
['set_tray_update_ready', { version: '9.9.9' }],
['flash_window', {}],
['get_tray_dnd', {}],
['has_tray_host', {}],
// reset
['set_badge_count', { count: 0 }],
['set_tray_unread', { unread: false }],
['set_tray_call_state', { active: false, muted: false, deafened: false }],
['set_thumbbar', { active: false, muted: false, deafened: false }],
['set_smtc_call_state', { active: false, muted: false }],
['set_call_active', { active: false }],
['set_taskbar_progress', { status: 'none', progress: null }],
['set_jump_list', { items: [] }],
['set_tray_update_ready', { version: null }],
];
const failures = [];
for (const [cmd, args] of calls) {
// eslint-disable-next-line no-await-in-loop
const err = await page
.evaluate(
async ([c, a]) => {
try {
await window.__TAURI_INTERNALS__.invoke(c, a);
return null;
} catch (e) {
return String(e).slice(0, 120);
}
},
[cmd, args],
)
.catch((e) => `page gone: ${String(e).slice(0, 80)}`);
if (err) failures.push(`${cmd}(${JSON.stringify(args)}): ${err}`);
}
const alive = await page.evaluate(() => document.title !== undefined).catch(() => false);
record(
'tray, badge, taskbar, thumbbar and media-control commands',
failures.length === 0 && alive ? 'pass' : 'fail',
failures.length ? failures.join(' | ') : `${calls.length} calls ok, app still responsive: ${alive}`,
);
await page.screenshot({ path: `${OUT}/02-end.png` }).catch(() => undefined);
writeFileSync(`${OUT}/results.json`, JSON.stringify(results, null, 2));