public static void AssertEditViewIsVisible( this IApp app, string description = null, string projectName = null, string[] tags = null, string startTime = null, string stopTime = null, bool?isStopped = null, string duration = null, string startDate = null, bool?isBillable = null) { app.WaitForElement(EditTimeEntry.View); List <string> wrongFields = new List <string>(); if (description != null && !app.DescriptionIsCorrect(description)) { wrongFields.Add("description"); } if (projectName != null && !app.ProjectNameIsCorrect(projectName)) { wrongFields.Add("project name"); } if (tags != null && !app.TagsAreCorrect(tags)) { wrongFields.Add("tags"); } if (startTime != null && !app.StartTimeIsCorrect(startTime)) { wrongFields.Add("start time"); } if (stopTime != null && !app.StopTimeIsCorrect(startTime)) { wrongFields.Add("stop time"); } if (isStopped != null && !app.StoppedStateIsCorrect(isStopped.Value)) { wrongFields.Add("stopped state"); } if (duration != null && !app.DurationIsCorrect(duration)) { wrongFields.Add("duration"); } if (startDate != null && !app.StartDateIsCorrect(startDate)) { wrongFields.Add("start date"); } if (isBillable != null && !app.BillableStateIsCorrect((bool)isBillable)) { wrongFields.Add("billable state"); } if (wrongFields.Any()) { throw new EditViewAssertionException($"Edit view is open, but {string.Join(", ", wrongFields)} {(wrongFields.Count > 1 ? "are" : "is")} wrong."); } }