diff options
Diffstat (limited to 'tests')
| -rwxr-xr-x | tests/e2e.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/e2e.sh b/tests/e2e.sh index d74d73b..b63260c 100755 --- a/tests/e2e.sh +++ b/tests/e2e.sh @@ -239,6 +239,38 @@ else fail "menu bar binary not found at $MENUBAR" fi +# --- 12. the shipped pi extension reports for its own pane ------------------- +echo "12. pi extension" +cat >"$DIR/ext-harness.mjs" <<'JS' +// Loads the shipped extension with a fake pi and fires lifecycle events. +const ext = await import(process.env.EXTENSION); +const on = {}; +ext.default({ on: (name, fn) => (on[name] = fn), events: { on: () => {} } }); +const ctx = { mode: "tui", isIdle: () => true }; +for (const event of process.argv.slice(2)) { + await on[event]?.({ type: event, reason: "reload" }, ctx); + await new Promise((r) => setTimeout(r, 300)); +} +JS +ext() { # pane events... (run "inside" a pane: tmux sets TMUX_PANE there) + local pane=$1; shift + TMUX_PANE="$pane" EXTENSION="$ROOT/crates/dinggerd/assets/pi/pi-agent-state.ts" \ + node --experimental-strip-types --no-warnings "$DIR/ext-harness.mjs" "$@" +} +if command -v node >/dev/null; then + # A2 is not the active pane of session a (wa1 is the active window), the + # case where asking tmux for "the current pane" picks the wrong pane. + [ "$(t display -p -t a: '#{pane_id}')" != "$A2" ] && pass "A2 is not session a's active pane" || fail "test setup: A2 is active" + before_a1=$(opt "$A1" @agent_state) + ext "$A2" session_start agent_start + expect "extension report lands on A2 (working)" "opt $A2 @agent_state" working + expect "A1 untouched" "opt $A1 @agent_state" "$before_a1" + ext "$A2" agent_settled + expect "extension completion away from the window: A2 done" "opt $A2 @agent_state" done +else + fail "node not found; cannot test the pi extension" +fi + echo echo "$PASSES passed, $FAILS failed" [ "$FAILS" -eq 0 ] || { echo "--- daemon log tail"; tail -30 "$DIR/daemon.log"; exit 1; } |
