relux 0.7.0

Expect-style integration test framework for interactive shell programs
# Relux

Expect-style integration testing for interactive shell programs.

[![CI](https://github.com/shizzard/relux/actions/workflows/ci.yml/badge.svg)](https://github.com/shizzard/relux/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE.md)
[![VS Marketplace](https://vsmarketplacebadges.dev/version-short/spawnlink-eu.relux.svg)](https://marketplace.visualstudio.com/items?itemName=spawnlink-eu.relux)
[![Open VSX](https://img.shields.io/open-vsx/v/spawnlink-eu/relux?label=Open%20VSX)](https://open-vsx.org/extension/spawnlink-eu/relux)

```relux
test "service healthcheck" {
    let DATABASE_PORT = available_port()
    let SERVICE_PORT = available_port()
    
    start Service as service { DATABASE_PORT, SERVICE_PORT }
    
    shell test {
        > curl localhost:${SERVICE_PORT}/status
        <? ^status: running
    }
}
```

Relux sends input to PTY shells and matches output against regex or literal patterns with timeouts. Tests read like a transcript of a shell session - send a command, match the response, repeat.

## Features

- **Pattern matching** - literal (`<=`) and regex (`<?`) with capture groups
- **Timeouts** - per-operator, per-test, and suite-level, with tolerance and assertion modes
- **Effects** - declarative test infrastructure with dependency graphs and automatic teardown
- **Parallel execution** - run tests concurrently with isolated environments
- **Functions and modules** - extract reusable logic, organize suites across files
- **Fail patterns** - continuous background monitoring for errors
- **HTML reports** - rich test output with shell I/O logs
- **Single binary** - no runtime dependencies

## Installation

```
cargo install relux
```

Or build from source:

```
git clone https://github.com/shizzard/relux.git
cd relux
cargo build --release
```

Pre-built binaries are also available on the [Releases](https://github.com/shizzard/relux/releases) page.

## Quick start

```
relux new                        # scaffold a project
$EDITOR relux/tests/hello.relux  # write a test
relux run                        # run all tests
```

## Documentation

- [DSL Tutorial]https://shizzard.github.io/relux/latest/dsl-tutorial/ - learn the Relux language from scratch
- [Suite Tutorial]https://shizzard.github.io/relux/latest/suite-tutorial/ - build a real-world test suite with shared infrastructure
- [Reference]https://shizzard.github.io/relux/latest/reference/ - semantic model, configuration, syntax, built-in functions, CI integration

## Editor support

- **VS Code / Cursor**: [Visual Studio Marketplace]https://marketplace.visualstudio.com/items?itemName=spawnlink-eu.relux
- **VSCodium / code-server**: [Open VSX]https://open-vsx.org/extension/spawnlink-eu/relux
- **IntelliJ family**: [JetBrains Marketplace]https://plugins.jetbrains.com/plugin/relux

See the [editor support reference](https://shizzard.github.io/relux/latest/reference/07-editor-support.html) for details.