Both example suites automate the same interactive CLI so the two public API styles can be compared directly:
async/simple-cli.test.tsuseswithTerminalAsyncand promises.effection/simple-cli.test.tsuseswithTerminaland Effection operations.async/agent-closes-vi.test.tsproves an async coding agent can exit vi.effection/agent-closes-vi.test.tsproves the same thing with structured concurrency.async/bash-vi-roundtrip.test.tsverifies Bash's primary screen survives a vi alternate-screen round trip.effection/bash-vi-roundtrip.test.tsruns the same screen-restoration check with Effection.
The vi examples use an isolated temporary HOME and a fixture marker, avoiding user configuration, welcome-screen, and locale assumptions. Linux CI installs vim-tiny; macOS uses its system vi.
The simple CLI application under test is /bin/sh, which is present on every macOS and Linux host supported by Ghostwright. The shell is launched explicitly—Ghostwright never inserts an implicit shell. Its script uses only POSIX printf and read builtins, prompts for a name, and prints a greeting.
Run all examples with:
bun test packages/ghostwright/examples