package net.serenitybdd.screenplay.jenkins.tasks; import net.serenitybdd.screenplay.Actor; import net.serenitybdd.screenplay.Task; import net.serenitybdd.screenplay.actions.Click; import net.serenitybdd.screenplay.actions.Enter; import net.serenitybdd.screenplay.jenkins.actions.Choose; import net.serenitybdd.screenplay.jenkins.tasks.configuration.TodoList; import net.serenitybdd.screenplay.jenkins.user_interface.NewJobPage; import net.serenitybdd.screenplay.jenkins.user_interface.navigation.SidePanel; import net.serenitybdd.screenplay.targets.Target; import net.thucydides.core.annotations.Step; import static net.serenitybdd.screenplay.Tasks.instrumented; import static net.serenitybdd.screenplay.jenkins.user_interface.navigation.Buttons.Save; import static org.openqa.selenium.Keys.ENTER; class CreateAProject implements Task { public static CreateAProject called(String name) { return instrumented(CreateAProject.class, name); } public CreateAProject ofType(Target projectType) { this.projectType = projectType; return this; } public CreateAProject andConfigureItTo(Task configurationTask) { this.configureTheProject.add(configurationTask); return this; } @Override @Step("{0} creates a 'Freestyle Project' called '#name'") public <T extends Actor> void performAs(T actor) { actor.attemptsTo( Click.on(SidePanel.New_Item_Link), Choose.the(projectType), Enter.theValue(name).into(NewJobPage.Item_Name_Field).thenHit(ENTER), configureTheProject, Click.on(Save) ); } public CreateAProject(String jobName) { this.name = jobName; } private final String name; private final TodoList configureTheProject = TodoList.empty(); private Target projectType; }