You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AbsoluteLayoutResizeComponentsTest.java 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package com.vaadin.tests.components.absolutelayout;
  2. import com.vaadin.testbench.elements.ButtonElement;
  3. import com.vaadin.tests.tb3.MultiBrowserTest;
  4. import org.junit.Assert;
  5. import org.junit.Test;
  6. import org.openqa.selenium.By;
  7. import org.openqa.selenium.WebElement;
  8. import java.util.Optional;
  9. /**
  10. * Tests for component positioning after width changes from defined to relative and relative to defined
  11. */
  12. public class AbsoluteLayoutResizeComponentsTest extends MultiBrowserTest {
  13. @Test
  14. public void testFullWithComponentWithRightAlignmentShouldMoveRightWhenSettingAbsoluteWidth() {
  15. openTestURL();
  16. String componentId = "expanding-panel";
  17. Optional<WebElement> panelWrapper = getComponentWrapper(componentId);
  18. Assert.assertTrue("No wrapper element found for expanding panel [ID: "
  19. + componentId + "]", panelWrapper.isPresent());
  20. String left = panelWrapper.get().getCssValue("left");
  21. Assert.assertEquals(
  22. "Component wrapper was missing left:0; from its css positioning",
  23. "0px", left);
  24. WebElement panelComponent = findElement(By.id(componentId));
  25. Assert.assertEquals("Panel is not on the left side of the screen", 0,
  26. panelComponent.getLocation().getX());
  27. // Click button to change component size
  28. $(ButtonElement.class).id(componentId + "-button").click();
  29. left = panelWrapper.get().getCssValue("left");
  30. Assert.assertEquals(
  31. "Component wrapper did not have its left positioning reset to auto",
  32. "auto", left);
  33. Assert.assertNotEquals("Panel is still on the left side of the screen",
  34. 0, panelComponent.getLocation().getX());
  35. }
  36. @Test
  37. public void testDefinedWidthComponentShouldExpandToFullWidth() {
  38. openTestURL();
  39. String componentId = "small-panel";
  40. Optional<WebElement> panelWrapper = getComponentWrapper(componentId);
  41. Assert.assertTrue(
  42. "No wrapper element found for panel [ID: " + componentId + "]",
  43. panelWrapper.isPresent());
  44. String left = panelWrapper.get().getCssValue("left");
  45. Assert.assertEquals("Component wrapper has a set Left marker", "auto",
  46. left);
  47. WebElement panelComponent = findElement(By.id(componentId));
  48. Assert.assertNotEquals(
  49. "Panel is positioned to the left side of the screen", 0,
  50. panelComponent.getLocation().getX());
  51. // Click button to change component size
  52. $(ButtonElement.class).id(componentId + "-button").click();
  53. left = panelWrapper.get().getCssValue("left");
  54. Assert.assertEquals(
  55. "Component wrapper was missing left:0; from its css positioning",
  56. "0px", left);
  57. Assert.assertEquals("Panel is not on the left side of the screen", 0,
  58. panelComponent.getLocation().getX());
  59. }
  60. @Test
  61. public void testDefinedWidthAbsoluteLayoutToFullWidthShouldBeFullWidth() {
  62. openTestURL();
  63. String componentId = "absolute-expanding";
  64. Optional<WebElement> panelWrapper = getComponentWrapper(componentId);
  65. Assert.assertTrue("No wrapper element found for AbsoluteLayout [ID: "
  66. + componentId + "].", panelWrapper.isPresent());
  67. String left = panelWrapper.get().getCssValue("left");
  68. Assert.assertEquals(
  69. "Component wrapper did not have its left positioning reset to auto",
  70. "auto", left);
  71. WebElement panelComponent = findElement(By.id(componentId));
  72. Assert.assertNotEquals(
  73. "Panel is positioned to the left side of the screen", 0,
  74. panelComponent.getLocation().getX());
  75. // Click button to change component size
  76. $(ButtonElement.class).id(componentId + "-button").click();
  77. left = panelWrapper.get().getCssValue("left");
  78. Assert.assertEquals(
  79. "Component wrapper was missing left:0; from its css positioning",
  80. "0px", left);
  81. Assert.assertEquals("Panel is not on the left side of the screen", 0,
  82. panelComponent.getLocation().getX());
  83. }
  84. /**
  85. * Search for the AbsoluteLayout wrapper element that contains component for componentId
  86. *
  87. * @param componentId Id of component contained in Wrapper component
  88. * @return WrapperComponent or null
  89. */
  90. private Optional<WebElement> getComponentWrapper(String componentId) {
  91. WebElement panelWrapper = null;
  92. for (WebElement wrapper : findElements(
  93. By.className("v-absolutelayout-wrapper"))) {
  94. // Check if this wrapper contains element with the wanted id.
  95. if (!wrapper.findElements(By.id(componentId)).isEmpty()) {
  96. panelWrapper = wrapper;
  97. break;
  98. }
  99. }
  100. return Optional.ofNullable(panelWrapper);
  101. }
  102. }