behat/mink-selenium2-driver package is a Selenium WebDriver integration for the Mink testing framework, enabling browser automation for PHP-based applications. It is ideal for:
chromedriver, geckodriver).behat/mink) as a wrapper.php-curl, php-xml (for Selenium JSON Wire Protocol).PHPUnit test case or create a custom Mink service for reuse.| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Selenium Setup | Requires external Selenium Server or WebDriver binaries (e.g., Docker). | Use docker-selenium or pre-built Docker images for CI/CD. |
| Maintenance Burden | Mink/Selenium2 is legacy (last major update in 2023, but stable). | Monitor for deprecations; consider forking or contributing fixes if critical. |
| Performance | Selenium can be slow compared to headless Chrome/Playwright. | Use headless browsers, parallelize tests, and cache WebDriver instances. |
| Flakiness | Browser automation is prone to flaky tests (e.g., timing issues). | Implement retry logic (e.g., behat/mink-extension with retry decorators). |
| Laravel Ecosystem | No native Laravel hooks (e.g., service container integration). | Wrap Mink in a Laravel service provider or facade for DI. |
PHPUnit or Pest test classes to use Mink sessions.TestingServiceProvider).php artisan mink:test).tests/Mink).HasMink) to reuse Mink sessions across tests.// config/mink.php
return [
'default_session' => 'selenium2',
'sessions' => [
'selenium2' => [
'driver' => 'Selenium2Driver',
'browser' => env('MINK_BROWSER', 'chrome'),
'capabilities' => [
'browserName' => env('MINK_BROWSER', 'chrome'),
'browser_version' => 'latest',
'platform' => 'Linux',
],
],
],
];
selenium/standalone-chrome).jobs:
mink-tests:
runs-on: ubuntu-latest
container:
image: selenium/standalone-chrome:latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-php@v3
- run: composer install
- run: php artisan mink:test
parallel-lint or custom scripts).php-image-comparison).| Component | Compatibility Notes |
|---|---|
| PHP Version | Supports PHP 8.0+ (check Laravel’s PHP version). |
| Laravel Version | No hard dependency, but test for Laravel 9/10 compatibility (Mink is PHP-agnostic). |
| Browsers | Works with any browser supported by Selenium (Chrome, Firefox, Edge, Safari). |
| Headless Mode | Supported (e.g., chromeOptions.addArguments('--headless')). |
| Database | Tests interact with Laravel’s database like any other test (use transactions). |
chromedriver, geckodriver).composer require behat/mink behat/mink-selenium2-driver
config/mink.php).MINK_BROWSER=firefox).tests/Mink/LoginTest.php).use Behat\Mink\Mink;
use Behat\Mink\Session;
use Behat\Mink\Driver\Selenium2Driver;
use Tests\TestCase;
class LoginTest extends TestCase {
protected Mink $mink;
protected function setUp(): void {
$this->mink = new Mink([
'selenium2' => new Session(new Selenium2Driver('chrome')),
]);
}
public function testLoginFlow() {
$session = $this->mink->getSession('selenium2');
$session->visit('/login');
$session->fillField('email', 'user@example.com');
$session->fillField('password', 'password');
$session->pressButton('Login');
$this->assertSession()->addressEquals('/dashboard');
}
}
php artisan test --testdox-html --filter
How can I help you explore Laravel packages today?