Browse Source

Add workarounds for Firefox in context click tests (#8547)

tags/8.1.0.alpha1
Henri Sara 7 years ago
parent
commit
4c61090f2d

+ 11
- 0
uitest-common/src/main/java/com/vaadin/tests/tb3/AbstractTB3Test.java View File

} }
} }


protected void contextClickElement(WebElement element) {
if (BrowserUtil.isFirefox(getDesiredCapabilities())) {
// Workaround for Selenium/TB and Firefox 45 issue
getCommandExecutor().executeScript(
"var ev = document.createEvent('HTMLEvents'); ev.initEvent('contextmenu', true, false); arguments[0].dispatchEvent(ev);",
element);
} else {
new Actions(getDriver()).contextClick(element).perform();
}
}

protected boolean isLoadingIndicatorVisible() { protected boolean isLoadingIndicatorVisible() {
WebElement loadingIndicator = findElement( WebElement loadingIndicator = findElement(
By.className("v-loading-indicator")); By.className("v-loading-indicator"));

+ 2
- 3
uitest/src/test/java/com/vaadin/tests/components/checkbox/CheckboxContextClickTest.java View File

import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.DesiredCapabilities;


import com.vaadin.testbench.By; import com.vaadin.testbench.By;
WebElement input = checkbox.findElement(By.xpath("input")); WebElement input = checkbox.findElement(By.xpath("input"));
WebElement label = checkbox.findElement(By.xpath("label")); WebElement label = checkbox.findElement(By.xpath("label"));


new Actions(getDriver()).contextClick(input).perform();
contextClickElement(input);
Assert.assertEquals("1. checkbox context clicked", getLogRow(0)); Assert.assertEquals("1. checkbox context clicked", getLogRow(0));
Assert.assertEquals("checked", checkbox.getValue()); Assert.assertEquals("checked", checkbox.getValue());


new Actions(getDriver()).contextClick(label).perform();
contextClickElement(label);
Assert.assertEquals("2. checkbox context clicked", getLogRow(0)); Assert.assertEquals("2. checkbox context clicked", getLogRow(0));
Assert.assertEquals("checked", checkbox.getValue()); Assert.assertEquals("checked", checkbox.getValue());
} }

+ 18
- 4
uitest/src/test/java/com/vaadin/tests/contextclick/AbstractContextClickTest.java View File



import com.vaadin.testbench.elements.AbstractComponentElement; import com.vaadin.testbench.elements.AbstractComponentElement;
import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.parallel.BrowserUtil;
import com.vaadin.testbench.parallel.TestCategory; import com.vaadin.testbench.parallel.TestCategory;
import com.vaadin.tests.tb3.MultiBrowserTest; import com.vaadin.tests.tb3.MultiBrowserTest;


* @param e * @param e
* web element * web element
* @param xCoord * @param xCoord
* x coordinate
* x coordinate relative to the top-left corner of the element
* @param yCoord * @param yCoord
* y coordinate
* y coordinate relative to the top-left corner of the element
*/ */
protected void contextClick(WebElement e, int xCoord, int yCoord) { protected void contextClick(WebElement e, int xCoord, int yCoord) {
new Actions(getDriver()).moveToElement(e, xCoord, yCoord).contextClick()
.moveByOffset(-5, -5).click().perform();
if (BrowserUtil.isFirefox(getDesiredCapabilities())) {
// Workaround for Selenium/TB and Firefox 45 issue
int x = e.getLocation().getX() + xCoord;
int y = e.getLocation().getY() + yCoord;
getCommandExecutor().executeScript(
"var ev = document.createEvent('MouseEvents'); ev.initMouseEvent('contextmenu', true, true, document.defaultView, 1, arguments[1], arguments[2], arguments[1], arguments[2], false, false, false, false, 2, null); arguments[0].dispatchEvent(ev);",
e, x, y);
// make sure browser context menu does not block the test
getCommandExecutor().executeScript(
"var ev = document.createEvent('MouseEvents'); ev.initMouseEvent('click', true, true, document.defaultView, 1, arguments[1]-5, arguments[2]-5, arguments[1]-5, arguments[2]-5, false, false, false, false, 1, null); arguments[0].dispatchEvent(ev);",
e, x, y);
} else {
new Actions(getDriver()).moveToElement(e, xCoord, yCoord)
.contextClick().moveByOffset(-5, -5).click().perform();
}
} }


} }

+ 1
- 1
uitest/src/test/java/com/vaadin/tests/contextclick/GridContextClickTest.java View File

import org.junit.Test; import org.junit.Test;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;


import com.vaadin.testbench.elements.GridElement;
import com.vaadin.testbench.elements.ButtonElement; import com.vaadin.testbench.elements.ButtonElement;
import com.vaadin.testbench.elements.GridElement;


public class GridContextClickTest extends AbstractContextClickTest { public class GridContextClickTest extends AbstractContextClickTest {



Loading…
Cancel
Save