packages feed

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,