browser_device_custom_remove.js (4249B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 // Test adding several devices and removing one to ensure the correct device is removed. 7 8 const TEST_URL = "data:text/html;charset=utf-8,"; 9 10 const device = { 11 width: 400, 12 height: 570, 13 pixelRatio: 1.5, 14 userAgent: "Mozilla/5.0 (Mobile; rv:39.0) Gecko/39.0 Firefox/39.0", 15 touch: true, 16 }; 17 18 const device1 = Object.assign({}, device, { 19 name: "Test Device 1", 20 }); 21 22 const device2 = Object.assign({}, device, { 23 name: "Test Device 2", 24 }); 25 26 addRDMTask( 27 TEST_URL, 28 async function ({ ui }) { 29 const { toolWindow } = ui; 30 const { store, document } = toolWindow; 31 32 info("Verify that remove buttons affect the correct device"); 33 34 const deviceSelector = document.getElementById("device-selector"); 35 36 await openDeviceModal(ui); 37 38 info("Reveal device adder form"); 39 let adderShow = document.querySelector("#device-add-button"); 40 adderShow.click(); 41 42 info("Add test device 1"); 43 await addDeviceInModal(ui, device1); 44 45 info("Reveal device adder form"); 46 adderShow = document.querySelector("#device-add-button"); 47 adderShow.click(); 48 49 info("Add test device 2"); 50 await addDeviceInModal(ui, device2); 51 52 info("Verify all custom devices default to enabled in modal"); 53 const deviceCbs = [ 54 ...document.querySelectorAll( 55 ".device-type-custom .device-input-checkbox" 56 ), 57 ]; 58 is(deviceCbs.length, 2, "Both devices have a checkbox in modal"); 59 for (const cb of deviceCbs) { 60 ok(cb.checked, "Custom device enabled"); 61 } 62 document.getElementById("device-close-button").click(); 63 64 info("Look for device 1 and 2 in device selector"); 65 66 await testMenuItems(toolWindow, deviceSelector, menuItems => { 67 const deviceItem1 = findMenuItem(menuItems, device1.name); 68 const deviceItem2 = findMenuItem(menuItems, device2.name); 69 ok(deviceItem1, "Test device 1 menu item added to device selector"); 70 ok(deviceItem2, "Test device 2 menu item added to device selector"); 71 }); 72 73 await openDeviceModal(ui); 74 75 info("Remove device 2"); 76 const deviceRemoveButtons = [ 77 ...document.querySelectorAll(".device-remove-button"), 78 ]; 79 is( 80 deviceRemoveButtons.length, 81 2, 82 "Both devices have a remove button in modal" 83 ); 84 const removed = waitUntilState( 85 store, 86 state => state.devices.custom.length == 1 87 ); 88 deviceRemoveButtons[1].click(); 89 await removed; 90 document.getElementById("device-close-button").click(); 91 92 info("Ensure device 2 is no longer in device selector"); 93 await testMenuItems(toolWindow, deviceSelector, menuItems => { 94 const deviceItem1 = findMenuItem(menuItems, device1.name); 95 const deviceItem2 = findMenuItem(menuItems, device2.name); 96 ok(deviceItem1, "Test device 1 menu item exists"); 97 ok(!deviceItem2, "Test device 2 menu item removed"); 98 }); 99 }, 100 { waitForDeviceList: true } 101 ); 102 103 addRDMTask( 104 TEST_URL, 105 async function ({ ui }) { 106 const { toolWindow } = ui; 107 const { document } = toolWindow; 108 109 const deviceSelector = document.getElementById("device-selector"); 110 111 info("Ensure device 1 is still in device selector"); 112 await testMenuItems(toolWindow, deviceSelector, menuItems => { 113 const deviceItem1 = findMenuItem(menuItems, device1.name); 114 const deviceItem2 = findMenuItem(menuItems, device2.name); 115 ok(deviceItem1, "Test device 1 menu item exists"); 116 ok(!deviceItem2, "Test device 2 option removed"); 117 }); 118 119 await openDeviceModal(ui); 120 121 info("Ensure device 1 is still in device modal"); 122 const deviceCbs = [ 123 ...document.querySelectorAll( 124 ".device-type-custom .device-input-checkbox" 125 ), 126 ]; 127 is(deviceCbs.length, 1, "Only 1 custom present in modal"); 128 const deviceCb1 = deviceCbs.find(cb => cb.value == device1.name); 129 ok( 130 deviceCb1 && deviceCb1.checked, 131 "Test device 1 checkbox exists and enabled" 132 ); 133 134 info("Ensure device 2 is no longer in device modal"); 135 const deviceCb2 = deviceCbs.find(cb => cb.value == device2.name); 136 ok(!deviceCb2, "Test device 2 checkbox does not exist"); 137 }, 138 { waitForDeviceList: true } 139 );