128 lines
4.0 KiB
JavaScript
128 lines
4.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
const TEST_URL = "data:text/html;charset=utf-8,";
|
|
const NEW_USER_AGENT = "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0";
|
|
|
|
const testDevice = {
|
|
name: "Fake Phone RDM Test",
|
|
width: 320,
|
|
height: 570,
|
|
pixelRatio: 5.5,
|
|
userAgent: "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0",
|
|
touch: true,
|
|
firefoxOS: true,
|
|
os: "custom",
|
|
featured: true,
|
|
};
|
|
|
|
// Add the new device to the list
|
|
addDeviceForTest(testDevice);
|
|
|
|
addRDMTask(TEST_URL, async function ({ ui }) {
|
|
reloadOnUAChange(true);
|
|
|
|
info("Check the default state of the user agent input");
|
|
await testUserAgent(ui, DEFAULT_UA);
|
|
|
|
info(`Change the user agent input to ${NEW_USER_AGENT} and press Escape`);
|
|
await changeUserAgentInput(ui, NEW_USER_AGENT, "VK_ESCAPE");
|
|
await testUserAgent(ui, DEFAULT_UA);
|
|
|
|
info(`Change the user agent input to ${NEW_USER_AGENT}`);
|
|
await changeUserAgentInput(ui, NEW_USER_AGENT);
|
|
await testUserAgent(ui, NEW_USER_AGENT);
|
|
|
|
info("Reset the user agent input back to the default UA");
|
|
await changeUserAgentInput(ui, "", "VK_TAB");
|
|
await testUserAgent(ui, DEFAULT_UA);
|
|
|
|
info("Test selecting Fenix user agent");
|
|
const firefoxVersion = AppConstants.MOZ_APP_VERSION.replace(/[ab]\d+/, "");
|
|
await changeUserAgentFromSelector(
|
|
ui,
|
|
"Firefox for Android",
|
|
`Mozilla/5.0 (Android 15; Mobile; rv:${firefoxVersion}) Gecko/${firefoxVersion} Firefox/${firefoxVersion}`
|
|
);
|
|
|
|
info(
|
|
"Verify that device user agent isn't shown before the device is selected"
|
|
);
|
|
const { toolWindow } = ui;
|
|
const { document } = toolWindow;
|
|
const userAgentSelector = document.querySelector("#user-agent-selector");
|
|
await testMenuItems(toolWindow, userAgentSelector, items => {
|
|
const menuItem = findMenuItem(items, testDevice.name);
|
|
ok(
|
|
!menuItem,
|
|
"Before selecting the device, it isn't shown in the user agent dropdown"
|
|
);
|
|
});
|
|
|
|
info("Test selecting the selected device user agent");
|
|
const waitForReload = await watchForDevToolsReload(ui.getViewportBrowser());
|
|
await selectDevice(ui, testDevice.name);
|
|
await waitForReload();
|
|
// We don't expect a reload here because the user agent is already set to the
|
|
// device's user agent when the device is selected. Selecting the user agent
|
|
// of the device won't trigger a reload here because the user agent isn't
|
|
// changed.
|
|
await changeUserAgentFromSelector(
|
|
ui,
|
|
testDevice.name,
|
|
testDevice.userAgent,
|
|
false
|
|
);
|
|
|
|
await testMenuItems(toolWindow, userAgentSelector, items => {
|
|
const menuItem = findMenuItem(items, testDevice.name);
|
|
ok(menuItem, "Found the item for the device's user agent");
|
|
is(menuItem.getAttribute("aria-checked"), "true", "The item is checked");
|
|
});
|
|
|
|
info("Test selecting the default user agent");
|
|
await changeUserAgentFromSelector(ui, "Firefox Desktop", "");
|
|
|
|
info(
|
|
"Test changing to a custom agent string, no user agent should be selected in the dropdrown menu"
|
|
);
|
|
await changeUserAgentInput(ui, "Custom user agent");
|
|
await testMenuItems(toolWindow, userAgentSelector, items => {
|
|
for (const menuItem of items) {
|
|
is(
|
|
menuItem.getAttribute("aria-checked"),
|
|
null,
|
|
"None of the user agent items are checked"
|
|
);
|
|
}
|
|
});
|
|
|
|
reloadOnUAChange(false);
|
|
});
|
|
|
|
async function changeUserAgentFromSelector(
|
|
ui,
|
|
browserName,
|
|
expectedUserAgent,
|
|
expectReload = true
|
|
) {
|
|
const { document } = ui.toolWindow;
|
|
const browser = ui.getViewportBrowser();
|
|
|
|
const changed = once(ui, "user-agent-changed");
|
|
let waitForDevToolsReload;
|
|
if (expectReload) {
|
|
waitForDevToolsReload = await watchForDevToolsReload(browser);
|
|
} else {
|
|
waitForDevToolsReload = async () => {};
|
|
}
|
|
await selectMenuItem(ui, "#user-agent-selector", browserName);
|
|
await changed;
|
|
await waitForDevToolsReload();
|
|
|
|
const userAgentInput = document.getElementById("user-agent-input");
|
|
is(userAgentInput.value, expectedUserAgent);
|
|
}
|