From f65dfc8e107eff2108842b0514329b2baf727103 Mon Sep 17 00:00:00 2001 From: "alexey.kamaev" Date: Wed, 18 Apr 2018 11:04:26 +0300 Subject: [PATCH] 1 --- src/client/automation/playback/type/type-text.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/client/automation/playback/type/type-text.js b/src/client/automation/playback/type/type-text.js index 55fae79be0e..7642a64d576 100644 --- a/src/client/automation/playback/type/type-text.js +++ b/src/client/automation/playback/type/type-text.js @@ -2,9 +2,10 @@ import hammerhead from '../../deps/hammerhead'; import testCafeCore from '../../deps/testcafe-core'; import nextTick from '../../utils/next-tick'; -var browserUtils = hammerhead.utils.browser; -var eventSimulator = hammerhead.eventSandbox.eventSimulator; -var listeners = hammerhead.eventSandbox.listeners; +var browserUtils = hammerhead.utils.browser; +var featureDetection = hammerhead.utils.featureDetection; +var eventSimulator = hammerhead.eventSandbox.eventSimulator; +var listeners = hammerhead.eventSandbox.listeners; var domUtils = testCafeCore.domUtils; var contentEditable = testCafeCore.contentEditable; @@ -107,8 +108,9 @@ function _excludeInvisibleSymbolsFromSelection (selection) { // NOTE: typing can be prevented in Chrome/Edge but can not be prevented in IE11 or Firefox // Firefox does not support TextInput event // Safari support TextInput event but adds e.data to node value. So let's ignore it +// On touch devices with safari it works as expected function simulateTextInput (element, text) { - const isTextInputIgnoredByBrowser = [ browserUtils.isFirefox, browserUtils.isSafari ].some(browser => browser); + const isTextInputIgnoredByBrowser = [ browserUtils.isFirefox, browserUtils.isSafari && !featureDetection.isTouchDevice].some(browser => browser); const isInputEventRequired = isTextInputIgnoredByBrowser || eventSimulator.textInput(element, text); return isInputEventRequired || browserUtils.isIE11 || browserUtils.isFirefox;