protected override void execute(IWebElement element, IDictionary <string, object> cellValues, IStep step, ITestContext context) { // TODO -- StoryTeller needs to pull this all inside the Cell if (!cellValues.ContainsKey(_cell.Key)) { // already caught as a syntax error return; } var handler = ElementHandlers.FindHandler(element); var expectedValue = cellValues[_cell.Key]; var matchingHandler = handler as IMatchingHandler ?? new BasicMatchingHandler(handler, context); if (matchingHandler.MatchesData(element, expectedValue)) { context.IncrementRights(); } else { context.ResultsFor(step).MarkFailure(_cell.Key); context.IncrementWrongs(); } context.ResultsFor(step).SetActual(_cell.Key, handler.GetData(CurrentContext, element)); }
public bool ValidationElementHandlerMatches(string name, [SelectionValues("true", "false")] bool matches) { var element = FindByName(name); var actualMatches = ElementHandlers.FindHandler(element) is ValidationElementHandler; return(actualMatches == matches); }
protected override IEnumerable <CellResult> execute(IWebElement element, StepValues values) { var handler = ElementHandlers.FindHandler(element); handler.EnterData(SearchContext, element, values.Get(Cell.Key)); return(new [] { CellResult.Ok(Cell.Key) }); }
public void ValidationElementHandlerEnterDataWithWait(string name, int min, int max) { var element = FindByName(name); var stopwatch = Stopwatch.StartNew(); ElementHandlers.FindHandler(element).EnterData(Driver, element, "Some text"); stopwatch.Stop(); StoryTellerAssert.Fail(stopwatch.ElapsedMilliseconds < min, "Handler was faster than expected actual elapsed milliseconds {0}".ToFormat(stopwatch.ElapsedMilliseconds)); StoryTellerAssert.Fail(stopwatch.ElapsedMilliseconds > max, "Handler was slower than expected actual elapsed milliseconds {0}".ToFormat(stopwatch.ElapsedMilliseconds)); }
protected override void execute(IWebElement element, IDictionary <string, object> cellValues, IStep step, ITestContext context) { assertCondition(element.Enabled, DisabledElementMessage); // TODO -- start a convenience class for extensions on IWebElement bool isShown = element.Displayed || element.IsHiddenInput(); assertCondition(isShown, HiddenElementMessage); var data = cellValues[Config.CellName]; ElementHandlers.FindHandler(element).EnterData(CurrentContext, element, data); }
protected override IEnumerable <CellResult> execute(IWebElement element, StepValues values) { var handler = ElementHandlers.FindHandler(element); var expectedValue = values.Get(Cell.Key); var matchingHandler = handler as IMatchingHandler ?? new BasicMatchingHandler(handler); if (matchingHandler.MatchesData(element, expectedValue)) { return(new [] { new CellResult(Cell.Key, ResultStatus.success) }); } else { return(new [] { new CellResult(Cell.Key, ResultStatus.failed) { actual = handler.GetData(SearchContext, element) } }); } }
public void ValidationElementHandlerEnterDataWithWaitFailsWithTimeout(string name) { var element = FindByName(name); Stopwatch stopwatch; try { stopwatch = Stopwatch.StartNew(); ElementHandlers.FindHandler(element).EnterData(Driver, element, "Some text"); stopwatch.Stop(); } catch (StorytellerAssertionException ex) { StoryTellerAssert.Fail(!ex.Message.Contains("took longer than expected"), "Failed to enter data for some reason other than a timeout"); return; } finally { var textNotEntered = ElementHandlers.FindHandler(element).GetData(Driver, element) != "Some text"; StoryTellerAssert.Fail(textNotEntered, "Text was never entered to trigger validation"); } StoryTellerAssert.Fail("Did not timeout when waiting for validation actual elapsed milliseconds {0} (For some reason this will fail on the Storyteller UI but not in the st runner)".ToFormat(stopwatch.ElapsedMilliseconds)); }
public static void SetData(this ISearchContext context, IWebElement element, string value) { ElementHandlers.FindHandler(element).EnterData(context, element, value); }
public static string GetData(this ISearchContext context, IWebElement element) { return(ElementHandlers.FindHandler(element).GetData(context, element)); }