diff options
| author | Luke Parker <[email protected]> | 2026-03-17 12:55:58 +1000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-17 12:55:58 +1000 |
| commit | e416e59ea69f7600acbdb593ba68ac0fb1ee2633 (patch) | |
| tree | f1594d949fc3ad0d37f871e3d1028fcc77674035 /packages/app/src/testing/prompt.ts | |
| parent | cb69501098c603ccd7d3e3dbe6655d401c1d815c (diff) | |
| download | opencode-e416e59ea69f7600acbdb593ba68ac0fb1ee2633.tar.gz opencode-e416e59ea69f7600acbdb593ba68ac0fb1ee2633.zip | |
test(app): deflake slash terminal toggle flow (#17881)
Diffstat (limited to 'packages/app/src/testing/prompt.ts')
| -rw-r--r-- | packages/app/src/testing/prompt.ts | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/packages/app/src/testing/prompt.ts b/packages/app/src/testing/prompt.ts new file mode 100644 index 000000000..e11462f30 --- /dev/null +++ b/packages/app/src/testing/prompt.ts @@ -0,0 +1,56 @@ +import type { E2EWindow } from "./terminal" + +export type PromptProbeState = { + popover: "at" | "slash" | null + slash: { + active: string | null + ids: string[] + } + selected: string | null + selects: number +} + +export const promptEnabled = () => { + if (typeof window === "undefined") return false + return (window as E2EWindow).__opencode_e2e?.prompt?.enabled === true +} + +const root = () => { + if (!promptEnabled()) return + return (window as E2EWindow).__opencode_e2e?.prompt +} + +export const promptProbe = { + set(input: Omit<PromptProbeState, "selected" | "selects">) { + const state = root() + if (!state) return + state.current = { + popover: input.popover, + slash: { + active: input.slash.active, + ids: [...input.slash.ids], + }, + selected: state.current?.selected ?? null, + selects: state.current?.selects ?? 0, + } + }, + select(id: string) { + const state = root() + if (!state) return + const prev = state.current + state.current = { + popover: prev?.popover ?? null, + slash: { + active: prev?.slash.active ?? null, + ids: [...(prev?.slash.ids ?? [])], + }, + selected: id, + selects: (prev?.selects ?? 0) + 1, + } + }, + clear() { + const state = root() + if (!state) return + state.current = undefined + }, +} |
