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.8.0(1y ago)12.8k—0%GPL-3.0-onlyPHPPHP ^8.0.2

Since Feb 19Pushed 6mo agoCompare

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

READMEChangelogDependencies (7)Versions (6)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

35

—

LowBetter than 80% of packages

Maintenance54

Moderate activity, may be stable

Popularity22

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 89.1% 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 ~157 days

Total

5

Last Release

547d ago

### 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)")[![puth-release](https://avatars.githubusercontent.com/u/161890073?v=4)](https://github.com/puth-release "puth-release (3 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (2 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

[andreaselia/laravel-api-to-postman

Generate a Postman collection automatically from your Laravel API

1.0k586.2k3](/packages/andreaselia-laravel-api-to-postman)[timacdonald/log-fake

A drop in fake logger for testing with the Laravel framework.

4235.9M54](/packages/timacdonald-log-fake)[saloonphp/laravel-plugin

The official Laravel plugin for Saloon

765.7M124](/packages/saloonphp-laravel-plugin)[mll-lab/laravel-graphiql

Easily integrate GraphiQL into your Laravel project

683.2M9](/packages/mll-lab-laravel-graphiql)[neuron-core/neuron-laravel

Official Neuron AI Laravel SDK.

10710.0k](/packages/neuron-core-neuron-laravel)[grantholle/powerschool-api

A Laravel package to make interacting with PowerSchool less painful.

1715.6k1](/packages/grantholle-powerschool-api)

PHPackages © 2026

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