Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
/**
* Test that the initial route is /setup
*/
add_task(async function () {
info("Check root route redirects to setup page");
const { document, tab } = await openAboutDebugging();
is(document.location.hash, "#/setup");
await removeTab(tab);
});
/**
* Test that the routes in about:debugging show the proper views and document.title
*/
add_task(async function () {
// enable USB devices mocks
const mocks = new Mocks();
const { document, tab } = await openAboutDebugging();
info("Check 'This Firefox' route");
document.location.hash = "#/runtime/this-firefox";
await waitUntil(() => document.querySelector(".qa-runtime-page"));
const infoLabel = document.querySelector(".qa-runtime-name").textContent;
// NOTE: when using USB Mocks, we see only "Firefox" as the device name
ok(infoLabel.includes("Firefox"), "Runtime is displayed as Firefox");
ok(!infoLabel.includes(" on "), "Runtime is not associated to any device");
is(
document.title,
"Debugging - Runtime / this-firefox",
"Checking title for 'runtime' page"
);
info("Check 'Setup' page");
document.location.hash = "#/setup";
await waitUntil(() => document.querySelector(".qa-connect-page"));
ok(true, "Setup page has been shown");
is(document.title, "Debugging - Setup", "Checking title for 'setup' page");
info("Check 'USB device runtime' page");
// connect to a mocked USB runtime
mocks.createUSBRuntime("1337id", {
deviceName: "Fancy Phone",
name: "Lorem ipsum",
});
mocks.emitUSBUpdate();
await connectToRuntime("Fancy Phone", document);
// navigate to it via URL
document.location.hash = "#/runtime/1337id";
await waitUntil(() => document.querySelector(".qa-runtime-page"));
const runtimeLabel = document.querySelector(".qa-runtime-name").textContent;
is(
document.title,
"Debugging - Runtime / 1337id",
"Checking title for 'runtime' page with USB device"
);
ok(
runtimeLabel.includes("Lorem ipsum"),
"Runtime is displayed with the mocked name"
);
await removeTab(tab);
});
/**
* Test that an invalid route redirects to / (currently This Firefox page)
*/
add_task(async function () {
info("Check an invalid route redirects to root");
const { document, tab } = await openAboutDebugging();
info("Waiting for a non setup page to load");
document.location.hash = "#/runtime/this-firefox";
await waitUntil(() => document.querySelector(".qa-runtime-page"));
info("Update hash & wait for a redirect to root (connect page)");
document.location.hash = "#/lorem-ipsum";
await waitUntil(() => document.querySelector(".qa-connect-page"));
is(document.title, "Debugging - Setup", "Checking title for 'setup' page");
is(document.location.hash, "#/setup", "Redirected to root");
await removeTab(tab);
});
/**
* Test that routes from old about:debugging redirect to this Firefox.
*/
add_task(async function testOldAboutDebuggingRoutes() {
info("Check that routes from old about:debugging redirect to this Firefox");
const { document, tab } = await openAboutDebugging();
const routes = ["addons", "tabs", "workers"];
for (const route of routes) {
info("Move to setup page before testing the route");
document.location.hash = "#/setup";
await waitUntil(() => document.querySelector(".qa-connect-page"));
info(`Check that navigating to ${route} redirects to This Firefox`);
document.location.hash = route;
await waitUntil(() => document.querySelector(".qa-runtime-page"));
is(
document.location.hash,
"#/runtime/this-firefox",
`${route} was redirected to This Firefox`
);
}
await removeTab(tab);
});