fune/devtools/client/aboutdebugging/test/browser_tabs.js
Julian Descottes 640fe52298 Bug 1454696 - Run eslint --fix for prefer-const;r=yulia
MozReview-Commit-ID: F6xUXCgdRE4

--HG--
extra : rebase_source : 65de1b0aba412d9044b5196115f74276caa058f2
2018-06-01 12:36:09 +02:00

77 lines
2.3 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
const TAB_URL = "data:text/html,<title>foo</title>";
add_task(async function() {
const { tab, document } = await openAboutDebugging("tabs");
// Wait for initial tabs list which may be empty
let tabsElement = getTabList(document);
await waitUntilElement(".target-name", tabsElement);
// Refresh tabsElement to get the .target-list element
tabsElement = getTabList(document);
let names = [...tabsElement.querySelectorAll(".target-name")];
const initialTabCount = names.length;
info("Open a new background tab");
const newTab = await addTab(TAB_URL, { background: true });
info("Wait for the tab to appear in the list with the correct name");
const container = await waitUntilTabContainer("foo", document);
info("Wait until the title to update");
await waitUntil(() => {
return container.querySelector(".target-name").title === TAB_URL;
}, 100);
const icon = container.querySelector(".target-icon");
ok(icon && icon.src, "Tab icon found and src attribute is not empty");
info("Check if the tab icon is a valid image");
await new Promise(r => {
const image = new Image();
image.onload = () => {
ok(true, "Favicon is not a broken image");
r();
};
image.onerror = () => {
ok(false, "Favicon is a broken image");
r();
};
image.src = icon.src;
});
// Finally, close the tab
await removeTab(newTab);
info("Wait until the tab container is removed");
await waitUntil(() => !getTabContainer("foo", document), 100);
// Check that the tab disappeared from the UI
names = [...tabsElement.querySelectorAll("#tabs .target-name")];
is(names.length, initialTabCount, "The tab disappeared from the UI");
await closeAboutDebugging(tab);
});
function getTabContainer(name, document) {
const nameElements = [...document.querySelectorAll("#tabs .target-name")];
const nameElement = nameElements.filter(element => element.textContent === name)[0];
if (nameElement) {
return nameElement.closest(".target-container");
}
return null;
}
async function waitUntilTabContainer(name, document) {
await waitUntil(() => {
return getTabContainer(name, document);
});
return getTabContainer(name, document);
}