Serenity bdd skill
Skill Pyfagorass/bookofspells/skills/lambdatest/serenity-bdd-skill
📖 The Book of Spells: a curated, enchanted index of real LLM tooling — and a pipeline that gathers SKILL.md skills from many houses into one searchable shelf.
npx -y skills add Pyfagorass/bookofspells --skill serenity-bdd-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generates Serenity BDD tests in Java with Screenplay pattern, rich reporting, and Cucumber integration. Use when user mentions "Serenity", "Screenplay", "@Steps", "Serenity BDD". Triggers on: "Serenity BDD", "Screenplay pattern", "@Steps", "Serenity report".
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.1 KB, as published. Nobody here has run it
Serenity BDD Skill
Core Patterns
Step Library Pattern
import net.serenitybdd.annotations.Step;
import net.serenitybdd.core.pages.PageObject;
public class LoginSteps extends PageObject {
@Step("Navigate to login page")
public void navigateToLogin() {
openUrl(getDriver().getCurrentUrl() + "/login");
}
@Step("Enter email: {0}")
public void enterEmail(String email) {
find(By.id("email")).sendKeys(email);
}
@Step("Enter password")
public void enterPassword(String password) {
find(By.id("password")).sendKeys(password);
}
@Step("Click login button")
public void clickLogin() {
find(By.cssSelector("button[type='submit']")).click();
}
@Step("Should see the dashboard")
public void shouldSeeDashboard() {
assertThat(getDriver().getCurrentUrl()).contains("/dashboard");
assertThat(find(By.cssSelector(".welcome")).isDisplayed()).isTrue();
}
}
Test Class
import net.serenitybdd.junit5.SerenityJUnit5Extension;
import net.serenitybdd.annotations.Steps;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(SerenityJUnit5Extension.class)
public class LoginTest {
@Steps LoginSteps loginSteps;
@Test
void shouldLoginWithValidCredentials() {
loginSteps.navigateToLogin();
loginSteps.enterEmail("[email protected]");
loginSteps.enterPassword("password123");
loginSteps.clickLogin();
loginSteps.shouldSeeDashboard();
}
}
Screenplay Pattern
import net.serenitybdd.screenplay.*;
public class Login implements Performable {
private final String email, password;
public Login(String email, String password) {
this.email = email; this.password = password;
}
@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(
Enter.theValue(email).into(LoginPage.EMAIL_FIELD),
Enter.theValue(password).into(LoginPage.PASSWORD_FIELD),
Click.on(LoginPage.LOGIN_BUTTON)
);
}
public static Login withCredentials(String email, String password) {
return new Login(email, password);
}
}
// Usage
actor.attemptsTo(Login.withCredentials("[email protected]", "pass123"));
actor.should(seeThat(TheWebPage.currentUrl(), containsString("/dashboard")));
Reporting
# Run tests — generates rich HTML report
mvn verify
# Report at: target/site/serenity/index.html
Cloud Execution on TestMu AI
Add the serenity-lambdatest plugin dependency:
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-lambdatest</artifactId>
<version>${serenity.version}</version>
</dependency>
Configure serenity.conf:
webdriver {
driver = remote
remote.url = "https://"${LT_USERNAME}":"${LT_ACCESS_KEY}"@hub.lambdatest.com/wd/hub"
}
serenity {
take.screenshots = AFTER_EACH_STEP
}
lambdatest {
build = "Serenity Build"
}
# LT:Options capabilities
"LT:Options" {
platformName = "Windows 11"
browserVersion = "latest"
visual = true
video = true
console = true
network = true
}
Or configure via serenity.properties:
webdriver.driver=remote
webdriver.remote.url=https://hub.lambdatest.com/wd/hub
lt.user=${LT_USERNAME}
lt.key=${LT_ACCESS_KEY}
lt.platform=Windows 11
lt.browserName=chrome
Setup: Maven with serenity-core, serenity-junit5, serenity-screenplay-webdriver, serenity-lambdatest
Run: mvn verify (generates living documentation)
Deep Patterns
For advanced patterns, debugging guides, CI/CD integration, and best practices,
see reference/playbook.md.