Example #1
0
        public void SeleneWaitTo_HaveJsReturned_WaitsForPresenceInDom_OfInitiialyAbsent()
        {
            Configuration.Timeout         = 0.6;
            Configuration.PollDuringWaits = 0.1;
            Given.OpenedEmptyPage();
            var beforeCall = DateTime.Now;

            Given.OpenedPageWithBodyTimedOut(
                @"
                <p style='display:none'>a</p>
                <p style='display:none'>b</p>
                ",
                300
                );

            Selene.WaitTo(Have.JSReturnedTrue(
                              @"
                var expectedCount = arguments[0]
                return document.getElementsByTagName('p').length == expectedCount
                "
                              ,
                              2
                              ));

            var afterCall = DateTime.Now;

            Assert.Greater(afterCall, beforeCall.AddSeconds(0.3));
            Assert.Less(afterCall, beforeCall.AddSeconds(0.6));
        }
Example #2
0
        public void SeleneWaitTo_HaveJsReturned_IsRenderedInError_OnAbsentElementTimeoutFailure()
        {
            Configuration.Timeout         = 0.25;
            Configuration.PollDuringWaits = 0.1;
            Given.OpenedEmptyPage();
            var beforeCall = DateTime.Now;

            try
            {
                Selene.WaitTo(Have.JSReturnedTrue(
                                  @"
                    var expectedCount = arguments[0]
                    return document.getElementsByTagName('p').length == expectedCount
                    "
                                  ,
                                  2
                                  ));
            }

            catch (WebDriverTimeoutException error)
            {
                var afterCall = DateTime.Now;
                Assert.Greater(afterCall, beforeCall.AddSeconds(0.25));
                var accuracyDelta = 0.2;
                Assert.Less(afterCall, beforeCall.AddSeconds(0.25 + 0.1 + accuracyDelta));

                // TODO: shoud we check timing here too?
                var lines = error.Message.Split("\n").Select(
                    item => item.Trim()
                    ).ToList();

                Assert.Contains("Timed out after 0.25 seconds", lines);
                Assert.Contains("while waiting entity with locator: OpenQA.Selenium.Chrome.ChromeDriver", lines);
                Assert.Contains("for condition: JSReturnedTrue", lines);
            }

            // catch (TimeoutException error)
            // {
            //     var afterCall = DateTime.Now;
            //     Assert.Greater(afterCall, beforeCall.AddSeconds(0.25));
            //     var accuracyDelta = 0.2;
            //     Assert.Less(afterCall, beforeCall.AddSeconds(0.25 + 0.1 + accuracyDelta));

            //     // TODO: shoud we check timing here too?
            //     var lines = error.Message.Split("\n").Select(
            //         item => item.Trim()
            //     ).ToList();

            //     Assert.Contains("Timed out after 0.25s, while waiting for:", lines);
            //     Assert.Contains("Browser.All(p).count = 2", lines);
            //     Assert.Contains("Reason:", lines);
            //     Assert.Contains("actual: count = 0", lines);
            // }
        }