How to use StandardTableHelperMarkdown method of NBi.Framework.FailureMessage.Markdown.Helper.StandardTableHelperMarkdown class

Best NBi code snippet using NBi.Framework.FailureMessage.Markdown.Helper.StandardTableHelperMarkdown.StandardTableHelperMarkdown

StandardTableHelperMarkdownTest.cs

Source:StandardTableHelperMarkdownTest.cs Github

copy

Full Screen

...10using NBi.Framework.Sampling;11using System.Text.RegularExpressions;12namespace NBi.Testing.Framework.FailureMessage.Markdown.Helper13{14 public class StandardTableHelperMarkdownTest15 {16 [Test]17 public void Build_TwoRows_SevenLines()18 {19 var dataTable = new DataTable() { TableName = "MyTable" };20 dataTable.Columns.Add(new DataColumn("Id"));21 dataTable.Columns.Add(new DataColumn("Numeric value"));22 dataTable.Columns.Add(new DataColumn("Boolean value"));23 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);24 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);25 var idDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("Id"), Role = ColumnRole.Key };26 var sampler = new FullSampler<DataRow>();27 sampler.Build(dataTable.Rows.Cast<DataRow>());28 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()29 , new ColumnMetadata[] { idDefinition }30 , sampler);31 var container = new MarkdownContainer();32 msg.Render(container);33 var value = container.ToMarkdown();34 Assert.That(value.Count(c => c == '\n'), Is.EqualTo(7));35 var indexes = value.IndexOfAll('\n').ToArray();36 var dashLine = value.Substring(indexes[3] + 1, indexes[4] - indexes[3] - 2);37 Assert.That(dashLine.Distinct().Count(), Is.EqualTo(3));38 Assert.That(dashLine.Distinct(), Has.Member(' '));39 Assert.That(dashLine.Distinct(), Has.Member('-'));40 Assert.That(dashLine.Distinct(), Has.Member('|'));41 }42 [Test]43 public void Build_TwoRowsByOrdinal_FirstRow()44 {45 var dataTable = new DataTable() { TableName = "MyTable" };46 dataTable.Columns.Add(new DataColumn("Id"));47 dataTable.Columns.Add(new DataColumn("Numeric value"));48 dataTable.Columns.Add(new DataColumn("Boolean value"));49 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);50 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);51 var idDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#0"), Role = ColumnRole.Key };52 var numericDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#1"), Role = ColumnRole.Value };53 var booleanDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#2"), Role = ColumnRole.Value };54 var sampler = new FullSampler<DataRow>();55 sampler.Build(dataTable.Rows.Cast<DataRow>());56 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()57 , new ColumnMetadata[] { idDefinition, numericDefinition, booleanDefinition }58 , sampler);59 var container = new MarkdownContainer();60 msg.Render(container);61 var value = container.ToMarkdown();62 Assert.That(value.Count(c => c == '\n'), Is.EqualTo(7));63 var indexes = value.IndexOfAll('\n').ToArray();64 var titleLine = value.Substring(indexes[1] + 1, indexes[2] - indexes[1] - 2);65 Assert.That(titleLine.Replace(" ", ""), Is.EqualTo("#0(Id)|#1(Numericvalue)|#2(Booleanvalue)"));66 }67 [Test]68 public void Build_TwoRowsByName_FirstRow()69 {70 var dataTable = new DataTable() { TableName = "MyTable" };71 dataTable.Columns.Add(new DataColumn("Id"));72 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;73 dataTable.Columns.Add(new DataColumn("Numeric value"));74 dataTable.Columns.Add(new DataColumn("Boolean value"));75 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);76 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);77 var idDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#0"), Role = ColumnRole.Key };78 var sampler = new FullSampler<DataRow>();79 sampler.Build(dataTable.Rows.Cast<DataRow>());80 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()81 , new ColumnMetadata[] { idDefinition }82 , sampler);83 var container = new MarkdownContainer();84 msg.Render(container);85 var value = container.ToMarkdown();86 Assert.That(value.Count(c => c == '\n'), Is.EqualTo(7));87 var indexes = value.IndexOfAll('\n').ToArray();88 var thirdLine = value.Substring(indexes[1] + 1, indexes[2] - indexes[1] - 2);89 Assert.That(thirdLine.Replace(" ", ""), Is.EqualTo("#0(Id)|#1(Numericvalue)|#2(Booleanvalue)"));90 }91 [Test]92 public void Build_TwoRows_SeperationLineCorrectlyWritten()93 {94 var dataTable = new DataTable() { TableName = "MyTable" };95 dataTable.Columns.Add(new DataColumn("Id"));96 dataTable.Columns.Add(new DataColumn("Numeric value"));97 dataTable.Columns.Add(new DataColumn("Boolean value"));98 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);99 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);100 var idDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#0"), Role = ColumnRole.Key };101 var sampler = new FullSampler<DataRow>();102 sampler.Build(dataTable.Rows.Cast<DataRow>());103 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()104 , new ColumnMetadata[] { idDefinition }105 , sampler);106 var container = new MarkdownContainer();107 msg.Render(container);108 var value = container.ToMarkdown();109 var indexes = value.IndexOfAll('\n').ToArray();110 var dashLine = value.Substring(indexes[3] + 1, indexes[4] - indexes[3] - 2);111 Assert.That(dashLine.Distinct().Count(), Is.EqualTo(3));112 Assert.That(dashLine.Distinct(), Has.Member(' '));113 Assert.That(dashLine.Distinct(), Has.Member('-'));114 Assert.That(dashLine.Distinct(), Has.Member('|'));115 }116 [Test]117 public void Build_TwoRows_ColumnDelimitersAlligned()118 {119 var dataTable = new DataTable() { TableName = "MyTable" };120 dataTable.Columns.Add(new DataColumn("Id"));121 dataTable.Columns.Add(new DataColumn("Numeric value"));122 dataTable.Columns.Add(new DataColumn("Boolean value"));123 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);124 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);125 var idDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("#0"), Role = ColumnRole.Key };126 var sampler = new FullSampler<DataRow>();127 sampler.Build(dataTable.Rows.Cast<DataRow>());128 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()129 , new ColumnMetadata[] { idDefinition }130 , sampler);131 var container = new MarkdownContainer();132 msg.Render(container);133 var value = container.ToMarkdown();134 var lines = value.Replace("\n", string.Empty).Split('\r');135 int pos = 0;136 while ((pos = lines[0].IndexOf('|', pos + 1)) > 0)137 {138 foreach (var line in lines.TakeWhile(l => l.Length > 0))139 Assert.That(line[pos], Is.EqualTo('|'), "The line '{0}' was expecting to have a '|' at position {1} but it was a '{2}'", new object[] { line, pos, line[pos] });140 }141 }142 [Test]143 [SetCulture("en-us")]144 public void Build_TwoRows_NumericValuesNonRounded()145 {146 var dataTable = new DataTable() { TableName = "MyTable" };147 dataTable.Columns.Add(new DataColumn("Id"));148 var numericDataColumn = new DataColumn("Numeric value");149 numericDataColumn.ExtendedProperties.Add("NBi::Type", ColumnType.Numeric);150 dataTable.Columns.Add(numericDataColumn);151 dataTable.Columns.Add(new DataColumn("Boolean value"));152 dataTable.LoadDataRow(new object[] { "Alpha", 10.752, true }, false);153 dataTable.LoadDataRow(new object[] { "Beta", 20.8445585, false }, false);154 var numericDefinition = new ColumnMetadata() { Identifier = new ColumnIdentifierFactory().Instantiate("Numeric value"), Role = ColumnRole.Value, Type = ColumnType.Numeric };155 var sampler = new FullSampler<DataRow>();156 sampler.Build(dataTable.Rows.Cast<DataRow>());157 var msg = new StandardTableHelperMarkdown(dataTable.Rows.Cast<DataRow>()158 , new ColumnMetadata[] { numericDefinition }159 , sampler);160 var container = new MarkdownContainer();161 msg.Render(container);162 var value = container.ToMarkdown();163 var lines = value.Replace("\n", string.Empty).Split('\r');164 Assert.That(value, Does.Contain("10.752 "));165 Assert.That(value, Does.Contain("20.8445585"));166 }167 }168}...

Full Screen

Full Screen

LookupExistsViolationMessageMarkdown.cs

Source:LookupExistsViolationMessageMarkdown.cs Github

copy

Full Screen

...28 var rows = violations.Values.Where(x => x is LookupExistsViolationInformation)29 .Cast<LookupExistsViolationInformation>()30 .SelectMany(x => x.CandidateRows);31 sampler.Build(rows);32 var tableHelper = new StandardTableHelperMarkdown(rows, metadata, sampler);33 tableHelper.Render(container);34 }35 }36 }37}...

Full Screen

Full Screen

StandardTableHelperMarkdown.cs

Source:StandardTableHelperMarkdown.cs Github

copy

Full Screen

...13using System.Text;14using System.Threading.Tasks;15namespace NBi.Framework.FailureMessage.Markdown.Helper16{17 class StandardTableHelperMarkdown : BaseTableHelperMarkdown<DataRow>18 {19 public StandardTableHelperMarkdown(IEnumerable<DataRow> rows, IEnumerable<ColumnMetadata> definitions, ISampler<DataRow> sampler)20 : base(rows, definitions, sampler) { }21 protected override IEnumerable<ExtendedMetadata> BuildExtendedMetadatas(DataRow row, IEnumerable<ColumnMetadata> metadatas)22 => ExtendMetadata(row.Table, Metadatas);23 protected override IEnumerable<TableCellExtended> RenderRow(DataRow row, IEnumerable<ColumnType> columnTypes)24 {25 for (int i = 0; i < row.Table.Columns.Count; i++)26 {27 var displayValue = RenderCell(row.IsNull(i) ? DBNull.Value : row.ItemArray[i], columnTypes.ElementAt(i));28 yield return new TableCellExtended() { Text = displayValue };29 }30 }31 protected virtual string RenderCell(object value, ColumnType columnType)32 {33 var factory = new PresenterFactory();...

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1using NBi.Framework.FailureMessage.Markdown.Helper;2using System;3using System.Collections.Generic;4using System.Linq;5using System.Text;6using System.Threading.Tasks;7{8 {9 static void Main(string[] args)10 {11 StandardTableHelperMarkdown helper = new StandardTableHelperMarkdown();12 helper.AddRow("A", "B", "C");13 helper.AddRow("1", "2", "3");14 helper.AddRow("4", "5", "6");15 Console.WriteLine(helper.Render());16 Console.ReadLine();17 }18 }19}20using NBi.Framework.FailureMessage.Markdown.Helper;21using System;22using System.Collections.Generic;23using System.Linq;24using System.Text;25using System.Threading.Tasks;26{27 {28 static void Main(string[] args)29 {30 StandardTableHelperMarkdown helper = new StandardTableHelperMarkdown();31 helper.AddRow("A", "B", "C");32 helper.AddRow("1", "2", "3");33 helper.AddRow("4", "5", "6");34 helper.AddRow("7", "8", "9");35 Console.WriteLine(helper.Render());36 Console.ReadLine();37 }38 }39}40using NBi.Framework.FailureMessage.Markdown.Helper;41using System;42using System.Collections.Generic;43using System.Linq;44using System.Text;45using System.Threading.Tasks;46{47 {48 static void Main(string[] args)49 {50 StandardTableHelperMarkdown helper = new StandardTableHelperMarkdown();51 helper.AddRow("A", "B", "C");52 helper.AddRow("1", "2", "3");53 helper.AddRow("4", "5", "6");54 helper.AddRow("7", "8", "9");55 helper.AddRow("10", "11", "12");56 Console.WriteLine(helper.Render());57 Console.ReadLine();58 }

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1using NBi.Framework.FailureMessage.Markdown.Helper;2using System;3using System.Collections.Generic;4using System.Data;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9 {10 static void Main(string[] args)11 {12 DataTable dt = new DataTable();13 dt.Columns.Add("Id", typeof(int));14 dt.Columns.Add("Name", typeof(string));15 dt.Columns.Add("Age", typeof(int));16 dt.Rows.Add(1, "John", 30);17 dt.Rows.Add(2, "Jane", 25);18 dt.Rows.Add(3, "Mary", 40);19 var table = StandardTableHelperMarkdown.Create(dt);20 Console.WriteLine(table);21 }22 }23}24using NBi.Framework.FailureMessage.Markdown.Helper;25using System;26using System.Collections.Generic;27using System.Data;28using System.Linq;29using System.Text;30using System.Threading.Tasks;31{32 {33 static void Main(string[] args)34 {35 DataTable dt = new DataTable();36 dt.Columns.Add("Id", typeof(int));37 dt.Columns.Add("Name", typeof(string));38 dt.Columns.Add("Age", typeof(int));39 dt.Rows.Add(1, "John", 30);40 dt.Rows.Add(2, "Jane", 25);41 dt.Rows.Add(3, "Mary", 40);42 var table = StandardTableHelperMarkdown.Create(dt, new List<string> { "Id", "Age" });43 Console.WriteLine(table);44 }45 }46}47using NBi.Framework.FailureMessage.Markdown.Helper;48using System;49using System.Collections.Generic;50using System.Data;51using System.Linq;52using System.Text;53using System.Threading.Tasks;54{55 {56 static void Main(string[] args)57 {58 DataTable dt = new DataTable();59 dt.Columns.Add("Id", typeof(int));60 dt.Columns.Add("Name", typeof(string));61 dt.Columns.Add("Age", typeof(int));62 dt.Rows.Add(1, "John", 30);63 dt.Rows.Add(2, "Jane", 25

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using NBi.Framework.FailureMessage.Markdown.Helper;7using NBi.Framework.FailureMessage.Markdown.Helper.TableHelper;8using NBi.Core.ResultSet;9using NBi.Core.ResultSet.Resolver;10{11 {12 static void Main(string[] args)13 {14 var table = new ResultSet();15 table.Columns.Add(new Column("Column1", "System.String", "Column1"));16 table.Columns.Add(new Column("Column2", "System.String", "Column2"));17 table.Columns.Add(new Column("Column3", "System.String", "Column3"));18 table.Columns.Add(new Column("Column4", "System.String", "Column4"));19 table.Rows.Add(new Row(new List<object> { "1", "2", "3", "4" }));20 table.Rows.Add(new Row(new List<object> { "5", "6", "7", "8" }));21 table.Rows.Add(new Row(new List<object> { "9", "10", "11", "12" }));22 table.Rows.Add(new Row(new List<object> { "13", "14", "15", "16" }));23 table.Rows.Add(new Row(new List<object> { "17", "18", "19", "20" }));24 var tableHelper = new StandardTableHelperMarkdown(table);25 var tableMarkdown = tableHelper.Render();26 Console.WriteLine(tableMarkdown);27 Console.ReadKey();28 }29 }30}

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1var helper = new StandardTableHelperMarkdown();2var result = helper.Write(table);3Console.WriteLine(result);4var helper = new StandardTableHelperMarkdown();5var result = helper.Write(table, "Table caption");6Console.WriteLine(result);7var helper = new StandardTableHelperMarkdown();8var result = helper.Write(table, "Table caption", "Table description");9Console.WriteLine(result);10var helper = new StandardTableHelperMarkdown();11var result = helper.Write(table, "Table caption", "Table description", "Table legend");12Console.WriteLine(result);13var helper = new StandardTableHelperMarkdown();14var result = helper.Write(table, "Table caption", "Table description", "Table legend", "Table note");15Console.WriteLine(result);16var helper = new StandardTableHelperMarkdown();17var result = helper.Write(table, "Table caption", "Table description", "Table legend", "Table note", "Table source");18Console.WriteLine(result);19var helper = new StandardTableHelperMarkdown();20var result = helper.Write(table, "Table caption", "Table description", "Table legend", "Table note", "Table source", "Table title");21Console.WriteLine(result);22var helper = new StandardTableHelperMarkdown();23var result = helper.Write(table, "Table caption", "Table description", "Table legend", "Table note", "Table source", "Table title", "Table type");24Console.WriteLine(result);

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1using NBi.Framework.FailureMessage.Markdown.Helper;2using System.Data;3using System;4{5 {6 static void Main(string[] args)7 {8 DataTable dt = new DataTable();9 dt.Columns.Add("Name");10 dt.Columns.Add("Age");11 dt.Rows.Add("John", 25);12 dt.Rows.Add("Jane", 30);13 dt.Rows.Add("Jack", 40);14 dt.Rows.Add("Jill", 50);15 dt.Rows.Add("Jill", 60);16 dt.Rows.Add("Jill", 70);17 dt.Rows.Add("Jill", 80);18 dt.Rows.Add("Jill", 90);19 dt.Rows.Add("Jill", 100);20 dt.Rows.Add("Jill", 110);21 dt.Rows.Add("Jill", 120);22 dt.Rows.Add("Jill", 130);23 dt.Rows.Add("Jill", 140);24 dt.Rows.Add("Jill", 150);25 dt.Rows.Add("Jill", 160);26 dt.Rows.Add("Jill", 170);27 dt.Rows.Add("Jill", 180);28 dt.Rows.Add("Jill", 190);29 dt.Rows.Add("Jill", 200);30 dt.Rows.Add("Jill", 210);31 dt.Rows.Add("Jill", 220);32 dt.Rows.Add("Jill", 230);33 dt.Rows.Add("Jill", 240);34 dt.Rows.Add("Jill", 250);35 dt.Rows.Add("Jill", 260);36 dt.Rows.Add("Jill", 270);37 dt.Rows.Add("Jill", 280);38 dt.Rows.Add("Jill", 290);39 dt.Rows.Add("Jill", 300);40 dt.Rows.Add("Jill", 310);41 dt.Rows.Add("Jill", 320);42 dt.Rows.Add("Jill", 330);43 dt.Rows.Add("Jill", 340);44 dt.Rows.Add("Jill", 350);45 dt.Rows.Add("Jill", 360);46 dt.Rows.Add("Jill", 370);47 dt.Rows.Add("Jill", 380);48 dt.Rows.Add("Jill", 390);49 dt.Rows.Add("Jill", 400);

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1using System.Data;2using NBi.Framework.FailureMessage.Markdown.Helper;3{4 {5 public string Build(DataTable table)6 {7 var builder = new StringBuilder();8 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => c.ColumnName)) + "|");9 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => "---")) + "|");10 foreach (DataRow row in table.Rows)11 {12 builder.AppendLine("|" + string.Join("|", row.ItemArray.Select(c => c.ToString())) + "|");13 }14 return builder.ToString();15 }16 }17}18using System.Data;19using NBi.Framework.FailureMessage.Markdown.Helper;20{21 {22 public string Build(DataTable table)23 {24 var builder = new StringBuilder();25 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => c.ColumnName)) + "|");26 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => "---")) + "|");27 foreach (DataRow row in table.Rows)28 {29 builder.AppendLine("|" + string.Join("|", row.ItemArray.Select(c => c.ToString())) + "|");30 }31 return builder.ToString();32 }33 }34}35using System.Data;36using NBi.Framework.FailureMessage.Markdown.Helper;37{38 {39 public string Build(DataTable table)40 {41 var builder = new StringBuilder();42 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => c.ColumnName)) + "|");43 builder.AppendLine("|" + string.Join("|", table.Columns.Cast<DataColumn>().Select(c => "---")) + "|");44 foreach (DataRow row in table.Rows)45 {

Full Screen

Full Screen

StandardTableHelperMarkdown

Using AI Code Generation

copy

Full Screen

1var helper = new StandardTableHelperMarkdown();2helper.AddRow(new List<string> { "Name", "Age", "City" });3helper.AddRow(new List<string> { "John", "32", "New York" });4helper.AddRow(new List<string> { "Mary", "25", "Paris" });5helper.AddRow(new List<string> { "Peter", "41", "London" });6helper.AddRow(new List<string> { "Susan", "33", "London" });7helper.AddRow(new List<string> { "Bill", "51", "Paris" });8helper.AddRow(new List<string> { "Paul", "23", "New York" });9var table = helper.Render();10var helper = new StandardTableHelperHtml();11helper.AddRow(new List<string> { "Name", "Age", "City" });12helper.AddRow(new List<string> { "John", "32", "New York" });13helper.AddRow(new List<string> { "Mary", "25", "Paris" });14helper.AddRow(new List<string> { "Peter", "41", "London" });15helper.AddRow(new List<string> { "Susan", "33", "London" });16helper.AddRow(new List<string> { "Bill", "51", "Paris" });17helper.AddRow(new List<string> { "Paul", "23", "New York" });18var table = helper.Render();19var helper = new StandardTableHelperText();20helper.AddRow(new List<string> { "Name", "Age", "City" });21helper.AddRow(new List<string> { "John", "32", "New York" });22helper.AddRow(new List<string> { "Mary", "25", "Paris" });23helper.AddRow(new List<string> { "Peter", "41", "London" });24helper.AddRow(new List<string> { "Susan", "33", "London" });25helper.AddRow(new List<string> { "Bill", "51", "Paris" });26helper.AddRow(new List<string> { "Paul", "23", "New York" });27var table = helper.Render();

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 NBi automation tests on LambdaTest cloud grid

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

Most used method in StandardTableHelperMarkdown

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful