From dd0f5ac0a6ce9e465b4f523ee15379dff21e4d99 Mon Sep 17 00:00:00 2001 From: johnjbarton Date: Thu, 1 Oct 2020 16:47:40 -0700 Subject: [PATCH] fix(context): do not error when karma is navigating Change the flag name to karmaNavigating and set it along all paths where karma deliberately navigates. Other paths must be wrong. Fixes #3560 --- client/karma.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/client/karma.js b/client/karma.js index 2bd4f2cf3..823da44e8 100644 --- a/client/karma.js +++ b/client/karma.js @@ -4,7 +4,7 @@ var util = require('../common/util') function Karma (socket, iframe, opener, navigator, location, document) { var startEmitted = false - var reloadingContext = false + var karmaNavigating = false var self = this var queryParams = util.parseQueryParams(location.search) var browserId = queryParams.id || util.generateId('manual-') @@ -80,6 +80,8 @@ function Karma (socket, iframe, opener, navigator, location, document) { var childWindow = null function navigateContextTo (url) { + karmaNavigating = true + console.log('karmaNavigating', karmaNavigating) if (self.config.useIframe === false) { // run in new window if (self.config.runInParent === false) { @@ -89,9 +91,12 @@ function Karma (socket, iframe, opener, navigator, location, document) { childWindow.close() } childWindow = opener(url) + karmaNavigating = false + console.log('karmaNavigating', karmaNavigating) // run context on parent element (client_with_context) // using window.__karma__.scriptUrls to get the html element strings and load them dynamically } else if (url !== 'about:blank') { + karmaNavigating = false var loadScript = function (idx) { if (idx < window.__karma__.scriptUrls.length) { var parser = new DOMParser() @@ -123,20 +128,20 @@ function Karma (socket, iframe, opener, navigator, location, document) { // run in iframe } else { iframe.src = policy.createURL(url) + karmaNavigating = false + console.log('karmaNavigating', karmaNavigating) } } this.onbeforeunload = function () { - if (!reloadingContext) { + if (!karmaNavigating) { // TODO(vojta): show what test (with explanation about jasmine.UPDATE_INTERVAL) self.error('Some of your tests did a full page reload!') } - reloadingContext = false + karmaNavigating = false } function clearContext () { - reloadingContext = true - navigateContextTo('about:blank') } @@ -259,9 +264,11 @@ function Karma (socket, iframe, opener, navigator, location, document) { } socket.on('execute', function (cfg) { + console.log('-----------------------execute') // Delay our navigation to the next event in case the clearContext has not completed. setTimeout(function allowClearContextToComplete () { // reset startEmitted and reload the iframe + console.log('allowClearContextToComplete') startEmitted = false self.config = cfg