testmu-ai/laravel-dusk-skill

Установка

$npx skills add https://github.com/LambdaTest/agent-skills/tree/main/laravel-dusk-skill

Ставит скилл в текущий проект - CLI спросит, для каких агентов. С флагом -g - в домашнюю папку, для всех проектов.

Описание

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

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:

Section What You Get
§1 Project Setup Installation, DuskTestCase, .env.dusk configuration
§2 Browser Tests Login flows, forms, multi-step wizards, multiple browsers
§3 Page Objects Page class with elements, custom methods, assertions
§4 Components DatePicker, Modal, reusable component pattern
§5 Advanced Interactions JavaScript, scrolling, drag-and-drop, waiting strategies
§6 Database & Data DatabaseMigrations, factories, screenshots, console logs
§7 LambdaTest Integration Remote WebDriver with LT:Options capabilities
§8 CI/CD Integration GitHub Actions with MySQL, ChromeDriver, artifact upload
§9 Debugging Table 12 common problems with causes and fixes
§10 Best Practices 14-item Laravel Dusk testing checklist

Ещё из LambdaTest/agent-skills

Все 49
  1. testmu-ai/appium-skillGenerates production-grade Appium mobile automation scripts for Android and iOS in Java, Python, or JavaScript. Supports real device and emulator testing locally and…
  2. testmu-ai/behat-skillGenerates Behat BDD tests for PHP with Gherkin feature files and MinkContext for browser testing. Use when user mentions "Behat", "PHP BDD", "Mink", "behat.yml".…
  3. testmu-ai/behave-skillGenerates Behave BDD tests for Python with Gherkin feature files and step implementations. Use when user mentions "Behave", "Python BDD", "Python Gherkin". Triggers…
  4. testmu-ai/capybara-skillGenerates Capybara E2E tests in Ruby with RSpec integration. Acceptance testing DSL for web apps. Use when user mentions "Capybara", "visit", "fill_in",…
  5. testmu-ai/cicd-pipeline-skillGenerates CI/CD pipeline configurations for test automation with GitHub Actions, Jenkins, GitLab CI, and Azure DevOps. Includes TestMu AI cloud integration. Use when…
  6. testmu-ai/codeception-skillGenerates Codeception tests in PHP covering acceptance, functional, and unit testing. BDD-style with Actor pattern. Use when user mentions "Codeception",…
  7. testmu-ai/cucumber-skillGenerates Cucumber BDD tests with Gherkin feature files and step definitions in Java, JavaScript, or Ruby. Use when user mentions "Cucumber", "Gherkin",…
  8. testmu-ai/cypress-skillGenerates production-grade Cypress E2E and component tests in JavaScript or TypeScript. Supports local execution and TestMu AI cloud. Use when the user asks to write…