关于 serenity-bdd-skill
serenity-bdd-skill 是用于编写 Java Serenity BDD 测试的参考技能,涵盖步骤库、Screenplay、JUnit 5、报告和云端执行配置。
主要功能
- 01步骤库与 JUnit 5 模式
- 02Screenplay 测试设计
- 03HTML 测试报告
- 04LambdaTest 远程执行配置
- 05进阶测试指南
适用场景
- 01组织 Java UI 测试步骤
- 02使用 Screenplay 编写测试
- 03生成活文档
- 04配置远程浏览器执行
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill serenity-bdd-skill安装后在 Claude Code 中输入/serenity-bdd-skill确认已加载。
附带文件reference/advanced-patterns.mdreference/playbook.md
详细介绍
Serenity BDD 技能
核心模式
步骤库模式
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();
}
}
测试类
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 模式
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")));
报告
# Run tests — generates rich HTML report
mvn verify
# Report at: target/site/serenity/index.html
在 TestMu AI 上进行云端执行
添加 serenity-lambdatest 插件依赖项:
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-lambdatest</artifactId>
<version>${serenity.version}</version>
</dependency>
配置 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
}
或者通过 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
设置:使用 serenity-core、serenity-junit5、serenity-screenplay-webdriver、serenity-lambdatest 的 Maven
运行:mvn verify(生成生动的文档)
深入模式
如需了解高级模式、调试指南、CI/CD 集成和最佳实践,
请参阅 reference/playbook.md。
评论
支持 Markdown