From b3b4a6d8002250c73b57bcd8c497012e44514516 Mon Sep 17 00:00:00 2001 From: Andreas Tolfsen Date: Mon, 28 Nov 2016 11:11:31 +0000 Subject: [PATCH] Bug 1320629 - Increase timeout of test_window_set_timeout_is_not_cancelled; r=whimboo As debug builds are inherently slow, we need to increase the wait time before triggering the `setTimeout` callback so that the next `marionette.execute_script` statement has time to run. MozReview-Commit-ID: IAgicNAmVA6 --HG-- extra : rebase_source : dcb0ae95265e28e08c257260eff426d87a6340af --- .../tests/unit/test_execute_script.py | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/testing/marionette/harness/marionette/tests/unit/test_execute_script.py b/testing/marionette/harness/marionette/tests/unit/test_execute_script.py index a4b9d9966a82..0f4909f34459 100644 --- a/testing/marionette/harness/marionette/tests/unit/test_execute_script.py +++ b/testing/marionette/harness/marionette/tests/unit/test_execute_script.py @@ -6,9 +6,11 @@ import os import time import urllib -from marionette import MarionetteTestCase, WindowManagerMixin from marionette_driver import By, errors from marionette_driver.marionette import HTMLElement +from marionette_driver.wait import Wait + +from marionette import MarionetteTestCase, WindowManagerMixin def inline(doc): @@ -239,27 +241,27 @@ class TestExecuteContent(MarionetteTestCase): "return typeof arguments[0] == 'undefined'")) def test_window_set_timeout_is_not_cancelled(self): + def content_timeout_triggered(mn): + return mn.execute_script("return window.n", sandbox=None) > 0 + + # subsequent call to execute_script after this + # should not cancel the setTimeout event self.marionette.navigate(inline(""" """)) - # first execute script call should not cancel event + # as debug builds are inherently slow, + # we need to assert the event did not already fire self.assertEqual(0, self.marionette.execute_script( - "return window.contentTimeoutTriggered", sandbox=None)) + "return window.n", sandbox=None), + "setTimeout already fired") - # test that event was not cancelled - time.sleep(1) - self.assertEqual(1, self.marionette.execute_script( - "return window.contentTimeoutTriggered", sandbox=None)) - - # ../../../../evaluate.js:/scriptTimeoutID/ - # sets the script timeout handler using the content frame script - # so the in-content setTimeout should always return 2 - self.assertEqual(2, self.marionette.execute_script( - "return window.contentTimeoutID", sandbox=None)) + # if event was cancelled, this will time out + Wait(self.marionette).until(content_timeout_triggered, + timeout=8, + message="Scheduled setTimeout event was cancelled by call to execute_script") class TestExecuteChrome(WindowManagerMixin, TestExecuteContent):