opencode/packages/tui/script/shortcut-screenshots.drive.ts
2026-07-11 02:27:05 +00:00

71 lines
2 KiB
TypeScript

import { defineScript, wait, type ScriptUi } from "opencode-drive"
const settle = () => wait(100)
async function screenshot(ui: ScriptUi, name: string) {
await settle()
const path = await ui.screenshot(name)
console.log(`${name}: ${path}`)
}
async function closeDialog(ui: ScriptUi) {
await ui.press("escape")
await ui.waitFor("commands")
await settle()
await ui.waitFor((state) => state.focused.editor)
}
async function runPalette(ui: ScriptUi, command: string, text: string, name: string) {
await settle()
await ui.press("p", { ctrl: true })
await ui.waitFor("Commands")
await settle()
await ui.type(command)
await ui.waitFor(command)
await ui.enter()
await ui.waitFor(text)
await screenshot(ui, name)
}
export default defineScript({
viewport: { cols: 120, rows: 36 },
setup({ config }) {
config.autoupdate = false
},
async run({ ui }) {
await ui.waitFor((state) => state.focused.editor)
await screenshot(ui, "01-home-key-first")
await ui.type("!")
await ui.waitFor("exit shell mode")
await screenshot(ui, "02-shell-key-first")
await ui.press("escape")
await ui.waitFor("commands")
await ui.waitFor((state) => state.focused.editor)
await ui.press("p", { ctrl: true })
await ui.waitFor("Commands")
await screenshot(ui, "03-command-palette")
await closeDialog(ui)
await runPalette(ui, "Switch model", "Select model", "04-model-actions")
await closeDialog(ui)
await runPalette(ui, "Help", "Press", "05-help-header-prose")
await closeDialog(ui)
await runPalette(ui, "View debug info", "Share this", "06-debug-action-first")
await closeDialog(ui)
await runPalette(ui, "Switch session", "Sessions", "07-session-actions")
await closeDialog(ui)
await runPalette(ui, "Plugins", "Plugins", "08-plugin-actions")
await closeDialog(ui)
await runPalette(ui, "Install plugin", "scope:", "09-plugin-install")
await closeDialog(ui)
await runPalette(ui, "Open diff viewer", "opencode crashed", "10-crash-stacked")
},
})