60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
https://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TEST_PATH = getRootDirectory(gTestPath).replace(
|
|
"chrome://mochitests/content",
|
|
"https://example.com"
|
|
);
|
|
|
|
/**
|
|
* 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);
|
|
});
|
|
}
|
|
);
|
|
});
|