From f4b6cf11ac95b7648ff00f8e3a39d59aba1b6ee0 Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Tue, 15 Jan 2019 22:35:59 +0200 Subject: [PATCH 1/6] added legacy to testKeyboardEvents --- tests/Js/EventsTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Js/EventsTest.php b/tests/Js/EventsTest.php index f06999b..34d3dda 100644 --- a/tests/Js/EventsTest.php +++ b/tests/Js/EventsTest.php @@ -87,6 +87,7 @@ public function testMouseOver() /** * @dataProvider provideKeyboardEventsModifiers + * @group legacy */ public function testKeyboardEvents($modifier, $eventProperties) { From 8fa1ef2f96c22aca13437cbcec80e69bae954f99 Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Tue, 15 Jan 2019 22:36:23 +0200 Subject: [PATCH 2/6] added testKeyboardEventsPressKey --- tests/Js/EventsTest.php | 64 +++++++++++++++++++++++++++++++++++++++ web-fixtures/js_test.html | 10 ++++++ 2 files changed, 74 insertions(+) diff --git a/tests/Js/EventsTest.php b/tests/Js/EventsTest.php index 34d3dda..fb71e20 100644 --- a/tests/Js/EventsTest.php +++ b/tests/Js/EventsTest.php @@ -120,4 +120,68 @@ public function provideKeyboardEventsModifiers() 'meta' => array('meta', '0 / 0 / 0 / 1'), ); } + + /** + * @dataProvider provideKeyboardEventsPressKeyModifiers + */ + public function testKeyboardEventsPressKey($modifier, $char, array $expected) + { + $this->getSession()->visit($this->pathTo('/js_test.html')); + $webAssert = $this->getAssertSession(); + + $input = $webAssert->elementExists('css', '.elements input.input.fourth'); + $event = $webAssert->elementExists('css', '.elements .text-event'); + + $input->pressKey($char, $modifier); + $this->assertEquals($expected, array_map('trim', array_filter(explode(';', $event->getText())))); + } + + public function provideKeyboardEventsPressKeyModifiers() + { + /** + * @see http://api.jquery.com/keypress/ + * + * Note that keydown and keyup provide a code indicating which key is pressed, + * while keypress indicates which character was entered. + * For example, a lowercase "a" will be reported as 65 by keydown and keyup, but as 97 by keypress. + * An uppercase "A" is reported as 65 by all events. + */ + return array( + 'none' => array(null, 'u', array( // u = 117 U = 85 + 'event=keydown keyCode=85 modifier=0 / 0 / 0 / 0', + 'event=keypress keyCode=117 modifier=0 / 0 / 0 / 0', + 'event=keyup keyCode=85 modifier=0 / 0 / 0 / 0' + )), + 'alt' => array('alt', 'a', array( // a = 97 A = 65 + 'event=keydown keyCode=18 modifier=1 / 0 / 0 / 0', + 'event=keydown keyCode=65 modifier=1 / 0 / 0 / 0', + 'event=keypress keyCode=97 modifier=1 / 0 / 0 / 0', + 'event=keyup keyCode=65 modifier=1 / 0 / 0 / 0', + 'event=keyup keyCode=18 modifier=0 / 0 / 0 / 0' + )), + // do not use ctrl+r it will force browser to reload (firefox) + // jQuery considers ctrl as being a metaKey in the normalized event + 'ctrl' => array('ctrl', 'b', array( // b = 98 B = 66 + 'event=keydown keyCode=17 modifier=0 / 1 / 0 / 1', + 'event=keydown keyCode=66 modifier=0 / 1 / 0 / 1', + 'event=keypress keyCode=98 modifier=0 / 1 / 0 / 1', + 'event=keyup keyCode=66 modifier=0 / 1 / 0 / 1', + 'event=keyup keyCode=17 modifier=0 / 0 / 0 / 0' + )), + 'shift' => array('shift', 'c', array( // c = 99 C = 67 + 'event=keydown keyCode=16 modifier=0 / 0 / 1 / 0', + 'event=keydown keyCode=67 modifier=0 / 0 / 1 / 0', + 'event=keypress keyCode=67 modifier=0 / 0 / 1 / 0', + 'event=keyup keyCode=67 modifier=0 / 0 / 1 / 0', + 'event=keyup keyCode=16 modifier=0 / 0 / 0 / 0' + )), + 'meta' => array('meta', 'd', array( // d = 100 D = 68 + 'event=keydown keyCode=224 modifier=0 / 0 / 0 / 1', + 'event=keydown keyCode=68 modifier=0 / 0 / 0 / 1', + 'event=keypress keyCode=100 modifier=0 / 0 / 0 / 1', + 'event=keyup keyCode=68 modifier=0 / 0 / 0 / 1', + 'event=keyup keyCode=224 modifier=0 / 0 / 0 / 0' + )) + ); + } } diff --git a/web-fixtures/js_test.html b/web-fixtures/js_test.html index 6285455..d14b79a 100644 --- a/web-fixtures/js_test.html +++ b/web-fixtures/js_test.html @@ -29,6 +29,7 @@ +
@@ -84,6 +85,15 @@ $('.text-event').text('key upped:' + ev.which + ' / ' + ev.altKey * 1 + ' / ' + ev.ctrlKey * 1 + ' / ' + ev.shiftKey * 1 + ' / ' + ev.metaKey * 1); }); + $('.elements input.input.fourth').bind('keydown keypress keyup', function(ev) { + $('.text-event').append([ + 'event=' + ev.type, + // chrome and firefox are returning different values on keypress + 'keyCode=' + (ev.keyCode || ev.charCode || ev.key), + 'modifier=' + ((ev.altKey * 1) + ' / ' + (ev.ctrlKey * 1) + ' / ' + (ev.shiftKey * 1) + ' / ' + (ev.metaKey * 1)) + ].join(' ') + ';'); + }); + $( "#draggable" ).draggable(); $( "#droppable" ).droppable({ drop: function( event, ui ) { From 6f7a63e0dca9d35597bbfdebe6202cb6a71209ec Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Tue, 15 Jan 2019 22:39:48 +0200 Subject: [PATCH 3/6] updated behat/mink to ~1.8 --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 824eb70..9282218 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "require": { "php": ">=5.4", - "behat/mink": "~1.7", + "behat/mink": "~1.8", "symfony/phpunit-bridge": "^4.2" }, "require-dev": { From fd14794845ff454843775e7049f49ec28a05a654 Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Mon, 2 Sep 2019 21:20:12 +0300 Subject: [PATCH 4/6] TO BE REVERTED - added custom repo for testing --- composer.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 9282218..e8d2473 100644 --- a/composer.json +++ b/composer.json @@ -16,10 +16,15 @@ "email": "stof@notk.org" } ], - + "repositories": [ + { + "type": "github", + "url": "https://github.com/oleg-andreyev/Mink.git" + } + ], "require": { "php": ">=5.4", - "behat/mink": "~1.8", + "behat/mink": "dev-deprecate-keyup-keypress-keydown", "symfony/phpunit-bridge": "^4.2" }, "require-dev": { From c7af4709df0c366f7c4b5696e42a2064dc7aadad Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Mon, 2 Sep 2019 21:28:30 +0300 Subject: [PATCH 5/6] TO BE REVERTED - added custom repo for testing --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e8d2473..116ca98 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ ], "repositories": [ { - "type": "github", + "type": "vcs", "url": "https://github.com/oleg-andreyev/Mink.git" } ], From 699fe621935731f7fd7e7981fb3aa414febe4bd5 Mon Sep 17 00:00:00 2001 From: Oleg Andreyev Date: Mon, 2 Sep 2019 21:31:02 +0300 Subject: [PATCH 6/6] TO BE REVERTED - added custom repo for testing --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 116ca98..8fe6935 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,8 @@ "repositories": [ { "type": "vcs", - "url": "https://github.com/oleg-andreyev/Mink.git" + "url": "https://github.com/oleg-andreyev/Mink.git", + "no-api": true } ], "require": {