Skip to content

Implement functional acceptance test suite with intent annotations #21

@arcavenai

Description

@arcavenai

Summary

Build a repeatable acceptance test suite from the test battery documented in #20. These are not unit tests — they verify the installed binary on real hardware from a user's perspective.

What we need

A test runner (shell script, justfile recipe, or both) that:

  1. Runs scripted tests — automated assertions with pass/fail output
  2. Annotates each test with intent — what it verifies, why it matters, what issue it traces to
  3. Flags manual-only tests — describes expected behavior for a human or AI agent to evaluate
  4. Reports results — summary of pass/fail/skip with enough context to diagnose failures

Test groups (from #20)

  1. Self-update — version identity, update cycle, channel filtering
  2. Session lifecycle — start, list, status, detach/reattach, stop
  3. Control session behavior — single vs multi, sharing, cleanup
  4. Session content — aclaude launches in correct pane, persona voice
  5. One-shot prompt — text vs JSON output
  6. Configuration — config display, persona list
  7. tmux-cmc protocol — debug trace, tcgetattr regression

Design principles

  • Dual-layer: Each test has an intent description (human/AI-readable) and a script (executable). The intent layer explains why this test exists and what a failure means. The script layer runs the check.
  • Regression anchors: Every test links to the issue that created it. If a test fails, the issue tells you the full debugging history.
  • Two audiences: An AI agent running these tests should be able to read the intent, run the script, and make a judgment call on whether the result is acceptable — especially for subjective tests (TUI rendering, persona voice).
  • Portable: Must run on the target hardware (aarch64 Raspberry Pi, tmux 3.5a, no sudo, no image protocol). No dependencies beyond bash and the aclaude-a binary.

Suggested location

tests/
  acceptance/
    run.sh              # test runner
    01-self-update.sh
    02-session-lifecycle.sh
    03-control-sessions.sh
    04-session-content.sh
    05-one-shot-prompt.sh
    06-configuration.sh
    07-tmux-cmc-protocol.sh

Or as justfile recipes:

just test-acceptance          # run all
just test-acceptance-update   # group 1 only
just test-acceptance-session  # group 2 only

Reference

Full test battery with scripts and intent annotations: #20

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions