aboutsummaryrefslogtreecommitdiffstats
path: root/uitest
diff options
context:
space:
mode:
authorMartin Vysny <martin@vysny.me>2019-06-13 15:03:00 +0300
committerZhe Sun <31067185+ZheSun88@users.noreply.github.com>2019-06-13 15:02:59 +0300
commitd18f8ddbaab2d192dacf7d7485d87b51fe1e7cb9 (patch)
treeaa78b0bfe5a059c6ebca31616020c77b1880a3f6 /uitest
parent4665d366472055c2eeb74dc444346b99b3729ecf (diff)
downloadvaadin-framework-d18f8ddbaab2d192dacf7d7485d87b51fe1e7cb9.tar.gz
vaadin-framework-d18f8ddbaab2d192dacf7d7485d87b51fe1e7cb9.zip
Improved fix for #11614 (#11618)
* #11614: Added test which demonstrates that the fix is incomplete * #11614: UI.doRefresh() only calls navigator when the navigation state actually changes * Added javadoc to Navigator.getCurrentNavigationState() * Minor: Removed accidental star imports
Diffstat (limited to 'uitest')
-rw-r--r--uitest/src/main/java/com/vaadin/tests/components/ui/RefreshUI.java17
-rw-r--r--uitest/src/test/java/com/vaadin/tests/components/ui/RefreshUITest.java25
-rw-r--r--uitest/src/test/java/com/vaadin/tests/tb3/AbstractTB3Test.java9
3 files changed, 48 insertions, 3 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/ui/RefreshUI.java b/uitest/src/main/java/com/vaadin/tests/components/ui/RefreshUI.java
index 135a6880f9..997d33ff65 100644
--- a/uitest/src/main/java/com/vaadin/tests/components/ui/RefreshUI.java
+++ b/uitest/src/main/java/com/vaadin/tests/components/ui/RefreshUI.java
@@ -5,7 +5,9 @@ import com.vaadin.navigator.Navigator;
import com.vaadin.navigator.View;
import com.vaadin.server.VaadinRequest;
import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
import com.vaadin.ui.Label;
+import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
@PreserveOnRefresh
@@ -15,7 +17,10 @@ public class RefreshUI extends AbstractTestUI {
protected void setup(VaadinRequest request) {
final Navigator navigator = new Navigator(this, this);
navigator.addView("", MyView.class);
+ navigator.addView("otherview", OtherView.class);
setNavigator(navigator);
+ MyView.instanceNumber = 0;
+ OtherView.instanceNumber = 0;
}
public static class MyView extends VerticalLayout implements View {
@@ -24,6 +29,18 @@ public class RefreshUI extends AbstractTestUI {
public MyView() {
instanceNumber++;
addComponent(new Label("This is instance no " + instanceNumber));
+ addComponent(new Button("Navigate to otherview", e -> UI
+ .getCurrent().getNavigator().navigateTo("otherview")));
+ }
+ }
+
+ public static class OtherView extends VerticalLayout implements View {
+ private static int instanceNumber = 0;
+
+ public OtherView() {
+ instanceNumber++;
+ addComponent(new Label(
+ "This is otherview instance no " + instanceNumber));
}
}
}
diff --git a/uitest/src/test/java/com/vaadin/tests/components/ui/RefreshUITest.java b/uitest/src/test/java/com/vaadin/tests/components/ui/RefreshUITest.java
index 16f279e1e5..db42bc71f8 100644
--- a/uitest/src/test/java/com/vaadin/tests/components/ui/RefreshUITest.java
+++ b/uitest/src/test/java/com/vaadin/tests/components/ui/RefreshUITest.java
@@ -1,5 +1,6 @@
package com.vaadin.tests.components.ui;
+import com.vaadin.testbench.elements.ButtonElement;
import org.junit.Test;
import com.vaadin.testbench.elements.LabelElement;
@@ -17,9 +18,31 @@ public class RefreshUITest extends MultiBrowserTest {
$(LabelElement.class).first().getText());
// Reload the page; UI.refresh should be invoked
- openTestURL();
+ reloadPage();
assertEquals("The Label content is not matching",
"This is instance no 1",
$(LabelElement.class).first().getText());
}
+
+ @Test
+ public void testViewNotRecreatedAfterNavigation() {
+ openTestURL();
+ assertEquals("This is instance no 1",
+ $(LabelElement.class).first().getText());
+
+ // Reload the page; UI.refresh should be invoked
+ reloadPage();
+ assertEquals("This is instance no 1",
+ $(LabelElement.class).first().getText());
+
+ // now open the other view using the navigator
+ $(ButtonElement.class).first().click();
+ assertEquals("This is otherview instance no 1",
+ $(LabelElement.class).first().getText());
+
+ // Reload the page; UI.refresh should be invoked
+ reloadPage();
+ assertEquals("This is otherview instance no 1",
+ $(LabelElement.class).first().getText());
+ }
}
diff --git a/uitest/src/test/java/com/vaadin/tests/tb3/AbstractTB3Test.java b/uitest/src/test/java/com/vaadin/tests/tb3/AbstractTB3Test.java
index 548ac78e78..c835696470 100644
--- a/uitest/src/test/java/com/vaadin/tests/tb3/AbstractTB3Test.java
+++ b/uitest/src/test/java/com/vaadin/tests/tb3/AbstractTB3Test.java
@@ -31,10 +31,8 @@ import org.junit.rules.TestName;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
-import org.openqa.selenium.Dimension;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.NoSuchElementException;
-import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
@@ -254,6 +252,13 @@ public abstract class AbstractTB3Test extends ParallelTest {
openTestURL(uiClass, new HashSet<>(Arrays.asList(parameters)));
}
+ /**
+ * Reloads the current page, as if the user pressed F5.
+ */
+ protected void reloadPage() {
+ driver.navigate().refresh();
+ }
+
private void openTestURL(Class<?> uiClass, Set<String> parameters) {
String url = getTestURL(uiClass);