Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
const TEST_PATH = getRootDirectory(gTestPath).replace(
);
/**
* Test tab navigation through the main toolbar and to the site domain link.
*/
add_task(async function test_tabnavigation() {
// Open a browser tab, enter reader mode, and test if the reset button
// restores the page layout to the default pref values.
await BrowserTestUtils.withNewTab(
TEST_PATH + "readerModeArticle.html",
async function (browser) {
let pageShownPromise = BrowserTestUtils.waitForContentEvent(
browser,
"AboutReaderContentReady"
);
let readerButton = document.getElementById("reader-mode-button");
readerButton.click();
await pageShownPromise;
await SpecialPowers.spawn(browser, [], async () => {
let doc = content.document;
await ContentTaskUtils.waitForCondition(() =>
doc.querySelector(".narrate-toggle:not([hidden])")
);
function ensureFocusOrder(list, shiftKey = false) {
let first = list.shift();
first.focus();
while (list.length) {
let next = list.shift();
EventUtils.synthesizeKey("KEY_Tab", { shiftKey }, content);
is(
doc.activeElement,
next,
`Focus should be on ${next.className}, was on ${doc.activeElement?.className}`
);
}
}
let expectedFocuses = Array.from(
doc.querySelectorAll(".toolbar-button")
).filter(n => !n.matches("[hidden] *"));
expectedFocuses.push(doc.querySelector(".reader-domain"));
ensureFocusOrder(Array.from(expectedFocuses));
let reversed = Array.from(expectedFocuses);
reversed.reverse();
ensureFocusOrder(reversed, true);
});
}
);
});