From ecaa04ec824f33279f0fe6aa29e7c73c9c677fce Mon Sep 17 00:00:00 2001 From: Christophe Monniez Date: Wed, 22 Aug 2018 11:28:04 +0200 Subject: [PATCH] [FIX] tests: increase browser_js ready code timeout Before starting a JS test/tour the _wait_ready method evaluates if the test is ready with a timeout of 10 sec. From times to times, it happens that the page is not ready after this timeout but the problem is hidden. In order to help fixing that kind of issue, the timeout is increased to 60 sec and a warning is logged to emphasis the fact that an issue exists. Also some unused imports are removed with this commit --- odoo/tests/common.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/odoo/tests/common.py b/odoo/tests/common.py index 900bbc327a5..2050f25fc55 100644 --- a/odoo/tests/common.py +++ b/odoo/tests/common.py @@ -6,8 +6,6 @@ helpers and classes to write tests. """ import base64 import collections -import errno -import glob import importlib import itertools import json @@ -16,19 +14,15 @@ import operator import os import re import requests -import select import shutil -import socket import subprocess -import sys import tempfile import threading import time import unittest import werkzeug.urls from contextlib import contextmanager -from datetime import datetime, timedelta, date -from pprint import pformat +from datetime import datetime, date from decorator import decorator from lxml import etree, html @@ -538,13 +532,15 @@ class ChromeBrowser(): params = {'name': name, 'value': value, 'path': path, 'domain': domain} self._websocket_send('Network.setCookie', params=params) - def _wait_ready(self, ready_code, timeout=10): + def _wait_ready(self, ready_code, timeout=60): _logger.info('Evaluate ready code "%s"' % ready_code) awaited_result = {'result': {'type': 'boolean', 'value': True}} ready_id = self._websocket_send('Runtime.evaluate', params={'expression': ready_code}) last_bad_res = '' start_time = time.time() - while time.time() - start_time < timeout: + tdiff = time.time() - start_time + has_exceeded = False + while tdiff < timeout: try: res = json.loads(self.ws.recv()) except websocket.WebSocketTimeoutException: @@ -555,6 +551,11 @@ class ChromeBrowser(): else: last_bad_res = res ready_id = self._websocket_send('Runtime.evaluate', params={'expression': ready_code}) + tdiff = time.time() - start_time + if tdiff >= 2 and not has_exceeded: + has_exceeded = True + _logger.warning('The ready code takes too much time : %s' % tdiff) + self.take_screenshot(prefix='failed_ready') _logger.info('Ready code last try result: %s' % last_bad_res or res) return False