@@ -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")); |
@@ -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()); | |||
} |
@@ -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(); | |||
} | |||
} | |||
} |
@@ -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 { | |||