Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Test adding several devices and removing one to ensure the correct device is removed.
const TEST_URL = "data:text/html;charset=utf-8,";
const device = {
width: 400,
height: 570,
pixelRatio: 1.5,
userAgent: "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0",
touch: true,
};
const device1 = Object.assign({}, device, {
name: "Test Device 1",
});
const device2 = Object.assign({}, device, {
name: "Test Device 2",
});
addRDMTask(
TEST_URL,
async function ({ ui }) {
const { toolWindow } = ui;
const { store, document } = toolWindow;
info("Verify that remove buttons affect the correct device");
const deviceSelector = document.getElementById("device-selector");
await openDeviceModal(ui);
info("Reveal device adder form");
let adderShow = document.querySelector("#device-add-button");
adderShow.click();
info("Add test device 1");
await addDeviceInModal(ui, device1);
info("Reveal device adder form");
adderShow = document.querySelector("#device-add-button");
adderShow.click();
info("Add test device 2");
await addDeviceInModal(ui, device2);
info("Verify all custom devices default to enabled in modal");
const deviceCbs = [
...document.querySelectorAll(
".device-type-custom .device-input-checkbox"
),
];
is(deviceCbs.length, 2, "Both devices have a checkbox in modal");
for (const cb of deviceCbs) {
ok(cb.checked, "Custom device enabled");
}
document.getElementById("device-close-button").click();
info("Look for device 1 and 2 in device selector");
await testMenuItems(toolWindow, deviceSelector, menuItems => {
const deviceItem1 = findMenuItem(menuItems, device1.name);
const deviceItem2 = findMenuItem(menuItems, device2.name);
ok(deviceItem1, "Test device 1 menu item added to device selector");
ok(deviceItem2, "Test device 2 menu item added to device selector");
});
await openDeviceModal(ui);
info("Remove device 2");
const deviceRemoveButtons = [
...document.querySelectorAll(".device-remove-button"),
];
is(
deviceRemoveButtons.length,
2,
"Both devices have a remove button in modal"
);
const removed = waitUntilState(
store,
state => state.devices.custom.length == 1
);
deviceRemoveButtons[1].click();
await removed;
document.getElementById("device-close-button").click();
info("Ensure device 2 is no longer in device selector");
await testMenuItems(toolWindow, deviceSelector, menuItems => {
const deviceItem1 = findMenuItem(menuItems, device1.name);
const deviceItem2 = findMenuItem(menuItems, device2.name);
ok(deviceItem1, "Test device 1 menu item exists");
ok(!deviceItem2, "Test device 2 menu item removed");
});
},
{ waitForDeviceList: true }
);
addRDMTask(
TEST_URL,
async function ({ ui }) {
const { toolWindow } = ui;
const { document } = toolWindow;
const deviceSelector = document.getElementById("device-selector");
info("Ensure device 1 is still in device selector");
await testMenuItems(toolWindow, deviceSelector, menuItems => {
const deviceItem1 = findMenuItem(menuItems, device1.name);
const deviceItem2 = findMenuItem(menuItems, device2.name);
ok(deviceItem1, "Test device 1 menu item exists");
ok(!deviceItem2, "Test device 2 option removed");
});
await openDeviceModal(ui);
info("Ensure device 1 is still in device modal");
const deviceCbs = [
...document.querySelectorAll(
".device-type-custom .device-input-checkbox"
),
];
is(deviceCbs.length, 1, "Only 1 custom present in modal");
const deviceCb1 = deviceCbs.find(cb => cb.value == device1.name);
ok(
deviceCb1 && deviceCb1.checked,
"Test device 1 checkbox exists and enabled"
);
info("Ensure device 2 is no longer in device modal");
const deviceCb2 = deviceCbs.find(cb => cb.value == device2.name);
ok(!deviceCb2, "Test device 2 checkbox does not exist");
},
{ waitForDeviceList: true }
);