Run Serenity JUnit automation tests on LambdaTest cloud grid
Perform automation testing on 3000+ real desktop and mobile devices online.
package net.serenitybdd.junit5.extension;
import com.google.inject.Key;
import net.serenitybdd.core.injectors.EnvironmentDependencyInjector;
import net.serenitybdd.junit5.counter.TestCounter;
import net.serenitybdd.junit5.guice.JUnitInjectors;
import net.thucydides.core.steps.BaseStepListener;
import net.thucydides.core.steps.Listeners;
import net.thucydides.core.steps.StepEventBus;
import net.thucydides.core.steps.StepListener;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
import static net.serenitybdd.core.environment.ConfiguredEnvironment.getConfiguration;
import static net.thucydides.core.steps.StepEventBus.getEventBus;
// Junit4: net.serenitybdd.junit.runners.SerenityRunner.initStepEventBus
// Junit4: net.serenitybdd.junit.runners.SerenityRunner.initListeners
// (no separate net.serenitybdd.junit.runners.SerenityRunner.initListenersUsing as pages will be configured via net.serenitybdd.junit.extension.page.SerenityPageExtension)
public class SerenityExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback {
@Override
public void beforeAll(final ExtensionContext extensionContext) {
getEventBus().clear();
registerListenersOnEventBus(
createBaseStepListener(),
Listeners.getLoggingListener(),
testCountListener());
}
@Override
public void beforeEach(final ExtensionContext extensionContext) {
injectEnvironmentVariablesInto(extensionContext.getRequiredTestInstance());
}
@Override
// JUnit4: net.serenitybdd.junit.runners.SerenityRunner.run
public void afterAll(final ExtensionContext extensionContext) {
StepEventBus.getEventBus().dropAllListeners();
}
private BaseStepListener createBaseStepListener() {
return Listeners.getBaseStepListener().withOutputDirectory(getConfiguration().getOutputDirectory());
}
private void registerListenersOnEventBus(final StepListener... stepListeners) {
for (StepListener currentStepListener : stepListeners) {
getEventBus().registerListener(currentStepListener);
}
}
private StepListener testCountListener() {
return JUnitInjectors.getInjector().getInstance(Key.get(StepListener.class, TestCounter.class));
}
private void injectEnvironmentVariablesInto(final Object testCase) {
new EnvironmentDependencyInjector().injectDependenciesInto(testCase);
}
}
package org.fasttrackit.Util;
import net.serenitybdd.junit.runners.SerenityParameterizedRunner;
import net.serenitybdd.junit.runners.SerenityRunner;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.webdriver.WebDriverFacade;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
@RunWith(SerenityRunner.class)
public class BaseTest {
@Managed(uniqueSession = false)
private WebDriver webDriver;
@Before
public void setup(){
webDriver.manage().window().maximize();
}
}
package com.dinosaurs.features.search;
import com.dinosaurs.steps.serenity.EndUserSteps;
import net.serenitybdd.junit.runners.SerenityParameterizedRunner;
import net.serenitybdd.junit.runners.SerenityRunner;
import net.thucydides.core.annotations.Managed;
import net.thucydides.core.annotations.Steps;
import net.thucydides.junit.annotations.UseTestDataFrom;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.assertTrue;
//@RunWith(SerenityParameterizedRunner.class)
@RunWith(SerenityRunner.class)
@UseTestDataFrom("src/test/resources/login_good_data.csv")
public class TestLoginGood {
@Managed(uniqueSession = true)
public WebDriver webdriver;
private String word, description;
@Steps
public EndUserSteps anna;
@Test
public void login_good_data() throws InterruptedException {
// webdriver.get("https://www.scs.ubbcluj.ro/webmail/");
// webdriver.findElement(By.id("rcmloginuser")).sendKeys(word);
// webdriver.findElement(By.id("rcmloginpwd")).sendKeys(description);
// webdriver.findElement(By.id("rcmloginsubmit")).click();
anna.is_the_home_page();
// anna.login_action(word, description);
anna.login_action("cgir2476","ebb54#24d5");
Thread.sleep(2000);
// assertTrue(webdriver.findElement(By.id("rcmbtn103")).isDisplayed());
anna.assertLoginSuccess();
}
}
<!--SERENITY DEPENDENCIES-->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>1.2.5-rc.6</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>1.2.5-rc.6</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber</artifactId>
<version>1.1.29</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<!--SERENITY DEPENDENCIES-->
<properties>
<cucumber.version>1.2.5</cucumber.version>
<serenity.version>1.2.5-rc.6</serenity.version>
<serenity.cucumber.version>1.1.29</serenity.cucumber.version>
<java.version>8</java.version>
</properties>
<plugin>
<groupId>net.serenity-bdd.maven.plugins</groupId>
<artifactId>serenity-maven-plugin</artifactId>
<version>1.1.29</version>
<executions>
<execution>
<id>serenity-reports</id>
<phase>post-integration-test</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
[main] INFO net.serenitybdd.core.Serenity -
__ _____ _____ ____ _____ ____ _ ____ ____ _____ ____
_ \ \ |_ _| ____/ ___|_ _| | _ \ / \ / ___|/ ___|| ____| _ \
(_)_____| | | | | _| \___ \ | | | |_) / _ \ \___ \\___ \| _| | | | |
_|_____| | | | | |___ ___) || | | __/ ___ \ ___) |___) | |___| |_| |
(_) | | |_| |_____|____/ |_| |_| /_/ \_\____/|____/|_____|____/
/_/
<!--SERENITY DEPENDENCIES-->
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>1.2.5-rc.6</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>1.2.5-rc.6</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber</artifactId>
<version>1.1.29</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
</dependency>
<!--SERENITY DEPENDENCIES-->
<properties>
<cucumber.version>1.2.5</cucumber.version>
<serenity.version>1.2.5-rc.6</serenity.version>
<serenity.cucumber.version>1.1.29</serenity.cucumber.version>
<java.version>8</java.version>
</properties>
<plugin>
<groupId>net.serenity-bdd.maven.plugins</groupId>
<artifactId>serenity-maven-plugin</artifactId>
<version>1.1.29</version>
<executions>
<execution>
<id>serenity-reports</id>
<phase>post-integration-test</phase>
<goals>
<goal>aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
[main] INFO net.serenitybdd.core.Serenity -
__ _____ _____ ____ _____ ____ _ ____ ____ _____ ____
_ \ \ |_ _| ____/ ___|_ _| | _ \ / \ / ___|/ ___|| ____| _ \
(_)_____| | | | | _| \___ \ | | | |_) / _ \ \___ \\___ \| _| | | | |
_|_____| | | | | |___ ___) || | | __/ ___ \ ___) |___) | |___| |_| |
(_) | | |_| |_____|____/ |_| |_| /_/ \_\____/|____/|_____|____/
/_/
Accelerate Your Automation Test Cycles With LambdaTest
Leverage LambdaTest’s cloud-based platform to execute your automation tests in parallel and trim down your test execution time significantly. Your first 100 automation testing minutes are on us.