How to use Step class of Gherkin.CucumberMessages.Types package

Best Gherkin-dotnet code snippet using Gherkin.CucumberMessages.Types.Step

AstMessagesConverter.cs

Source:AstMessagesConverter.cs Github

copy

Full Screen

...8using Examples = Gherkin.CucumberMessages.Types.Examples;9using Feature = Gherkin.CucumberMessages.Types.Feature;10using Location = Gherkin.CucumberMessages.Types.Location;11using Rule = Gherkin.CucumberMessages.Types.Rule;12using Step = Gherkin.CucumberMessages.Types.Step;13using DataTable = Gherkin.CucumberMessages.Types.DataTable;14using DocString = Gherkin.CucumberMessages.Types.DocString;15using GherkinDocument = Gherkin.CucumberMessages.Types.GherkinDocument;16using Scenario = Gherkin.CucumberMessages.Types.Scenario;17using TableCell = Gherkin.CucumberMessages.Types.TableCell;18using TableRow = Gherkin.CucumberMessages.Types.TableRow;19using Tag = Gherkin.CucumberMessages.Types.Tag;20namespace Gherkin.CucumberMessages21{22    public class AstMessagesConverter23    {24        private readonly IIdGenerator _idGenerator;25        public AstMessagesConverter(IIdGenerator idGenerator)26        {27            _idGenerator = idGenerator;28        }29        public GherkinDocument ConvertGherkinDocumentToEventArgs(Ast.GherkinDocument gherkinDocument, string sourceEventUri)30        {31            return new GherkinDocument()32            {33                Uri = sourceEventUri,34                Feature = ConvertFeature(gherkinDocument),35                Comments = ConvertComments(gherkinDocument)36            };37        }38        private IReadOnlyCollection<Comment> ConvertComments(Ast.GherkinDocument gherkinDocument)39        {40            return gherkinDocument.Comments.Select(c =>41                new Comment()42                {43                    Text = c.Text,44                    Location = ConvertLocation(c.Location)45                }).ToReadOnlyCollection();46        }47        private Feature ConvertFeature(Ast.GherkinDocument gherkinDocument)48        {49            var feature = gherkinDocument.Feature;50            if (feature == null)51            {52                return null;53            }54            var children = feature.Children.Select(ConvertToFeatureChild).ToReadOnlyCollection();55            var tags = feature.Tags.Select(ConvertTag).ToReadOnlyCollection();56            return new Feature()57            {58                Name = CucumberMessagesDefaults.UseDefault(feature.Name, CucumberMessagesDefaults.DefaultName),59                Description = CucumberMessagesDefaults.UseDefault(feature.Description, CucumberMessagesDefaults.DefaultDescription),60                Keyword = feature.Keyword,61                Language = feature.Language,62                Location = ConvertLocation(feature.Location),63                Children = children,64                Tags = tags65            };66        }67        private static Location ConvertLocation(Ast.Location location)68        {69            return new Location(location.Column, location.Line);70        }71        private FeatureChild ConvertToFeatureChild(IHasLocation hasLocation)72        {73            var tuple = ConvertToChild(hasLocation);74            return new FeatureChild(tuple.Item3, tuple.Item1, tuple.Item2);75        }76        77        private RuleChild ConvertToRuleChild(IHasLocation hasLocation)78        {79            var tuple = ConvertToChild(hasLocation);80            return new RuleChild(tuple.Item1, tuple.Item3);81        }82        83        private Tuple<Background, Rule, Scenario> ConvertToChild(IHasLocation hasLocation)84        {85            switch (hasLocation)86            {87                case Gherkin.Ast.Background background:88                    var backgroundSteps = background.Steps.Select(ConvertStep).ToList();89                    return new Tuple<Background, Rule, Scenario>(new Background90                        {91                            Id = _idGenerator.GetNewId(),92                            Location = ConvertLocation(background.Location),93                            Name = CucumberMessagesDefaults.UseDefault(background.Name, CucumberMessagesDefaults.DefaultName),94                            Description = CucumberMessagesDefaults.UseDefault(background.Description, CucumberMessagesDefaults.DefaultDescription),95                            Keyword = background.Keyword,96                            Steps = backgroundSteps97                        }, null, null);98                case Ast.Scenario scenario:99                    var steps = scenario.Steps.Select(ConvertStep).ToList();100                    var examples = scenario.Examples.Select(ConvertExamples).ToReadOnlyCollection();101                    var tags = scenario.Tags.Select(ConvertTag).ToReadOnlyCollection();102                    return new Tuple<Background, Rule, Scenario>(null, null, new Scenario()103                        {104                            Id = _idGenerator.GetNewId(),105                            Keyword = scenario.Keyword,106                            Location = ConvertLocation(scenario.Location),107                            Name = CucumberMessagesDefaults.UseDefault(scenario.Name, CucumberMessagesDefaults.DefaultName),108                            Description = CucumberMessagesDefaults.UseDefault(scenario.Description, CucumberMessagesDefaults.DefaultDescription),109                            Steps = steps,110                            Examples = examples,111                            Tags = tags112                        });113                case Ast.Rule rule:114                    {115                        var ruleChildren = rule.Children.Select(ConvertToRuleChild).ToReadOnlyCollection();116                        var ruleTags = rule.Tags.Select(ConvertTag).ToReadOnlyCollection();117                        return new Tuple<Background, Rule, Scenario>(null, new Rule118                            {119                                Id = _idGenerator.GetNewId(),120                                Name = CucumberMessagesDefaults.UseDefault(rule.Name, CucumberMessagesDefaults.DefaultName),121                                Description = CucumberMessagesDefaults.UseDefault(rule.Description, CucumberMessagesDefaults.DefaultDescription),122                                Keyword = rule.Keyword,123                                Children = ruleChildren,124                                Location = ConvertLocation(rule.Location),125                                Tags = ruleTags126                            }, null);127                    }128                default:129                    throw new NotImplementedException();130            }131        }132        private Examples ConvertExamples(Ast.Examples examples)133        {134            var header = ConvertTableHeader(examples);135            var body = ConvertToTableBody(examples);136            var tags = examples.Tags.Select(ConvertTag).ToReadOnlyCollection();137            return new Examples()138            {139                Id = _idGenerator.GetNewId(),140                Name = CucumberMessagesDefaults.UseDefault(examples.Name, CucumberMessagesDefaults.DefaultName),141                Keyword = examples.Keyword,142                Description = CucumberMessagesDefaults.UseDefault(examples.Description, CucumberMessagesDefaults.DefaultDescription),143                Location = ConvertLocation(examples.Location),144                TableHeader = header,145                TableBody = body,146                Tags = tags147            };148        }149        private IReadOnlyCollection<TableRow> ConvertToTableBody(Ast.Examples examples)150        {151            if (examples.TableBody == null)152                return new List<TableRow>();153            return ConvertToTableRow(examples.TableBody);154        }155        private IReadOnlyCollection<TableRow> ConvertToTableRow(IEnumerable<Gherkin.Ast.TableRow> rows)156        {157            return rows.Select(b =>158                new TableRow159                {160                    Id = _idGenerator.GetNewId(),161                    Location = ConvertLocation(b.Location),162                    Cells = b.Cells.Select(ConvertCell).ToReadOnlyCollection()163                }).ToReadOnlyCollection();164        }165        private TableRow ConvertTableHeader(Ast.Examples examples)166        {167            if (examples.TableHeader == null)168                return null;169            return new TableRow170            {171                Id = _idGenerator.GetNewId(),172                Location = ConvertLocation(examples.TableHeader.Location),173                Cells = examples.TableHeader.Cells.Select(ConvertCell).ToReadOnlyCollection()174            };175        }176        private Tag ConvertTag(Ast.Tag tag)177        {178            return new Tag179            {180                Id = _idGenerator.GetNewId(),181                Location = ConvertLocation(tag.Location),182                Name = tag.Name183            };184        }185        private TableCell ConvertCell(Ast.TableCell c)186        {187            return new TableCell()188            {189                Value = CucumberMessagesDefaults.UseDefault(c.Value, CucumberMessagesDefaults.DefaultCellValue),190                Location = ConvertLocation(c.Location)191            };192        }193        private Step ConvertStep(Ast.Step step)194        {195            DataTable dataTable = null;196            if (step.Argument is Gherkin.Ast.DataTable astDataTable) 197            {198                var rows = ConvertToTableRow(astDataTable.Rows);199                dataTable = new DataTable200                {201                    Rows = rows,202                    Location = ConvertLocation(astDataTable.Location)203                };204            }205            DocString docString = null;206           if (step.Argument is Gherkin.Ast.DocString astDocString) 207            {208                docString = new DocString209                {210                    Content = astDocString.Content,211                    MediaType = astDocString.ContentType,212                    Delimiter = astDocString.Delimiter ?? "\"\"\"", //TODO: store DocString delimiter in Gherkin AST213                    Location = ConvertLocation(astDocString.Location)214                };215            }216            return new Step()217            {218                Id = _idGenerator.GetNewId(),219                Keyword = step.Keyword,220                Text = step.Text,221                DataTable = dataTable,222                DocString = docString,223                Location = ConvertLocation(step.Location)224            };225        }226    }227}...

Full Screen

Full Screen

PickleCompiler.cs

Source:PickleCompiler.cs Github

copy

Full Screen

...21                return pickles;22            }23            var language = feature.Language;24            var tags = feature.Tags;25            BuildFeature(pickles, language, tags, Enumerable.Empty<PickleStep>, feature.Children, gherkinDocument.Uri);26            return pickles;27        }28        protected virtual void BuildFeature(List<Pickle> pickles, string language, IEnumerable<Tag> tags,29            Func<IEnumerable<PickleStep>> backgroundStepsFactory, IEnumerable<FeatureChild> children,30            string gherkinDocumentUri) 31        {32            if (children == null)33                return;34            foreach (var child in children)35            {36                if (child.Background != null)37                {38                    backgroundStepsFactory = BuildBackground(child.Background, backgroundStepsFactory);39                }40                else if (child.Rule != null)41                {42                    var mergedRuleTags = tags.Concat(child.Rule.Tags);43                    BuildRule(pickles, language, mergedRuleTags, backgroundStepsFactory, child.Rule.Children, gherkinDocumentUri);44                }45                else if (child.Scenario != null)46                {47                    BuildScenario(pickles, language, tags, backgroundStepsFactory, gherkinDocumentUri, child.Scenario);48                }49            }50        }51        protected virtual void BuildRule(List<Pickle> pickles, string language, IEnumerable<Tag> tags,52            Func<IEnumerable<PickleStep>> backgroundStepsFactory, IEnumerable<RuleChild> children,53            string gherkinDocumentUri) 54        {55            if (children == null)56                return;57            foreach (var child in children)58            {59                if (child.Background != null)60                {61                    backgroundStepsFactory = BuildBackground(child.Background, backgroundStepsFactory);62                }63                else if (child.Scenario != null)64                {65                    BuildScenario(pickles, language, tags, backgroundStepsFactory, gherkinDocumentUri, child.Scenario);66                }67            }68        }69        private Func<IEnumerable<PickleStep>> BuildBackground(Background background, Func<IEnumerable<PickleStep>> backgroundStepsFactory)70        {71            var previousFactory = backgroundStepsFactory;72            backgroundStepsFactory = () => previousFactory().Concat(PickleSteps(background.Steps));73            return backgroundStepsFactory;74        }75        private void BuildScenario(List<Pickle> pickles, string language, IEnumerable<Tag> tags, Func<IEnumerable<PickleStep>> backgroundStepsFactory, string gherkinDocumentUri, Scenario scenario)76        {77            if (!scenario.Examples.Any())78            {79                CompileScenario(pickles, backgroundStepsFactory, scenario, tags, language, gherkinDocumentUri);80            }81            else82            {83                CompileScenarioOutline(pickles, backgroundStepsFactory, scenario, tags, language, gherkinDocumentUri);84            }85        }86        protected virtual void CompileScenario(List<Pickle> pickles,87            Func<IEnumerable<PickleStep>> backgroundStepsFactory, Scenario scenario, IEnumerable<Tag> featureTags,88            string language, string gherkinDocumentUri)89        {90            var steps = new List<PickleStep>();91            if (scenario.Steps.Any())92                steps.AddRange(backgroundStepsFactory());93            var scenarioTags = new List<Tag>();94            scenarioTags.AddRange(featureTags);95            scenarioTags.AddRange(scenario.Tags);96            steps.AddRange(PickleSteps(scenario.Steps));97            Pickle pickle = new Pickle(98                    _idGenerator.GetNewId(),99                    gherkinDocumentUri,100                    scenario.Name,101                    language,102                    steps,103                    PickleTags(scenarioTags),104                    new []{ scenario.Id }105            );106            pickles.Add(pickle);107        }108        protected virtual void CompileScenarioOutline(List<Pickle> pickles,109            Func<IEnumerable<PickleStep>> backgroundStepsFactory, Scenario scenarioOutline,110            IEnumerable<Tag> featureTags, string language, string gherkinDocumentUri)111        {112            foreach (var examples in scenarioOutline.Examples)113            {114                if (examples.TableHeader == null) continue;115                var variableCells = examples.TableHeader.Cells;116                foreach (var values in examples.TableBody)117                {118                    var valueCells = values.Cells;119                    var steps = new List<PickleStep>();120                    if (scenarioOutline.Steps.Any())121                        steps.AddRange(backgroundStepsFactory());122                    var tags = new List<Tag>();123                    tags.AddRange(featureTags);124                    tags.AddRange(scenarioOutline.Tags);125                    tags.AddRange(examples.Tags);126                    foreach(var scenarioOutlineStep in scenarioOutline.Steps)127                    {128                        string stepText = Interpolate(scenarioOutlineStep.Text, variableCells, valueCells);129                        PickleStep pickleStep = CreatePickleStep(130                                scenarioOutlineStep,131                                stepText,132                                CreatePickleArgument(scenarioOutlineStep, variableCells, valueCells),133                                new[] { scenarioOutlineStep.Id, values.Id }134                        );135                        steps.Add(pickleStep);136                    }137                    Pickle pickle = new Pickle(138                            _idGenerator.GetNewId(),139                            gherkinDocumentUri,140                            Interpolate(scenarioOutline.Name, variableCells, valueCells),141                            language, 142                            steps,143                            PickleTags(tags),144                            new[] { scenarioOutline.Id, values.Id }145                    );146                    pickles.Add(pickle);147                }148            }149        }150        protected virtual PickleStep CreatePickleStep(Step step, string text, PickleStepArgument argument, IEnumerable<string> astNodeIds)151        {152            return new PickleStep(argument, astNodeIds, _idGenerator.GetNewId(), text);153        }154        protected virtual PickleStepArgument CreatePickleArgument(Step argument)155        {156            var noCells = Enumerable.Empty<TableCell>();157            return CreatePickleArgument(argument, noCells, noCells);158        }159        protected virtual PickleStepArgument CreatePickleArgument(Step step, IEnumerable<TableCell> variableCells, IEnumerable<TableCell> valueCells)160        {161            if (step.DataTable != null) {162                var t = step.DataTable;163                var rows = t.Rows;164                var newRows = new List<PickleTableRow>(rows.Count());165                foreach(var row in rows)166                {167                    var cells = row.Cells;168                    var newCells = new List<PickleTableCell>();169                    foreach(var cell in cells)170                    {171                        newCells.Add(172                                new PickleTableCell(173                                        Interpolate(cell.Value, variableCells, valueCells)174                                )175                        );176                    }177                    newRows.Add(new PickleTableRow(newCells));178                }179                return new PickleStepArgument180                    {181                        DataTable = new PickleTable(newRows)182                    };183            }184            if (step.DocString != null) {185                var ds = step.DocString;186                return187                    new PickleStepArgument188                    {189                        DocString = new PickleDocString(190                            Interpolate(ds.Content, variableCells, valueCells),191                            ds.MediaType == null ? null : Interpolate(ds.MediaType, variableCells, valueCells))192                    };193            } 194            195            return null;196        }197        protected virtual PickleStep[] PickleSteps(IEnumerable<Step> steps)198        {199            var result = new List<PickleStep>();200            foreach(var step in steps)201            {202                result.Add(PickleStep(step));203            }204            return result.ToArray();205        }206        protected virtual PickleStep PickleStep(Step step)207        {208            return CreatePickleStep(209                    step,210                    step.Text,211                    CreatePickleArgument(step),212                    new []{ step.Id }213            );214        }215        protected virtual string Interpolate(string name, IEnumerable<TableCell> variableCells, IEnumerable<TableCell> valueCells)216        {217            int col = 0;218            foreach (var variableCell in variableCells)219            {220                var valueCell = valueCells.ElementAt(col++);221                string header = variableCell.Value;222                string value = valueCell.Value;...

Full Screen

Full Screen

Pickle.cs

Source:Pickle.cs Github

copy

Full Screen

...12        public string Name { get; set; }13        [DataMember(Name = "language")]14        public string Language { get; set; }15        [DataMember(Name = "steps")]16        public IReadOnlyCollection<PickleStep> Steps { get; set; }17        [DataMember(Name = "tags")]18        public IReadOnlyCollection<PickleTag> Tags { get; set; }19        [DataMember(Name = "astNodeIds")]20        public IReadOnlyCollection<string> AstNodeIds { get; set; }21        public Pickle()22        {23        }24        25        public Pickle(string id, string uri, string name, string language, IEnumerable<PickleStep> steps, IEnumerable<PickleTag> tags, IEnumerable<string> astNodeIds)26        {27            Id = id;28            Uri = uri;29            Name = name;30            Language = language;31            Steps = steps.ToReadOnlyCollection();32            Tags = tags.ToReadOnlyCollection();33            AstNodeIds = astNodeIds.ToReadOnlyCollection();34        }35    }36}

Full Screen

Full Screen

Scenario.cs

Source:Scenario.cs Github

copy

Full Screen

...14        public string Name { get; set; }15        [DataMember(Name = "description")]16        public string Description { get; set; }17        [DataMember(Name = "steps")]18        public IReadOnlyCollection<Step> Steps { get; set; }19        [DataMember(Name = "examples")]20        public IReadOnlyCollection<Examples> Examples { get; set; }2122        [DataMember(Name = "id")]23        public string Id { get; set; }24    }25}

Full Screen

Full Screen

PickleStep.cs

Source:PickleStep.cs Github

copy

Full Screen

1using System.Collections.Generic;2using System.Runtime.Serialization;3namespace Gherkin.CucumberMessages.Types4{5    public class PickleStep6    {7        [DataMember(Name = "argument")]8        public PickleStepArgument Argument { get; set; }9        [DataMember(Name = "astNodeIds")]10        public IReadOnlyCollection<string> AstNodeIds { get; set; }11        [DataMember(Name = "id")]12        public string Id { get; set; }13        [DataMember(Name = "text")]14        public string Text { get; set; }15        public PickleStep()16        {17        }18        19        public PickleStep(PickleStepArgument argument, IEnumerable<string> astNodeIds, string id, string text)20        {21            Id = id;22            Text = text;23            Argument = argument;24            AstNodeIds = astNodeIds.ToReadOnlyCollection();25        }26    }27}

Full Screen

Full Screen

Background.cs

Source:Background.cs Github

copy

Full Screen

...17        [DataMember(Name = "description")]18        public string Description { get; set; }1920        [DataMember(Name = "steps")]21        public IReadOnlyCollection<Step> Steps { get; set; }2223        [DataMember(Name = "id")]24        public string Id { get; set; }25    }26}
...

Full Screen

Full Screen

Step.cs

Source:Step.cs Github

copy

Full Screen

1using System.Runtime.Serialization;2namespace Gherkin.CucumberMessages.Types3{4    public class Step5    {6        [DataMember(Name = "location")]7        public Location Location { get; set; }8        [DataMember(Name = "keyword")]9        public string Keyword { get; set; }10        [DataMember(Name = "text")]11        public string Text { get; set; }12        [DataMember(Name = "docString")]13        public DocString DocString { get; set; }14        [DataMember(Name = "dataTable")]15        public DataTable DataTable { get; set; }16        [DataMember(Name = "id")]17        public string Id { get; set; }18    }...

Full Screen

Full Screen

PickleStepArgument.cs

Source:PickleStepArgument.cs Github

copy

Full Screen

1using System.Runtime.Serialization;2namespace Gherkin.CucumberMessages.Types3{4    public class PickleStepArgument5    {6        [DataMember(Name = "docString")]7        public PickleDocString DocString { get; set; }8        [DataMember(Name = "dataTable")]9        public PickleTable DataTable { get; set; }10    }11}...

Full Screen

Full Screen

Step

Using AI Code Generation

copy

Full Screen

1using Gherkin.CucumberMessages.Types;2using Gherkin.CucumberMessages;3using Gherkin.CucumberMessages;4{5    public string Keyword { get; set; }6    public string Text { get; set; }7    public int Line { get; set; }8    public int Column { get; set; }9    public string Id { get; set; }10    public string DocString { get; set; }11    public List<DataTableRow> DataTable { get; set; }12    public StepArgument Argument { get; set; }13}14using Gherkin.CucumberMessages.Types;15using Gherkin.CucumberMessages;16using Gherkin.CucumberMessages;17{18    public string Keyword { get; set; }19    public string Text { get; set; }20    public int Line { get; set; }21    public int Column { get; set; }22    public string Id { get; set; }23    public string DocString { get; set; }24    public List<DataTableRow> DataTable { get; set; }25    public StepArgument Argument { get; set; }26}27using Gherkin.CucumberMessages.Types;28using Gherkin.CucumberMessages;29using Gherkin.CucumberMessages;30{31    public string Keyword { get; set; }32    public string Text { get; set; }33    public int Line { get; set; }34    public int Column { get; set; }35    public string Id { get; set; }36    public string DocString { get; set; }37    public List<DataTableRow> DataTable { get; set; }38    public StepArgument Argument { get; set; }39}40using Gherkin.CucumberMessages.Types;

Full Screen

Full Screen

Step

Using AI Code Generation

copy

Full Screen

1Step step = new Step();2step.Keyword = "Given ";3step.Text = "I have a step";4StepArgument stepArgument = new StepArgument();5stepArgument.DocString = new DocString();6stepArgument.DocString.Content = "some content";7stepArgument.DocString.Delimiter = "\"\"\"";8Step step = new Step();9step.Keyword = "Given ";10step.Text = "I have a step";11step.Argument = new StepArgument();12step.Argument.DocString = new DocString();13step.Argument.DocString.Content = "some content";14step.Argument.DocString.Delimiter = "\"\"\"";15Step step = new Step();16step.Keyword = "Given ";17step.Text = "I have a step";18step.Argument = new StepArgument();19step.Argument.DocString = new DocString();20step.Argument.DocString.Content = "some content";21step.Argument.DocString.Delimiter = "\"\"\"";22Step step = new Step();23step.Keyword = "Given ";24step.Text = "I have a step";25step.Argument = new StepArgument();26step.Argument.DocString = new DocString();27step.Argument.DocString.Content = "some content";28step.Argument.DocString.Delimiter = "\"\"\"";29Step step = new Step();30step.Keyword = "Given ";31step.Text = "I have a step";32step.Argument = new StepArgument();33step.Argument.DocString = new DocString();34step.Argument.DocString.Content = "some content";35step.Argument.DocString.Delimiter = "\"\"\"";36Step step = new Step();37step.Keyword = "Given ";

Full Screen

Full Screen

Step

Using AI Code Generation

copy

Full Screen

1{2    {3        public static IEnumerable<Step> GetSteps(string gherkin)4        {5            var parser = new Parser();6            var messages = parser.Parse(gherkin);7            var steps = messages.Where(m => m.MessageType == "Step").Select(m => Step.Parser.ParseFrom(m.MessageBytes));8            return steps;9        }10    }11}12{13    {14        public static IEnumerable<StepArgument> GetStepArguments(string gherkin)15        {16            var parser = new Parser();17            var messages = parser.Parse(gherkin);18            var stepArguments = messages.Where(m => m.MessageType == "StepArgument").Select(m => StepArgument.Parser.ParseFrom(m.MessageBytes));19            return stepArguments;20        }21    }22}23{24    {25        public static IEnumerable<DocString> GetDocStrings(string gherkin)26        {27            var parser = new Parser();28            var messages = parser.Parse(gherkin);29            var docStrings = messages.Where(m => m.MessageType == "DocString").Select(m => DocString.Parser.ParseFrom(m.MessageBytes));30            return docStrings;31        }32    }33}34{35    {36        public static IEnumerable<DataTable> GetDataTables(string gherkin)37        {38            var parser = new Parser();39            var messages = parser.Parse(gherkin);40            var dataTables = messages.Where(m => m.MessageType == "DataTable").Select(m => DataTable.Parser.ParseFrom(m.MessageBytes));41            return dataTables;42        }

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Gherkin-dotnet automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful