public void Should_HaveValue_IsRenderedInError_OnAbsentElementTimeoutFailure() { Configuration.Timeout = 0.25; Configuration.PollDuringWaits = 0.1; Given.OpenedEmptyPage(); var beforeCall = DateTime.Now; try { S("input").Should(Have.Value("initial")); } 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.Element(input).value='initial'", lines); Assert.Contains("Reason:", lines); Assert.Contains( "no such element: Unable to locate element: " + "{\"method\":\"css selector\",\"selector\":\"input\"}" , lines ); } }
public void Should_HaveValue_WaitsForPresenceInDom_OfInitiialyAbsent() { Configuration.Timeout = 1.0; Configuration.PollDuringWaits = 0.1; Given.OpenedEmptyPage(); var beforeCall = DateTime.Now; Given.OpenedPageWithBodyTimedOut( @" <input value='initial' style='display:none'></input> ", 300 ); S("input").Should(Have.Value("initial")); var afterCall = DateTime.Now; Assert.Greater(afterCall, beforeCall.AddSeconds(0.3)); Assert.Less(afterCall, beforeCall.AddSeconds(1.0)); }