Перейти к содержимому

Двойственная природа Cypress: откуда на самом деле берутся «мигающие» тесты

Ivan Davidov и Sebastian Clavijo Suero

0:00 / 0:00

Двойственная природа Cypress: откуда на самом деле берутся «мигающие» тесты

149 просмотров · 9 дн. назад
Ivan Davidov и Sebastian Clavijo Suero
149 просмотров · 9 дн. назад
В интернете пишут, что Cypress нестабилен. Себастьян Клавихо утверждает, что так считают инженеры. Он независимый разработчик Cypress и автор семейства плагинов Wick, и его представление о нестабильности основано на концепции Двойной Вселенной: две временные линии, существующие в одном тесте. Код JavaScript выполняется сверху вниз быстро. Команды Cypress помещаются в очередь и выполняются в своем собственном темпе с повторными попытками. В тот момент, когда вы предполагаете, что очередь завершилась до вашей следующей строки JavaScript, ваша переменная остается нулевой, ваше утверждение выполняется слишком рано, и тест проваливается. Он демонстрирует точный тест на графике временной шкалы на экране и показывает плагин, который строит этот график для ваших собственных тестов. Часть 3 из 6 с Себастьяном — первая, где мы спорим. Сначала о жесткой позиции: cy.wait с фиксированным временем не имеет ни одного приемлемого применения. Ожидание в 15 секунд, которое дает результат за одну секунду, тратит 14 секунд. Умножьте это на две тысячи тестов, и вы получите набор тестов, занимающий два часа. Если вы не знаете, почему нужно ждать, вы не знаете, как работает ваше приложение. Он перестаёт читать запрос на слияние, как только его видит. Затем начинается спор об объектах страниц. Он написал, что ортодоксальный POM в Cypress — это багаж Selenium, и что утверждения должны быть в тесте. Весь мой фреймворк — это объекты страниц, поставляемые в виде фикстур. Затем селекторы: я сначала использую getByRole, он — data-cy, названный по значению, а не по тегу. Отправка — это отправка, даже если завтра она станет ссылкой. Мы заканчиваем на его правиле интернационализации: проверяйте ключи перевода, проверяйте значение, а не слова. Я надеваю шляпу скептика и спрашиваю, кто обнаруживает некорректный английский текст, когда ключ правильный. Его ответ — файл источника истины для каждого языка, версионированный как код. Мы не полностью пришли к согласию по поводу объектов страниц или селекторов, что и является сутью этой серии. ⏱ Временные метки: 0:00 — Нулевая терпимость к фиксированному ожиданию 0:47 — В интернете говорят, что Cypress нестабилен. Себастьян говорит, что инженеры 1:23 - Двойственная вселенная: временная шкала JavaScript и очередь команд Cypress 14:05 - cy.wait с фиксированным временем: нулевой допустимый вариант использования? 21:26 - Первый спор: является ли модель объектной страницы избыточной в Cypress? 27:42 - Второй спор: getByRole первым или data-cy первым? 42:29 - Краткий обзор и что будет дальше 📚 Статьи, которые мы обсуждаем: Асинхронная природа Cypress: не стоит вмешиваться в временные шкалы в тестах Cypress "Двойная вселенная": https://dev.to/sebastianclavijo/the-a... Самая злоупотребляемая команда Cypress: cy.wait(TIME): https://dev.to/sebastianclavijo/the-m... Но насколько допустима абстракция в Cypress? Использовать POM или нет: https://dev.to/sebastianclavijo/but-h... Ошибка интернационализации Cypress: тестирование слов вместо значения: https://dev.to/sebastianclavijo/the-c... cypress-flaky-test-audit (плагин, отображающий очередь команд): https://github.com/sclavijosuero/cypr... 🤝 Свяжитесь с Себастьяном: Портфолио: https://sclavijosuero.github.io/ GitHub: https://github.com/sclavijosuero Блог на dev.to: https://dev.to/sebastianclavijo wick-a11y (плагин доступности Cypress): https://github.com/sclavijosuero/wick... pw-api-plugin (тестирование API Playwright): https://github.com/sclavijosuero/pw-a... playwright-schema-validator (AJV + Zod): https://github.com/sclavijosuero/play... cypress-schema-validator (AJV + Zod): https://github.com/sclavijosuero/cypr... core-ajv-schema-validator (движок, лежащий в основе обоих): https://github.com/sclavijosuero/core... core-zod-schema-validator: https://github.com/sclavijosuero/core... wick-dom-observer (Cypress, ожидает завершения работы пользовательского интерфейса вместо фиксированных задержек): https://github.com/sclavijosuero/wick... WICK-AG-Lens (расширение Chrome, визуальный инспектор доступности): https://chromewebstore.google.com/det... LinkedIn:   / sebastianclavijosuero   npm: https://www.npmjs.com/~sclavijosuero YouTube:    / @sebastianclavijosuero   Подпишитесь на @ArchQA 🚀 Повысьте свой уровень драматурга 🎁 33 совета и хитрости для драматургов (БЕСПЛАТНЫЙ PDF): https://buy.polar.sh/polar_cl_gFSzSqz... ⚙️ Agentic Playwright (с открытым исходным кодом): https://github.com/idavidov13/agentic....