Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Runabout Laravel Package

vusys/laravel-runabout

Runabout is journey testing for Laravel: define the steps of a user journey once, and it executes them in randomised-but-deterministic orders, checking your invariants after every step to catch bugs.

View on GitHub
Deep Wiki
Context7

vusys/laravel-runabout

Tests codecov tests assertions test LOC CI matrix Bencher Mutation testing OpenSSF Scorecard PHP Laravel PHPStan Rector Code Style: Pint License

Journey testing for Laravel: define the steps of a user journey once, and Runabout executes them in randomised-but-deterministic orders, checking your invariants after every step. It exists to catch the bugs that unit, feature, and browser tests all miss — the ones that only appear when real users do things in an order you never thought to test.

📚 Full documentation: vusys.github.io/laravel-runabout

final class PostLifecycleTest extends TestCase
{
    use RunsJourneys;

    public function test_post_lifecycle(): void
    {
        $this->journey(PostLifecycleJourney::class)->shuffles(25)->run();
    }
}

One journey definition becomes twenty-six executions: the declared order, then twenty-five seeded shuffles that respect your constraints. When a shuffle fails, the seed reproduces the exact trail — and Runabout shrinks it to the smallest reproduction before reporting it.

Requirements

  • PHP 8.3+
  • Laravel 11, 12, or 13

Installation

composer require --dev vusys/laravel-runabout

No service provider to register and nothing to publish — Runabout is a test-only trait you mix into a test case.

Quick start

Add the RunsJourneys trait to a test case, define a Journey, and run it. The Quick start guide walks through a complete example; the short version is:

use Vusys\Runabout\RunsJourneys;

final class PostLifecycleTest extends TestCase
{
    use RunsJourneys;

    public function test_post_lifecycle(): void
    {
        $this->journey(PostLifecycleJourney::class)->shuffles(25)->run();
    }
}

Documentation

Full docs live at vusys.github.io/laravel-runabout. By topic:

Topic Page
Why it exists and how it works Introduction
Installing and wiring it in Installation
A complete worked example Quick start
The vocabulary Core concepts
The step DSL Defining steps
Trail state and seeded randomness The context
Driving the app as named users Actors & HTTP
Shuffling the clock Time travel
Properties checked after every step Invariants
shuffles / repeatHeavy / exhaustive / seed Execution modes
Cross-actor and multi-tenant bugs Interleaving journeys
Fresh state between trails Resetting state
Seeds, artifacts, and shrinking Reproducing failures
Seeing what the shuffler explored Trails & coverage
The RUNABOUT_* settings Environment variables

License

MIT. See LICENSE.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
mehedimi/laravel-amp-mail
happones/laravel-vue-i18n-generator
jwerd/inertia-table
siberfx/flysystem-wasabi
hollyit/token-replace
ippanelcom/laravel-sdk
adachsoft/changelog-linter
adachsoft/collection
payerurl/telegrambot-crypto-payment-instant-payout
dskripchenko/laravel-hybrid-search
riorizkyrainey/lara-ced
mehedimi/static-vel
zharp/zharp
nonsapiens/bigquery-model-sync
lgu-bayambang-ict-office/lgu-laravel-development-standards
andydefer/laravel-support
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel