PHPackages                             puth/laravel - 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. [API Development](/categories/api)
4. /
5. puth/laravel

ActiveLibrary[API Development](/categories/api)

puth/laravel
============

Puth Laravel Client

0.9.1(1w ago)13.0k↓75%GPL-3.0-onlyPHPPHP &gt;=8.1

Since Feb 19Pushed 1w agoCompare

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

READMEChangelogDependencies (14)Versions (8)Used By (0)

Puth integration for Laravel
----------------------------

[](#puth-integration-for-laravel)

### Installation

[](#installation)

```
composer require --dev puth/laravel
```

After installing the Puth package, run the `puth:install` Artisan command.

```
php artisan puth:install
```

### Configuration

[](#configuration)

You can find the configuration file for this package in `config/puth.php`.

### Example Browser Test

[](#example-browser-test)

```
use Tests\PuthTestCase;
use Puth\Laravel\Browser;

class ExampleBrowserTest extends PuthTestCase
{
    function test_visit_website()
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('https://playground.puth.dev')
                ->assertSee('Puth');
        });
    }
}
```

Transition from Dusk
--------------------

[](#transition-from-dusk)

The `puth/laravel` package provides a full replacement for Dusk.

Another difference is that `puth/laravel` does not start the browser process. For that you need to run `puth` (e.g. in Docker) and point the client to the `puth` instance. `puth/laravel` once contained code to launch the `puth` process but I don't think enough people would use this feature so I removed it.

Some exception messages changed, mostly the ones thrown by assert functions, e.g. instead of `Element [body #not-existing-element] not found` you will see `Waited 200ms for selector [body body #not-existing-element]` when calling `$browser->assertVisible('body #not-existing-element')`.

### Portal

[](#portal)

- Portal routes all requests through the testcase process, therefore every browser request that goes to the application will act on the currently authenticated user. E.g. if you call $this-&gt;actingAs(), your browser requests will also be authenticated as that user.

### Changes

[](#changes)

- `$browser->keys()`: This method now uses the [puppeteer keymap](https://pptr.dev/api/puppeteer.keyinput) (instead of the php-webdriver keymap) is used (when using modifier keys you can only type/press american keyboard layout keys)
- `$browser->typeInDialog(selector, value)`: Use the accept method instead which takes a value `$browser->acceptDialog(value)`
- console logs are different from Dusk console logs. They now contain more information but the underlying json structure changed.
- `$this->driver->executeScript()` becomes `$this->evaluate()`

### Unsupported

[](#unsupported)

- `$browser->moveMouse($xOffset, $yOffset)`: Puppeteer only simulates a mouse but doesn't expose the internal tracking state so we can't move the mouse by an offset

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance98

Actively maintained with recent releases

Popularity22

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~209 days

Recently: every ~310 days

Total

7

Last Release

11d ago

PHP version history (2 changes)v0.6.3PHP ^8.0.2

0.9.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/951bd5e93cdaa9119fb45de06c42a5859df30688547df64b4018f6bfbc2c0f11?d=identicon)[SEUH](/maintainers/SEUH)

---

Top Contributors

[![SEUH](https://avatars.githubusercontent.com/u/21090493?v=4)](https://github.com/SEUH "SEUH (41 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (4 commits)")[![puth-release](https://avatars.githubusercontent.com/u/161890073?v=4)](https://github.com/puth-release "puth-release (3 commits)")

### Embed Badge

![Health badge](/badges/puth-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/puth-laravel/health.svg)](https://phpackages.com/packages/puth-laravel)
```

###  Alternatives

[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.6k31.8M156](/packages/laravel-cashier)[laravel/sail

Docker files for running a basic Laravel application.

1.9k212.4M1.4k](/packages/laravel-sail)[laravel/ai

The official AI SDK for Laravel.

1.1k4.6M286](/packages/laravel-ai)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

79227.1M206](/packages/laravel-mcp)[tallstackui/tallstackui

TallStackUI is a powerful suite of Blade components that elevate your workflow of Livewire applications.

731189.9k16](/packages/tallstackui-tallstackui)[propaganistas/laravel-disposable-email

Disposable email validator

6023.2M7](/packages/propaganistas-laravel-disposable-email)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
