agentleFS
LambdaTestLambdaTest/agent-skills/laravel-dusk-skill/SKILL.md

laravel-dusk-skill

Skill387 starsChanged 3 days agoMITView on GitHub

Generates Laravel Dusk browser tests in PHP. Chrome-based E2E testing for Laravel apps. Use when user mentions "Dusk", "Laravel Dusk", "$browser->visit", "DuskTestCase". Triggers on: "Laravel Dusk", "Dusk test", "$browser->visit", "DuskTestCase".

  • Reads credentials
Files
SKILL.md

Laravel Dusk Skill

For TestMu AI cloud execution, see reference/cloud-integration.md and shared/testmu-cloud-reference.md.

Core Patterns

Basic Test

<?php
namespace Tests\Browser;

use Laravel\Dusk\Browser;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{
    public function testLoginWithValidCredentials(): void
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/login')
                ->type('email', 'user@test.com')
                ->type('password', 'password123')
                ->press('Login')
                ->assertPathIs('/dashboard')
                ->assertSee('Welcome');
        });
    }

    public function testLoginWithInvalidCredentials(): void
    {
        $this->browse(function (Browser $browser) {
            $browser->visit('/login')
                ->type('email', 'wrong@test.com')
                ->type('password', 'wrong')
                ->press('Login')
                ->assertPathIs('/login')
                ->assertSee('Invalid credentials');
        });
    }
}

Browser Methods

// Navigation
$browser->visit('/path');
$browser->back();
$browser->forward();
$browser->refresh();

// Forms
$browser->type('name', 'value');
$browser->clear('name');
$browser->select('select', 'option');
$browser->check('checkbox');
$browser->uncheck('checkbox');
$browser->radio('radio', 'value');
$browser->attach('file', '/path/to/file');
$browser->press('Button Text');
$browser->click('.selector');

// Assertions
$browser->assertSee('text');
$browser->assertDontSee('text');
$browser->assertPathIs('/expected');
$browser->assertUrlIs('http://full-url');
$browser->assertInputValue('name', 'value');
$browser->assertChecked('checkbox');
$browser->assertVisible('.element');
$browser->assertMissing('.element');
$browser->assertTitle('Page Title');
$browser->assertPresent('.selector');

// Waiting
$browser->waitFor('.element');
$browser->waitFor('.element', 10); // 10 seconds
$browser->waitUntilMissing('.loading');
$browser->waitForText('Loaded');
$browser->waitForLink('Click Me');
$browser->pause(1000); // milliseconds

Page Objects

<?php
namespace Tests\Browser\Pages;

use Laravel\Dusk\Page;

class LoginPage extends Page
{
    public function url(): string { return '/login'; }

    public function assert(Browser $browser): void
    {
        $browser->assertPathIs($this->url());
    }

    public function login(Browser $browser, string $email, string $password): void
    {
        $browser->type('email', $email)
            ->type('password', $password)
            ->press('Login');
    }
}

// Usage
$browser->visit(new LoginPage)
    ->login($browser, 'user@test.com', 'password123');

Cloud: Override DuskTestCase::driver() to return RemoteWebDriver with LT caps

Setup: composer require --dev laravel/dusk && php artisan dusk:install

Cloud Execution on TestMu AI

Set .env variables: LT_USERNAME, LT_ACCESS_KEY

// tests/DuskTestCase.php
protected function driver()
{
    $options = (new ChromeOptions)->addArguments(['--disable-gpu', '--no-sandbox']);
    $ltOptions = [
        'user' => env('LT_USERNAME'),
        'accessKey' => env('LT_ACCESS_KEY'),
        'build' => 'Laravel Dusk Build',
        'name' => $this->getName(),
        'platformName' => 'Windows 11',
        'video' => true,
        'console' => true,
    ];
    $options->setExperimentalOption('LT:Options', $ltOptions);
    return RemoteWebDriver::create(
        'https://hub.lambdatest.com/wd/hub', $options
    );
}

Run: php artisan dusk or php artisan dusk tests/Browser/LoginTest.php

Deep Patterns

See reference/playbook.md for production-grade patterns:

SectionWhat You Get
§1 Project SetupInstallation, DuskTestCase, .env.dusk configuration
§2 Browser TestsLogin flows, forms, multi-step wizards, multiple browsers
§3 Page ObjectsPage class with elements, custom methods, assertions
§4 ComponentsDatePicker, Modal, reusable component pattern
§5 Advanced InteractionsJavaScript, scrolling, drag-and-drop, waiting strategies
§6 Database & DataDatabaseMigrations, factories, screenshots, console logs
§7 LambdaTest IntegrationRemote WebDriver with LT:Options capabilities
§8 CI/CD IntegrationGitHub Actions with MySQL, ChromeDriver, artifact upload
§9 Debugging Table12 common problems with causes and fixes
§10 Best Practices14-item Laravel Dusk testing checklist

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.