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

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

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

Как мы используем наши JavaScript тесты


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

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

Пришло время выпустить на свободу зверя из клетки!


Зверь называется 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 и газ в пол!

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 24

    +3
    Выглядит невероятно круто, пошел пробовать.
      +1
      Да и подбор эпичной музыки тоже неплохой.
      –4
      Если это будет в будущем платным продуктом, то тогда этот пост – реклама.
      А продукт наверное хорош, жаль не вим)
        +4
        А почему для того, чтобы скачать библиотеку мне нужно оставлять свою почту?
          +4
          Мне бы хотелось иметь канал обратной связи с заинтересованными early adopters.
          +2
          Посмотрел видюшку… действительно круто, скачал и в ближайшее время попробую… единственное что смущает:

          Wallaby.js is a commercial product that is in the preview/beta phase at the moment. While in the preview phase, the tool is available for free. Pricing and licensing details will be announced closer to the version 1 release. Follow us to stay updated, we are also happy to answer your questions if you have any.
            +2
            Все честно написано — коммерческий проект, с пока что бесплатной бета-версией. Для развития нужны финансовые инвестиции, проект будет развиваться для тех кому он нужен, с финансовой помощью тех кому он нужен.
              +2
              image

              А если серьезно, мне очень понравилось, это прям то, что нужно! Очень жду поддержки RequireJS, а то у меня все тесты с использованием оного.
                +2
                image

                Артем, спасибо вам и за spy-js и за wallaby!
                  +1
                  Спасибо, рад что инструменты полезны.
                0
                А почему это смущает?
                  0
                  Поскольку это действительно хороший и нужный инструмент, то на него можно «подсесть» и тут есть два момента:

                  1. если проект направлен на получение прибыли, он может не выстрелить…
                  2. в дальнейшем продукт станет платным, а пока нет даже намека на его стоимость.
                    +1
                    Прибыль нужна на дальнейшее развитие, для реализации моих грандиозных планов и пользовательских запросов в разумно короткие сроки и с промышленным качеством.

                    Планируемую стоимость пока разглашать рано. Могу сказать, что озвучена она будет не в день начала продаж и закрытия беты, а заблаговременно, поэтому будет время спланировать бюджет, не спеша оценить стоит ли того инструмент, и так далее.

                    Мой совет, как заинтересованного владельца инструмента, конечно должен восприниматься с настороженностью. Но я бы посоветовал не смущаться и попользоваться, посмотреть насколько инструмент хорош или плох, оценить сколько времени он экономит. Когда придет время решать, покупать или не покупать, будет гораздо проще принять решение. Это лучше чем если совсем не пользоваться и потом ошибочно думать что это слишком дорого. Или купить, подумав что дешево, и разочароваться.
                      0
                      А так же на икру и рябчиков :-)

                      И ничего плохого в этом нет, удачи вам с вашим продуктом!

                      Как я понял запрос заинтересовавшихся хабровчан — им интересна примерная стоимость продукта в будущем и это достаточно логичный вопрос, но, полагаю, никаких заоблачных цен не предполагается, верно?
                        0
                        Спасибо.
                        Цена будет анонсирована позднее и будет вполне разумно соответствовать возможностям инструмента.
                +4
                Осталось только поддержку Sublime и пойду пробовать :)
                  0
                  Sublime в планах, но не слишком близких.
                  +1
                  Добрый день,

                  Выглядит неплохо. Насколько я понимаю это своего рода аналог NCrunch но для мира js. Основные достоинства данного решения это параллельный запуск тестов, интеграция с IDE и подсветка всякого рода разностей типа покрытия тестами и точек прохода. Я что-то упускаю?
                    +2
                    Да, все так. Кроме параллельного запуска тестов, большим достоинством на мой взгляд является запуск только тех тестов, которые затронуты изменениями в коде.
                    0
                    С оплатой все ясно и понятно. Но вот если, например, человек занимается Open-Source проектами, которые не подразумевают получение прибыли, то будет ли бесплатная версия для них?
                      0
                      Может не сразу, но не исключено что будет и такая версия, и может что-то специальное для студентов.
                      0
                      А как с другими языками? Такими как Ruby (on Rails), например?
                        0
                        Пока таких планов нет.
                          0
                          Жаль. Спасибо за ответы :) Отличный инструмент.

                      Only users with full accounts can post comments. Log in, please.