// because of auto updates... | // because of auto updates... | ||||
browserIdentifier = getExpectedUserAgentString( | browserIdentifier = getExpectedUserAgentString( | ||||
getDesiredCapabilities()) + "66"; | getDesiredCapabilities()) + "66"; | ||||
} else if (BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
browserIdentifier = getExpectedUserAgentString( | |||||
getDesiredCapabilities()) + "58"; | |||||
} else { | } else { | ||||
browserIdentifier = getExpectedUserAgentString(desiredCapabilities) | browserIdentifier = getExpectedUserAgentString(desiredCapabilities) | ||||
+ desiredCapabilities.getVersion(); | + desiredCapabilities.getVersion(); |
public void testContextClick() { | public void testContextClick() { | ||||
openTestURL(); | openTestURL(); | ||||
new Actions(getDriver()) | |||||
.moveToElement($(UIElement.class).first(), 10, 10) | |||||
final UIElement uiElement = $(UIElement.class).first(); | |||||
new Actions(getDriver()).moveToElement(uiElement, | |||||
getXOffset(uiElement, 10), getYOffset(uiElement, 10)) | |||||
.contextClick().perform(); | .contextClick().perform(); | ||||
assertEquals("Context click not received correctly", | assertEquals("Context click not received correctly", |
private void dragToTarget(String dragMode, WebElement dropTarget) | private void dragToTarget(String dragMode, WebElement dropTarget) | ||||
throws IOException { | throws IOException { | ||||
WebElement draggable = vaadinElementById("label" + dragMode); | WebElement draggable = vaadinElementById("label" + dragMode); | ||||
new Actions(driver).moveToElement(draggable, 10, 10).clickAndHold() | |||||
.moveByOffset(5, 0).perform(); | |||||
new Actions(driver).moveToElement(dropTarget, 12, 10).perform(); | |||||
new Actions(driver) | |||||
.moveToElement(draggable, getXOffset(draggable, 10), | |||||
getYOffset(draggable, 10)) | |||||
.clickAndHold().moveByOffset(5, 0).perform(); | |||||
new Actions(driver).moveToElement(dropTarget, | |||||
getXOffset(dropTarget, 12), getYOffset(dropTarget, 10)) | |||||
.perform(); | |||||
compareScreen("dragImageMode" + dragMode); | compareScreen("dragImageMode" + dragMode); | ||||
new Actions(driver).release().perform(); | new Actions(driver).release().perform(); | ||||
} | } |
import org.junit.Before; | import org.junit.Before; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.openqa.selenium.By; | import org.openqa.selenium.By; | ||||
import org.openqa.selenium.interactions.Actions; | |||||
import com.vaadin.testbench.elements.EmbeddedElement; | import com.vaadin.testbench.elements.EmbeddedElement; | ||||
import com.vaadin.testbench.elements.LabelElement; | import com.vaadin.testbench.elements.LabelElement; | ||||
clickAt(41, 22); | clickAt(41, 22); | ||||
checkLocation(41, 22); | checkLocation(41, 22); | ||||
clickAt(0, 0); | |||||
checkLocation(0, 0); | |||||
clickAt(1, 1); | |||||
checkLocation(1, 1); | |||||
} | } | ||||
private void clickAt(int x, int y) { | private void clickAt(int x, int y) { | ||||
EmbeddedElement embedded = $(EmbeddedElement.class).first(); | EmbeddedElement embedded = $(EmbeddedElement.class).first(); | ||||
embedded.click(x, y); | |||||
embedded.click(getXOffset(embedded, x), getYOffset(embedded, y)); | |||||
} | } | ||||
private void checkLocation(int expectedX, int expectedY) { | private void checkLocation(int expectedX, int expectedY) { | ||||
// IE10 and IE11 sometimes click one pixel below the given position | // IE10 and IE11 sometimes click one pixel below the given position | ||||
int tolerance = isIE() ? 1 : 0; | int tolerance = isIE() ? 1 : 0; | ||||
assertTrue( | |||||
assertEquals( | |||||
"Reported Y-coordinate from Embedded does not match click location", | "Reported Y-coordinate from Embedded does not match click location", | ||||
Math.abs(expectedY - y) <= tolerance); | |||||
expectedY, y, tolerance); | |||||
} | } | ||||
private boolean isIE() { | private boolean isIE() { |
GridCellElement headerCell = getGrid().getHeaderCell(0, columnIndex); | GridCellElement headerCell = getGrid().getHeaderCell(0, columnIndex); | ||||
Dimension size = headerCell.getSize(); | Dimension size = headerCell.getSize(); | ||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(headerCell, size.getWidth() + posX, | |||||
size.getHeight() / 2) | |||||
.moveToElement(headerCell, | |||||
getXOffset(headerCell, size.getWidth() + posX), | |||||
getYOffset(headerCell, size.getHeight() / 2)) | |||||
.clickAndHold().moveByOffset(offset, 0).release().perform(); | .clickAndHold().moveByOffset(offset, 0).release().perform(); | ||||
} | } | ||||
import java.util.stream.IntStream; | import java.util.stream.IntStream; | ||||
import java.util.stream.Stream; | import java.util.stream.Stream; | ||||
import org.junit.Assume; | |||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.openqa.selenium.Keys; | import org.openqa.selenium.Keys; | ||||
import org.openqa.selenium.WebElement; | import org.openqa.selenium.WebElement; | ||||
import com.vaadin.testbench.elements.GridElement; | import com.vaadin.testbench.elements.GridElement; | ||||
import com.vaadin.testbench.elements.GridElement.GridCellElement; | import com.vaadin.testbench.elements.GridElement.GridCellElement; | ||||
import com.vaadin.testbench.elements.GridElement.GridRowElement; | import com.vaadin.testbench.elements.GridElement.GridRowElement; | ||||
import com.vaadin.testbench.parallel.BrowserUtil; | |||||
import com.vaadin.testbench.elements.LabelElement; | import com.vaadin.testbench.elements.LabelElement; | ||||
import com.vaadin.testbench.elements.NotificationElement; | import com.vaadin.testbench.elements.NotificationElement; | ||||
import com.vaadin.testbench.elements.TextFieldElement; | import com.vaadin.testbench.elements.TextFieldElement; | ||||
import com.vaadin.testbench.parallel.BrowserUtil; | |||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; | ||||
public class GridComponentsTest extends MultiBrowserTest { | public class GridComponentsTest extends MultiBrowserTest { | ||||
@Test | @Test | ||||
public void testReuseTextFieldOnScroll() { | public void testReuseTextFieldOnScroll() { | ||||
if (BrowserUtil.isPhantomJS(getDesiredCapabilities())) { | |||||
// skip test on PhantomJS as it often crashes the browser | |||||
return; | |||||
} | |||||
openTestURL(); | openTestURL(); | ||||
GridElement grid = $(GridElement.class).first(); | GridElement grid = $(GridElement.class).first(); | ||||
editTextFieldInCell(grid, 0, 1); | editTextFieldInCell(grid, 0, 1); | ||||
GridElement grid = $(GridElement.class).first(); | GridElement grid = $(GridElement.class).first(); | ||||
editTextFieldInCell(grid, 1, 1); | editTextFieldInCell(grid, 1, 1); | ||||
// Select row | // Select row | ||||
grid.getCell(1, 1).click(1, 1); | |||||
grid.getCell(1, 0).click(); | |||||
WebElement textField = grid.getCell(1, 1) | WebElement textField = grid.getCell(1, 1) | ||||
.findElement(By.tagName("input")); | .findElement(By.tagName("input")); | ||||
@Test | @Test | ||||
public void testTabNavigation() { | public void testTabNavigation() { | ||||
Assume.assumeFalse("Firefox has issues with Shift", | |||||
BrowserUtil.isFirefox(getDesiredCapabilities())); | |||||
openTestURL(); | openTestURL(); | ||||
GridElement grid = $(GridElement.class).first(); | GridElement grid = $(GridElement.class).first(); |
import org.openqa.selenium.By; | import org.openqa.selenium.By; | ||||
import com.vaadin.testbench.elements.GridElement; | import com.vaadin.testbench.elements.GridElement; | ||||
import com.vaadin.testbench.elements.GridElement.GridRowElement; | |||||
import com.vaadin.testbench.elements.RadioButtonGroupElement; | import com.vaadin.testbench.elements.RadioButtonGroupElement; | ||||
import com.vaadin.testbench.parallel.TestCategory; | import com.vaadin.testbench.parallel.TestCategory; | ||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; | ||||
fail(); | fail(); | ||||
} | } | ||||
grid.getRow(2).click(5, 5); | |||||
GridRowElement row = grid.getRow(2); | |||||
row.click(getXOffset(row, 5), getYOffset(row, 5)); | |||||
waitForElementPresent(By.id("lbl1")); | waitForElementPresent(By.id("lbl1")); | ||||
int openHeight = grid.getSize().getHeight(); | int openHeight = grid.getSize().getHeight(); | ||||
detailsRowHeight, "opened" }); | detailsRowHeight, "opened" }); | ||||
} | } | ||||
grid.getRow(2).click(5, 5); | |||||
row.click(getXOffset(row, 5), getYOffset(row, 5)); | |||||
waitForElementNotPresent(By.id("lbl1")); | waitForElementNotPresent(By.id("lbl1")); | ||||
int afterHeight = grid.getSize().getHeight(); | int afterHeight = grid.getSize().getHeight(); |
int offset) { | int offset) { | ||||
Dimension size = headerCell.getSize(); | Dimension size = headerCell.getSize(); | ||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(headerCell, size.getWidth() + posX, | |||||
size.getHeight() / 2) | |||||
.moveToElement(headerCell, | |||||
getXOffset(headerCell, size.getWidth() + posX), | |||||
getYOffset(headerCell, size.getHeight() / 2)) | |||||
.clickAndHold().moveByOffset(offset, 0).release().perform(); | .clickAndHold().moveByOffset(offset, 0).release().perform(); | ||||
} | } | ||||
} | } |
private void drag(WebElement source, WebElement target) { | private void drag(WebElement source, WebElement target) { | ||||
Actions actions = new Actions(getDriver()); | Actions actions = new Actions(getDriver()); | ||||
actions.moveToElement(source, 10, 10); | |||||
actions.moveToElement(source, getXOffset(source, 10), | |||||
getYOffset(source, 10)); | |||||
actions.clickAndHold(source); | actions.clickAndHold(source); | ||||
actions.moveToElement(target, 10, 10); | |||||
actions.moveToElement(target, getXOffset(target, 10), | |||||
getYOffset(target, 10)); | |||||
actions.perform(); | actions.perform(); | ||||
} | } | ||||
} | } |
} | } | ||||
private WebElement openContextMenu() { | private WebElement openContextMenu() { | ||||
WebElement target = findElement(By.className("v-table-cell-wrapper")); | |||||
// Make sure target is visible. | |||||
target.click(); | |||||
Actions actions = new Actions(getDriver()); | Actions actions = new Actions(getDriver()); | ||||
actions.contextClick(findElement(By.className("v-table-cell-wrapper"))); | |||||
actions.moveToElement(target, getXOffset(target, 1), | |||||
getYOffset(target, 1)).contextClick(); | |||||
actions.perform(); | actions.perform(); | ||||
return findElement(By.className("v-contextmenu")); | return findElement(By.className("v-contextmenu")); | ||||
} | } |
private void resizeTextAreaBy(int offset) { | private void resizeTextAreaBy(int offset) { | ||||
int resizeHandlerOffset = 10; | int resizeHandlerOffset = 10; | ||||
new Actions(getDriver()) | |||||
.moveToElement(getTextArea(), | |||||
TEXTAREAWIDTH - resizeHandlerOffset, | |||||
TEXTAREAHEIGHT - resizeHandlerOffset) | |||||
TextAreaElement textArea = getTextArea(); | |||||
new Actions(getDriver()).moveToElement(textArea, | |||||
getXOffset(textArea, TEXTAREAWIDTH - resizeHandlerOffset), | |||||
getYOffset(textArea, TEXTAREAHEIGHT - resizeHandlerOffset)) | |||||
.clickAndHold().moveByOffset(offset, offset).release().build() | .clickAndHold().moveByOffset(offset, offset).release().build() | ||||
.perform(); | .perform(); | ||||
} | } |
@Test | @Test | ||||
public void immediateButtonWithUndefinedWidth() { | public void immediateButtonWithUndefinedWidth() { | ||||
assertThat(getButtonWidth("upload3"), closeTo(69, 4)); | |||||
assertThat(getButtonWidth("upload3"), closeTo(69, 5)); | |||||
} | } | ||||
} | } |
import static org.junit.Assert.assertThat; | import static org.junit.Assert.assertThat; | ||||
import org.junit.Test; | import org.junit.Test; | ||||
import org.openqa.selenium.WebElement; | |||||
import org.openqa.selenium.interactions.Actions; | |||||
import com.vaadin.testbench.elements.WindowElement; | import com.vaadin.testbench.elements.WindowElement; | ||||
import com.vaadin.testbench.elements.ButtonElement; | import com.vaadin.testbench.elements.ButtonElement; | ||||
WindowElement anotherWindow = openAnotherWindow(); | WindowElement anotherWindow = openAnotherWindow(); | ||||
// move the window to make the maximize button visible. | // move the window to make the maximize button visible. | ||||
anotherWindow.move(10, 20); | |||||
moveWindow(anotherWindow, 10, 20); | |||||
maximizedWindow.maximize(); | maximizedWindow.maximize(); | ||||
assertThat(maximizedWindow.getCssValue("z-index"), | assertThat(maximizedWindow.getCssValue("z-index"), | ||||
is(greaterThan(anotherWindow.getCssValue("z-index")))); | is(greaterThan(anotherWindow.getCssValue("z-index")))); | ||||
} | } | ||||
private void moveWindow(WindowElement window, int xOffset, int yOffset) { | |||||
WebElement wrap = window | |||||
.findElement(org.openqa.selenium.By.className("v-window-wrap")); | |||||
new Actions(getDriver()) | |||||
.moveToElement(wrap, getXOffset(wrap, 5), getYOffset(wrap, 5)) | |||||
.clickAndHold().moveByOffset(xOffset, yOffset).release().build() | |||||
.perform(); | |||||
} | |||||
} | } |
waitForElementPresent(By.id("focusfield")); | waitForElementPresent(By.id("focusfield")); | ||||
WebElement curtain = findElement( | WebElement curtain = findElement( | ||||
org.openqa.selenium.By.className("v-window-modalitycurtain")); | org.openqa.selenium.By.className("v-window-modalitycurtain")); | ||||
curtain.click(); | |||||
testBenchElement(curtain).click(getXOffset(curtain, 20), | |||||
getYOffset(curtain, 20)); | |||||
pressKeyAndWait(Keys.TAB); | pressKeyAndWait(Keys.TAB); | ||||
pressKeyAndWait(Keys.TAB); | pressKeyAndWait(Keys.TAB); |
WebElement window4 = driver | WebElement window4 = driver | ||||
.findElement(By.xpath("//*[contains(text(), 'Window 4')]")); | .findElement(By.xpath("//*[contains(text(), 'Window 4')]")); | ||||
new Actions(driver).moveToElement(window4, 1, 9).click().perform(); | |||||
new Actions(driver).moveToElement(window4, getXOffset(window4, 1), | |||||
getYOffset(window4, 9)).click().perform(); | |||||
compareScreen("win4-on-top"); | compareScreen("win4-on-top"); | ||||
} | } |
"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);", | "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); | e, x, y); | ||||
} else { | } else { | ||||
new Actions(getDriver()).moveToElement(e, xCoord, yCoord) | |||||
new Actions(getDriver()) | |||||
.moveToElement(e, getXOffset(e, xCoord), | |||||
getYOffset(e, yCoord)) | |||||
.contextClick().moveByOffset(-5, -5).click().perform(); | .contextClick().moveByOffset(-5, -5).click().perform(); | ||||
} | } | ||||
} | } |
List<WebElement> nodes = $(TreeElement.class).first() | List<WebElement> nodes = $(TreeElement.class).first() | ||||
.findElements(By.className("v-tree-node")); | .findElements(By.className("v-tree-node")); | ||||
new Actions(getDriver()).moveToElement(nodes.get(1), 10, 10).click() | |||||
.perform(); | |||||
new Actions(getDriver()).moveToElement(nodes.get(1), | |||||
getXOffset(nodes.get(1), 10), getYOffset(nodes.get(1), 10)) | |||||
.click().perform(); | |||||
nodes = $(TreeElement.class).first() | nodes = $(TreeElement.class).first() | ||||
.findElements(By.className("v-tree-node")); | .findElements(By.className("v-tree-node")); |
import com.vaadin.testbench.By; | import com.vaadin.testbench.By; | ||||
import com.vaadin.testbench.TestBenchElement; | import com.vaadin.testbench.TestBenchElement; | ||||
import com.vaadin.testbench.commands.TestBenchElementCommands; | |||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; | ||||
import com.vaadin.v7.testbench.elements.TreeElement; | import com.vaadin.v7.testbench.elements.TreeElement; | ||||
TreeElement tree = $(TreeElement.class).first(); | TreeElement tree = $(TreeElement.class).first(); | ||||
WebElement bar2 = tree.findElement(By.vaadin("#n[3]")); | WebElement bar2 = tree.findElement(By.vaadin("#n[3]")); | ||||
WebElement bar5 = tree.findElement(By.vaadin("#n[6]")); | WebElement bar5 = tree.findElement(By.vaadin("#n[6]")); | ||||
new Actions(driver).moveToElement(bar2, 11, 8).clickAndHold() | |||||
.moveByOffset(10, 10).perform(); | |||||
new Actions(driver) | |||||
.moveToElement(bar2, getXOffset(bar2, 11), getYOffset(bar2, 8)) | |||||
.clickAndHold().moveByOffset(10, 10).perform(); | |||||
/* Drop on Bar5, which is a subtree target */ | /* Drop on Bar5, which is a subtree target */ | ||||
new Actions(driver).moveToElement(bar5, 34, 9).release().perform(); | |||||
testBenchElement(tree.findElement(By.vaadin("#n[5]/expand"))).click(5, | |||||
5); | |||||
new Actions(driver) | |||||
.moveToElement(bar5, getXOffset(bar5, 34), getYOffset(bar5, 9)) | |||||
.release().perform(); | |||||
WebElement target = tree.findElement(By.vaadin("#n[5]/expand")); | |||||
testBenchElement(target).click(getXOffset(target, 5), | |||||
getYOffset(target, 5)); | |||||
/* Assert that the dragged & dropped node is now a child of Bar5 */ | /* Assert that the dragged & dropped node is now a child of Bar5 */ | ||||
waitUntilElementPresent(tree, "#n[5]/n[0]"); | waitUntilElementPresent(tree, "#n[5]/n[0]"); | ||||
} | } |
import org.openqa.selenium.WebElement; | import org.openqa.selenium.WebElement; | ||||
import org.openqa.selenium.interactions.Actions; | import org.openqa.selenium.interactions.Actions; | ||||
import org.openqa.selenium.support.ui.ExpectedConditions; | import org.openqa.selenium.support.ui.ExpectedConditions; | ||||
import org.openqa.selenium.support.ui.WebDriverWait; | |||||
import com.vaadin.testbench.By; | import com.vaadin.testbench.By; | ||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; |
import com.vaadin.testbench.elements.TextAreaElement; | import com.vaadin.testbench.elements.TextAreaElement; | ||||
import com.vaadin.testbench.elements.TextFieldElement; | import com.vaadin.testbench.elements.TextFieldElement; | ||||
import com.vaadin.tests.data.bean.Sex; | import com.vaadin.tests.data.bean.Sex; | ||||
import com.vaadin.tests.tb3.AbstractTB3Test; | |||||
import com.vaadin.tests.tb3.MultiBrowserTest; | import com.vaadin.tests.tb3.MultiBrowserTest; | ||||
import com.vaadin.tests.tb3.PrivateTB3Configuration; | |||||
public abstract class BasicPersonFormTest extends MultiBrowserTest { | public abstract class BasicPersonFormTest extends MultiBrowserTest { | ||||
super.setup(); | super.setup(); | ||||
logCounter = 0; | logCounter = 0; | ||||
// Use larger view port to make sure everything is visible. | |||||
testBench().resizeViewPortTo(1500, 1500); | |||||
} | } | ||||
@Override | @Override |
"2. GridLayout: left click on This is tf5"); | "2. GridLayout: left click on This is tf5"); | ||||
// click on the layout body (not any component inside the layout) | // click on the layout body (not any component inside the layout) | ||||
layout.click(130, 41); | |||||
layout.click(getXOffset(layout, 130), getYOffset(layout, 41)); | |||||
assertLogText("GridLayout body clicked", | assertLogText("GridLayout body clicked", | ||||
"3. GridLayout: left click on <none>"); | "3. GridLayout: left click on <none>"); | ||||
} | } | ||||
GridLayoutElement layout = $(GridLayoutElement.class).first(); | GridLayoutElement layout = $(GridLayoutElement.class).first(); | ||||
// Drag inside the first label in this layout | // Drag inside the first label in this layout | ||||
LabelElement label = layout.$(LabelElement.class).first(); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(LabelElement.class).first(), 40, 8) | |||||
.moveToElement(label, getXOffset(label, 40), | |||||
getYOffset(label, 8)) | |||||
.clickAndHold().moveByOffset(-20, 0).release().perform(); | .clickAndHold().moveByOffset(-20, 0).release().perform(); | ||||
assertLogText("Mouse dragged in GridLayout", | assertLogText("Mouse dragged in GridLayout", | ||||
"1. GridLayout: left click on This is label 1"); | "1. GridLayout: left click on This is label 1"); | ||||
// Drag from the third label to a text field in this layout | // Drag from the third label to a text field in this layout | ||||
label = layout.$(LabelElement.class).get(2); | |||||
TextFieldElement textField = layout.$(TextFieldElement.class).get(3); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(LabelElement.class).get(2), 40, 8) | |||||
.clickAndHold() | |||||
.moveToElement(layout.$(TextFieldElement.class).get(3), 46, 33) | |||||
.moveToElement(label, getXOffset(label, 40), | |||||
getYOffset(label, 8)) | |||||
.clickAndHold().moveToElement(textField, | |||||
getXOffset(textField, 46), getYOffset(textField, 33)) | |||||
.release().perform(); | .release().perform(); | ||||
assertLogText("Expected the drag to be ignored between elements", | assertLogText("Expected the drag to be ignored between elements", | ||||
"1. GridLayout: left click on This is label 1"); | "1. GridLayout: left click on This is label 1"); | ||||
VerticalLayoutElement layout = $(VerticalLayoutElement.class).get(4); | VerticalLayoutElement layout = $(VerticalLayoutElement.class).get(4); | ||||
// Drag inside the first text field | // Drag inside the first text field | ||||
TextFieldElement textField = layout.$(TextFieldElement.class).first(); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).first(), 25, 9) | |||||
.moveToElement(textField, getXOffset(textField, 25), | |||||
getYOffset(textField, 9)) | |||||
.clickAndHold().moveByOffset(-20, 0).release().perform(); | .clickAndHold().moveByOffset(-20, 0).release().perform(); | ||||
assertLogText("Mouse dragged in VerticalLayout", | assertLogText("Mouse dragged in VerticalLayout", | ||||
"1. VerticalLayout: left click on This is tf5"); | "1. VerticalLayout: left click on This is tf5"); | ||||
// Drag from a caption to its text field | // Drag from a caption to its text field | ||||
textField = layout.$(TextFieldElement.class).get(4); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).get(4), 28, 11) | |||||
.clickAndHold() | |||||
.moveToElement(layout.$(TextFieldElement.class).get(4), 39, 30) | |||||
.moveToElement(textField, getXOffset(textField, 28), | |||||
getYOffset(textField, 11)) | |||||
.clickAndHold().moveToElement(textField, | |||||
getXOffset(textField, 39), getYOffset(textField, 30)) | |||||
.release().perform(); | .release().perform(); | ||||
assertLogText("Expected the drag to be ignored between elements", | assertLogText("Expected the drag to be ignored between elements", | ||||
"1. VerticalLayout: left click on This is tf5"); | "1. VerticalLayout: left click on This is tf5"); | ||||
AbsoluteLayoutElement layout = $(AbsoluteLayoutElement.class).first(); | AbsoluteLayoutElement layout = $(AbsoluteLayoutElement.class).first(); | ||||
// Drag inside the first text field's caption | // Drag inside the first text field's caption | ||||
TextFieldElement firstTextField = layout.$(TextFieldElement.class) | |||||
.first(); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).first(), 21, 9) | |||||
.moveToElement(firstTextField, getXOffset(firstTextField, 21), | |||||
getYOffset(firstTextField, 9)) | |||||
.clickAndHold().moveByOffset(-10, 0).release().perform(); | .clickAndHold().moveByOffset(-10, 0).release().perform(); | ||||
assertLogText("Mouse dragged in AbsoluteLayout", | assertLogText("Mouse dragged in AbsoluteLayout", | ||||
"1. AbsoluteLayout: left click on This is its caption"); | "1. AbsoluteLayout: left click on This is its caption"); | ||||
// Drag from a text field to another text field | // Drag from a text field to another text field | ||||
TextFieldElement otherTextField = layout.$(TextFieldElement.class) | |||||
.get(1); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).get(1), 54, 7) | |||||
.moveToElement(otherTextField, getXOffset(otherTextField, 54), | |||||
getYOffset(otherTextField, 7)) | |||||
.clickAndHold() | .clickAndHold() | ||||
.moveToElement(layout.$(TextFieldElement.class).first(), 52, 10) | |||||
.moveToElement(firstTextField, getXOffset(firstTextField, 52), | |||||
getYOffset(firstTextField, 10)) | |||||
.release().perform(); | .release().perform(); | ||||
assertLogText("Expected the drag to be ignored between elements", | assertLogText("Expected the drag to be ignored between elements", | ||||
"1. AbsoluteLayout: left click on This is its caption"); | "1. AbsoluteLayout: left click on This is its caption"); | ||||
CssLayoutElement layout = $(CssLayoutElement.class).first(); | CssLayoutElement layout = $(CssLayoutElement.class).first(); | ||||
// Drag inside the first text field's caption | // Drag inside the first text field's caption | ||||
TextFieldElement firstTextField = layout.$(TextFieldElement.class) | |||||
.first(); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).first(), 51, 7) | |||||
.moveToElement(firstTextField, getXOffset(firstTextField, 51), | |||||
getYOffset(firstTextField, 7)) | |||||
.clickAndHold().moveByOffset(-20, 0).release().perform(); | .clickAndHold().moveByOffset(-20, 0).release().perform(); | ||||
assertLogText("Mouse dragged in CSSLayout", | assertLogText("Mouse dragged in CSSLayout", | ||||
"1. CSSLayout: left click on This is its caption"); | "1. CSSLayout: left click on This is its caption"); | ||||
// Drag from the first text field to the second text field | // Drag from the first text field to the second text field | ||||
TextFieldElement otherTextField = layout.$(TextFieldElement.class) | |||||
.get(1); | |||||
new Actions(getDriver()) | new Actions(getDriver()) | ||||
.moveToElement(layout.$(TextFieldElement.class).first(), 51, 27) | |||||
.moveToElement(firstTextField, getXOffset(firstTextField, 51), | |||||
getYOffset(firstTextField, 27)) | |||||
.clickAndHold() | .clickAndHold() | ||||
.moveToElement(layout.$(TextFieldElement.class).get(1), 51, 27) | |||||
.moveToElement(otherTextField, getXOffset(otherTextField, 51), | |||||
getYOffset(otherTextField, 27)) | |||||
.release().perform(); | .release().perform(); | ||||
assertLogText("Expected the drag to be ignored between elements", | assertLogText("Expected the drag to be ignored between elements", | ||||
"1. CSSLayout: left click on This is its caption"); | "1. CSSLayout: left click on This is its caption"); |
public void correctEs5Es6FileImportedThroughFrontend() { | public void correctEs5Es6FileImportedThroughFrontend() { | ||||
openTestURL(); | openTestURL(); | ||||
String es; | String es; | ||||
if (BrowserUtil.isIE(getDesiredCapabilities()) | |||||
|| BrowserUtil.isPhantomJS(getDesiredCapabilities()) | |||||
|| BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
if (BrowserUtil.isIE(getDesiredCapabilities())) { | |||||
es = "es5"; | es = "es5"; | ||||
} else { | } else { | ||||
es = "es6"; | es = "es6"; |
openTestURL(); | openTestURL(); | ||||
$(ButtonElement.class).first().click(); | $(ButtonElement.class).first().click(); | ||||
String es; | String es; | ||||
if (BrowserUtil.isIE(getDesiredCapabilities()) | |||||
|| BrowserUtil.isPhantomJS(getDesiredCapabilities()) | |||||
|| BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
if (BrowserUtil.isIE(getDesiredCapabilities())) { | |||||
es = "es5"; | es = "es5"; | ||||
} else { | } else { | ||||
es = "es6"; | es = "es6"; |
element)).intValue(); | element)).intValue(); | ||||
} | } | ||||
/** | |||||
* Gets the X offset for | |||||
* {@link Actions#moveToElement(WebElement, int, int)}. This method takes | |||||
* into account the W3C specification in browsers that properly implement | |||||
* it. | |||||
* | |||||
* @param element | |||||
* the element | |||||
* @param targetX | |||||
* the X coordinate where the move is wanted to go to | |||||
* @return the correct X offset | |||||
*/ | |||||
protected int getXOffset(WebElement element, int targetX) { | |||||
if (BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
// Firefox follow W3C spec and moveToElement is relative to center | |||||
final int width = element.getSize().getWidth(); | |||||
return targetX - ((width + width % 2) / 2); | |||||
} | |||||
return targetX; | |||||
} | |||||
/** | |||||
* Gets the Y offset for | |||||
* {@link Actions#moveToElement(WebElement, int, int)}. This method takes | |||||
* into account the W3C specification in browsers that properly implement | |||||
* it. | |||||
* | |||||
* @param element | |||||
* the element | |||||
* @param targetY | |||||
* the Y coordinate where the move is wanted to go to | |||||
* @return the correct Y offset | |||||
*/ | |||||
protected int getYOffset(WebElement element, int targetY) { | |||||
if (BrowserUtil.isFirefox(getDesiredCapabilities())) { | |||||
// Firefox follow W3C spec and moveToElement is relative to center | |||||
final int height = element.getSize().getHeight(); | |||||
return targetY - ((height + height % 2) / 2); | |||||
} | |||||
return targetY; | |||||
} | |||||
/** | /** | ||||
* Returns client height rounded up instead of as double because of IE9 | * Returns client height rounded up instead of as double because of IE9 | ||||
* issues: https://dev.vaadin.com/ticket/18469 | * issues: https://dev.vaadin.com/ticket/18469 |
import org.junit.Test; | import org.junit.Test; | ||||
import com.vaadin.testbench.elements.TextFieldElement; | import com.vaadin.testbench.elements.TextFieldElement; | ||||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||||
import com.vaadin.tests.tb3.SingleBrowserTest; | |||||
/** | /** | ||||
* Test for default contrast color variable in valo-font-color function. | * Test for default contrast color variable in valo-font-color function. | ||||
* | * | ||||
* @author Vaadin Ltd | * @author Vaadin Ltd | ||||
*/ | */ | ||||
public class ContrastFontColorTest extends MultiBrowserTest { | |||||
public class ContrastFontColorTest extends SingleBrowserTest { | |||||
@Test | @Test | ||||
public void testTextColor() { | public void testTextColor() { |