Bug 1287007 - Fix timing issue in test_delay_update_webextension.js draft
authorRob Wu <rob@robwu.nl>
Sat, 24 Sep 2016 14:54:53 +0200
changeset 428449 572c51e9a0902323abbd50651cedbc784cd2d3ef
parent 428448 1a3d1584dcc3f17daa42ea1c38d765a200aac4c7
child 428450 462145038d13e128d10a8d1b4c73c6967916745a
push id33305
push userbmo:rob@robwu.nl
push dateSun, 23 Oct 2016 20:56:25 +0000
bugs1287007
milestone52.0a1
Bug 1287007 - Fix timing issue in test_delay_update_webextension.js The onUpdateAvailable listener is asynchronously notified, so the caller (i.e. the test) cannot assume that a message sent immediately after triggering an update would trigger the `browser.test.onMessage` listener that was added in the onUpdateAvailable event handler. MozReview-Commit-ID: 12n64f5l3RA
toolkit/mozapps/extensions/test/xpcshell/test_delay_update_webextension.js
--- a/toolkit/mozapps/extensions/test/xpcshell/test_delay_update_webextension.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/test_delay_update_webextension.js
@@ -209,16 +209,17 @@ add_task(function* delay_updates_defer()
         browser.test.onMessage.addListener(msg => {
           if (msg == "allow") {
             browser.test.notifyPass("allowed");
             browser.runtime.reload();
           } else {
             browser.test.fail(`wrong message: ${msg}`);
           }
         });
+        browser.test.sendMessage("truly ready");
       });
       browser.test.sendMessage("ready");
     },
   }, DEFER_ID);
 
   yield Promise.all([extension.startup(), extension.awaitMessage("ready")]);
 
   let addon = yield promiseAddonByID(DEFER_ID);
@@ -244,16 +245,17 @@ add_task(function* delay_updates_defer()
   do_check_eq(addon_postponed.version, "1.0");
   do_check_eq(addon_postponed.name, "Generated extension");
   do_check_true(addon_postponed.isCompatible);
   do_check_false(addon_postponed.appDisabled);
   do_check_true(addon_postponed.isActive);
   do_check_eq(addon_postponed.type, "extension");
 
   // add-on will not allow upgrade until message is received
+  yield extension.awaitMessage("truly ready");
   extension.sendMessage("allow");
   yield extension.awaitFinish("allowed");
 
   // addon upgrade has been allowed
   let [addon_allowed] = yield promiseInstalled;
   yield promiseWebExtensionStartup();
 
   do_check_neq(addon_allowed, null);