Package org.auraframework.components.ui.menu

Source Code of org.auraframework.components.ui.menu.MenuUITest

/*
* Copyright (C) 2013 salesforce.com, inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.auraframework.components.ui.menu;

import java.net.MalformedURLException;
import java.net.URISyntaxException;

import org.auraframework.test.WebDriverTestCase;
import org.auraframework.test.WebDriverTestCase.TargetBrowsers;
import org.auraframework.test.WebDriverUtil.BrowserType;
import org.auraframework.test.annotation.PerfTest;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;

/**
* UI automation to verify Action, checkbox and radio Menu using mouse and keyboard interaction .
*
* @userStory a07B0000000TG3R Excluding the test from IE due to know issue related to mouseOver Excluding it from touch
*            browsers due to to W-1478819 and mouse over related issues
*/
@TargetBrowsers({ BrowserType.GOOGLECHROME, BrowserType.FIREFOX })
public class MenuUITest extends WebDriverTestCase {

    public static final String MENUTEST_APP = "/uitest/menu_Test.app";
    public static final String MENUTEST_ATTACHTOBODY_APP = "/uitest/menu_AttachToBodyTest.app";
    public static final String MENUTEST_METADATA_APP = "/uitest/menu_MetadataTest.app";
    public static final String MENUTEST_EVENTBUBBLING_APP = "/uitest/menu_EventBubbling.app";

    public MenuUITest(String name) {
        super(name);
    }

    private void testActionMenuForApp(String appName) throws MalformedURLException, URISyntaxException {
        open(appName);
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        String menuItem2 = "actionItem2";
        String menuItem3 = "actionItem3";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement actionMenu = driver.findElement(By.className(menuName));
        WebElement actionItem2 = driver.findElement(By.className(menuItem2));
        WebElement actionItem2Element = actionItem2.findElement(By.tagName("a"));
        WebElement actionItem3 = driver.findElement(By.className(menuItem3));
        WebElement actionItem3Element = actionItem3.findElement(By.tagName("a"));

        // check menu list is not visible
        assertFalse("Menu list should not be visible", actionMenu.getAttribute("class").contains("visible"));

        menuLabel.click();
        // check menu list is visible after the click
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));

        // verify focus on action item3
        auraUITestingUtil.setHoverOverElement(menuItem3);
        assertEquals("Focus should be on actionItem3", actionItem3Element.getText(),
                auraUITestingUtil.getActiveElementText());

        String globalIdItem2 = auraUITestingUtil.getCmpGlobalIdGivenElementClassName(menuItem2);
        Double item2TopValue = Double.parseDouble(auraUITestingUtil.getBoundingRectPropOfElement(globalIdItem2, "top"));
        assertTrue("Item 2 in the menu List is should be visible on the page", item2TopValue > 0);

        // use send key("f") to move to actionItem2
        actionItem3Element.sendKeys("f");

        // verify focus on actionItem2
        assertEquals("Focus should be on actionItem 2", actionItem2Element.getText(),
                auraUITestingUtil.getActiveElementText());

        // action item 2 not clickable as its disable item
        actionItem2.click();
        // check menu list is still visible after the click
        assertTrue("Menu list should be visible after click on item2",
                actionMenu.getAttribute("class").contains("visible"));
        // set focus back to actionItem3
        auraUITestingUtil.setHoverOverElement(menuItem3);
        assertEquals("Focus should be on actionItem3", actionItem3Element.getText(),
                auraUITestingUtil.getActiveElementText());

        // click on item 1 and verify click worked
        actionItem3.click();
        assertEquals("Item3 not selected", "Inter Milan", menuLabel.getText());
    }

    private void testActionMenuViaKeyboardInteractionForApp(String appName) throws MalformedURLException,
            URISyntaxException {
        open(appName);
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        String menuItem1 = "actionItem1";
        String menuItem3 = "actionItem3";
        String menuItem4 = "actionItem4";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement actionMenu = driver.findElement(By.className(menuName));
        WebElement actionItem1 = driver.findElement(By.className(menuItem1));
        WebElement actionItem1Element = actionItem1.findElement(By.tagName("a"));
        WebElement actionItem3 = driver.findElement(By.className(menuItem3));
        WebElement actionItem3Element = actionItem3.findElement(By.tagName("a"));
        WebElement actionItem4 = driver.findElement(By.className(menuItem4));
        WebElement actionItem4Element = actionItem4.findElement(By.tagName("a"));

        // click on menu list
        menuLabel.click();
        // check menu list is visible after the click
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));

        // default focus on action item1
        assertEquals("Focus should be on actionItem1", actionItem1Element.getText(),
                auraUITestingUtil.getActiveElementText());

        // press down key twice
        actionItem1Element.sendKeys(Keys.DOWN, Keys.DOWN);

        // verify focus on action item3
        auraUITestingUtil.setHoverOverElement(menuItem3);
        assertEquals("Focus should be on actionItem3", actionItem3Element.getText(),
                auraUITestingUtil.getActiveElementText());

        actionItem3.click();
        assertEquals("Item3 unchecked after pressing Enter key", "Inter Milan", menuLabel.getText());

        menuLabel.click();
        // focus on action item4
        auraUITestingUtil.setHoverOverElement(menuItem4);
        assertEquals("Focus should be on actionItem4", actionItem4Element.getText(),
                auraUITestingUtil.getActiveElementText());

        actionItem4Element.sendKeys(Keys.UP);
        // verify focus on action item3
        assertEquals("Focus should be on actionItem3", actionItem3Element.getText(),
                auraUITestingUtil.getActiveElementText());

        // press space key and check if item3 got selected
        actionItem3Element.sendKeys(Keys.SPACE);
        assertEquals("Item3 not selected after pressing space key", "Inter Milan", menuLabel.getText());

        menuLabel.click();
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));
        auraUITestingUtil.setHoverOverElement(menuItem1);
        actionItem1Element.sendKeys(Keys.ESCAPE);
        assertFalse("Menu list should not be visible", actionMenu.getAttribute("class").contains("visible"));
    }

    /**
     * Test that verify's interaction with Action Menu Excluding Ipad and iphone as hover wont work for touch devices
     *
     * @throws MalformedURLException
     * @throws URISyntaxException
     */
    public void testActionMenu() throws MalformedURLException, URISyntaxException {
        testActionMenuForApp(MENUTEST_APP);
    }

    // Test case for W-2181713
    public void testActionMenuAttachToBodySet() throws MalformedURLException, URISyntaxException {
        testActionMenuForApp(MENUTEST_ATTACHTOBODY_APP);
    }

    public void testActionMenuGeneratedFromMetaData() throws MalformedURLException, URISyntaxException {
        testActionMenuForApp(MENUTEST_METADATA_APP);
    }

    public void testActionMenuViaKeyboardInteraction() throws MalformedURLException, URISyntaxException {
        testActionMenuViaKeyboardInteractionForApp(MENUTEST_APP);
    }

    // Test case for W-2234265
    // TODO: Uncomment test once W-2234265 is fixed
    public void testActionMenuAttachToBodySetViaKeyboardInteraction() throws MalformedURLException, URISyntaxException {
        testActionMenuViaKeyboardInteractionForApp(MENUTEST_ATTACHTOBODY_APP);
    }

    // TODO: W-2406307: remaining Halo test failure
    public void _testActionMenuGeneratedFromMetaDataViaKeyboardInteraction() throws MalformedURLException,
            URISyntaxException {
        testActionMenuViaKeyboardInteractionForApp(MENUTEST_METADATA_APP);
    }

    @PerfTest
    public void testCheckboxMenu() throws MalformedURLException, URISyntaxException {
        testMenuCheckboxForApp(MENUTEST_APP);
    }

    public void testCheckboxMenuGeneratedFromMetaData() throws MalformedURLException, URISyntaxException {
        testMenuCheckboxForApp(MENUTEST_METADATA_APP);
    }

    private void testMenuCheckboxForApp(String appName) throws MalformedURLException, URISyntaxException {
        open(appName);
        WebDriver driver = this.getDriver();
        String label = "checkboxMenuLabel";
        String menuName = "checkboxMenu";
        String menuItem3 = "checkboxItem3";
        String menuItem4 = "checkboxItem4";
        String globalIdItem3 = auraUITestingUtil.getCmpGlobalIdGivenElementClassName(menuItem3);
        String globalIdItem4 = auraUITestingUtil.getCmpGlobalIdGivenElementClassName(menuItem4);
        String disableValueM4Exp = auraUITestingUtil.getValueFromCmpExpression(globalIdItem4, "v.disabled");
        String selectedValueM4Exp = auraUITestingUtil.getValueFromCmpExpression(globalIdItem4, "v.selected");
        String selectedValueM3Exp = auraUITestingUtil.getValueFromCmpExpression(globalIdItem3, "v.selected");
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement menu = driver.findElement(By.className(menuName));
        WebElement item3 = driver.findElement(By.className(menuItem3));
        WebElement item3Element = item3.findElement(By.tagName("a"));
        WebElement item4 = driver.findElement(By.className(menuItem4));
        WebElement item4Element = item4.findElement(By.tagName("a"));
        WebElement button = driver.findElement(By.className("checkboxButton"));
        WebElement result = driver.findElement(By.className("result"));

        // check for default label present
        assertEquals("label is wrong", "NFC West Teams", menuLabel.getText());
        assertFalse("Default: CheckboxMenu list should not be visible", menu.getAttribute("class").contains("visible"));

        // click on label
        menuLabel.click();

        // verify menu list is visible
        assertTrue("CheckboxMenu list should be visible", menu.getAttribute("class").contains("visible"));

        // verify aria attribute item4 which is used for accessibility is disabled and selected
        assertTrue("Item4 aria attribute should be disabled",
                Boolean.valueOf(item4Element.getAttribute("aria-disabled")));
        assertTrue("Item4 aria attribute should be selected",
                Boolean.valueOf(item4Element.getAttribute("aria-checked")));

        // verify item4 is disabled and selected

        assertTrue("Item4 should be disabled", (Boolean) auraUITestingUtil.getEval(disableValueM4Exp));
        assertTrue("Item4 should be selected", (Boolean) auraUITestingUtil.getEval(selectedValueM4Exp));

        // click on item4
        item4Element.click();
        assertTrue("Item4 aria attribute should be Selected even when clicked",
                Boolean.valueOf(item4Element.getAttribute("aria-checked")));
        assertTrue("Item4 should be Selected even when clicked",
                (Boolean) auraUITestingUtil.getEval(selectedValueM4Exp));

        assertFalse("default: Item3 aria attribute should be Uncheked",
                Boolean.valueOf(item3Element.getAttribute("aria-checked")));
        assertFalse("default: Item3 should be Uncheked", (Boolean) auraUITestingUtil.getEval(selectedValueM3Exp));

        // click on item3
        item3Element.click();
        assertTrue("Item3 aria attribute should be Selected after the click",
                Boolean.valueOf(item3Element.getAttribute("aria-checked")));
        assertTrue("Item3 should be Selected after the click", (Boolean) auraUITestingUtil.getEval(selectedValueM3Exp));

        // click on item3 again
        auraUITestingUtil.pressEnter(item3Element);
        // verify not selected
        assertFalse("Item3 aria attribute should be Uncheked after Pressing Enter",
                Boolean.valueOf(item3Element.getAttribute("aria-checked")));
        assertFalse("Item3 should be Uncheked after Pressing Enter",
                (Boolean) auraUITestingUtil.getEval(selectedValueM3Exp));

        item3Element.sendKeys(Keys.SPACE);
        assertTrue("Item3 aria attribute should be checked after Pressing Space",
                Boolean.valueOf(item3Element.getAttribute("aria-checked")));
        assertTrue("Item3 should be checked after Pressing Space",
                (Boolean) auraUITestingUtil.getEval(selectedValueM3Exp));

        // check if focus changes when you use up and down arrow using keyboard
        item3Element.sendKeys(Keys.DOWN);
        assertEquals("Focus should be on item 4", item4Element.getText(), auraUITestingUtil.getActiveElementText());
        item4Element.sendKeys(Keys.UP);
        assertEquals("Focus should be back to item 3", item3Element.getText(), auraUITestingUtil.getActiveElementText());

        // press Tab to close to menu
        item3Element.sendKeys(Keys.TAB);

        // verify menu not visible
        assertFalse("CheckboxMenu list should not be visible after escape",
                menu.getAttribute("class").contains("visible"));

        // click on submit button and verify the results
        assertEquals("label value should not get updated", "NFC West Teams", menuLabel.getText());
        button.click();
        assertEquals("Checkbox items selected are not correct", "St. Louis Rams,Arizona Cardinals", result.getText());
    }

    public void testMenuRadio() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_APP);
        WebDriver driver = this.getDriver();
        String label = "radioMenuLabel";
        String menuName = "radioMenu";
        String menuItem3 = "radioItem3";
        String menuItem4 = "radioItem4";
        String menuItem5 = "radioItem5";
        String disableValueM4Exp = auraUITestingUtil.getValueFromCmpRootExpression(menuItem4, "v.disabled");
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement menu = driver.findElement(By.className(menuName));
        WebElement item3 = driver.findElement(By.className(menuItem3));
        WebElement item3Element = item3.findElement(By.tagName("a"));
        WebElement item4 = driver.findElement(By.className(menuItem4));
        WebElement item4Element = item4.findElement(By.tagName("a"));
        WebElement item5 = driver.findElement(By.className(menuItem5));
        WebElement item5Element = item5.findElement(By.tagName("a"));
        WebElement button = driver.findElement(By.className("radioButton"));
        WebElement result = driver.findElement(By.className("radioResult"));

        // check for default label present
        assertEquals("label is wrong", "National League West", menuLabel.getText());
        assertFalse("Default: CheckboxMenu list should not be visible", menu.getAttribute("class").contains("visible"));
        // open menu list
        menuLabel.click();
        // verify menu list is visible
        assertTrue("CheckboxMenu list should be visible", menu.getAttribute("class").contains("visible"));
        item3.click();
        // verify item3 got selected
        assertTrue("Item3 should be selected after the click", item3Element.getAttribute("class").contains("selected"));

        // send key to go to item 4 using 'd'
        item3Element.sendKeys("d");
        // verify focus on item 4
        assertEquals("Focus should be on item4 after the search", item4Element.getText(),
                auraUITestingUtil.getActiveElementText());
        // verify item is disabled
        assertTrue("Item4 aria attribute should be defaulted to disable",
                Boolean.valueOf(item4Element.getAttribute("aria-disabled")));
        assertTrue("Item4 should be defaulted to disable", (Boolean) auraUITestingUtil.getEval(disableValueM4Exp));

        // click on item4
        item4Element.click();
        // verify item4 should not be selectable
        assertFalse("Item4 should not be selectable as its disable item",
                item4Element.getAttribute("class").contains("selected"));
        // goto item 5 using down arrow
        item4Element.sendKeys(Keys.DOWN);
        // verify focus on item 5
        assertEquals("Focus should be on item5 after pressing down key", item5Element.getText(),
                auraUITestingUtil.getActiveElementText());
        // click on item 5 using space
        item5Element.sendKeys(Keys.SPACE);
        assertTrue("Item5 should be checked after pressing Space",
                item5Element.getAttribute("class").contains("selected"));
        assertFalse("Item3 should be unchecked after clicking item 5",
                item3Element.getAttribute("class").contains("selected"));
        // close the menu using esc key
        item5Element.sendKeys(Keys.ESCAPE);
        // check the result
        button.click();
        assertEquals("Checkbox items selected are not correct", "Colorado", result.getText());
    }

    /**
     * Test case for W-1575100
     *
     * @throws MalformedURLException
     * @throws URISyntaxException
     */
    public void testMenuExpandCollapse() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_APP);
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement menu = driver.findElement(By.className(menuName));
        WebElement button = driver.findElement(By.className("radioButton"));
        assertFalse("Action Menu list should not be visible", menu.getAttribute("class").contains("visible"));
        menuLabel.click();
        assertTrue("Action Menu list should be expanded", menu.getAttribute("class").contains("visible"));
        button.click();
        assertFalse("Action Menu list should be collapsed", menu.getAttribute("class").contains("visible"));
    }

    /**
     * Test case : W-2235117 menuItem should reposition itself relative to its trigger when attachToBody attribute is
     * set
     *
     * @throws MalformedURLException
     * @throws URISyntaxException TODO: Uncomment test once W-2235117 is fixed
     */
    public void _testMenuPostionWhenMenuItemAttachToBody() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_ATTACHTOBODY_APP);
        String menuItem3 = "actionItemAttachToBody3";
        WebDriver driver = this.getDriver();
        WebElement actionItem3 = driver.findElement(By.className(menuItem3));
        // Need to make the screen bigger so WebDriver doesn't need to scroll
        driver.manage().window().setSize(new Dimension(1366, 768));
        String trigger = "triggerAttachToBody";
        String menuList = "actionMenuAttachToBody";
        String triggerGlobalId = auraUITestingUtil.getCmpGlobalIdGivenElementClassName(trigger);
        String menuListGlobalId = auraUITestingUtil.getCmpGlobalIdGivenElementClassName(menuList);
        WebElement menuLabel = driver.findElement(By.className(trigger));
        WebElement menu = driver.findElement(By.className(menuList));
        menuLabel.click();
        assertTrue("Action Menu list should be expanded", menu.getAttribute("class").contains("visible"));
        verifyMenuPositionedCorrectly(triggerGlobalId, menuListGlobalId,
                "Menu List is not positioned correctly when the menuList rendered on the page");
        String triggerLeftPosBeforeClick = auraUITestingUtil.getBoundingRectPropOfElement(triggerGlobalId, "left");
        actionItem3.click();
        String triggerLeftPosAfterClickOnItem2 = auraUITestingUtil
                .getBoundingRectPropOfElement(triggerGlobalId, "left");
        assertEquals("Menu Item position changed after clicking on Item2", triggerLeftPosBeforeClick,
                triggerLeftPosAfterClickOnItem2);

        int currentWidth = driver.manage().window().getSize().width;
        int currentHeight = driver.manage().window().getSize().height;
        driver.manage().window().setSize(new Dimension(currentWidth - 200, currentHeight - 100));
        verifyMenuPositionedCorrectly(triggerGlobalId, menuListGlobalId,
                "Menu List is not positioned correctly after the resize");
    }

    /**
     * Verify horizontal alignment of menuItem
     *
     * @param trigger
     * @param menuList
     * @param failureMessage
     */
    private void verifyMenuPositionedCorrectly(String trigger, String menuList, String failureMessage) {
        String triggerLeftPos = auraUITestingUtil.getBoundingRectPropOfElement(trigger, "left");
        String menuListLeftPos = auraUITestingUtil.getBoundingRectPropOfElement(menuList, "left");
        assertEquals(failureMessage, triggerLeftPos, menuListLeftPos);
    }

    /*
     * Test case for: W-1559070
     */
    public void testRemovingMenuDoesNotThrowJsError() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_APP);
        WebDriver driver = this.getDriver();
        String uiMenuClassName = "clubMenu";
        String uiMenuLocalId = "uiMenu";
        WebElement menuLabel = driver.findElement(By.className(uiMenuClassName));
        assertTrue("UiMenu should be present on the page", menuLabel.isDisplayed());

        // For W-1540590
        assertEquals("ui:menu's wrapper element should be div", "div", menuLabel.getTagName());
        String uiMenu = auraUITestingUtil.getFindAtRootExpr(uiMenuLocalId);
        auraUITestingUtil.getEval("$A.unrender(" + uiMenu + ")");
        assertFalse("UiMenu should not be present after unrender", isElementPresent(By.className(uiMenuClassName)));
    }

    /**
     * Test case to check double clicking on Menu Trigger link component within 350ms with disableDoubleClicks attribute
     * set disregards the 2nd click. Test case for W-1855568
     *
     * @throws MalformedURLException
     * @throws URISyntaxException
     */
    public void testDoubleClickOnMenuTrigger() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_APP);
        String label = "triggercheckPosition";
        String menuName = "checkPosition";
        WebDriver driver = this.getDriver();
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement menu = driver.findElement(By.className(menuName));
        Actions a = new Actions(driver);
        a.doubleClick(menuLabel).build().perform();
        assertTrue("Check Menu list should be expanded even after double click",
                menu.getAttribute("class").contains("visible"));
    }

    /**
     * Test case for W-2315592 Components extends menuItem get's focus
     *
     * @throws MalformedURLException
     * @throws URISyntaxException
     */
    public void testFocusForExtendedMenuItem() throws MalformedURLException, URISyntaxException {
        open("/uitest/menu_extendMenuItem.app");
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        String menuItem1 = "actionItem1";
        String menuItem2 = "actionItem2";
        String menuItem3 = "actionItem3";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement actionMenu = driver.findElement(By.className(menuName));
        WebElement actionItem1 = driver.findElement(By.className(menuItem1));
        WebElement actionItem1Element = actionItem1.findElement(By.tagName("a"));
        WebElement actionItem2 = driver.findElement(By.className(menuItem2));
        WebElement actionItem2Element = actionItem2.findElement(By.tagName("a"));
        WebElement actionItem3 = driver.findElement(By.className(menuItem3));
        WebElement actionItem3Element = actionItem3.findElement(By.tagName("a"));
        // click on menu list
        menuLabel.click();
        // check menu list is visible after the click
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));

        // default focus on action item1
        assertEquals("Focus should be on actionItem1", actionItem1Element.getText(),
                auraUITestingUtil.getActiveElementText());

        // verify focus on action item3
        auraUITestingUtil.setHoverOverElement(menuItem3);
        assertEquals("Focus should be on actionItem3", actionItem3Element.getText(),
                auraUITestingUtil.getActiveElementText());
        // use send key("f") to move to actionItem2
        actionItem3Element.sendKeys("f");

        // verify focus on actionItem2
        assertEquals("Focus should be on actionItem 2", actionItem2Element.getText(),
                auraUITestingUtil.getActiveElementText());
    }

    /**
     * Test case to allow bubbling of event with menu Bug: W-2368359
     *
     * @throws MalformedURLException
     * @throws URISyntaxException
     */
    public void testStopClickPropogoationByDefault() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_EVENTBUBBLING_APP);
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement actionMenu = driver.findElement(By.className(menuName));
        String valueExpression = auraUITestingUtil.getValueFromRootExpr("v.eventBubbled");
        valueExpression = auraUITestingUtil.prepareReturnStatement(valueExpression);
        assertNull("Event should not bubble up to parent div", auraUITestingUtil.getEval(valueExpression));
        // click on menu list
        menuLabel.click();
        // check menu list is visible after the click
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));
        assertTrue("Event should get bubble up to parent div", auraUITestingUtil.getBooleanEval(valueExpression));
    }

    /*
     * Test case to Stop bubbling of event when StopClickPropogoation attribute is set Bug: W-2368359
     */
    public void testStopClickPropogoationIsSet() throws MalformedURLException, URISyntaxException {
        open(MENUTEST_EVENTBUBBLING_APP + "?stopClickPropagation=true");
        WebDriver driver = this.getDriver();
        String label = "trigger";
        String menuName = "actionMenu";
        WebElement menuLabel = driver.findElement(By.className(label));
        WebElement actionMenu = driver.findElement(By.className(menuName));
        String valueExpression = auraUITestingUtil.getValueFromRootExpr("v.eventBubbled");
        valueExpression = auraUITestingUtil.prepareReturnStatement(valueExpression);
        assertNull("Event should not bubble up to parent div", auraUITestingUtil.getEval(valueExpression));

        // click on menu list
        menuLabel.click();
        // check menu list is visible after the click
        assertTrue("Menu list should be visible", actionMenu.getAttribute("class").contains("visible"));
        assertNull("Event should not bubble up to parent div when StopPropogoation is set on menu",
                auraUITestingUtil.getEval(valueExpression));
    }
}
TOP

Related Classes of org.auraframework.components.ui.menu.MenuUITest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.