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

@@ -1012,6 +1012,17 @@ public abstract class AbstractTB3Test extends ParallelTest {
}
}

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() {
WebElement loadingIndicator = findElement(
By.className("v-loading-indicator"));

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

@@ -20,7 +20,6 @@ import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.DesiredCapabilities;

import com.vaadin.testbench.By;
@@ -42,11 +41,11 @@ public class CheckboxContextClickTest extends MultiBrowserTest {
WebElement input = checkbox.findElement(By.xpath("input"));
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("checked", checkbox.getValue());

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

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

@@ -31,6 +31,7 @@ import org.openqa.selenium.remote.DesiredCapabilities;

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

@@ -137,13 +138,26 @@ public abstract class AbstractContextClickTest extends MultiBrowserTest {
* @param e
* web element
* @param xCoord
* x coordinate
* x coordinate relative to the top-left corner of the element
* @param yCoord
* y coordinate
* y coordinate relative to the top-left corner of the element
*/
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

@@ -21,8 +21,8 @@ import org.junit.Ignore;
import org.junit.Test;
import org.openqa.selenium.WebElement;

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

public class GridContextClickTest extends AbstractContextClickTest {


Loading…
Cancel
Save