/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Tests the device selector button and the menu items. const MenuItem = require("resource://devtools/client/shared/components/menu/MenuItem.js"); const FIREFOX_ICON = 'url("chrome://devtools/skin/images/browsers/firefox.svg")'; const DUMMY_ICON = `url("${MenuItem.DUMMY_ICON}")`; const FIREFOX_DEVICE = { name: "Device of Firefox user-agent", userAgent: "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0", width: 320, height: 570, pixelRatio: 5.5, touch: true, firefoxOS: true, os: "custom", featured: true, }; const TEST_DEVICES = [ { name: FIREFOX_DEVICE.name, hasIcon: true, }, { name: "Laptop with MDPI screen", hasIcon: false, }, ]; addDeviceForTest(FIREFOX_DEVICE); // Add the laptop to the device list const { updatePreferredDevices, } = require("resource://devtools/client/responsive/actions/devices.js"); updatePreferredDevices({ added: ["Laptop with MDPI screen"], removed: [], }); addRDMTask( URL_ROOT, async function ({ ui }) { const deviceSelector = ui.toolWindow.document.getElementById("device-selector"); for (const testDevice of TEST_DEVICES) { info(`Check "${name}" device`); await testMenuItems(ui.toolWindow, deviceSelector, menuItems => { const menuItem = findMenuItem(menuItems, testDevice.name); ok(menuItem, "The menu item is on the list"); const label = menuItem.querySelector(".iconic > .label"); const backgroundImage = ui.toolWindow.getComputedStyle( label, "::before" ).backgroundImage; const icon = testDevice.hasIcon ? FIREFOX_ICON : DUMMY_ICON; is(backgroundImage, icon, "The icon is correct"); }); info("Check device selector button"); await selectDevice(ui, testDevice.name); const backgroundImage = ui.toolWindow.getComputedStyle( deviceSelector, "::before" ).backgroundImage; const icon = testDevice.hasIcon ? FIREFOX_ICON : "none"; is(backgroundImage, icon, "The icon is correct"); } }, { waitForDeviceList: true } );