Сценарий 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) {
}
}