Bug 1381684 - Fix intermittent browser/components/extensions/test/browser/browser_ext_tabs_lastAccessed.js, r?mixedpuppy
This patch introduces two changes to the test:
1. It breaks apart the assertion that was combining three tests into individual assertions, so if this does
fail again in the future it will be easier to spot the actual problem.
2. It uses addTab and browserLoaded instead of openNewForegroundTab, which seems to allow the test to wait
long enough before starting the extension.
When I was able to reproduce the failure, after separating the assertions, I found the one that was failing
was the check that tab2.lastAccessed was less than the current time. I believe that the current time was being
recorded too soon, which is why I changed the test to not record the current time until after both tabs have
completed loading. This seems to fix the intermittent locally for me.
MozReview-Commit-ID: I3VoYODwjgz
--- a/browser/components/extensions/test/browser/browser_ext_tabs_lastAccessed.js
+++ b/browser/components/extensions/test/browser/browser_ext_tabs_lastAccessed.js
@@ -1,37 +1,37 @@
"use strict";
add_task(async function testLastAccessed() {
let past = Date.now();
- await BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com/?1");
- await BrowserTestUtils.openNewForegroundTab(gBrowser, "https://example.com/?2");
+ for (let url of ["https://example.com/?1", "https://example.com/?2"]) {
+ let tab = BrowserTestUtils.addTab(gBrowser, url, {skipAnimation: true});
+ await BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, url);
+ }
let extension = ExtensionTestUtils.loadExtension({
manifest: {
permissions: ["tabs"],
},
async background() {
browser.test.onMessage.addListener(async function(msg, past) {
- if (msg !== "past") {
- return;
- }
-
let [tab1] = await browser.tabs.query({url: "https://example.com/?1"});
let [tab2] = await browser.tabs.query({url: "https://example.com/?2"});
browser.test.assertTrue(tab1 && tab2, "Expected tabs were found");
let now = Date.now();
- browser.test.assertTrue(past < tab1.lastAccessed &&
- tab1.lastAccessed < tab2.lastAccessed &&
- tab2.lastAccessed <= now,
- "lastAccessed timestamps are recent and in the right order");
+ browser.test.assertTrue(past < tab1.lastAccessed,
+ "lastAccessed of tab 1 is later than the test start time.");
+ browser.test.assertTrue(tab1.lastAccessed < tab2.lastAccessed,
+ "lastAccessed of tab 2 is later than lastAccessed of tab 1.");
+ browser.test.assertTrue(tab2.lastAccessed <= now,
+ "lastAccessed of tab 2 is earlier than now.");
await browser.tabs.remove([tab1.id, tab2.id]);
browser.test.notifyPass("tabs.lastAccessed");
});
},
});