From 774a37f7ab393e6afdffeb4bc8e3c070b0268a7b Mon Sep 17 00:00:00 2001 From: Mior Muhammad Zaki Date: Tue, 17 Oct 2023 04:28:12 +0800 Subject: [PATCH] Fixes `waitForTextIn()` broken in v7.11.2 (#1067) * Fixes `waitForTextIn()` broken in v7.11.2 Signed-off-by: Mior Muhammad Zaki * wip Signed-off-by: Mior Muhammad Zaki * wip Signed-off-by: Mior Muhammad Zaki * wip Signed-off-by: Mior Muhammad Zaki * wip Signed-off-by: Mior Muhammad Zaki * wip Signed-off-by: Mior Muhammad Zaki --------- Signed-off-by: Mior Muhammad Zaki --- composer.json | 2 +- src/Concerns/WaitsForElements.php | 7 +++++-- testbench.yaml | 3 +++ tests/Browser/BrowserTest.php | 11 +++++++++++ .../resources/views/wait-for-text-in.blade.php | 17 +++++++++++++++++ workbench/routes/web.php | 17 +++++++++++++++++ 6 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 workbench/resources/views/wait-for-text-in.blade.php create mode 100644 workbench/routes/web.php diff --git a/composer.json b/composer.json index 63273693a..60125f27b 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ }, "require-dev": { "mockery/mockery": "^1.4.2", - "orchestra/testbench": "^7.0|^8.0", + "orchestra/testbench": "^7.33|^8.13", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.10|^10.0.1", "psy/psysh": "^0.11.12" diff --git a/src/Concerns/WaitsForElements.php b/src/Concerns/WaitsForElements.php index 555db5652..7c5ed0c01 100644 --- a/src/Concerns/WaitsForElements.php +++ b/src/Concerns/WaitsForElements.php @@ -3,6 +3,7 @@ namespace Laravel\Dusk\Concerns; use Closure; +use Exception; use Facebook\WebDriver\Exception\NoSuchElementException; use Facebook\WebDriver\Exception\ScriptTimeoutException; use Facebook\WebDriver\Exception\TimeoutException; @@ -394,8 +395,10 @@ public function waitUsing($seconds, $interval, Closure $callback, $message = nul $this->driver->wait($seconds, $interval)->until( function ($driver) use ($callback) { - if ($callback()) { - return true; + try { + return $callback(); + } catch (Exception $e) { + return false; } }, $message ? sprintf($message, $seconds) : "Waited {$seconds} seconds for callback." diff --git a/testbench.yaml b/testbench.yaml index 67dbab5c8..abb629077 100644 --- a/testbench.yaml +++ b/testbench.yaml @@ -6,3 +6,6 @@ migrations: workbench: start: '/' + welcome: false + discovers: + web: true diff --git a/tests/Browser/BrowserTest.php b/tests/Browser/BrowserTest.php index 41ce690c9..11cf7767f 100644 --- a/tests/Browser/BrowserTest.php +++ b/tests/Browser/BrowserTest.php @@ -13,4 +13,15 @@ public function test_it_can_browse_default_laravel_page() ->assertSee('Documentation'); }); } + + public function test_it_handle_wait_for_text_in() + { + $this->browse(function (Browser $browser) { + $browser->visit('/tests/wait-for-text-in') + ->assertSeeIn('@copy-button', 'Copy') + ->press('@copy-button') + ->assertSeeIn('@copy-button', 'Copied!') + ->waitForTextIn('@copy-button', 'Copy', 3); + }); + } } diff --git a/workbench/resources/views/wait-for-text-in.blade.php b/workbench/resources/views/wait-for-text-in.blade.php new file mode 100644 index 000000000..b3e093464 --- /dev/null +++ b/workbench/resources/views/wait-for-text-in.blade.php @@ -0,0 +1,17 @@ + + + + + + + + + diff --git a/workbench/routes/web.php b/workbench/routes/web.php new file mode 100644 index 000000000..41fff772d --- /dev/null +++ b/workbench/routes/web.php @@ -0,0 +1,17 @@ +