Best Coyote code snippet using Microsoft.Coyote.Actors.BugFinding.Tests.OnEventHandledTests.OnException
OnEventHandledTests.cs
Source:OnEventHandledTests.cs
...242 {243 }244 protected override Task OnEventHandledAsync(Event e) =>245 throw new InvalidOperationException();246 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>247 OnExceptionOutcome.Halt;248 protected override Task OnHaltAsync(Event e)249 {250 this.Monitor<Spec3>(new Done());251 return Task.CompletedTask;252 }253 }254 [Fact(Timeout = 5000)]255 public void TestOnEventHandledWithHaltOutcomeInActor()256 {257 this.Test(r =>258 {259 r.RegisterMonitor<Spec3>();260 var m = r.CreateActor(typeof(A3));261 r.SendEvent(m, UnitEvent.Instance);262 r.SendEvent(m, new E1()); // Dropped silently.263 });264 }265 private class M3 : StateMachine266 {267 [Start]268 [OnEventDoAction(typeof(UnitEvent), nameof(Process))]269 private class S1 : State270 {271 }272#pragma warning disable CA1822 // Mark members as static273 private void Process()274#pragma warning restore CA1822 // Mark members as static275 {276 }277 protected override Task OnEventHandledAsync(Event e) =>278 throw new InvalidOperationException();279 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>280 OnExceptionOutcome.Halt;281 protected override Task OnHaltAsync(Event e)282 {283 this.Monitor<Spec3>(new Done());284 return Task.CompletedTask;285 }286 }287 [Fact(Timeout = 5000)]288 public void TestOnEventHandledWithHaltOutcomeInStateMachine()289 {290 this.Test(r =>291 {292 r.RegisterMonitor<Spec3>();293 var m = r.CreateActor(typeof(M3));294 r.SendEvent(m, UnitEvent.Instance);295 r.SendEvent(m, new E1()); // Dropped silently.296 });297 }298 [OnEventDoAction(typeof(UnitEvent), nameof(Process))]299 private class A4 : Actor300 {301#pragma warning disable CA1822 // Mark members as static302 private void Process()303#pragma warning restore CA1822 // Mark members as static304 {305 }306 protected override Task OnEventHandledAsync(Event e) =>307 throw new InvalidOperationException();308 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>309 OnExceptionOutcome.HandledException;310 protected override Task OnHaltAsync(Event e)311 {312 this.Monitor<Spec3>(new Done());313 return Task.CompletedTask;314 }315 }316 [Fact(Timeout = 5000)]317 public void TestOnEventHandledWithHandledExceptionOutcomeInActor()318 {319 this.TestWithError(r =>320 {321 r.RegisterMonitor<Spec3>();322 var m = r.CreateActor(typeof(A4));323 r.SendEvent(m, UnitEvent.Instance);324 },325 configuration: this.GetConfiguration().WithTestingIterations(100),326 expectedError: "Spec3 detected liveness bug in hot state 'S1' at the end of program execution.",327 replay: true);328 }329 private class M4 : StateMachine330 {331 [Start]332 [OnEventDoAction(typeof(UnitEvent), nameof(Process))]333 private class S1 : State334 {335 }336#pragma warning disable CA1822 // Mark members as static337 private void Process()338#pragma warning restore CA1822 // Mark members as static339 {340 }341 protected override Task OnEventHandledAsync(Event e) =>342 throw new InvalidOperationException();343 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>344 OnExceptionOutcome.HandledException;345 protected override Task OnHaltAsync(Event e)346 {347 this.Monitor<Spec3>(new Done());348 return Task.CompletedTask;349 }350 }351 [Fact(Timeout = 5000)]352 public void TestOnEventHandledWithHandledExceptionOutcomeInStateMachine()353 {354 this.TestWithError(r =>355 {356 r.RegisterMonitor<Spec3>();357 var m = r.CreateActor(typeof(M4));358 r.SendEvent(m, UnitEvent.Instance);359 },360 configuration: this.GetConfiguration().WithTestingIterations(100),361 expectedError: "Spec3 detected liveness bug in hot state 'S1' at the end of program execution.",362 replay: true);363 }364 [OnEventDoAction(typeof(UnitEvent), nameof(Process))]365 private class A5 : Actor366 {367#pragma warning disable CA1822 // Mark members as static368 private void Process()369#pragma warning restore CA1822 // Mark members as static370 {371 }372 protected override Task OnEventHandledAsync(Event e) =>373 throw new InvalidOperationException();374 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>375 OnExceptionOutcome.ThrowException;376 protected override Task OnHaltAsync(Event e)377 {378 this.Monitor<Spec3>(new Done());379 return Task.CompletedTask;380 }381 }382 [Fact(Timeout = 5000)]383 public void TestOnEventHandledWithThrowExceptionOutcomeInActor()384 {385 this.TestWithException<InvalidOperationException>(r =>386 {387 r.RegisterMonitor<Spec3>();388 var m = r.CreateActor(typeof(A5));389 r.SendEvent(m, UnitEvent.Instance);390 },391 configuration: this.GetConfiguration().WithTestingIterations(100),392 replay: true);393 }394 private class M5 : StateMachine395 {396 [Start]397 [OnEventDoAction(typeof(UnitEvent), nameof(Process))]398 private class S1 : State399 {400 }401#pragma warning disable CA1822 // Mark members as static402 private void Process()403#pragma warning restore CA1822 // Mark members as static404 {405 }406 protected override Task OnEventHandledAsync(Event e) =>407 throw new InvalidOperationException();408 protected override OnExceptionOutcome OnException(Exception ex, string methodName, Event e) =>409 OnExceptionOutcome.ThrowException;410 protected override Task OnHaltAsync(Event e)411 {412 this.Monitor<Spec3>(new Done());413 return Task.CompletedTask;414 }415 }416 [Fact(Timeout = 5000)]417 public void TestOnEventHandledWithThrowExceptionOutcomeInStateMachine()418 {419 this.TestWithException<InvalidOperationException>(r =>420 {421 r.RegisterMonitor<Spec3>();422 var m = r.CreateActor(typeof(M5));423 r.SendEvent(m, UnitEvent.Instance);...
OnException
Using AI Code Generation
1{2 using System;3 using System.Threading.Tasks;4 using Microsoft.Coyote.Actors;5 using Microsoft.Coyote.Actors.BugFinding;6 using Microsoft.Coyote.Actors.BugFinding.Tests;7 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks;8 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockActors;9 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockEvents;10 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations;11 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockExceptions;12 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers;13 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers;14 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers;15 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers;16 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;17 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;18 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;19 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;20 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;21 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;22 using Microsoft.Coyote.Actors.BugFinding.Tests.Mocks.MockImplementations.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers.MockHandlers;
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Actors.BugFinding.Tests;3using System;4using System.Collections.Generic;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9 {10 static void Main(string[] args)11 {12 var runtime = RuntimeFactory.Create();13 runtime.CreateActor(typeof(OnEventHandledTests));14 runtime.Wait();15 }16 }17}18using Microsoft.Coyote.Actors;19using Microsoft.Coyote.Actors.BugFinding.Tests;20using System;21using System.Collections.Generic;22using System.Linq;23using System.Text;24using System.Threading.Tasks;25{26 {27 static void Main(string[] args)28 {29 var runtime = RuntimeFactory.Create();30 runtime.CreateActor(typeof(OnEventUnhandledTests));31 runtime.Wait();32 }33 }34}35using Microsoft.Coyote.Actors;36using Microsoft.Coyote.Actors.BugFinding.Tests;37using System;38using System.Collections.Generic;39using System.Linq;40using System.Text;41using System.Threading.Tasks;42{43 {44 static void Main(string[] args)45 {46 var runtime = RuntimeFactory.Create();47 runtime.CreateActor(typeof(OnHaltTests));48 runtime.Wait();49 }50 }51}52using Microsoft.Coyote.Actors;53using Microsoft.Coyote.Actors.BugFinding.Tests;54using System;55using System.Collections.Generic;56using System.Linq;57using System.Text;58using System.Threading.Tasks;59{60 {61 static void Main(string[] args)62 {63 var runtime = RuntimeFactory.Create();64 runtime.CreateActor(typeof(OnReceiveEventTests));65 runtime.Wait();66 }67 }68}
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Actors.BugFinding;3using Microsoft.Coyote.Actors.BugFinding.Tests;4using Microsoft.Coyote.Actors.BugFinding.Tests.OnEventHandledTests;5{6 {7 static void Main(string[] args)8 {9 OnException();10 }11 static void OnException()12 {13 var config = Configuration.Create();14 config.OnException += (sender, e) =>15 {16 System.Console.WriteLine("Exception caught in actor {0}:", sender.Id);17 System.Console.WriteLine(e.Exception);18 };19 using (var runtime = RuntimeFactory.Create(config))20 {21 runtime.CreateActor(typeof(M));22 runtime.Wait();23 }24 }25 }26 {27 [OnEventGotoState(typeof(E), typeof(S2))]28 class Init : MonitorState { }29 [OnEventDoAction(typeof(E), nameof(Handle))]30 class S2 : MonitorState { }31 void Handle()32 {33 this.Assert(false);34 }35 }36}
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Actors.BugFinding.Tests;3using Microsoft.Coyote.Specifications;4using Microsoft.Coyote.SystematicTesting;5using Microsoft.Coyote.Tasks;6using System;7using System.Threading.Tasks;8{9 {10 static void Main(string[] args)11 {12 var configuration = Configuration.Create();13 configuration.TestingIterations = 100;14 configuration.TestingEngine = TestingEngine.Systematic;15 configuration.SchedulingIterations = 100;16 configuration.SchedulingStrategy = SchedulingStrategy.DFS;17 configuration.ReportActivityCoverage = true;18 configuration.ReportFairScheduling = true;19 configuration.ReportStateGraphCoverage = true;
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Actors.BugFinding.Tests;3using Microsoft.Coyote.Actors.BugFinding.Tests.OnEventHandledTests;4{5 {6 public static void Main(string[] args)7 {8 ActorRuntime.RegisterExceptionHandlers((ex, ctx) =>9 {10 var actor = ctx.CurrentActor as OnEventHandledTests;11 if (actor != null)12 {13 actor.OnException(ex);14 }15 });16 var runtime = ActorRuntime.Create();17 runtime.CreateActor(typeof(OnEventHandledTests));18 }19 }20}21using Microsoft.Coyote.Actors;22using Microsoft.Coyote.Actors.BugFinding.Tests;23using Microsoft.Coyote.Actors.BugFinding.Tests.OnEventReceivedTests;24{25 {26 public static void Main(string[] args)27 {28 ActorRuntime.RegisterExceptionHandlers((ex, ctx) =>29 {30 var actor = ctx.CurrentActor as OnEventReceivedTests;31 if (actor != null)32 {33 actor.OnException(ex);34 }35 });36 var runtime = ActorRuntime.Create();37 runtime.CreateActor(typeof(OnEventReceivedTests));38 }39 }40}41using Microsoft.Coyote.Actors;42using Microsoft.Coyote.Actors.BugFinding.Tests;43using Microsoft.Coyote.Actors.BugFinding.Tests.OnEventSentTests;44{45 {46 public static void Main(string[] args)47 {48 ActorRuntime.RegisterExceptionHandlers((ex, ctx) =>49 {50 var actor = ctx.CurrentActor as OnEventSentTests;51 if (actor != null)52 {53 actor.OnException(ex);54 }55 });56 var runtime = ActorRuntime.Create();57 runtime.CreateActor(typeof(OnEventSentTests));58 }59 }60}61using Microsoft.Coyote.Actors;62using Microsoft.Coyote.Actors.BugFinding.Tests;
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Testing;3using System;4using System.Threading.Tasks;5using Xunit;6using Xunit.Abstractions;7using System.Threading;8using Microsoft.Coyote.Actors.BugFinding.Tests;9using Microsoft.Coyote.Actors.BugFinding;10{11 {12 public OnEventHandledTests(ITestOutputHelper output)13 : base(output)14 {15 }16 {17 }18 {19 }20 {21 }22 {23 protected override Task OnEventAsync(Event e)24 {25 this.Assert(false, "Reached default handler.");26 return Task.CompletedTask;27 }28 }29 {30 protected override Task OnEventAsync(Event e)31 {32 this.Assert(false, "Reached default handler.");33 return Task.CompletedTask;34 }35 }36 {37 protected override Task OnEventAsync(Event e)38 {39 this.Assert(false, "Reached default handler.");40 return Task.CompletedTask;41 }42 }43 {44 protected override Task OnEventAsync(Event e)45 {46 this.Assert(false, "Reached default handler.");47 return Task.CompletedTask;48 }49 }50 {51 protected override Task OnEventAsync(Event e)52 {53 this.Assert(false, "Reached default handler.");54 return Task.CompletedTask;55 }56 }57 {58 protected override Task OnEventAsync(Event e)59 {60 this.Assert(false, "Reached default handler.");61 return Task.CompletedTask;62 }63 }64 {65 protected override Task OnEventAsync(Event e)66 {67 this.Assert(false, "Reached default handler.");68 return Task.CompletedTask;69 }70 }71 {72 protected override Task OnEventAsync(Event e)73 {74 this.Assert(false, "Reached default handler.");75 return Task.CompletedTask;76 }77 }78 {79 protected override Task OnEventAsync(Event e)80 {81 this.Assert(false, "Reached
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2{3 {4 private static void Main(string[] args)5 {6 var runtime = RuntimeFactory.Create();7 runtime.RegisterMonitor(typeof(Monitor));8 runtime.CreateActor(typeof(OnEventHandledTests));9 runtime.Wait();10 }11 }12}13using Microsoft.Coyote.Actors.BugFinding.Tests;14{15 {16 private static void Main(string[] args)17 {18 var runtime = RuntimeFactory.Create();19 runtime.RegisterMonitor(typeof(Monitor));20 runtime.CreateActor(typeof(OnEventUnhandledTests));21 runtime.Wait();22 }23 }24}25using Microsoft.Coyote.Actors.BugFinding.Tests;26{27 {28 private static void Main(string[] args)29 {30 var runtime = RuntimeFactory.Create();31 runtime.RegisterMonitor(typeof(Monitor));32 runtime.CreateActor(typeof(OnHaltTests));33 runtime.Wait();34 }35 }36}37using Microsoft.Coyote.Actors.BugFinding.Tests;38{39 {40 private static void Main(string[] args)41 {42 var runtime = RuntimeFactory.Create();43 runtime.RegisterMonitor(typeof(Monitor));44 runtime.CreateActor(typeof(OnReceiveEventTests));45 runtime.Wait();46 }47 }48}49using Microsoft.Coyote.Actors.BugFinding.Tests;50{51 {52 private static void Main(string[] args)53 {54 var runtime = RuntimeFactory.Create();
OnException
Using AI Code Generation
1using System;2using System.Threading.Tasks;3using Microsoft.Coyote;4using Microsoft.Coyote.Actors;5using Microsoft.Coyote.Actors.BugFinding.Tests;6using Microsoft.Coyote.Actors.BugFinding;7using Microsoft.Coyote.TestingServices;8using Microsoft.Coyote.TestingServices.Runtime;9using Microsoft.Coyote.TestingServices.Runtime.SchedulingStrategies;10using Microsoft.Coyote.TestingServices.SchedulingStrategies;11using Microsoft.Coyote.TestingServices.SchedulingStrategies.DPOR;12using Microsoft.Coyote.TestingServices.SchedulingStrategies.ProbabilisticRandomExecution;13using Microsoft.Coyote.TestingServices.SchedulingStrategies.ProbabilisticRandomExecution.Strategies;14using Microsoft.Coyote.TestingServices.SchedulingStrategies.RandomExecution;15using Microsoft.Coyote.TestingServices.SchedulingStrategies.RandomValueGeneration;16using Microsoft.Coyote.TestingServices.SchedulingStrategies.StateExploration;17{18 {19 {20 public ActorId Id;21 public E(ActorId id) : base()22 {23 this.Id = id;24 }25 }26 {27 }28 {29 [OnEventDoAction(typeof(E), nameof(Foo))]30 {31 }32 private void Foo()33 {34 this.Send(this.ReceivedEvent.Id, new Done());35 }36 }37 public void TestOnEventHandled()38 {39 this.TestWithError(r =>40 {41 r.CreateActor(typeof(M));42 },43 configuration: this.GetConfiguration().WithTestingIterations(1000),44 replay: true);45 }46 }47}48using System;49using System.Threading.Tasks;50using Microsoft.Coyote;51using Microsoft.Coyote.Actors;52using Microsoft.Coyote.Actors.BugFinding.Tests;53using Microsoft.Coyote.Actors.BugFinding;
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using System;3using System.Threading.Tasks;4{5 {6 static async Task Main(string[] args)7 {8 OnEventHandledTests onEventHandledTests = new OnEventHandledTests();9 onEventHandledTests.OnException();10 }11 }12}13CoyoteBug.zip (1.1 MB)
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using System;3using System.Threading.Tasks;4{5 {6 static async Task Main(string[] args)7 {8 using (var runtime = await Runtime.CreateAsync())9 {10 var actor = ActorId.CreateActor(typeof(OnEventHandledTests));11 runtime.SendEvent(actor, new E());12 await runtime.WaitAsync(actor);13 }14 }15 }16}17using Microsoft.Coyote.Actors;18using System;19using System.Threading.Tasks;20{21 {22 static async Task Main(string[] args)23 {24 using (var runtime = await Runtime.CreateAsync())25 {26 var actor = ActorId.CreateActor(typeof(OnEventUnhandledTests));27 runtime.SendEvent(actor, new E());28 await runtime.WaitAsync(actor);29 }30 }31 }32}33using Microsoft.Coyote.Actors;34using System;35using System.Threading.Tasks;36{37 {38 static async Task Main(string[] args)39 {40 using (var runtime = await Runtime.CreateAsync())41 {42 var actor = ActorId.CreateActor(typeof(OnFaultTests));43 runtime.SendEvent(actor, new E());44 await runtime.WaitAsync(actor);45 }46 }47 }48}49}50using Microsoft.Coyote.Actors.BugFinding.Tests;51{52 {53 private static void Main(string[] args)54 {55 var runtime = RuntimeFactory.Create();56 runtime.RegisterMonitor(typeof(Monitor));57 runtime.CreateActor(typeof(OnReceiveEventTests));58 runtime.Wait();59 }60 }61}62using Microsoft.Coyote.Actors.BugFinding.Tests;63{64 {65 private static void Main(string[] args)66 {67 var runtime = RuntimeFactory.Create();
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using System;3using System.Threading.Tasks;4{5 {6 static async Task Main(string[] args)7 {8 OnEventHandledTests onEventHandledTests = new OnEventHandledTests();9 onEventHandledTests.OnException();10 }11 }12}13CoyoteBug.zip (1.1 MB)
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors;2using Microsoft.Coyote.Testing;3using System;4using System.Threading.Tasks;5using Xunit;6using Xunit.Abstractions;7using System.Threading;8using Microsoft.Coyote.Actors.BugFinding.Tests;9using Microsoft.Coyote.Actors.BugFinding;10{11 {12 public OnEventHandledTests(ITestOutputHelper output)13 : base(output)14 {15 }16 {17 }18 {19 }20 {21 }22 {23 protected override Task OnEventAsync(Event e)24 {25 this.Assert(false, "Reached default handler.");26 return Task.CompletedTask;27 }28 }29 {30 protected override Task OnEventAsync(Event e)31 {32 this.Assert(false, "Reached default handler.");33 return Task.CompletedTask;34 }35 }36 {37 protected override Task OnEventAsync(Event e)38 {39 this.Assert(false, "Reached default handler.");40 return Task.CompletedTask;41 }42 }43 {44 protected override Task OnEventAsync(Event e)45 {46 this.Assert(false, "Reached default handler.");47 return Task.CompletedTask;48 }49 }50 {51 protected override Task OnEventAsync(Event e)52 {53 this.Assert(false, "Reached default handler.");54 return Task.CompletedTask;55 }56 }57 {58 protected override Task OnEventAsync(Event e)59 {60 this.Assert(false, "Reached default handler.");61 return Task.CompletedTask;62 }63 }64 {65 protected override Task OnEventAsync(Event e)66 {67 this.Assert(false, "Reached default handler.");68 return Task.CompletedTask;69 }70 }71 {72 protected override Task OnEventAsync(Event e)73 {74 this.Assert(false, "Reached default handler.");75 return Task.CompletedTask;76 }77 }78 {79 protected override Task OnEventAsync(Event e)80 {81 this.Assert(false, "Reached
OnException
Using AI Code Generation
1using Microsoft.Coyote.Actors.BugFinding.Tests;2using System;3using System.Threading.Tasks;4{5 {6 static async Task Main(string[] args)7 {8 OnEventHandledTests onEventHandledTests = new OnEventHandledTests();9 onEventHandledTests.OnException();10 }11 }12}13CoyoteBug.zip (1.1 MB)
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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!