tuispec-0.2.0.0: tuispec.cabal
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,