PHPackages                             stromcom/http-smoke - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. stromcom/http-smoke

ActiveLibrary[Testing &amp; Quality](/categories/testing)

stromcom/http-smoke
===================

Professional HTTP smoke testing toolkit with a fluent DSL, parallel execution, capture chains, sessions and pluggable variable sources / reporters / HTTP clients.

v0.4.0(2mo ago)1553↓88.9%MITPHPPHP ^8.4CI passing

Since Apr 26Pushed 2mo agoCompare

[ Source](https://github.com/stromcom/http-smoke)[ Packagist](https://packagist.org/packages/stromcom/http-smoke)[ RSS](/packages/stromcom-http-smoke/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (5)Dependencies (6)Versions (6)Used By (0)

stromcom/http-smoke
===================

[](#stromcomhttp-smoke)

Fast, simple and extensible HTTP smoke-testing toolkit for PHP 8.4+.

A fluent DSL for declaring HTTP smoke tests, parallel execution, capture chains between requests, cookie-shared session flows, pluggable variable sources (`.env`, JSON, OS env, your own), pluggable reporters (console, JSON, Markdown, GitHub Actions step summary, your own), and a small DI container so any service can be swapped without forking the package.

```
composer require --dev stromcom/http-smoke
```

```
vendor/bin/http-smoke dev
```

---

Features
--------

[](#features)

- **PHP 8.4+** — `readonly` classes, enums, strict types, no legacy cruft.
- **Fluent DSL** — declarative test definitions in plain PHP.
- **Parallel execution** — `curl_multi`-based, concurrency configurable.
- **Session chains** — share cookies across a sequence of requests, run sequentially.
- **Capture variables** — `captureJsonPath('hash', 'data.thread.hash')` then `{@hash}` in subsequent URLs / bodies / headers.
- **Variable substitution** — `{ENV_VAR}` placeholders resolved from `.env`, `smokeHttp.json`, OS env, CLI overrides — or any custom `VariableSourceInterface`.
- **Pluggable reporters** — console, JSON (canonical artefact), Markdown, GitHub step summary; add your own by implementing `ReporterInterface`.
- **Pluggable HTTP client** — default is curl\_multi; implement `HttpClientInterface` to swap in a mock or alternative backend.
- **Retry** — per-test or per-group retry on any failure (useful for eventually-consistent endpoints), independent 5xx retry budget.
- **Circuit breaker** — per-group `maxFailures` skips remaining tests once a group is clearly broken.
- **PHPStan level max + strict rules**, no docblock noise.

---

Quick start
-----------

[](#quick-start)

### 1. Install

[](#1-install)

```
composer require --dev stromcom/http-smoke
```

### 2. Create test definitions

[](#2-create-test-definitions)

`tests/SmokeHttp/api-01-basic.php`:

```
