# `Supertester`
[🔗](https://github.com/nshkrdotcom/supertester/blob/v0.6.0/lib/supertester.ex#L1)

Supertester is an OTP-focused testing toolkit for Elixir applications.

It provides deterministic synchronization helpers, process/supervisor isolation,
chaos and performance utilities, and OTP-aware assertions for testing concurrent
systems without timing hacks.

## Core Modules

- `Supertester.ExUnitFoundation` - ExUnit adapter that wires in Supertester isolation
- `Supertester.UnifiedTestFoundation` - Test isolation runtime for custom harnesses
- `Supertester.OTPHelpers` - OTP-compliant testing utilities
- `Supertester.GenServerHelpers` - GenServer-specific test patterns
- `Supertester.SupervisorHelpers` - Supervision tree testing utilities
- `Supertester.ConcurrentHarness` - Scenario-based concurrency orchestrator
- `Supertester.PropertyHelpers` - StreamData generators for concurrency testing
- `Supertester.MessageHarness` - Mailbox tracing utilities
- `Supertester.Telemetry` - Centralized telemetry emission helpers
- `Supertester.PerformanceHelpers` - Benchmarking and load testing
- `Supertester.ChaosHelpers` - Chaos engineering and resilience testing
- `Supertester.Assertions` - Custom OTP-aware assertions

## Usage

Add supertester as a test dependency in your mix.exs:

    def deps do
      [
        {:supertester, path: "../supertester", only: :test}
      ]
    end

Then use the helpers in your tests:

    defmodule MyApp.MyModuleTest do
      use Supertester.ExUnitFoundation, isolation: :full_isolation
      import Supertester.OTPHelpers
      import Supertester.Assertions

      describe "my functionality" do
        setup do
          setup_isolated_genserver(MyModule, "my_test")
        end

        test "my test", %{server: server} do
          assert_genserver_responsive(server)
        end
      end
    end

# `version`

```elixir
@spec version() :: String.t()
```

Returns the version of Supertester.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
