12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package com.vaadin.tests.components.ui;
-
- import static org.junit.Assert.assertEquals;
-
- import org.junit.Test;
- import org.openqa.selenium.JavascriptExecutor;
-
- import com.vaadin.testbench.By;
- import com.vaadin.tests.tb3.MultiBrowserTest;
-
- public class UriFragmentTest extends MultiBrowserTest {
-
- @Test
- public void testUriFragment() throws Exception {
- driver.get(getTestUrl() + "#urifragment");
- assertFragment("urifragment");
- navigateToTest();
- assertFragment("test");
- ((JavascriptExecutor) driver).executeScript("history.back()");
-
- assertFragment("urifragment");
- ((JavascriptExecutor) driver).executeScript("history.forward()");
- assertFragment("test");
-
- // Open other URL in between to ensure the page is loaded again
- // (testbench doesn't like opening a URI that only changes the fragment)
- driver.get(getBaseURL() + "/statictestfiles/");
- driver.get(getTestUrl());
-
- // Empty initial fragment
- assertEquals("No URI fragment set", getFragmentLabelValue());
-
- navigateToNull();
- // Still no # after setting to null
- assertEquals("No URI fragment set", getFragmentLabelValue());
- navigateToEmptyFragment();
- // Empty # is added when setting to ""
- assertEquals("Current URI fragment:", getFragmentLabelValue());
- navigateToTest();
- assertFragment("test");
- navigateToNull(); // Setting to null when there is a fragment actually
- // sets it to #
- assertEquals("Current URI fragment:", getFragmentLabelValue());
-
- // ensure IE works with new popstate based implementation, see
- // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/3740423/
- driver.findElement(By.xpath("//*[@id = 'link']/a")).click();
- assertFragment("linktest");
-
- }
-
- private void assertFragment(String fragment) {
- final String expectedText = "Current URI fragment: " + fragment;
- waitUntil(input -> expectedText.equals(getFragmentLabelValue()));
- }
-
- private void navigateToEmptyFragment() {
- hitButton("empty");
- }
-
- private void navigateToNull() {
- hitButton("null");
- }
-
- private void navigateToTest() {
- hitButton("test");
- }
-
- private String getFragmentLabelValue() {
- return vaadinElementById("fragmentLabel").getText();
- }
-
- }
|