package features; import com.smartcodeltd.jenkinsci.plugins.build_monitor.questions.ProjectWidget; import com.smartcodeltd.jenkinsci.plugins.build_monitor.tasks.HaveABuildMonitorViewCreated; import environment.JenkinsSandbox; import hudson.plugins.claim.HaveAFailingClaimableProjectCreated; import hudson.plugins.claim.tasks.Claim; import net.serenitybdd.integration.jenkins.JenkinsInstance; import net.serenitybdd.integration.jenkins.environment.rules.InstallPlugins; import net.serenitybdd.integration.jenkins.environment.rules.RegisterUserAccount; import net.serenitybdd.junit.runners.SerenityRunner; import net.serenitybdd.screenplay.abilities.BrowseTheWeb; import net.serenitybdd.screenplay.jenkins.JenkinsUser; import net.serenitybdd.screenplay.jenkins.tasks.GoBack; import net.serenitybdd.screenplay.jenkins.tasks.LogIn; import net.serenitybdd.screenplayx.actions.Navigate; import net.thucydides.core.annotations.Managed; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.openqa.selenium.WebDriver; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.matchers.ProjectInformationMatchers.displaysProjectStatusAs; import static com.smartcodeltd.jenkinsci.plugins.build_monitor.model.ProjectStatus.Claimed; import static net.serenitybdd.screenplay.GivenWhenThen.*; import static org.hamcrest.core.Is.is; @RunWith(SerenityRunner.class) public class ShouldTellWhoIsFixingTheBrokenBuild { JenkinsUser ben = JenkinsUser.named("Ben"); @Managed public WebDriver hisBrowser; @Rule public JenkinsInstance jenkins = JenkinsSandbox.configure().afterStart( InstallPlugins.fromUpdateCenter("claim"), RegisterUserAccount.of(ben) ).create(); @Before public void actorCanBrowseTheWeb() { ben.can(BrowseTheWeb.with(hisBrowser)); } @Test public void claiming_a_broken_build() throws Exception { givenThat(ben).wasAbleTo( Navigate.to(jenkins.url()), LogIn.as(ben), HaveAFailingClaimableProjectCreated.called("Responsibly Developed") ); when(ben).attemptsTo( HaveABuildMonitorViewCreated.showingAllTheProjects(), Claim.lastBrokenBuildOf("Responsibly Developed").saying("My bad, fixing now"), GoBack.to("Build Monitor") ); then(ben).should(seeThat(ProjectWidget.of("Responsibly Developed").information(), displaysProjectStatusAs(Claimed))); then(ben).should(seeThat(ProjectWidget.of("Responsibly Developed").details(), is("Claimed by Ben: My bad, fixing now"))); } }