How to use TableHelperJson class of NBi.Framework.FailureMessage.Json package

Best NBi code snippet using NBi.Framework.FailureMessage.Json.TableHelperJson

TableHelperJsonTest.cs

Source:TableHelperJsonTest.cs Github

copy

Full Screen

...14using System.Threading;15using NBi.Framework.FailureMessage.Json.Helper;16namespace NBi.Testing.Framework.FailureMessage.Json.Helper17{18 public class TableHelperJsonTest19 {20 [Test]21 public void Build_ThreeColumnsTwoRowsNotSampled_RowCountsSpecified()22 {23 var dataSet = new DataSet();24 var dataTable = new DataTable() { TableName = "MyTable" };25 dataTable.Columns.Add(new DataColumn("Id"));26 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;27 dataTable.Columns.Add(new DataColumn("Numeric value"));28 dataTable.Columns.Add(new DataColumn("Boolean value"));29 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);30 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);31 var helper = new TableHelperJson();32 var sb = new StringBuilder();33 using (var sw = new StringWriter(sb))34 using (var writer = new JsonTextWriter(sw))35 {36 helper.Execute(dataTable.Rows.Cast<DataRow>(), new FullSampler<DataRow>(), writer);37 Assert.That(sb.ToString, Does.Contain("total-rows"));38 Assert.That(sb.ToString, Does.Not.Contain("sampled-rows"));39 }40 }41 [Test]42 public void Build_ThreeColumnsTwoRowsSampled_RowCountsSpecified()43 {44 var dataSet = new DataSet();45 var dataTable = new DataTable() { TableName = "MyTable" };46 dataTable.Columns.Add(new DataColumn("Id"));47 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;48 dataTable.Columns.Add(new DataColumn("Numeric value"));49 dataTable.Columns.Add(new DataColumn("Boolean value"));50 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);51 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);52 var helper = new TableHelperJson();53 var sb = new StringBuilder();54 using (var sw = new StringWriter(sb))55 using (var writer = new JsonTextWriter(sw))56 {57 helper.Execute(dataTable.Rows.Cast<DataRow>(), new BasicSampler<DataRow>(1, 1), writer);58 Assert.That(sb.ToString, Does.Contain("total-rows"));59 Assert.That(sb.ToString, Does.Contain("sampled-rows"));60 }61 }62 [Test]63 public void Build_ThreeColumnsTwoRows_ColumnsSpecified()64 {65 var dataSet = new DataSet();66 var dataTable = new DataTable() { TableName = "MyTable" };67 dataTable.Columns.Add(new DataColumn("Id"));68 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;69 dataTable.Columns.Add(new DataColumn("Numeric value"));70 dataTable.Columns.Add(new DataColumn("Boolean value"));71 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);72 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);73 var helper = new TableHelperJson();74 var sb = new StringBuilder();75 var sw = new StringWriter(sb);76 using (var writer = new JsonTextWriter(sw))77 {78 helper.Execute(dataTable.Rows.Cast<DataRow>(), new FullSampler<DataRow>(), writer);79 Assert.That(sb.ToString, Does.Contain("columns"));80 Assert.That(sb.ToString, Does.Contain("Id").And.Contain("Numeric value").And.Contain("Boolean value"));81 }82 }83 [Test]84 public void Build_ThreeColumnsTwoRows_ColumnsPropertiesSpecified()85 {86 var dataSet = new DataSet();87 var dataTable = new DataTable() { TableName = "MyTable" };88 dataTable.Columns.Add(new DataColumn("Id"));89 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;90 dataTable.Columns.Add(new DataColumn("Numeric value"));91 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Role"] = ColumnRole.Value;92 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Type"] = ColumnType.Numeric;93 dataTable.Columns.Add(new DataColumn("Boolean value"));94 dataTable.Columns["Boolean value"].ExtendedProperties["NBi::Role"] = ColumnRole.Value;95 dataTable.Columns["Boolean value"].ExtendedProperties["NBi::Type"] = ColumnType.Boolean;96 dataTable.LoadDataRow(new object[] { "Alpha", 10, true }, false);97 dataTable.LoadDataRow(new object[] { "Beta", 20, false }, false);98 var helper = new TableHelperJson();99 var sb = new StringBuilder();100 var sw = new StringWriter(sb);101 using (var writer = new JsonTextWriter(sw))102 {103 helper.Execute(dataTable.Rows.Cast<DataRow>(), new FullSampler<DataRow>(), writer);104 Assert.That(sb.ToString, Does.Contain("\"role\":\"KEY\""));105 Assert.That(sb.ToString, Does.Contain("\"role\":\"VALUE\""));106 Assert.That(sb.ToString, Does.Contain("\"type\":\"Numeric\""));107 Assert.That(sb.ToString, Does.Contain("\"type\":\"Boolean\""));108 Assert.That(sb.ToString, Does.Not.Contain("\"tolerance\""));109 }110 }111 [Test]112 public void Build_ThreeColumnsTwoRows_ToleranceSpecified()113 {114 var dataSet = new DataSet();115 var dataTable = new DataTable() { TableName = "MyTable" };116 dataTable.Columns.Add(new DataColumn("Id"));117 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;118 dataTable.Columns.Add(new DataColumn("Numeric value"));119 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Role"] = ColumnRole.Value;120 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Type"] = ColumnType.Numeric;121 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Tolerance"] = new NumericAbsoluteTolerance(10, SideTolerance.Both);122 dataTable.LoadDataRow(new object[] { "Alpha", 10 }, false);123 dataTable.LoadDataRow(new object[] { "Beta", 20 }, false);124 var helper = new TableHelperJson();125 var sb = new StringBuilder();126 var sw = new StringWriter(sb);127 using (var writer = new JsonTextWriter(sw))128 {129 helper.Execute(dataTable.Rows.Cast<DataRow>(), new FullSampler<DataRow>(), writer);130 Assert.That(sb.ToString, Does.Contain("\"tolerance\":\"(+/- 10)\""));131 }132 }133 [Test]134 [TestCase("fr-fr")]135 [TestCase("en-us")]136 [TestCase("de-de")]137 public void Build_ThreeColumnsTwoRows_RowsSpecified(string culture)138 {139 Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);140 var dataSet = new DataSet();141 var dataTable = new DataTable() { TableName = "MyTable" };142 dataTable.Columns.Add(new DataColumn("Id"));143 dataTable.Columns["Id"].ExtendedProperties["NBi::Role"] = ColumnRole.Key;144 dataTable.Columns.Add("Numeric value", typeof(decimal));145 dataTable.Columns["Numeric value"].ExtendedProperties["NBi::Type"] = ColumnType.Numeric;146 dataTable.Columns.Add(new DataColumn("Boolean value"));147 dataTable.Columns["Boolean value"].ExtendedProperties["NBi::Type"] = ColumnType.Boolean;148 dataTable.Columns.Add("DateTime value", typeof(DateTime));149 dataTable.Columns["DateTime value"].ExtendedProperties["NBi::Type"] = ColumnType.DateTime;150 dataTable.LoadDataRow(new object[] { "Alpha", 10.5, true, new DateTime(2010, 5, 6) }, false);151 dataTable.LoadDataRow(new object[] { "Beta", 20, false, new DateTime(2010, 5, 15, 7, 45, 12) }, false);152 var helper = new TableHelperJson();153 var sb = new StringBuilder();154 var sw = new StringWriter(sb);155 using (var writer = new JsonTextWriter(sw))156 {157 helper.Execute(dataTable.Rows.Cast<DataRow>(), new FullSampler<DataRow>(), writer);158 Assert.That(sb.ToString, Does.Contain("rows"));159 Assert.That(sb.ToString, Does.Contain("[\"Alpha\",\"10.5\",\"True\",\"2010-05-06\"]"));160 Assert.That(sb.ToString, Does.Contain("[\"Beta\",\"20\",\"False\",\"2010-05-15 07:45:12\"]"));161 }162 }163 }164}...

Full Screen

Full Screen

DataRowsMessageJson.cs

Source:DataRowsMessageJson.cs Github

copy

Full Screen

...29 actual = BuildTable(actualRows, samplers["actual"]);30 analysis = BuildMultipleTables(31 new[]32 {33 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("unexpected", compareResult.Unexpected, new TableHelperJson()),34 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("missing", compareResult.Missing, new TableHelperJson()),35 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("duplicated", compareResult.Duplicated, new TableHelperJson()),36 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("non-matching", compareResult.NonMatchingValue.Rows, new CompareTableHelperJson()),37 }, samplers["analysis"]38 );39 }40 public void BuildDuplication(IEnumerable<DataRow> actualRows, ResultUniqueRows result)41 {42 actual = BuildTable(actualRows, samplers["actual"]);43 analysis = BuildMultipleTables(44 new[]45 {46 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("not-unique", result.Rows, new TableHelperJson())47 }, samplers["analysis"]);48 }49 public void BuildFilter(IEnumerable<DataRow> actualRows, IEnumerable<DataRow> filteredRows)50 {51 actual = BuildTable(actualRows, samplers["actual"]);52 analysis = BuildMultipleTables(53 new[]54 {55 new Tuple<string, IEnumerable<DataRow>, TableHelperJson>("filtered", filteredRows, new TableHelperJson())56 }, samplers["analysis"]);57 }58 public void BuildCount(IEnumerable<DataRow> actualRows)59 {60 actual = BuildTable(actualRows, samplers["actual"]);61 }62 private string BuildTable(IEnumerable<DataRow> rows, ISampler<DataRow> sampler)63 {64 var sb = new StringBuilder();65 var sw = new StringWriter(sb);66 var writer = new JsonTextWriter(sw);67 BuildTable(rows, sampler, writer);68 writer.Close();69 return sb.ToString();70 }71 private string BuildMultipleTables(IEnumerable<Tuple<string, IEnumerable<DataRow>, TableHelperJson>> tableInfos, ISampler<DataRow> sampler)72 {73 var sb = new StringBuilder();74 var sw = new StringWriter(sb);75 var writer = new JsonTextWriter(sw);76 writer.WriteStartObject();77 foreach (var item in tableInfos)78 {79 writer.WritePropertyName(item.Item1);80 BuildTable(item.Item2, sampler, item.Item3, writer);81 }82 writer.WriteEndObject();83 writer.Close();84 return sb.ToString();85 }86 private void BuildTable(IEnumerable<DataRow> rows, ISampler<DataRow> sampler, JsonWriter writer)87 {88 BuildTable(rows, sampler, new TableHelperJson(), writer);89 }90 private void BuildTable(IEnumerable<DataRow> rows, ISampler<DataRow> sampler, TableHelperJson tableHelper, JsonWriter writer)91 {92 tableHelper.Execute(rows, sampler, writer);93 }94 public string RenderExpected() => expected;95 public string RenderActual() => actual;96 public string RenderAnalysis() => analysis;97 public string RenderMessage()98 {99 var sb = new StringBuilder();100 using (var sw = new StringWriter(sb))101 using (var writer = new JsonTextWriter(sw))102 {103 writer.WriteStartObject();104 writer.WritePropertyName("timestamp");...

Full Screen

Full Screen

TableHelperJson.cs

Source:TableHelperJson.cs Github

copy

Full Screen

...12using System.Text;13using System.Threading.Tasks;14namespace NBi.Framework.FailureMessage.Json15{16 class TableHelperJson17 {18 public void Execute(IEnumerable<DataRow> rows, ISampler<DataRow> sampler, JsonWriter writer)19 => Execute(rows, sampler, BuildMetadataFromTable((rows ?? new DataRow[0]).Count() > 0 ? rows.ElementAt(0).Table : null), writer);20 private IEnumerable<ColumnMetadata> BuildMetadataFromTable(DataTable table)21 {22 if (table == null)23 yield break;24 foreach (DataColumn column in table.Columns)25 {26 yield return new ColumnMetadata()27 {28 Role = (ColumnRole)(column.ExtendedProperties["NBi::Role"] ?? ColumnRole.Key),29 Type = (ColumnType)(column.ExtendedProperties["NBi::Type"] ?? ColumnType.Text),30 Tolerance = (Tolerance)(column.ExtendedProperties["NBi::Tolerance"]),...

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1using NBi.Framework.FailureMessage.Json;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 TableHelperJson tableHelperJson = new TableHelperJson();12 tableHelperJson.AddRow(new string[] { "1", "2", "3" });13 tableHelperJson.AddRow(new string[] { "4", "5", "6" });14 tableHelperJson.AddRow(new string[] { "7", "8", "9" });15 string json = tableHelperJson.GetJson();16 Console.WriteLine(json);17 Console.ReadLine();18 }19 }20}21[{"1":"1","2":"2","3":"3"},{"1":"4","2":"5","3":"6"},{"1":"7","2":"8","3":"9"}]

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1using NBi.Framework.FailureMessage;2using NBi.Framework.FailureMessage.Markdown;3using NBi.Framework.FailureMessage.Markdown.Helper;4using NBi.Framework.FailureMessage.Markdown.Helper.TableHelperJson;5using NBi.Core.ResultSet;6using NBi.Core.ResultSet.Comparer;7using NBi.Core.ResultSet.Lookup;8using NBi.Core.ResultSet.Resolver;9using NBi.Core.Calculation.Grouping;10using NBi.Core.Calculation;11using NBi.Core;12using NBi.Core.Injection;13using NBi.Core.Decoration.IO;14using NBi.Core.Decoration.IO.Commands;15using NBi.Core.Decoration.IO.Commands.Text;16using NBi.Core.Decoration.IO.Commands.Csv;17using NBi.Core.Decoration.IO.Commands.Excel;18using NBi.Core.Decoration.IO.Commands.Database;19using NBi.Core.Decoration.IO.Commands.Json;20using NBi.Core.Decoration.IO.Commands.Xml;21using NBi.Core.Decoration.IO.Commands.Html;22using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes;23using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes;24using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlClasses;25using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles;26using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties;27using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues;28using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues.HtmlStylesValuesTypes;29using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues.HtmlStylesValuesTypes.HtmlStylesValuesTypesTypes;30using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues.HtmlStylesValuesTypes.HtmlStylesValuesTypesTypes.HtmlStylesValuesTypesTypesProperties;31using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues.HtmlStylesValuesTypes.HtmlStylesValuesTypesTypes.HtmlStylesValuesTypesTypesProperties.HtmlStylesValuesTypesTypesPropertiesValues;32using NBi.Core.Decoration.IO.Commands.Html.HtmlNodes.HtmlAttributes.HtmlStyles.HtmlStylesProperties.HtmlStylesValues.HtmlStylesValuesTypes.HtmlStylesValuesTypesTypes.HtmlStylesValuesTypesTypesProperties.HtmlStylesValuesTypesTypesPropertiesValues.HtmlStylesValuesTypesTypesPropertiesValuesTypes;

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1using System;2using System.Collections.Generic;3using System.Text;4using NBi.Framework.FailureMessage;5using NBi.Framework.FailureMessage.Json;6using NUnit.Framework;7{8 {9 public void MyTestMethod()10 {11 var tableHelper = new TableHelperJson();12 var tableHelper = new TableHelperJson(new System.Globalization.CultureInfo("en-US"));13 var tableHelper = new TableHelperJson(new System.Globalization.CultureInfo("en-US"), "N2");14 }15 }16}17using System;18using System.Collections.Generic;19using System.Text;20using NBi.Framework.FailureMessage;21using NBi.Framework.FailureMessage.Json;22using NUnit.Framework;23{24 {25 public void MyTestMethod()26 {27 var tableHelper = new TableHelperJson();28 var tableHelper = new TableHelperJson(new System.Globalization.CultureInfo("en-US"));29 var tableHelper = new TableHelperJson(new System.Globalization.CultureInfo("en-US"), "N2");30 }31 }32}33using System;34using System.Collections.Generic;35using System.Text;36using NBi.Framework.FailureMessage;37using NBi.Framework.FailureMessage.Json;38using NUnit.Framework;39{40 {41 public void MyTestMethod()42 {43 var tableHelper = new TableHelperJson();44 var tableHelper = new TableHelperJson(new System.Globalization.CultureInfo("en-US"));

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1using System;2using System.Data;3using System.IO;4using NBi.Framework.FailureMessage.Json;5{6 {7 static void Main(string[] args)8 {9 DataTable dt = new DataTable();10 dt.Columns.Add("Name", typeof(string));11 dt.Columns.Add("Age", typeof(int));12 dt.Columns.Add("City", typeof(string));13 dt.Columns.Add("Country", typeof(string));14 dt.Rows.Add("John", 23, "New York", "USA");15 dt.Rows.Add("Mary", 26, "Paris", "France");16 dt.Rows.Add("Peter", 22, "London", "UK");17 dt.Rows.Add("Paul", 27, "Berlin", "Germany");18 TableHelperJson helper = new TableHelperJson();19 string json = helper.GenerateJson(dt);20 File.WriteAllText("1.json", json);21 Console.ReadLine();22 }23 }24}25[{"Name":"John","Age":23,"City":"New York","Country":"USA"},{"Name":"Mary","Age":26,"City":"Paris","Country":"France"},{"Name":"Peter","Age":22,"City":"London","Country":"UK"},{"Name":"Paul","Age":27,"City":"Berlin","Country":"Germany"}]

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1var helper = new TableHelperJson();2var json = helper.Generate(table);3File.WriteAllText(@"C:\temp\json.txt", json);4var helper = new TableHelperJson();5var json = helper.Generate(table);6File.WriteAllText(@"C:\temp\json.txt", json);7var helper = new TableHelperJson();8var json = helper.Generate(table);9File.WriteAllText(@"C:\temp\json.txt", json);10var helper = new TableHelperJson();11var json = helper.Generate(table);12File.WriteAllText(@"C:\temp\json.txt", json);13var helper = new TableHelperJson();14var json = helper.Generate(table);15File.WriteAllText(@"C:\temp\json.txt", json);16var helper = new TableHelperJson();17var json = helper.Generate(table);18File.WriteAllText(@"C:\temp\json.txt", json);19var helper = new TableHelperJson();20var json = helper.Generate(table);21File.WriteAllText(@"C:\temp\json.txt", json);22var helper = new TableHelperJson();23var json = helper.Generate(table);24File.WriteAllText(@"C:\temp\json.txt", json);

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1var json = new TableHelperJson();2json.Save(results, "C:\\test\\result.json");3var json = new TableHelperJson();4json.Save(results, "C:\\test\\result.json");5var json = new TableHelperJson();6json.Save(results, "C:\\test\\result.json");7var json = new TableHelperJson();8json.Save(results, "C:\\test\\result.json");9var json = new TableHelperJson();10json.Save(results, "C:\\test\\result.json");11var json = new TableHelperJson();12json.Save(results, "C:\\test\\result.json");13var json = new TableHelperJson();14json.Save(results, "C:\\test\\result.json");15var json = new TableHelperJson();16json.Save(results, "C:\\test\\result.json");17var json = new TableHelperJson();18json.Save(results, "C:\\test\\result.json");

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1var json = new TableHelperJson();2var result = json.GetContent(table);3var path = "C:\\temp\\result.json";4File.WriteAllText(path, result);5{6 "metadata": {7 {8 },9 {10 }11 },12 {13 },14 {15 }16}

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1var json = new TableHelperJson();2var result = json.GetContent(table);3var path = "C:\\temp\\result.json";4File.WriteAllText(path, result);5{6 "metadata": {7 {8 },9 {10 }11 },12 {13 },14 {15 }16}17var json = new TableHelperJson();18json.Save(results, "C:\\test\\result.json");19var json = new TableHelperJson();20json.Save(results, "C:\\test\\result.json");21var json = new TableHelperJson();22json.Save(results, "C:\\test\\result.json");23var json = new TableHelperJson();24json.Save(results, "C:\\test\\result.json");25var json = new TableHelperJson();26json.Save(results, "C:\\test\\result.json");27var json = new TableHelperJson();28json.Save(results, "C:\\test\\result.json");29var json = new TableHelperJson();30json.Save(results, "C:\\test\\result.json");31var json = new TableHelperJson();32json.Save(results, "C:\\test\\result.json");33var json = new TableHelperJson();34json.Save(results, "C:\\test\\result.json");

Full Screen

Full Screen

TableHelperJson

Using AI Code Generation

copy

Full Screen

1var json = new TableHelperJson();2var result = json.GetContent(table);3var path = "C:\\temp\\result.json";4File.WriteAllText(path, result);5{6 "metadata": {7 {8 },9 {10 }11 },12 {13 },14 {15 }16}

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 methods in TableHelperJson

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful