From 2ca7f4e649b25b57d546e343e26d78c5121dd0e7 Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Wed, 5 Nov 2014 14:04:13 +0800 Subject: [PATCH] MDL-48063 behat: Fixed JS Exception M is not created on all pages, like cron and Steps which check for exported data. So we need to ensure M is defined, before using it in behat_hooks::wait_for_pending_js() --- lib/tests/behat/behat_hooks.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/tests/behat/behat_hooks.php b/lib/tests/behat/behat_hooks.php index 8b5f7349033..1f7f1a53abe 100644 --- a/lib/tests/behat/behat_hooks.php +++ b/lib/tests/behat/behat_hooks.php @@ -406,7 +406,18 @@ class behat_hooks extends behat_base { for ($i = 0; $i < self::EXTENDED_TIMEOUT * 10; $i++) { $pending = ''; try { - $jscode = 'return ' . self::PAGE_READY_JS . ' ? "" : M.util.pending_js.join(":");'; + $jscode = + 'if (typeof M === "undefined") { + if (document.readyState === "complete") { + return ""; + } else { + return "incomplete"; + } + } else if (' . self::PAGE_READY_JS . ') { + return ""; + } else { + return M.util.pending_js.join(":"); + }'; $pending = $this->getSession()->evaluateScript($jscode); } catch (NoSuchWindow $nsw) { // We catch an exception here, in case we just closed the window we were interacting with.