Skip to content

Commit a8eb776

Browse files
committed
Missing change to the last commit.
1 parent 65cbf50 commit a8eb776

File tree

1 file changed

+45
-26
lines changed

1 file changed

+45
-26
lines changed

src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs

Lines changed: 45 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -685,11 +685,11 @@ public void EnhancedNavigationScrollBehavesSameAsBrowserOnNavLinkNavigation(bool
685685
var elementForStalenessCheckOnHashPage = Browser.Exists(By.TagName("html"));
686686

687687
var jsExecutor = (IJavaScriptExecutor)Browser;
688-
var maxScrollPosition = (long)jsExecutor.ExecuteScript("return document.documentElement.scrollHeight - window.innerHeight;");
689-
Browser.SetScrollY(maxScrollPosition);
688+
var button1Pos = (long)jsExecutor.ExecuteScript("return Math.round(document.getElementById('do-navigation').getBoundingClientRect().top + window.scrollY);");
689+
Browser.SetScrollY(button1Pos);
690690
Browser.Exists(By.Id("do-navigation")).Click();
691691

692-
// "hash" page: check if we landed at 0, then navigate to "scroll"
692+
// "hash" page: check if we landed at 0, then navigate to "scroll"
693693
WaitStreamingRendersFullPage(enableStreaming);
694694
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnHashPage);
695695
AssertWeAreOnHashPage();
@@ -713,65 +713,84 @@ public void EnhancedNavigationScrollBehavesSameAsBrowserOnNavLinkNavigation(bool
713713

714714
[Theory]
715715
[InlineData(false, false)]
716-
[InlineData(false, true)] // ToDo: Forwards -> line 772, Expected: 3270 Actual: 1400
717-
[InlineData(true, true)] // ToDo: Forwards -> line 772, Expected: 2400 Actual: 412
718-
[InlineData(true, false)] // ToDo: why it requires a special condition?
716+
[InlineData(false, true)]
717+
[InlineData(true, true)]
718+
[InlineData(true, false)]
719719
public void EnhancedNavigationScrollBehavesSameAsBrowserOnBackwardsForwardsAction(bool enableStreaming, bool useEnhancedNavigation)
720720
{
721721
// This test checks if the scroll position is preserved after backwards/forwards action
722722
string landingPageSuffix = enableStreaming ? "" : "-no-streaming";
723723
Navigate($"{ServerPathBase}/nav/testing-scroll{landingPageSuffix}");
724724
EnhancedNavigationTestUtil.SuppressEnhancedNavigation(this, shouldSuppress: !useEnhancedNavigation, skipNavigation: true);
725725

726-
// "scroll" page: max scroll position on exiting it
726+
// "scroll" page: scroll to pos1, navigate away
727727
AssertWeAreOnScrollTestPage();
728728
WaitStreamingRendersFullPage(enableStreaming);
729729

730730
// staleness check is used to assert enhanced navigation is enabled/disabled, as requested
731731
var elementForStalenessCheckOnHashPage = Browser.Exists(By.TagName("html"));
732732

733733
var jsExecutor = (IJavaScriptExecutor)Browser;
734-
var maxScrollPosition = (long)jsExecutor.ExecuteScript("return document.documentElement.scrollHeight - window.innerHeight;");
735-
Browser.SetScrollY(maxScrollPosition);
734+
var scrollPagePos1 = (long)jsExecutor.ExecuteScript("return Math.round(document.getElementById('do-navigation').getBoundingClientRect().top + window.scrollY);") - 100;
735+
Browser.SetScrollY(scrollPagePos1);
736736
Browser.Exists(By.Id("do-navigation")).Click();
737737

738-
// "hash" page: scroll position at fragment on exiting it
738+
// "hash" page: scroll to pos1, navigate away
739739
WaitStreamingRendersFullPage(enableStreaming);
740740
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnHashPage);
741741
AssertWeAreOnHashPage();
742742
var elementForStalenessCheckOnScrollPage = Browser.Exists(By.TagName("html"));
743-
var fragmentScrollPosition = (long)jsExecutor.ExecuteScript("return Math.round(document.getElementById('some-content').getBoundingClientRect().top + window.scrollY);");
744-
Browser.SetScrollY(fragmentScrollPosition);
745-
Browser.Navigate().Back();
743+
var hashPagePos1 = (long)jsExecutor.ExecuteScript("return Math.round(document.getElementById('do-navigation').getBoundingClientRect().top + window.scrollY);") - 100;
744+
// make sure we are expecting different scroll positions on thr 1st and the 2nd page
745+
Assert.NotEqual(scrollPagePos1, hashPagePos1);
746+
Browser.SetScrollY(hashPagePos1);
747+
Browser.Exists(By.Id("do-navigation")).Click();
746748

747-
// "scroll" page: check if the scroll position is preserved at the bottom
749+
// "scroll" page: scroll to pos2, go backwards
748750
AssertWeAreOnScrollTestPage();
749751
WaitStreamingRendersFullPage(enableStreaming);
750752
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnScrollPage);
753+
var scrollPagePos2 = 500;
754+
Browser.SetScrollY(scrollPagePos2);
755+
Browser.Navigate().Back();
751756

757+
// "hash" page: check if we landed on pos1, move the scroll to pos2, go backwards
758+
AssertWeAreOnHashPage();
759+
WaitStreamingRendersFullPage(enableStreaming);
760+
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnHashPage);
752761
// from some reason, scroll position differs by 1 pixel between enhanced and browser's navigation
753762
// browser's navigation is not precisely going backwards/forwards to the previous state
754-
var expectedMaxScrollPositionAfterBackwardsAction = useEnhancedNavigation ? maxScrollPosition : maxScrollPosition - 1;
755-
Assert.Equal(expectedMaxScrollPositionAfterBackwardsAction, Browser.GetScrollY());
763+
var expectedHashPagePos1 = useEnhancedNavigation ? hashPagePos1 : hashPagePos1 - 1;
764+
Assert.Equal(expectedHashPagePos1, Browser.GetScrollY());
765+
var hashPagePos2 = 600;
766+
Browser.SetScrollY(hashPagePos2);
767+
Browser.Navigate().Back();
756768

757-
// "scroll" page: go forwards to "hash" page, max scroll position on exiting
769+
// "scroll" page: check if we landed on pos1, move the scroll to pos3, go forwards
770+
AssertWeAreOnScrollTestPage();
771+
WaitStreamingRendersFullPage(enableStreaming);
772+
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnScrollPage);
773+
var expectedScrollPagePos1 = useEnhancedNavigation ? scrollPagePos1 : scrollPagePos1 - 1;
774+
Assert.Equal(expectedScrollPagePos1, Browser.GetScrollY());
775+
var scrollPagePos3 = 700;
776+
Browser.SetScrollY(scrollPagePos3);
758777
Browser.Navigate().Forward();
778+
779+
// "hash" page: check if we landed on pos1, go forwards
759780
AssertWeAreOnHashPage();
760781
WaitStreamingRendersFullPage(enableStreaming);
761782
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnHashPage);
762-
// WHY is streaming with browser same as non-streaming with enhanced nav but different than non-streaming with browser?
763-
var expectedFragmentScrollPosition = (useEnhancedNavigation || enableStreaming) ? fragmentScrollPosition : fragmentScrollPosition - 1;
764-
Assert.Equal(expectedFragmentScrollPosition, Browser.GetScrollY());
783+
var expectedHashPagePos2 = useEnhancedNavigation ? hashPagePos2 : hashPagePos2 - 1;
784+
Assert.Equal(expectedHashPagePos2, Browser.GetScrollY());
785+
Browser.Navigate().Forward();
765786

766-
// "hash" page: go back to "scroll" page
767-
Browser.Navigate().Back();
787+
// "scroll" page: check if we landed on pos2
768788
AssertWeAreOnScrollTestPage();
769789
WaitStreamingRendersFullPage(enableStreaming);
770790
AssertEnhancedNavigation(useEnhancedNavigation, elementForStalenessCheckOnScrollPage);
771-
var expectedMaxScrollPositionAfterSecondBackwardsAction = useEnhancedNavigation
772-
? expectedMaxScrollPositionAfterBackwardsAction
773-
: expectedMaxScrollPositionAfterBackwardsAction - 1;
774-
Assert.Equal(expectedMaxScrollPositionAfterSecondBackwardsAction, Browser.GetScrollY());
791+
var expectedScrollPagePos2 = useEnhancedNavigation ? scrollPagePos2 : scrollPagePos2 - 1;
792+
Assert.Equal(expectedScrollPagePos2, Browser.GetScrollY());
793+
775794
}
776795

777796
private void AssertEnhancedNavigation(bool useEnhancedNavigation, IWebElement elementForStalenessCheck)

0 commit comments

Comments
 (0)