Кипарису приходится ждать, пока набранный текст распространится в коде - PullRequest
1 голос
/ 12 января 2020
When('I type {string} in the field', (surname: string) => {
  cy.alias(aliases.surname).type(surname).wait(200);
});

And('I click the Search button', () => {
  cy.server();
  cy.route({ method: 'POST', url: `**search**` }).as('search');
  el('search-button').click();
});

Then('I see that the results match the filter', () => {
  cy.wait('@search').should('have.property', 'status', 200);
  el('data-grid-table').ngSnapshot({ name: 'surname-filter' });
});

Зачем мне нужно wait(200) при наборе текста? 200 мс поражают.

Без этой паузы отправка формы с помощью кнопки поиска приводит к тому, что значение Фамилия не принимается кодом и, следовательно, не публикуется с запросом API.

Это произвольное, глючное и хрупкое ожидание, которое, как я понял, мы оставили с селеном ...

1 Ответ

2 голосов
/ 12 января 2020

Когда Cypress говорит о сокращении нестабильных тестов, они ссылаются на механизм автоматического повтора в командах - но некоторые команды по своей природе не могут быть повторены. Я бы сказал, что одним из них является перехват маршрута.

Это не объясняет необходимости задержки, но предполагает, что за кулисами происходит много инициализации сервера и добавления прослушивателя к маршруту.

Мне также интересно, поднимает ли Cypress этот код в начало очереди выполнения и перезапускает (просто предположение).

Я бы предложил поместить этот код в before(), что что показывают многие примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...