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);
        }
Ejemplo n.º 3
0
        protected override void AddDeclarationsCore(
            PageObjectDefinition pageObject,
            SeleniumGeneratorContext context)
        {
            const string type = "ButtonProxy";

            AddPageObjectProperties(pageObject, context, type);
        }
Ejemplo n.º 4
0
 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);
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 18
0
 protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
 {
     throw new System.NotImplementedException();
 }
Ejemplo n.º 19
0
        protected override void AddDeclarationsCore(PageObjectDefinition pageObject, SeleniumGeneratorContext context)
        {
            var type = $"{context.UniqueName}PageObject";

            AddControlPageObjectProperty(pageObject, context, type);
        }