laravel / dusk

Laravel Dusk provides simple end-to-end testing and browser automation.
https://laravel.com/docs/dusk
MIT License
1.87k stars 319 forks source link

[7.x] Keyboard Support Improvements #1053

Closed crynobone closed 1 year ago

crynobone commented 1 year ago

Before

$key = PHP_OS_FAMILY === 'Darwin' ? \Facebook\WebDriver\WebDriverKeys::COMMAND : \Facebook\WebDriver\WebDriverKeys::CONTROL;

$this->browse(function (Browser $browser) use ($key) {
    $browser
        ->visit('/first')
        // ...
        ->tap(function (Browser $browser) use ($key) {
            $browser->driver->getKeyboard()->pressKey($key);
        })
        ->click('@link.to.second')
        ->tap(function (Browser $browser) use ($key) {
            $browser->driver->getKeyboard()->releaseKey($key);
        })
        // ...
    ;
});

After

$key = PHP_OS_FAMILY === 'Darwin' ? \Facebook\WebDriver\WebDriverKeys::COMMAND : \Facebook\WebDriver\WebDriverKeys::CONTROL;

$this->browse(function (Browser $browser) use ($key) {
    $browser
        ->visit('/first')
        // ...
        ->usesKeyboard(function (Keyboard $keyboard) use ($key) {
            $keyboard->press($key);
            $keyboard->browser->click('@link.to.second');
            $keyboard->release($key);
        }) 
        // or alternatively
        ->controlClick('@link.to.second')
        // ...
    ;
});