/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; /* import-globals-from ../../mochitest/role.js */ /* import-globals-from ../../mochitest/states.js */ loadScripts( { name: "role.js", dir: MOCHITESTS_DIR }, { name: "states.js", dir: MOCHITESTS_DIR } ); /** * Test details/summary */ addAccessibleTask( `
Foo

Bar

`, async (browser, accDoc) => { let details = getNativeInterface(accDoc, "details"); is( details.getAttributeValue("AXRole"), "AXGroup", "Correct role for details" ); is( details.getAttributeValue("AXSubrole"), "AXDetails", "Correct subrole for details" ); let detailsChildren = details.getAttributeValue("AXChildren"); is(detailsChildren.length, 1, "collapsed details has only one child"); let summary = detailsChildren[0]; is( summary.getAttributeValue("AXRole"), "AXButton", "Correct role for summary" ); is( summary.getAttributeValue("AXSubrole"), "AXSummary", "Correct subrole for summary" ); is(summary.getAttributeValue("AXExpanded"), 0, "Summary is collapsed"); let actions = summary.actionNames; ok(actions.includes("AXPress"), "Summary Has press action"); let stateChanged = waitForStateChange("summary", STATE_EXPANDED, true); summary.performAction("AXPress"); // The reorder gecko event notifies us of a tree change. await stateChanged; is(summary.getAttributeValue("AXExpanded"), 1, "Summary is expanded"); detailsChildren = details.getAttributeValue("AXChildren"); is(detailsChildren.length, 2, "collapsed details has only one child"); stateChanged = waitForStateChange("summary", STATE_EXPANDED, false); summary.performAction("AXPress"); // The reorder gecko event notifies us of a tree change. await stateChanged; is(summary.getAttributeValue("AXExpanded"), 0, "Summary is collapsed 2"); detailsChildren = details.getAttributeValue("AXChildren"); is(detailsChildren.length, 1, "collapsed details has only one child"); } );