protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { // this is generator for user control so it's using PageObject not Proxy // you need to create this class in your UI test project in folder PageObjects const string type = "PageObjects.MyControlBPageObject"; AddControlPageObjectProperty(pageObject, context, type); }
private void UpdateMarkupFile(PageObjectDefinition pageObject, string viewPath) { var sb = new StringBuilder(File.ReadAllText(viewPath, Encoding.UTF8)); UpdateMarkupFile(pageObject, sb); File.WriteAllText(viewPath, sb.ToString(), Encoding.UTF8); }
protected override void AddDeclarationsCore( PageObjectDefinition pageObject, SeleniumGeneratorContext context) { const string type = "ButtonProxy"; AddPageObjectProperties(pageObject, context, type); }
public override bool CanAddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { // check if node is user control // todo: odstranit return(context.Control.DothtmlNode is DothtmlElementNode htmlNode && htmlNode.TagPrefix != null && htmlNode.TagPrefix != "dot"); }
private void UpdateMarkupFile(PageObjectDefinition pageObject, StringBuilder stringBuilder) { var allModifications = GetAllModifications(pageObject); foreach (var modification in allModifications.OrderByDescending(m => m.Position)) { modification.Apply(stringBuilder); } }
private ConstructorDeclarationSyntax GetConstructor(PageObjectDefinition pageObjectDefinition) { return(SyntaxFactory .ConstructorDeclaration(pageObjectDefinition.Name) .WithParameterList(GetConstructorMembers()) .WithInitializer(GetBaseConstructorParameters()) .WithModifiers(SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword))) .WithBody(SyntaxFactory.Block(pageObjectDefinition.ConstructorStatements))); }
private MemberDeclarationSyntax GenerateHelperClassContents(PageObjectDefinition pageObjectDefinition) { return(SyntaxFactory .ClassDeclaration(pageObjectDefinition.Name) .WithModifiers(GetClassModifiers()) .WithBaseList(GetBaseTypeDeclaration()) .WithMembers(SyntaxFactory.List(pageObjectDefinition.Members)) .AddMembers(GetConstructor(pageObjectDefinition)) .AddMembers(pageObjectDefinition.Children.Select(GenerateHelperClassContents).ToArray())); }
private IEnumerable <MarkupFileModification> GetAllModifications(PageObjectDefinition pageObject) { var modifications = pageObject.MarkupFileModifications; foreach (var child in pageObject.Children) { modifications.AddRange(GetAllModifications(child)); } return(modifications); }
public override bool CanAddDeclarations(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { if (context.Control.TryGetProperty(Literal.RenderSpanElementProperty, out var setter)) { if (((ResolvedPropertyValue)setter).Value as bool? == false) { return(false); } } return(base.CanAddDeclarations(pageObject, context)); }
private PageObjectDefinition CombineViewHelperDefinitions(PageObjectDefinition pageObject, ICollection <MasterPageObjectDefinition> masterPageObjects) { if (masterPageObjects.Any()) { var masterMembers = masterPageObjects.SelectMany(m => m.Members); var constructorExpressions = masterPageObjects.SelectMany(m => m.ConstructorStatements); pageObject.Members.AddRange(masterMembers); pageObject.ConstructorStatements.AddRange(constructorExpressions); } return(pageObject); }
private PageObjectDefinition GetPageObjectDefinition(SeleniumGeneratorConfiguration seleniumConfiguration, HashSet <string> masterUsedUniqueSelectors) { var pageObjectDefinition = new PageObjectDefinition { Name = seleniumConfiguration.PageObjectName }; if (masterUsedUniqueSelectors != null) { pageObjectDefinition.ExistingUsedSelectors.UnionWith(masterUsedUniqueSelectors); } return(pageObjectDefinition); }
private MasterPageObjectDefinition MapPageObjectDefinition(PageObjectDefinition definition, IAbstractDirective masterPageFile) { var masterDefinition = new MasterPageObjectDefinition(); masterDefinition.Members.AddRange(definition.Members); masterDefinition.MarkupFileModifications.AddRange(definition.MarkupFileModifications); masterDefinition.ConstructorStatements.AddRange(definition.ConstructorStatements); masterDefinition.DataContextPrefixes.AddRange(definition.DataContextPrefixes); masterDefinition.Children.AddRange(definition.Children); masterDefinition.UsedNames.UnionWith(definition.UsedNames); masterDefinition.MasterPageFullPath = masterPageFile.Value; return(masterDefinition); }
protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { if (context.Control.TryGetProperty(Repeater.ItemTemplateProperty, out var itemTemplate)) { var template = (ResolvedPropertyTemplate)itemTemplate; // generate child helper class var itemHelperName = context.UniqueName + "RepeaterPageObject"; context.Visitor.PushScope(new PageObjectDefinition { Name = itemHelperName }); context.Visitor.VisitPropertyTemplate(template); pageObject.Children.Add(context.Visitor.PopScope()); // generate property const string type = "RepeaterProxy"; AddGenericPageObjectProperties(pageObject, context, type, itemHelperName); } }
protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { if (context.Control.TryGetProperty(GridView.ColumnsProperty, out var columnsTemplate)) { var template = (ResolvedPropertyControlCollection)columnsTemplate; // generate child page object class var itemPageObjectName = context.UniqueName + "GridViewPageObject"; context.Visitor.PushScope(new PageObjectDefinition { Name = itemPageObjectName }); context.Visitor.VisitPropertyControlCollection(template); pageObject.Children.Add(context.Visitor.PopScope()); // generate proxy const string type = "GridViewProxy"; AddGenericPageObjectProperties(pageObject, context, type, itemPageObjectName); } }
protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { if (context.Control.TryGetProperty(GridViewTemplateColumn.ContentTemplateProperty, out var contentTemplate)) { var template = (ResolvedPropertyTemplate)contentTemplate; // generate child helper class var itemHelperName = context.UniqueName + "GridViewTemplateColumn"; context.Visitor.PushScope(new PageObjectDefinition { Name = itemHelperName }); context.Visitor.VisitPropertyTemplate(template); pageObject.Children.Add(context.Visitor.PopScope()); // generate property pageObject.Members.Add(GeneratePropertyForProxy(context.UniqueName, itemHelperName)); pageObject.ConstructorStatements.Add(GenerateInitializerForTemplate(context.UniqueName, itemHelperName)); } }
public void PushScope(PageObjectDefinition definition) { HelperDefinitionsStack.Push(definition); }
private void GeneratePageObjectClass(SeleniumGeneratorConfiguration seleniumConfiguration, PageObjectDefinition pageObject) { var tree = CSharpSyntaxTree.Create( SyntaxFactory.CompilationUnit() .WithUsings(GetSeleniumHelpersUsingList()) .WithMembers(SyntaxFactory.List(new MemberDeclarationSyntax[] { SyntaxFactory.NamespaceDeclaration(SyntaxFactory.ParseName(seleniumConfiguration.TargetNamespace)) .WithMembers(SyntaxFactory.List(new MemberDeclarationSyntax[] { GenerateHelperClassContents(pageObject) })) })) .NormalizeWhitespace() ); FileSystemHelpers.WriteFile(seleniumConfiguration.PageObjectFileFullPath, tree.ToString(), false); }
protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { throw new System.NotImplementedException(); }
protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context) { var type = $"{context.UniqueName}PageObject"; AddControlPageObjectProperty(pageObject, context, type); }