browser_containers_name_input.js (1954B)
1 const CONTAINERS_URL = 2 "chrome://browser/content/preferences/dialogs/containers.xhtml"; 3 4 add_setup(async function () { 5 await openPreferencesViaOpenPreferencesAPI("containers", { leaveOpen: true }); 6 registerCleanupFunction(async function () { 7 BrowserTestUtils.removeTab(gBrowser.selectedTab); 8 }); 9 }); 10 11 add_task(async function () { 12 async function openDialog() { 13 let doc = gBrowser.selectedBrowser.contentDocument; 14 15 let dialogPromise = promiseLoadSubDialog(CONTAINERS_URL); 16 17 let addButton = doc.getElementById("containersAdd"); 18 addButton.doCommand(); 19 20 let dialog = await dialogPromise; 21 22 return dialog.document; 23 } 24 25 let { contentDocument } = gBrowser.selectedBrowser; 26 let containerNodes = Array.from( 27 contentDocument.querySelectorAll("[data-category=paneContainers]") 28 ); 29 ok( 30 containerNodes.find(node => node.getBoundingClientRect().width > 0), 31 "Should actually be showing the container nodes." 32 ); 33 34 let doc = await openDialog(); 35 36 let name = doc.getElementById("name"); 37 let btnApplyChanges = doc.querySelector("dialog").getButton("accept"); 38 39 Assert.equal(name.value, "", "The name textbox should initlally be empty"); 40 Assert.ok( 41 btnApplyChanges.disabled, 42 "The done button should initially be disabled" 43 ); 44 45 function setName(value) { 46 name.value = value; 47 48 let event = new doc.defaultView.InputEvent("input", { data: value }); 49 SpecialPowers.dispatchEvent(doc.defaultView, name, event); 50 } 51 52 setName("test"); 53 54 Assert.ok( 55 !btnApplyChanges.disabled, 56 "The done button should be enabled when the value is not empty" 57 ); 58 59 setName(""); 60 61 Assert.ok( 62 btnApplyChanges.disabled, 63 "The done button should be disabled when the value is empty" 64 ); 65 66 setName("\u0009\u000B\u000C\u0020\u00A0\uFEFF\u000A\u000D\u2028\u2029"); 67 68 Assert.ok( 69 btnApplyChanges.disabled, 70 "The done button should be disabled when the value contains only whitespaces" 71 ); 72 });