Native browser tests for Laravel, Java and Node.js. Every command shows up in a realtime GUI, and a failure from CI opens on your own machine. Migrating from Dusk?
public function test_user_can_log_in(): void{ $this->browse(function (Browser $browser) { $browser->visit('/login') ->type('email', 'ada@example.com') ->type('password', 'secret') ->press('Log in') ->assertPathIs('/dashboard') ->assertSee('Welcome back, Ada'); });}A drop-in replacement for Laravel Dusk. Move tests over at your own pace.
Snapshots record the viewport, commands, console output and errors.
Assertions retry, actions wait for their target, calls pause while pages load.
An MCP server lets coding agents explore your app and export test drafts.
Save failed test snapshots as CI artifacts, then drag a .puth file into your local GUI to step through what went wrong.

One server provides the browser API and the web GUI. Run it next to your tests or on a dedicated machine.
docker run -it --rm -p 127.0.0.1:7345:7345 ghcr.io/puth-io/puthcomposer require --dev puth/laravelphp artisan test