Открытие разных URL в одном классе задач Serenity? - PullRequest
0 голосов
/ 26 июня 2018

В Serenity BDD у меня есть Task, который открывает страницу входа в приложение. Я хотел бы использовать этот класс, чтобы открыть не только страницу входа, но и другие страницы.

public class StartWith implements Task {

    LoginPage loginPage;

    @Override
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
                Open.browserOn(loginPage)
        );
    }

    public static Task theLoginPage() {
        return instrumented(StartWith.class);
    }

    // Is this possible???
    public static Task theContactPage() {
        return instrumented(StartWith.class);
    }
}

Можно ли добавить еще один статический метод, например theContactPage чтобы мой актер мог вызвать один из них:

  • StartWith.theLoginPage()
  • StartWith.theContactPage()

1 Ответ

0 голосов
/ 27 июля 2018

Вы можете использовать URL в качестве строкового параметра.

public class StartWith implements Task {
    private final String url;

    public StartWith(String url) {
        this.url = url;
    }

    @Override
    @Step("{0} start portal at \\{#url\\}")
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
                Open.url(url)
        );
    }

    public static Task theLoginPage() {
        String url = "http://example.com/login";
        return instrumented(StartWith.class, url);
    }

    public static Task theContactPage() {
        String url = "http://example.com/contact";
        return instrumented(StartWith.class);
    }
}
...