cabal-version: 3.8 name: tuispec version: 0.2.0.0 build-type: Simple license: MIT license-file: LICENSE author: Matthias Pall Gissurarson maintainer: mpg@mpg.is copyright: 2026 Matthias Pall Gissurarson synopsis: Playwright-like black-box testing for terminal UIs over PTY description: @tuispec@ is a Haskell framework for black-box testing of terminal user interfaces (TUIs) over PTY. . It provides a Playwright-inspired DSL for launching apps, sending keystrokes, waiting for text, and capturing snapshots (ANSI text + PNG). . Tests are regular compiled Haskell programs using @tasty@ with per-test isolation via fresh PTY processes. The framework is generic to any TUI binary runnable from a shell, with no instrumentation required inside the target app. . Features include: . * PTY transport with per-test isolation * Text selectors (@Exact@, @Regex@, @At@, @Within@, @Nth@) * Keypress and text input actions * Snapshot assertions with ANSI text + PNG artifacts * Configurable retry, timeout, and ambiguity modes * JSON-RPC server for interactive orchestration * REPL-style session mode for ad-hoc exploration category: Testing homepage: https://github.com/Tritlo/tuispec bug-reports: https://github.com/Tritlo/tuispec/issues tested-with: ghc ==9.12.2 extra-doc-files: CHANGELOG.md README.md SERVER.md SKILL.md SPEC.md doc/example-board-ioskeley-light.png doc/example-dashboard-ioskeley-dark.png source-repository head type: git location: https://github.com/Tritlo/tuispec.git common common-settings default-language: GHC2021 ghc-options: -Wall library import: common-settings hs-source-dirs: src exposed-modules: TuiSpec TuiSpec.Render TuiSpec.Replay TuiSpec.Runner TuiSpec.Server TuiSpec.Types other-modules: TuiSpec.Internal TuiSpec.ProjectRoot build-depends: aeson >=2.0 && <2.3, base >=4.16 && <5, bytestring >=0.11 && <0.13, containers >=0.6 && <0.8, directory >=1.3 && <1.4, filepath >=1.4 && <1.6, jsonrpc >=0.2 && <0.3, posix-pty >=0.2 && <0.3, process >=1.6 && <1.7, tasty >=1.4 && <1.6, tasty-hunit >=0.10 && <0.12, text >=1.2 && <2.2, time >=1.9 && <1.15, unix >=2.8 && <2.10, executable tuispec import: common-settings hs-source-dirs: app main-is: Main.hs autogen-modules: Paths_tuispec other-modules: Paths_tuispec build-depends: base >=4.16 && <5, optparse-applicative >=0.18 && <0.20, text >=1.2 && <2.2, tuispec, unix >=2.8 && <2.10, test-suite tuispec-smoke import: common-settings type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Spec.hs build-depends: aeson >=2.0 && <2.3, base >=4.16 && <5, bytestring >=0.11 && <0.13, directory >=1.3 && <1.4, filepath >=1.4 && <1.6, process >=1.6 && <1.7, scientific >=0.3 && <0.4, tasty >=1.4 && <1.6, tasty-hunit >=0.10 && <0.12, text >=1.2 && <2.2, tuispec,