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 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

Journey testing for Laravel. Define a user journey once and run its steps in seeded, shuffled orders, asserting invariants after every step to catch order-dependent bugs.

Frequently asked questions about Laravel Runabout
What is vusys/laravel-runabout and what problem does it solve?
Runabout is a dev-only journey testing package for Laravel. You define the steps of a user journey once, and it executes them in randomised-but-deterministic orders, checking your invariants after every step. It exists to catch order-dependent bugs in stateful workflows such as billing and quota accounting, multi-tenant session scoping, approval state machines and inventory reservation. A normal feature test asserts one fixed happy path; Runabout asserts the same rules across many seeded orderings.
How do I install laravel-runabout, and does it need a service provider?
Install it with composer require --dev vusys/laravel-runabout. There is no service provider to register, nothing to publish and no migrations to run. You simply mix the RunsJourneys trait into an existing PHPUnit test case and start defining journey steps and invariants. Because the integration surface is one dev dependency plus test files, it is fully reversible by deleting the package and the tests.
Which Laravel and PHP versions does Runabout support?
Runabout requires PHP 8.3 or newer and supports Laravel 11, 12 and 13. Applications still on Laravel 10 or PHP 8.2 cannot install it at all, so check your fleet baseline before evaluating. This version gate is the biggest practical blocker, since it is an environment constraint rather than an architectural one.
Does Runabout work with Pest, or is it PHPUnit only?
All documented examples are PHPUnit test cases that use the RunsJourneys trait. Pest compatibility is not documented, so treat it as unknown until you verify it in a spike. If your organisation standardises on Pest, budget a short proof-of-concept before committing to the package.
How do the seeded, shuffled journey orders actually work?
Runabout derives its step orderings from a seed, so runs are randomised but reproducible: a failing ordering can be replayed by pinning the same seed via RUNABOUT_SEED. That determinism is what makes failures debuggable rather than flaky. Note that the seed derivation algorithm has changed between schema versions, so a pinned seed can produce a different trail after an upgrade.
What invariants does Runabout provide out of the box?
The package ships an opinionated invariant library including legalTransitions() for state machines, uniqueBy() for uniqueness constraints and quotaBalances() with per-row starting allowances for accounting-style rules. You can also author your own invariants, which are checked after every step of the journey. The built-ins signal that the author understands the domain, but the value you get still depends on how precisely you express your own rules.
Will upgrading Runabout break my pinned seeds or stored trails?
It can. The changelog is explicit that seed derivation changed between schema versions and that pinned RUNABOUT_SEED values were re-keyed as a result. Any seeds or RUNADOUT_TRAIL artifacts committed to CI may silently stop reproducing the same trail across upgrades. Pin the package version in composer.lock and re-baseline seeds deliberately whenever you bump it.
Does Runabout handle queued jobs, events and external services?
The README does not spell out how asynchronous side effects are treated, so verify this yourself before relying on it. The safest approach is to fake queues and events with Laravel's Queue::fake() and Event::fake(), and to stub outbound HTTP calls, so the journey stays synchronous and deterministic. If the package exposes an external-reset helper, confirm its behaviour under your own async workload rather than assuming coverage.
Is laravel-runabout safe to run in production?
No, and it is not designed to be. It is a testing tool installed with require --dev that seeds and mutates data as it walks a journey, so it belongs in your test suite and CI pipeline only. It does not touch application bootstrapping, config or deployment, so there is no runtime footprint to worry about in production.
Is laravel-runabout actively maintained, and what are the alternatives?
It is a 0.x package from a sole maintainer with essentially no stars, dependents or field validation, though the internal engineering signals are strong: PHPStan level 9, Rector, Pint, Stryker mutation testing, OpenSSF Scorecard, a CI matrix and extensive documentation. There is no real equivalent in the Laravel ecosystem—the closest alternatives are hand-written feature tests, property-based testing libraries, or generic fuzzers that know nothing about Eloquent state. MIT licensing and the trait-only design mean the worst case is a cheap fork or a clean removal, but verify the actual tag history before trusting any release-date or maturity claim.
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.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log