From 43f80f05edf726a5e6c7fed187cc95598ddf20bc Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 20:27:13 +0500 Subject: [PATCH 1/6] add double click method to trait --- src/Api/Concerns/InteractsWithElements.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/Api/Concerns/InteractsWithElements.php b/src/Api/Concerns/InteractsWithElements.php index 7bec5196..2f2a3002 100644 --- a/src/Api/Concerns/InteractsWithElements.php +++ b/src/Api/Concerns/InteractsWithElements.php @@ -23,6 +23,18 @@ public function click(string $text, array $options = []): Webpage return $this; } + /** + * Double click the link with the given text. + * + * @param array $options + */ + public function doubleClick(string $text, array $options = []): Webpage + { + $this->guessLocator($text)->dblclick($options); + + return $this; + } + /** * Get the text of the element matching the given selector. */ From 03ef65765818094df24b65098465835362a55f09 Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 20:27:44 +0500 Subject: [PATCH 2/6] add a basic test --- tests/Browser/Webpage/ClickTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Browser/Webpage/ClickTest.php b/tests/Browser/Webpage/ClickTest.php index 7ff3e58c..7fe96f14 100644 --- a/tests/Browser/Webpage/ClickTest.php +++ b/tests/Browser/Webpage/ClickTest.php @@ -93,3 +93,19 @@ $page->click('#button', options: ['clickCount' => 2]); $page->assertSeeIn('#result', 'Option-2 clicked'); }); + +it('can double click an element', function (): void { + Route::get('/', fn (): string => ' +

+ '); + + $page = visit('/'); + + $page->doubleClick('#button'); + $page->assertSeeIn('#result', 'Double Clicked'); +}); From 358de35d374659396935b0b982d0103a4342cd67 Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 20:27:56 +0500 Subject: [PATCH 3/6] wip --- tests/Browser/Webpage/ClickTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Browser/Webpage/ClickTest.php b/tests/Browser/Webpage/ClickTest.php index 7fe96f14..e4ca07ac 100644 --- a/tests/Browser/Webpage/ClickTest.php +++ b/tests/Browser/Webpage/ClickTest.php @@ -109,3 +109,18 @@ $page->doubleClick('#button'); $page->assertSeeIn('#result', 'Double Clicked'); }); + +it('can double click an element with text selector', function (): void { + Route::get('/', fn (): string => ' +

+
+ Double Click Me +
'); + + $page = visit('/'); + + $page->doubleClick('Double Click Me'); + $page->assertSeeIn('#result', 'Double Clicked'); +}); From 60d5dcc5c9704e1b3ad060ed666d991fe4d899b5 Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 21:40:26 +0500 Subject: [PATCH 4/6] add test to see it can click on other types of elements --- tests/Browser/Webpage/ClickTest.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/Browser/Webpage/ClickTest.php b/tests/Browser/Webpage/ClickTest.php index e4ca07ac..0f7a7009 100644 --- a/tests/Browser/Webpage/ClickTest.php +++ b/tests/Browser/Webpage/ClickTest.php @@ -124,3 +124,24 @@ $page->doubleClick('Double Click Me'); $page->assertSeeIn('#result', 'Double Clicked'); }); + +it('can double click on different element types', function (string $element): void { + Route::get('/', fn (): string => " +

+ $element + "); + + $page = visit('/'); + + $page->doubleClick('#clickable'); + $page->assertSeeIn('#result', 'Double Clicked'); +})->with([ + '', + '
Button
', + '', + '', + '', + '', + '', + 'Button', +]); From 1414a64403bc2ef73b881b3833c7dd99b1df63a5 Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 21:47:51 +0500 Subject: [PATCH 5/6] dbclick can select text as well --- tests/Browser/Webpage/ClickTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/Browser/Webpage/ClickTest.php b/tests/Browser/Webpage/ClickTest.php index 0f7a7009..89f84755 100644 --- a/tests/Browser/Webpage/ClickTest.php +++ b/tests/Browser/Webpage/ClickTest.php @@ -145,3 +145,18 @@ '', 'Button', ]); + +it('can double click to select text content', function (): void { + Route::get('/', fn (): string => ' +

+ This is some selectable text content that can be selected +

+

+ '); + + $page = visit('/'); + + $page->doubleClick('#selectable'); + $page->assertSeeIn('#result', 'selected'); +}); + From b6a515599ef6b6c89013033cf0bd24e672fd15c1 Mon Sep 17 00:00:00 2001 From: Mansoor Khan <8mansoorkhan@gmail.com> Date: Tue, 9 Sep 2025 21:54:47 +0500 Subject: [PATCH 6/6] run pint --- tests/Browser/Webpage/ClickTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/Browser/Webpage/ClickTest.php b/tests/Browser/Webpage/ClickTest.php index 89f84755..c4ec257f 100644 --- a/tests/Browser/Webpage/ClickTest.php +++ b/tests/Browser/Webpage/ClickTest.php @@ -159,4 +159,3 @@ $page->doubleClick('#selectable'); $page->assertSeeIn('#result', 'selected'); }); -