Предупреждение о моментальном снимке DOM, когда утверждения, объявленные в объекте страницы, вызываются дважды внутри одного и того же теста в TestCafe

#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
)