Wallaby.js — маленький зверь с большим будущим

в 9:37, , рубрики: continuous testing, jasmine, javascript, javascript test, mocha, qunit, Веб-разработка, Тестирование IT-систем

Пишущую машинку я расчехляю нечасто, но сегодня есть повод.

Тесты для JavaScript пишут многие, некоторые пишут много тестов. Есть несколько популярных тестовых фреймворков, таких как Jasmine, Mocha, QUnit, а также инструменты для автоматического запуска тестов. Некоторые из них даже интегрированы в некоторые редакторы кода. Например, Karma runner и Mocha прекрасно интегрированы моими коллегами в WebStorm. Словом, существуют разные способы запускать тесты автоматически и получать результаты в течении одной или нескольких секунд, впрочем время зависит от количества и характера тестов.

Как мы используем наши JavaScript тесты
Wallaby.js — маленький зверь с большим будущим - 1

И все бы хорошо, но вот средний размер объема JavaScript кода в проектах растет. Кода становится все больше, тестов становится все больше, выполнение занимает все дольше. И вот наступает момент, а он рано или поздно обязательно наступает, когда запускать сотни и тысячи тестов при редактировании кода нам становится несколько дискомфортно. Нет, у нас конечно настроен CI build, где все тесты прогоняются, мы иногда смотрим сгенерированные отчеты по тестовому покрытию, используем облачные или домашние решения для запуска тестов в разных браузерах и прочих интернет эксплоерах. Но все это не особо помогает там, где мы тратим лучшие годы своей жизни — в написании основной массы JavaScript кода.

Каждый хороший тест приносит пользу, и даже не очень хорошие тесты в JavaScript выполняют как минимум роль компилятора, ибо будут ругаться на все недоступные статическому анализу косяки на пути своего выполнения. Беда в том, что подобно тому, что человек далеко не полностью использует возможности своего мозга, так же неэффективно мы используем огромный потенциал наших тестов. Они могли бы не пылиться на build сервере, а выполняться при каждом нажатии клавиши, тут же предоставлять полезную информацию, мгновенно подсвечивать проблемы в коде, который мы пишем в данный конкретный момент. Иначе получается что у нас есть спортивный автомобиль, который мы заводим раз в день чтобы отвезти ребенка в школу.

Пришло время выпустить на свободу зверя из клетки!
Wallaby.js — маленький зверь с большим будущим - 2

Зверь называется wallaby, это такое сумчатое животное размером меньше кенгуру, обитающее на континенте, где уже много лет обитаю я (и кенгуру).

Итак, знакомьтесь: wallaby.js — умный инструмент для автоматического запуска тестов, который я написал и выпустил всего неделю назад (конечно же, в день Австралии). Несмотря на недельный возраст, wallaby уже вызвал значительный интерес у сообщества JavaScript разработчиков и даже уже используется в production. В его основе всего три простых принципа.

Первое — постоянное тестовое покрытие. Говоря о покрытии я не имею ввиду скучные цифры и дотошные типы покрытия. При написании новой или редактировании некой существующей функции, мне все равно 81% или 92% составляет мое покрытие. Когда я пишу код, мне это просто не важно знать об этом каждую секунду. Все что я хочу видеть, это ненавязчивые и не сильно отвлекающие индикаторы прямо там, где я пишу код.

Второе. Если я редактирую какой-то тест или код, который как я знаю покрыт одним или даже несколькими тестами, то почему мой инструмент не может знать о этом и использовать это знание с умом? Все что мне нужно, это чтобы когда я вношу изменение в код, при этом выполнялось только то, что затронуто моим изменением — не больше и не меньше.

Третье. Если мое изменение кода требует запуска нескольких тестовых файлов и мои тестовые файлы независимы (а они должны быть независимы), я хочу чтобы полностью использовался потенциал моей системы и тесты выполнялись параллельно.

Эти три простых принципа, а также глубокая интеграция с редактором кода (на данный момент поддерживаются WebStorm, PhpStorm, IntelliJ IDEA Ultimate, PyCharm Professional, RubyMine, поддержка Visual Studio в процессе — скриншот на поддержка популярных тестовых фреймворков (Jasmine, Mocha, QUnit), показ сообщений об ошибках и console.log сообщений прямо там где они происходят, скриншоты выполнения тестов — это лишь часть того что умеет wallaby.js.

Теперь тесты можно использовать гораздо более эффективнее, возвращаясь к аналогии с гоночным автомобилем — устанавливаем бесплатную бета-версию wallaby и газ в пол!

Автор: Artem_Govorov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js