From 69f047c26de976a8bb71a1ded6922facdbdfe0b9 Mon Sep 17 00:00:00 2001 From: Pierre Paridans Date: Mon, 18 Jul 2022 08:50:26 +0000 Subject: [PATCH] [IMP] web,tests,test_main_flows: Chrome headless touch option Before this commit Chrome's "touch mode" was enabled in both desktop and mobile-like tests suite (when run headless). To better match real usecases, this commit adds an option to enable "touch mode" only in mobile tests suites; keeping it disabled in desktop ones. Part-of: odoo/odoo#95924 --- addons/web/tests/test_js.py | 1 + odoo/addons/test_main_flows/tests/test_flow.py | 1 + odoo/tests/common.py | 13 ++++++++----- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/addons/web/tests/test_js.py b/addons/web/tests/test_js.py index 5bc383a3884..8394b796d5d 100644 --- a/addons/web/tests/test_js.py +++ b/addons/web/tests/test_js.py @@ -40,6 +40,7 @@ class WebSuite(odoo.tests.HttpCase): @odoo.tests.tagged('post_install', '-at_install') class MobileWebSuite(odoo.tests.HttpCase): browser_size = '375x667' + touch_enabled = True def test_mobile_js(self): # webclient mobile test suite diff --git a/odoo/addons/test_main_flows/tests/test_flow.py b/odoo/addons/test_main_flows/tests/test_flow.py index 04e62e5804d..63d2318d58c 100644 --- a/odoo/addons/test_main_flows/tests/test_flow.py +++ b/odoo/addons/test_main_flows/tests/test_flow.py @@ -78,6 +78,7 @@ class TestUi(BaseTestUi): class TestUiMobile(BaseTestUi): browser_size = '375x667' + touch_enabled = True def test_01_main_flow_tour_mobile(self): diff --git a/odoo/tests/common.py b/odoo/tests/common.py index 0309ce2eee6..6495d59d5c2 100644 --- a/odoo/tests/common.py +++ b/odoo/tests/common.py @@ -880,7 +880,7 @@ class ChromeBrowser: """ Helper object to control a Chrome headless process. """ remote_debugging_port = 0 # 9222, change it in a non-git-tracked file - def __init__(self, logger, window_size, test_class): + def __init__(self, logger, window_size, touch_enabled, test_class): self._logger = logger self.test_class = test_class if websocket is None: @@ -904,6 +904,7 @@ class ChromeBrowser: os.makedirs(self.screenshots_dir, exist_ok=True) self.window_size = window_size + self.touch_enabled = touch_enabled self.sigxcpu_handler = None self._chrome_start() self._find_websocket() @@ -1043,10 +1044,11 @@ class ChromeBrowser: '--remote-debugging-port': str(self.remote_debugging_port), '--no-sandbox': '', '--disable-gpu': '', - # required for tests that depends on the jquery.touchSwipe library, which detects - # touch capabilities using "'ontouchstart' in window" - '--touch-events':'', } + if self.touch_enabled: + # enable Chrome's Touch mode, useful to detect touch capabilities using + # "'ontouchstart' in window" + switches['--touch-events'] = '' cmd = [self.executable] cmd += ['%s=%s' % (k, v) if v else k for k, v in switches.items()] @@ -1557,6 +1559,7 @@ class HttpCase(TransactionCase): registry_test_mode = True browser = None browser_size = '1366x768' + touch_enabled = False _logger: logging.Logger = None @@ -1587,7 +1590,7 @@ class HttpCase(TransactionCase): def start_browser(cls): # start browser on demand if cls.browser is None: - cls.browser = ChromeBrowser(cls._logger, cls.browser_size, cls.__name__) + cls.browser = ChromeBrowser(cls._logger, cls.browser_size, cls.touch_enabled, cls.__name__) cls.addClassCleanup(cls.terminate_browser) @classmethod