browser_accessibility_context_menu_inspector.js (3740B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 "use strict"; 4 5 const TEST_URI = ` 6 <h1 id="h1">header</h1> 7 <p id="p">paragraph</p> 8 <span id="span-1">text</span> 9 <span id="span-2"> 10 IamaverylongtextwhichdoesntfitinInlineTextChildReallyIdontIamtoobig 11 </span>`; 12 13 async function openContextMenuForNode({ toolbox }, selector) { 14 info("Selecting Inspector tab and opening a context menu"); 15 const inspector = await toolbox.selectTool("inspector"); 16 17 if (!selector) { 18 ok(inspector.selection.isBodyNode(), "Default selection is a body node."); 19 } else if (typeof selector === "string") { 20 await selectNode(selector, inspector, "test"); 21 } else { 22 const updated = inspector.once("inspector-updated"); 23 inspector.selection.setNodeFront(selector, { reason: "test" }); 24 await updated; 25 } 26 27 return openContextMenuAndGetAllItems(inspector); 28 } 29 30 function checkShowA11YPropertiesNode(allMenuItems) { 31 const showA11YPropertiesNode = allMenuItems.find( 32 item => item.id === "node-menu-showaccessibilityproperties" 33 ); 34 ok( 35 showA11YPropertiesNode, 36 "the popup menu now has a show accessibility properties item" 37 ); 38 return showA11YPropertiesNode; 39 } 40 41 async function checkAccessibleObjectSelection( 42 { toolbox, panel }, 43 menuItem, 44 isText 45 ) { 46 const inspector = await toolbox.getPanel("inspector"); 47 info( 48 "Triggering 'Show Accessibility Properties' and waiting for " + 49 "accessibility panel to open" 50 ); 51 const panelSelected = toolbox.once("accessibility-selected"); 52 const objectSelected = panel.once("new-accessible-front-selected"); 53 menuItem.click(); 54 await panelSelected; 55 const selected = await objectSelected; 56 57 const expectedNode = isText 58 ? inspector.selection.nodeFront.inlineTextChild 59 : inspector.selection.nodeFront; 60 const expectedSelected = 61 await panel.accessibilityProxy.accessibilityFront.accessibleWalkerFront.getAccessibleFor( 62 expectedNode 63 ); 64 is(selected, expectedSelected, "Accessible front selected correctly"); 65 66 const doc = panel.panelWin.document; 67 const propertiesTree = doc.querySelector(".tree"); 68 is(doc.activeElement, propertiesTree, "Properties list must be focused."); 69 ok( 70 isVisible(doc.querySelector(".treeTable .treeRow.selected")), 71 "Selected row is visible." 72 ); 73 } 74 75 addA11YPanelTask( 76 "Test show accessibility properties context menu.", 77 TEST_URI, 78 async function testShowAccessibilityPropertiesContextMenu(env) { 79 // Load the inspector to ensure it to use in this test. 80 await env.toolbox.loadTool("inspector"); 81 82 let allMenuItems = await openContextMenuForNode(env); 83 let showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems); 84 85 allMenuItems = await openContextMenuForNode(env, "#h1"); 86 showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems); 87 await checkAccessibleObjectSelection(env, showA11YPropertiesNode); 88 89 allMenuItems = await openContextMenuForNode(env, "#span-1"); 90 showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems); 91 await checkAccessibleObjectSelection(env, showA11YPropertiesNode, true); 92 93 allMenuItems = await openContextMenuForNode(env, "#span-2"); 94 showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems); 95 96 const inspector = env.toolbox.getPanel("inspector"); 97 const span2 = await getNodeFront("#span-2", inspector); 98 await inspector.markup.expandNode(span2); 99 const { nodes } = await inspector.walker.children(span2); 100 allMenuItems = await openContextMenuForNode(env, nodes[0]); 101 showA11YPropertiesNode = checkShowA11YPropertiesNode(allMenuItems); 102 await checkAccessibleObjectSelection(env, showA11YPropertiesNode, false); 103 } 104 );