Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
let doc, tbody, tabAboutProcesses;
const rowTypes = ["process", "window", "thread-summary", "thread"];
function promiseUpdate() {
return promiseAboutProcessesUpdated({
doc,
tbody,
force: true,
tabAboutProcesses,
});
}
add_setup(async function () {
info("Setting up about:processes");
tabAboutProcesses = await BrowserTestUtils.openNewForegroundTab({
gBrowser,
opening: "about:processes",
waitForLoad: true,
});
doc = tabAboutProcesses.linkedBrowser.contentDocument;
tbody = doc.getElementById("process-tbody");
await promiseUpdate();
});
add_task(function testTableHeadersMarkup() {
let sortingToggles = doc.querySelectorAll(".clickable");
info("Verify table headers are properly marked up.");
sortingToggles.forEach(btn => {
Assert.equal(
btn.tagName,
"BUTTON",
"Sortable table headers are marked up as buttons"
);
Assert.ok(
btn.hasAttribute("aria-sort"),
"All sortable table headers have an aria-sort"
);
Assert.equal(
btn.getAttribute("aria-sort"),
"none",
"Sortable table headers are not sorted by default"
);
Assert.ok(
doc.l10n.getAttributes(btn).id,
"Sortable table headers have a localization ID set up"
);
});
});
add_task(function testTableHeadersClicking() {
let sortingName = doc.getElementById("column-name");
let sortingMemory = doc.getElementById("column-memory-resident");
let sortingCpu = doc.getElementById("column-cpu-total");
info("Verify we can toggle table sorting by clicking table header buttons.");
sortingName.click();
Assert.equal(
sortingName.getAttribute("aria-sort"),
"descending",
"Clicked sortable table header is now sorted in descending order"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
sortingName.click();
Assert.equal(
sortingName.getAttribute("aria-sort"),
"ascending",
"Clicked sortable table header is now sorted in ascending order"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
sortingMemory.click();
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"descending",
"Clicked sortable table header is now sorted in descending order"
);
Assert.equal(
sortingName.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
sortingCpu.click();
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"descending",
"Clicked sortable table header is now sorted in descending order"
);
Assert.equal(
sortingName.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
});
add_task(function testTableHeadersKeypressing() {
let sortingName = doc.getElementById("column-name");
let sortingMemory = doc.getElementById("column-memory-resident");
let sortingCpu = doc.getElementById("column-cpu-total");
info(
"Verify we can toggle table sorting by pressing Enter or Space on table header buttons."
);
sortingName.focus();
Assert.equal(
sortingName,
doc.activeElement,
"Sortable table header can be focused (1)"
);
// Test Enter key on the Name column:
EventUtils.synthesizeKey("KEY_Enter");
Assert.equal(
sortingName.getAttribute("aria-sort"),
"descending",
"Pressing Enter on a sortable table header is sorting its column"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
// Test Space key on the Name column:
EventUtils.synthesizeKey(" ");
Assert.equal(
sortingName.getAttribute("aria-sort"),
"ascending",
"Pressing Space on a sortable table header is sorting its column"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
EventUtils.synthesizeKey("KEY_Tab");
Assert.equal(
sortingMemory,
doc.activeElement,
"Sortable table header can be focused (2)"
);
// Test Enter key on the Memory column:
EventUtils.synthesizeKey("KEY_Enter");
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"descending",
"Pressing Enter on a sortable table header is sorting its column"
);
Assert.equal(
sortingName.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
EventUtils.synthesizeKey("KEY_Tab");
Assert.equal(
sortingCpu,
doc.activeElement,
"Sortable table header can be focused (3)"
);
// Test Space key on the CPU column:
EventUtils.synthesizeKey(" ");
Assert.equal(
sortingCpu.getAttribute("aria-sort"),
"descending",
"Pressing Enter on a sortable table header is sorting its column"
);
Assert.equal(
sortingName.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (1)"
);
Assert.equal(
sortingMemory.getAttribute("aria-sort"),
"none",
"Other sortable table headers are not sorted (2)"
);
});
registerCleanupFunction(function () {
doc = null;
tbody = null;
BrowserTestUtils.removeTab(tabAboutProcesses);
});