Serenity Selenium
- Home
- Serenity Selenium
“Serenity with Selenium” refers to using the Serenity BDD framework together with Selenium WebDriver to create robust and maintainable automated UI tests, typically in Java.
What is Serenity?
Serenity BDD is a test automation library that helps you write cleaner, more maintainable acceptance and regression tests. It integrates with popular tools like:
Selenium WebDriver (for browser automation)
Cucumber or JUnit (for writing test scenarios)
RestAssured (for API testing)
Why Use Serenity with Selenium?
Layered architecture: Separates test steps, page objects, and test logic.
Test reports: Generates detailed and beautiful test reports out-of-the-box.
Reusability: Encourages reusability of code via step definitions and page objects.
Support for BDD: Works seamlessly with Cucumber for BDD-style tests.
Example Setup (Maven)
<dependencies>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay</artifactId>
<version>4.1.14</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.20.0</version>
</dependency>
</dependencies>
Example Test Flow
Page Object
@DefaultUrl("https://example.com")
public class ExamplePage extends PageObject {
@FindBy(id="login")
WebElementFacade loginButton;
public void clickLogin() {
loginButton.click();
}
}
Step Definition
public class UserSteps {
ExamplePage examplePage;
@Step("User clicks login")
public void userClicksLogin() {
examplePage.open();
examplePage.clickLogin();
}
}
Test Case (JUnit)
@RunWith(SerenityRunner.class)
public class LoginTest {
@Steps
UserSteps user;
@Test
public void should_be_able_to_login() {
user.userClicksLogin();
// Add assertions here
}
}