How to use getTestClass method of net.thucydides.junit.listeners.JUnitStepListener class

Best Serenity JUnit code snippet using net.thucydides.junit.listeners.JUnitStepListener.getTestClass

Source:SerenityRunner.java Github

copy

Full Screen

...313 }314 protected JUnitStepListener initListenersUsing(final Pages pageFactory) {315 return JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())316 .and().withPageFactory(pageFactory)317 .and().withTestClass(getTestClass().getJavaClass())318 .and().build();319 }320 protected JUnitStepListener initListeners() {321 return JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())322 .and().withTestClass(getTestClass().getJavaClass())323 .and().build();324 }325 private boolean webtestsAreSupported() {326 return TestCaseAnnotations.supportsWebTests(this.getTestClass().getJavaClass());327 }328 private void initStepFactoryUsing(final Pages pagesObject) {329 stepFactory = StepFactory.getFactory().usingPages(pagesObject);330 }331 private void initStepFactory() {332 stepFactory = StepFactory.getFactory();333 }334 private ReportService getReportService() {335 if (reportService == null) {336 reportService = new ReportService(getOutputDirectory(), getDefaultReporters());337 }338 return reportService;339 }340 /**341 * A test runner can generate reports via Reporter instances that subscribe342 * to the test runner. The test runner tells the reporter what directory to343 * place the reports in. Then, at the end of the test, the test runner344 * notifies these reporters of the test outcomes. The reporter's job is to345 * process each test run outcome and do whatever is appropriate.346 *347 * @param testOutcomeResults the test results from the previous test run.348 */349 private void generateReportsFor(final List<TestOutcome> testOutcomeResults) {350 getReportService().generateReportsFor(testOutcomeResults);351 getReportService().generateConfigurationsReport();352 }353 @Override354 protected void runChild(FrameworkMethod method, RunNotifier notifier) {355 TestMethodConfiguration theMethod = TestMethodConfiguration.forMethod(method);356 clearMetadataIfRequired();357 resetStepLibrariesIfRequired();358 if(!failureRerunner.hasToRunTest(method.getDeclaringClass().getCanonicalName(),method.getMethod().getName()))359 {360 return;361 }362 if (shouldSkipTest(method)) {363 return;364 }365 if (theMethod.isManual()) {366 markAsManual(method).accept(notifier);367 return;368 } else if (theMethod.isPending()) {369 markAsPending(method);370 notifier.fireTestIgnored(describeChild(method));371 return;372 } else {373 processTestMethodAnnotationsFor(method);374 }375 initializeTestSession();376 prepareBrowserForTest();377 additionalBrowserCleanup();378 performRunChild(method, notifier);379 if (failureDetectingStepListener.lastTestFailed() && maxRetries() > 0) {380 retryAtMost(maxRetries(), new RerunSerenityTest(method, notifier));381 }382 }383 private void retryAtMost(int remainingTries,384 RerunTest rerunTest) {385 if (remainingTries <= 0) { return; }386 logger.info(rerunTest.toString() + ": attempt " + (maxRetries() - remainingTries));387 StepEventBus.getEventBus().cancelPreviousTest();388 rerunTest.perform();389 if (failureDetectingStepListener.lastTestFailed()) {390 retryAtMost(remainingTries - 1, rerunTest);391 } else {392 StepEventBus.getEventBus().lastTestPassedAfterRetries(remainingTries,393 failureDetectingStepListener.getFailureMessages(),failureDetectingStepListener.getTestFailureCause());394 }395 }396 private void performRunChild(FrameworkMethod method, RunNotifier notifier) {397 super.runChild(method, notifier);398 }399 interface RerunTest {400 void perform();401 }402 class RerunSerenityTest implements RerunTest {403 private final FrameworkMethod method;404 private final RunNotifier notifier;405 RerunSerenityTest(FrameworkMethod method, RunNotifier notifier) {406 this.method = method;407 this.notifier = notifier;408 }409 @Override410 public void perform() {411 performRunChild(method, notifier);412 }413 @Override414 public String toString() {415 return "Retrying " + method.getDeclaringClass() + " " + method.getMethod().getName();416 }417 }418 private void clearMetadataIfRequired() {419 if (theTest.shouldClearMetadata()) {420 Serenity.getCurrentSession().clearMetaData();421 }422 }423 private void resetStepLibrariesIfRequired() {424 if (theTest.shouldResetStepLibraries()) {425 stepFactory.reset();426 }427 }428 protected void additionalBrowserCleanup() {429 // Template method. Override this to do additional cleanup e.g. killing IE processes.430 }431 private boolean shouldSkipTest(FrameworkMethod method) {432 return !tagScanner.shouldRunMethod(getTestClass().getJavaClass(), method.getName());433 }434 private void markAsPending(FrameworkMethod method) {435 testStarted(method);436 StepEventBus.getEventBus().testPending();437 StepEventBus.getEventBus().testFinished();438 }439 private Consumer<RunNotifier> markAsManual(FrameworkMethod method) {440 TestMethodConfiguration theMethod = TestMethodConfiguration.forMethod(method);441 testStarted(method);442 StepEventBus.getEventBus().testIsManual();443 StepEventBus.getEventBus().getBaseStepListener().latestTestOutcome().ifPresent(444 outcome -> outcome.setResult(theMethod.getManualResult())445 );446 switch(theMethod.getManualResult()) {...

Full Screen

Full Screen

Source:ThucydidesRunner.java Github

copy

Full Screen

...283 }284 protected JUnitStepListener initListenersUsing(final Pages pageFactory) {285 return JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())286 .and().withPageFactory(pageFactory)287 .and().withTestClass(getTestClass().getJavaClass())288 .and().build();289 }290 protected JUnitStepListener initListeners() {291 return JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())292 .and().withTestClass(getTestClass().getJavaClass())293 .and().build();294 }295 private boolean webtestsAreSupported() {296 return TestCaseAnnotations.supportsWebTests(this.getTestClass().getJavaClass());297 }298 private void initStepFactoryUsing(final Pages pagesObject) {299 stepFactory = new StepFactory(pagesObject);300 }301 private void initStepFactory() {302 stepFactory = new StepFactory();303 }304 private void closeDrivers() {305 getWebdriverManager().closeAllCurrentDrivers();306 }307 protected WebdriverManager getWebdriverManager() {308 return webdriverManager;309 }310 private ReportService getReportService() {311 if (reportService == null) {312 reportService = new ReportService(getOutputDirectory(), getDefaultReporters());313 }314 return reportService;315 }316 /**317 * A test runner can generate reports via Reporter instances that subscribe318 * to the test runner. The test runner tells the reporter what directory to319 * place the reports in. Then, at the end of the test, the test runner320 * notifies these reporters of the test outcomes. The reporter's job is to321 * process each test run outcome and do whatever is appropriate.322 *323 * @param testOutcomeResults the test results from the previous test run.324 */325 private void generateReportsFor(final List<TestOutcome> testOutcomeResults) {326 getReportService().generateReportsFor(testOutcomeResults);327 }328 @Override329 protected void runChild(FrameworkMethod method, RunNotifier notifier) {330 clearMetadataIfRequired();331 if (shouldSkipTest(method)) {332 return;333 }334 if (isPending(method)) {335 markAsPending(method);336 notifier.fireTestIgnored(describeChild(method));337 return;338 } else {339 processTestMethodAnnotationsFor(method);340 }341 FailureDetectingStepListener failureDetectingStepListener = new FailureDetectingStepListener();342 StepEventBus.getEventBus().registerListener(failureDetectingStepListener);343 int maxRetries = getConfiguration().maxRetries();344 for (int attemptCount = 0; attemptCount <= maxRetries; attemptCount++) {345 if (notifier instanceof RetryFilteringRunNotifier) {346 ((RetryFilteringRunNotifier) notifier).reset();347 }348 if (attemptCount > 0) {349 logger.warn(method.getName() + " failed, making attempt " + (attemptCount + 1) + ". Max retries: " + maxRetries);350 StepEventBus.getEventBus().testRetried();351 }352 initializeTestSession();353 resetBroswerFromTimeToTime();354 additionalBrowserCleanup();355 failureDetectingStepListener.reset();356 super.runChild(method, notifier);357 if (!failureDetectingStepListener.lastTestFailed()) {358 break;359 }360 }361 if (notifier instanceof RetryFilteringRunNotifier) {362 ((RetryFilteringRunNotifier) notifier).flush();363 }364 }365 private void clearMetadataIfRequired() {366 if (!configuration.getEnvironmentVariables().getPropertyAsBoolean(ThucydidesSystemProperty.THUCYDIDES_MAINTAIN_SESSION, false)) {367 Thucydides.getCurrentSession().clearMetaData();368 }369 }370 protected void additionalBrowserCleanup() {371 // Template method. Override this to do additional cleanup e.g. killing IE processes.372 }373 private boolean shouldSkipTest(FrameworkMethod method) {374 return !tagScanner.shouldRunMethod(getTestClass().getJavaClass(), method.getName());375 }376 private void markAsPending(FrameworkMethod method) {377 stepListener.testStarted(Description.createTestDescription(method.getMethod().getDeclaringClass(), testName(method)));378 StepEventBus.getEventBus().testPending();379 StepEventBus.getEventBus().testFinished();380 }381 /**382 * Process any Thucydides annotations in the test class.383 * Ignored tests will just be skipped by JUnit - we need to ensure384 * that they are included in the Thucydides reports385 * If a test method is pending, all the steps should be skipped.386 */387 private void processTestMethodAnnotationsFor(FrameworkMethod method) {388 if (isIgnored(method)) {389 stepListener.testStarted(Description.createTestDescription(method.getMethod().getDeclaringClass(), testName(method)));390 StepEventBus.getEventBus().testIgnored();391 }392 }393 private boolean isPending(FrameworkMethod method) {394 return method.getAnnotation(Pending.class) != null;395 }396 private boolean isIgnored(FrameworkMethod method) {397 return method.getAnnotation(Ignore.class) != null;398 }399 protected boolean restartBrowserBeforeTest() {400 return notAUniqueSession() || dueForPeriodicBrowserReset();401 }402 private boolean dueForPeriodicBrowserReset() {403 return shouldRestartEveryNthTest() && (currentTestNumber() % restartFrequency() == 0);404 }405 private boolean notAUniqueSession() {406 return !isUniqueSession();407 }408 protected int restartFrequency() {409 return getConfiguration().getRestartFrequency();410 }411 protected int currentTestNumber() {412 return testCount.getCurrentTestNumber();413 }414 protected boolean shouldRestartEveryNthTest() {415 return (restartFrequency() > 0);416 }417 protected boolean isUniqueSession() {418 return TestCaseAnnotations.isUniqueSession(getTestClass().getJavaClass());419 }420 protected void resetBroswerFromTimeToTime() {421 if (isAWebTest() && restartBrowserBeforeTest()) {422 WebdriverProxyFactory.resetDriver(getDriver());423 }424 }425 /**426 * Running a unit test, which represents a test scenario.427 */428 @Override429 protected Statement methodInvoker(final FrameworkMethod method, final Object test) {430 if (webtestsAreSupported()) {431 injectDriverInto(test, method);432 initPagesObjectUsing(driverFor(method));433 injectAnnotatedPagesObjectInto(test);434 initStepFactoryUsing(getPages());435 }436 injectScenarioStepsInto(test);437 useStepFactoryForDataDrivenSteps();438 Statement baseStatement = super.methodInvoker(method, test);439 return new ThucydidesStatement(baseStatement, stepListener.getBaseStepListener());440 }441 private void useStepFactoryForDataDrivenSteps() {442 StepData.setDefaultStepFactory(stepFactory);443 }444 /**445 * Instantiate the @Managed-annotated WebDriver instance with current WebDriver.446 * @param testCase A Thucydides-annotated test class447 * @param method the test method448 */449 protected void injectDriverInto(final Object testCase,450 final FrameworkMethod method) {451 TestCaseAnnotations.forTestCase(testCase).injectDriver(driverFor(method));452 dependencyInjector.injectDependenciesInto(testCase);453 }454 protected WebDriver driverFor(final FrameworkMethod method) {455 if (TestMethodAnnotations.forTest(method).isDriverSpecified()) {456 String testSpecificDriver = TestMethodAnnotations.forTest(method).specifiedDriver();457 return getDriver(testSpecificDriver);458 } else {459 return getDriver();460 }461 }462 /**463 * Instantiates the @ManagedPages-annotated Pages instance using current WebDriver.464 * @param testCase A Thucydides-annotated test class465 */466 protected void injectScenarioStepsInto(final Object testCase) {467 StepAnnotations.injectScenarioStepsInto(testCase, stepFactory);468 }469 /**470 * Instantiates the @ManagedPages-annotated Pages instance using current WebDriver.471 * @param testCase A Thucydides-annotated test class472 */473 protected void injectAnnotatedPagesObjectInto(final Object testCase) {474 StepAnnotations.injectAnnotatedPagesObjectInto(testCase, pages);475 }476 protected WebDriver getDriver() {477 return getWebdriverManager().getWebdriver(requestedDriver);478 }479 protected WebDriver getDriver(final String driver) {480 return getWebdriverManager().getWebdriver(driver);481 }482 /**483 * Find the current set of test outcomes produced by the test execution.484 * @return the current list of test outcomes485 */486 public List<TestOutcome> getTestOutcomes() {487 return getStepListener().getTestOutcomes();488 }489 /**490 * @return The default reporters applicable for standard test runs.491 */492 protected Collection<AcceptanceTestReporter> getDefaultReporters() {493 return ReportService.getDefaultReporters();494 }495 public boolean isAWebTest() {496 return TestCaseAnnotations.isWebTest(getTestClass().getJavaClass());497 }498}...

Full Screen

Full Screen

Source:WhenListeningForTestEvents.java Github

copy

Full Screen

...47 }48 @Before49 public void initMocks() {50 MockitoAnnotations.initMocks(this);51 Mockito.<Class<?>>when(failureDescription.getTestClass()).thenReturn(ScenarioWithSomeFailingTests.class);52 }53 private JUnitStepListener listener;54 private JUnitStepListener failureTestListener;55 @Before56 public void setupListeners() throws Exception {57 setupDefaultListener();58 setupFailureListener();59 }60 private void setupDefaultListener() throws Exception {61 listener = JUnitStepListener.withOutputDirectory(outputDirectory)62 .and().withPageFactory(pages)63 .and().withTestClass(MyTestCase.class)64 .and().build();65 stepFactory = new StepFactory(pages);...

Full Screen

Full Screen

Source:JUnitStepListener.java Github

copy

Full Screen

...56 if (testingThisTest(description)) {57 startTestSuiteForFirstTest(description);58 StepEventBus.getEventBus().clear();59 StepEventBus.getEventBus().testStarted(description.getMethodName(),60 description.getTestClass());61 startTest();62 }63 }64 private void startTestSuiteForFirstTest(Description description) {65 if (!getBaseStepListener().testSuiteRunning()) {66 StepEventBus.getEventBus().testSuiteStarted(description.getTestClass());67 }68 }69 @Override70 public void testFinished(final Description description) throws Exception {71 if (testingThisTest(description)) {72 StepEventBus.getEventBus().testFinished();73 endTest();74 }75 }76 @Override77 public void testFailure(final Failure failure) throws Exception {78 if (testingThisTest(failure.getDescription())) {79 startTestIfNotYetStarted(failure.getDescription());80 StepEventBus.getEventBus().testFailed(failure.getException());81 endTest();82 }83 }84 private void startTestIfNotYetStarted(Description description) {85 if (!testStarted) {86 testStarted(description);87 }88 }89 @Override90 public void testIgnored(final Description description) throws Exception {91 if (testingThisTest(description)) {92 StepEventBus.getEventBus().testIgnored();93 endTest();94 }95 }96 public List<TestOutcome> getTestOutcomes() {97 return baseStepListener.getTestOutcomes();98 }99 public FailureCause getError() {100 return baseStepListener.getTestFailureCause();101 }102 public boolean hasRecordedFailures() {103 return baseStepListener.aStepHasFailed();104 }105 public void dropListeners() {106 StepEventBus.getEventBus().dropListener(baseStepListener);107 for(StepListener listener : extraListeners) {108 StepEventBus.getEventBus().dropListener(listener);109 }110 }111 private void startTest() {112 testStarted = true;113 }114 private void endTest() {115 testStarted = false;116 }117 private boolean testingThisTest(Description description) {118 return description.getTestClass().equals(testClass);119 }120 protected Class<?> getTestClass() {121 return testClass;122 }123}...

Full Screen

Full Screen

Source:ParameterizedJUnitStepListener.java Github

copy

Full Screen

...31 StepEventBus.getEventBus().exampleStarted(parametersTable.row(parameterSetNumber).toStringMap());32 }33 }34 private boolean isPending(Description description) {35 return TestAnnotations.forClass(description.getTestClass()).isPending(description.getMethodName());36 }37 private boolean isIgnored(Description description) {38 return TestAnnotations.forClass(description.getTestClass()).isIgnored(description.getMethodName());39 }40 private boolean ignoredOrPending(Description description) {41 return isIgnored(description) || isPending(description);42 }43 private DataTable dataTableRow() {44 return DataTable.withHeaders(parametersTable.getHeaders()).andCopyRowDataFrom(parametersTable.getRows().get(parameterSetNumber)).build();45 }46 private DataTable dataTable() {47 return DataTable.withHeaders(parametersTable.getHeaders()).andRowData (parametersTable.getRows()).build();48 }49 private boolean testingThisDataSet(Description description) {50 return ((description.getTestClass().equals(getTestClass())) &&51 (description.getMethodName().endsWith("[" + parameterSetNumber + "]")));52 }53 @Override54 public void testFinished(final Description description) throws Exception {55 if (testingThisDataSet(description)) {56 super.testFinished(description);57 StepEventBus.getEventBus().exampleFinished();58 }59 }60 @Override61 public void testFailure(final Failure failure) throws Exception {62 if (testingThisDataSet(failure.getDescription())) {63 super.testFailure(failure);64 StepEventBus.getEventBus().exampleFinished();...

Full Screen

Full Screen

Source:TestClassRunnerForParameters.java Github

copy

Full Screen

...25 setStepListener(JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())26 .and().withPageFactory(pageFactory)27 .and().withParameterSetNumber(parameterSetNumber)28 .and().withParametersTable(parametersTable)29 .and().withTestClass(getTestClass().getJavaClass())30 .and().build());31 return getStepListener();32 }33 @Override34 protected JUnitStepListener initListeners() {35 setStepListener(JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())36 .and().withParameterSetNumber(parameterSetNumber)37 .and().withParametersTable(parametersTable)38 .and().withTestClass(getTestClass().getJavaClass())39 .and().build());40 return getStepListener();41 }42 @Override43 protected Object initializeTest() throws Exception {44 return getTestClass().getOnlyConstructor().newInstance(computeParams());45 }46 private Object[] computeParams() throws Exception {47 try {48 DataTableRow row = parametersTable.getRows().get(parameterSetNumber);49 return row.getValues().toArray();50 } catch (ClassCastException cause) {51 throw new Exception(String.format(52 "%s.%s() must return a Collection of arrays.",53 getTestClass().getName(),54 DataDrivenAnnotations.forClass(getTestClass()).getTestDataMethod().getName()),55 cause);56 }57 }58 @Override59 protected String getName() {60 String firstParameter = parametersTable.getRows().get(parameterSetNumber).getValues().get(0).toString();61 return String.format("[%s]", firstParameter);62 }63 @Override64 protected String testName(final FrameworkMethod method) {65 return String.format("%s[%s]", method.getName(), parameterSetNumber);66 }67 @Override68 protected void validateConstructor(final List<Throwable> errors) {...

Full Screen

Full Screen

Source:TestClassRunnerForInstanciatedTestCase.java Github

copy

Full Screen

...27 setStepListener(JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())28 .and().withPageFactory(pageFactory)29 .and().withParameterSetNumber(parameterSetNumber)30 .and().withParametersTable(parametersTable)31 .and().withTestClass(getTestClass().getJavaClass())32 .and().build());33 return getStepListener();34 }35 @Override36 protected JUnitStepListener initListeners() {37 setStepListener(JUnitStepListener.withOutputDirectory(getConfiguration().getOutputDirectory())38 .and().withParameterSetNumber(parameterSetNumber)39 .and().withParametersTable(parametersTable)40 .and().withTestClass(getTestClass().getJavaClass())41 .and().build());42 return getStepListener();43 }44 @Override45 protected Object initializeTest() throws Exception {46 return instanciatedTest;47 }48 @Override49 protected String getName() {50 String qualifier = QualifierFinder.forTestCase(instanciatedTest).getQualifier();51 return (isEmpty(qualifier)) ? super.getName() : qualifier;52 }53 @Override54 protected String testName(final FrameworkMethod method) {...

Full Screen

Full Screen

getTestClass

Using AI Code Generation

copy

Full Screen

1 public class TestClass {2 private final JUnitStepListener jUnitStepListener = new JUnitStepListener();3 public void test() {4 jUnitStepListener.getTestClass();5 }6 }

Full Screen

Full Screen

getTestClass

Using AI Code Generation

copy

Full Screen

1import net.thucydides.core.annotations.Step;2import net.thucydides.core.annotations.Steps;3import net.thucydides.core.steps.ScenarioSteps;4import net.thucydides.junit.listeners.JUnitStepListener;5import net.thucydides.junit.listeners.JUnitStepListener.StepFailure;6import net.thucydides.junit.listeners.JUnitStepListener.StepFinished;7import net.thucydides.junit.listeners.JUnitStepListener.StepIgnored;8import net.thucydides.junit.listeners.JUnitStepListener.StepPending;9import net.thucydides.junit.listeners.JUnitStepListener.StepStarted;10import net.thucydides.junit.listeners.JUnitStepListener.StepSuccessful;11import net.thucydides.junit.listeners.JUnitStepListener.TestFailure;12import net.thucydides.junit.listeners.JUnitStepListener.TestIgnored;13import net.thucydides.junit.listeners.JUnitStepListener.TestPending;14import net.thucydides.junit.listeners.JUnitStepListener.TestStarted;15import net.thucydides.junit.listeners.JUnitStepListener.TestSuccessful;16import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteFinished;17import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteStarted;18import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteStepFinished;19import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteStepStarted;20import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestFinished;21import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestStarted;22import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestStepFinished;23import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestStepStarted;24import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestSuccessful;25import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestSuiteFinished;26import net.thucydides.junit.listeners.JUnitStepListener.TestSuiteTestSuiteStarted;27import net.thucydides.junit.listeners.JUnitStepListener

Full Screen

Full Screen

getTestClass

Using AI Code Generation

copy

Full Screen

1import net.thucydides.core.steps.StepEventBus;2import net.thucydides.junit.listeners.JUnitStepListener;3import org.junit.runner.Description;4import org.junit.runner.notification.RunListener;5public class CustomJUnitStepListener extends JUnitStepListener {6 public void testStarted(Description description) throws Exception {7 super.testStarted(description);8 String testClassName = description.getTestClass().getName();9 StepEventBus.getEventBus().usePrefix(testClassName);10 }11}

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 Serenity JUnit 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