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()
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.