#testing #automated-tests #ui-automation #e2e-testing #testcafe
#тестирование #автоматизированные тесты #пользовательский интерфейс-автоматизация #e2e-тестирование #testcafe
Вопрос:
Я объявил функцию async в page object, в которой определено несколько утверждений для проверки наличия элементов на странице, и мне приходится вызывать эту функцию дважды в одном и том же тесте, но я получаю предупреждение — «Вы передали свойство DOM snapshot методу утверждения ‘t.expect()’«, даже если я не использую ключевое слово await в t.expect().
Пожалуйста, дайте мне знать, как я могу избавиться от этого предупреждения.
fixture('Assertions in Page Object test suite').beforeEach(async t => {
await t.useRole(login);
});
test('Validate UI for sample page, async t => {
await pageObject.validateTableUI(t);
await t.click(pageObject.changeTab);
await pageObject.validateTableUI(t);
});
Метод Page object является :
export default class SamplePage {
constructor() {
this.table = Selector('table');
this.tableHeaders = Selector('table thead th);
this.changeTab = Selector('tab);
}
async validateTableUI(t){
await t
.expect(this.table.visible)
.ok()
.expect(this.tableHeaders.visible)
.ok()
.expect(this.tableHeaders.nth(1).textContent)
.contains('Column 1')
.expect(this.tableHeaders.nth(2).textContent)
.contains('Column 1');
}
Комментарии:
1. Прежде всего, я бы подумал об архитектуре. Наличие утверждения в классах объектов страницы позже приведет к огромному беспорядку. Утверждения принадлежат тестам, а не классам POM. Просто подумайте о том, когда кто-то просматривает ваши тесты… они не могут видеть, что вы тестируете, им на самом деле нужно перейти в другой файл (где находится ваш класс POM) и посмотреть там.
2. У меня есть требование, поскольку аналогичная таблица отображается на нескольких вкладках, и если я пишу утверждения только в тестах, то это будет дублирование, поэтому я создал methid в классе объекта страницы.
Ответ №1:
К сожалению, официального способа отключить эти предупреждения нет. Мы знаем об этой ошибке. Вы можете отслеживать наш прогресс в этом потоке GitHub.
В качестве временного обходного пути вы можете переписать свои .expect
вызовы следующим образом:
.expect(
this.table.visible
)