Pull to refresh
24
0
Дикарева Елена @elena_dikareva

Программист

Send message
Спасибо что упомянули TestCafe. Начиная с 0.17.0 версии в TestCafe появился режим `concurrency` для параллельного выполнения тестов.
Как было уже сказано выше, никто не отрицает заслуг уже используемого/допиленного софта, но TestCafe умеет многое из коробки.
Основными преимуществами TestCafe являются следующие возможности из коробки:

1. Простая установка и настройка тестового окружения (как уже было сказано в статье).
2. Простое тестовое API.
3. Автоожидание загрузки страницы и ресурсов. Специальный механизм ожидания успешного выполнения ассершенов.
4. HTTP Windows / HTTP Basic аутентификация.
5. Встроенные репорты.
6. ES6 Javascript синтаксис (на любителя).
7. Создание скриншотов, в том числе автоматически при падении теста.
8. Поддержка воспроизведения теста на ремоут девайсах. Можно просто и быстро запустить тест на удаленном устройстве (даже на реальном мобильнике), там где не установлен TestCafe.

Что касается преимуществ перед уже «ставшего стандартом Вебдрайвера» стоит заметить, что хотя веб драйверы разрабатываются производителями браузеров, проблемы совместимости по-прежнему появляются время от времени.

Данная статья была написана, чтобы познакомить с фреймворком TestCafe и освятить часть его возможностей. Выводы же все равно лучше сделать хотя бы после минимального практического использования. Возможно время потраченное на «попробовать и ознакомиться» у Вас в дальнейшем с лихвой окупится)
ожидал увидеть более подробный рассказ того, в чем заключается «совершенно иной принцип».

Статья ознакомительная и, отчасти, шутливая, поэтому в ней нет технических деталей. Если очень коротко, то принципиально новое в TestCafe — это использование URL-proxy ядра. Действия пользователя эмулируются с помощью DOM API, посредством скриптов, которые мы добавляем на каждую тестируемую страницу через proxy.
Самая неприятная проблема функциональных тестов — это их часто встречаемая нестабильность.
Например, тот же Protractor имеет механизм автоожидания загрузки страницы, но на этом все.
TestCafe под капотом еще имеет механизм ожидания успешного прохождения ассерешенов (который вообще невозможно реализовать для синхронных тестов).
Почитать поподробнее вот тут.
Вкратце, TesCafe ассерешны при проверке свойств элемента страницы имеют таймаут, в течение которого совершаются попытки успешно выполнить ассершен.
Сравните тест не на TestCafe c двумя wait-ами, которые потенциально внесут нестабильности в тест. И TestCafe тест, который в лишних wait-ах не нуждается.
По идее ведь можно обойтись без реального браузера.

Если «без реального браузера» имеется в виду облачный (например Sauce Labs) или headless (например Nightmare), то да — TestCafe поддерживает работу с ними. Информацию об этом в документации можно посмотреть тут.

Непонятно, можно ли тестировать верстку или запускать в нескольких браузерах.

Запуск в нескольких браузерах осуществляется по той же схеме, но указываются все выбранные браузеры для запуска
testcafe chrome,firefox get-a-cup-of-coffee.js

или, например, все установленные на машине
testcafe all get-a-cup-of-coffee.js

И, конечно же, TestCafe позволяется тестировать разметку.
Пример на Github специально для того, чтобы показать как просто организовать код с помощью Page Object (совсем не нужно костылять)
есть ли возможность тестирования в 2+ клиента одновременно (2 пользователя с разных логинов)

Пока такой возможности в TestCafe нет, но мы планируем ее добавить (issue на GitHub)

возможен ли параллельный запуск нескольких наборов тестов (suites)? Можно ли скормить пачку сьютов, получить параллельное выполнение (экономию времени) и получить общий отчет

Можно запустить параллельное выполнение различных наборов тестов (в TestCafe они называются fixtures), но в результате будут получены два не связанных отчета.

и комбо: параллельный запуск нескольких сьютов, а в каждом используется по 2 клиента

После добавления функциональности одновременного логина нескольких пользователей параллельный запуск таких тестов будет возможен.

можно ли отлаживать тесты через devtool? Пошагово в браузере

Для того, чтобы установить точку останова на клиенте (для devtool) сейчас необходимо воспользоваться ClientFunction, то есть написать код, который будет выполнен на клиенте:
const breakpoint = ClientFunction(() => {
    debugger;
});

await breakpoint();

В будущем мы планируем упростить процедуру отладки на клиенте и реализовать для этого специальную функцию (issue на GitHub).

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity