public DriverFixture() { _host = new WebHostBuilder() .UseKestrelAnyLocalPort() .ConfigureServices(services => { services.AddRouting(); }) .Configure(ConfigureApp) .Build(); Parallel.Invoke( () => _host.Start(), () => FirefoxDriver = new RemoteWebDriver(new FirefoxOptions().Headless())); _elementNaming = new ElementNaming(); _config = new PageTestingConfig(); _baseUrl = _host.Services .GetService <IServer>() .Features.Get <IServerAddressesFeature>() .Addresses.First(); var loggerFactory = LoggerConfigurations.CreateLoggerFactory(cfg => { cfg.MinimumLevel.Override("Miru.PageTesting", LogEventLevel.Debug); }); _logger = loggerFactory.CreateLogger <MiruNavigator>(); }
public ChromeNavigator( WebDriverWait wait, ElementNaming naming, Func <IWebElement> element, RemoteWebDriver driver, ILogger <MiruNavigator> logger, Func <PageExceptionContext, Exception> exceptionFunc = null) : base(wait, naming, element, driver, logger, exceptionFunc) { }
public override void Process(TagHelperContext context, TagHelperOutput output) { if (For != null) { var url = ViewContext.HttpContext.RequestServices.GetService <UrlLookup>(); output.Attributes.SetAttribute("href", url.For(For)); if (output.Attributes.ContainsName("id") == false) { output.Attributes.SetAttribute("id", ElementNaming.Link(For)); } } }
public MiruNavigator( WebDriverWait wait, ElementNaming naming, Func <IWebElement> element, RemoteWebDriver driver, ILogger <MiruNavigator> logger, Func <PageExceptionContext, Exception> exceptionFunc = null) { Wait = wait; Naming = naming; Driver = driver; Element = element; Logger = logger; ExceptionHandle = exceptionFunc ?? DefaultExceptionFunc; }
protected string GetId() { var modelType = GetModelType(); if (modelType == ModelType.For) { return(For.Name); } if (modelType == ModelType.Model) { return(ElementNaming.Id(ViewContext.ViewData.Model)); } throw new InvalidOperationException("Modeless view or partial not supported yet"); }
private static StringBuilder BuildValidationMessageTags(MiruValidationException validationException) { var html = new StringBuilder(); foreach (var error in validationException.Errors) { var inputId = ElementNaming.BuildId(error.PropertyName); var validationMessageTagId = $"{inputId}-validation"; var validationMessageTag = new ValidationMessageTag(validationMessageTagId, inputId, error.ErrorMessage); var turboStreamTag = new TurboStreamTag("replace", validationMessageTagId) .AppendIntoTemplate(validationMessageTag); html.AppendLine(turboStreamTag.ToString()); } return(html); }
public override void Process(TagHelperContext context, TagHelperOutput output) { var model = For.Model as IEnumerable; if (model == null) { throw new ArgumentException("Attribute 'for' has to be a IEnumerable"); } if (model.GetEnumerator().MoveNext()) { var modelType = For.Metadata.ContainerType ?? For.ModelExplorer.Container.ModelType; output.TagName = "table"; output.Attributes.Add("id", ElementNaming.Id(modelType)); } else { output.SuppressOutput(); } }
public ElementNamingTest() { _naming = new ElementNaming(); }