Сценарий Serenity-JS Given When Then с фильтрацией столбца с раскрывающимся списком и текстовым полем

пример списка аккаунтов


некоторый контекст: у меня есть список учетных записей, как видно на картинке выше, у меня есть два раскрывающихся списка с 3 вариантами (есть, нет, содержит). Я хочу, чтобы объект Page для раскрывающегося списка и текстового поля был динамичным, поэтому при заданных шагах можно выбрать любой столбец с раскрывающимся списком и текстовым полем. Я пытаюсь, чтобы мой файл задач выполнял 4 действия: 1. найти раскрывающийся список (код в моем PO-файле) 2. выберите параметр в раскрывающемся списке (сделано в файле задач ниже) 3. найдите текстовое поле (код внутри PO-файла) 4. введите значение в текстовое поле (сделано в файле задачи ниже)

я делаю слишком много и что я делаю не так здесь

у меня есть .feature файл со следующим

Scenario: Filters Account Name with CONTAINS
    Given that Keith is on the tenant account list
    When he is filtering on account information
    And he filters Account Name so that it contains dyno
    Then the account list should contain dynoAccName4
    And the account list should not contain sadAccName3

и step definition со следующим

this.Given(/^.*that (.*) is on the tenant account list$/, name => {
        return stage.theActorCalled(name).attemptsTo(
            Start.toNavigateToAccountList()
        );
    });

    this.When(/^.*s?he is filtering on account information$/, () => {
            return stage.theActorInTheSpotlight().attemptsTo(
                Filter.filterOptionShow()
            );
        });

    this.When(/^s?he filters (?:her|his)?(.*) so that it ?(.*)?(.*) ?(.*)$/,
        (columnName: string, filters: string, filterText: string) => {
            filterOperator = filters;
            return stage.theActorInTheSpotlight().attemptsTo(
                Filter.the(columnName).soThatIt(filters, filterText)
        );
    });

    this.Then(/^.* account list should contain (.*?)$/, (accountNum: string) => {
            return expect(stage.theActorInTheSpotlight().toSee(AccountListItems.displayingAll))
                .eventually.include(accountNum);
    });

    this.Then(/^.* account list should not contain (.*?)$/, (accountNum: string) => {
        return expect(stage.theActorInTheSpotlight().toSee(AccountListItems.displayingAll))
            .to.not.include(accountNum);
    });

мой task файл содержит этот код

export class Filter implements Task {

    static filterOptionShow() {
        Click.on(AccountListUI.accountListShowFilter);
    }

    static the(columnName: string) {
        this.columnName = columnName; // @todo need to sanitize account detail to match HTML identifier
        return new Filter();
    }

    soThatIt(filter: string, text: string) {
       this.filter = filter;
       this.text = text;
    }

    @step('{0} filters the list to show #taskType items')
    performAs(actor: PerformsTasks): PromiseLike<void> {
        return actor.attemptsTo(
            Click.on(AccountListUI.filter.dropDown(this.columnName)),
            Select.theValue(this.filter),
            Enter.theValue(this.text)
                .into(AccountListUI.filter.textBox(this.textBox))
        );
    }

    constructor(private columnName: string, private filter: string, private text: string, private textBox: string) {
    }
}

0 ответов

Другие вопросы по тегам