- PVSM.RU - https://www.pvsm.ru -
Пишущую машинку я расчехляю нечасто, но сегодня есть повод.
Тесты для JavaScript пишут многие, некоторые пишут много тестов. Есть несколько популярных тестовых фреймворков, таких как Jasmine, Mocha, QUnit, а также инструменты для автоматического запуска тестов. Некоторые из них даже интегрированы в некоторые редакторы кода. Например, Karma runner и Mocha прекрасно интегрированы моими коллегами в WebStorm. Словом, существуют разные способы запускать тесты автоматически и получать результаты в течении одной или нескольких секунд, впрочем время зависит от количества и характера тестов.
Как мы используем наши JavaScript тесты

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

Зверь называется wallaby, это такое сумчатое животное размером меньше кенгуру, обитающее на континенте, где уже много лет обитаю я (и кенгуру).
Итак, знакомьтесь: wallaby.js [2] — умный инструмент для автоматического запуска тестов, который я написал и выпустил всего неделю назад (конечно же, в день Австралии). Несмотря на недельный возраст, wallaby уже вызвал значительный интерес у сообщества JavaScript разработчиков и даже уже используется в production. В его основе всего три простых принципа.
Первое — постоянное тестовое покрытие. Говоря о покрытии я не имею ввиду скучные цифры и дотошные типы покрытия. При написании новой или редактировании некой существующей функции, мне все равно 81% или 92% составляет мое покрытие. Когда я пишу код, мне это просто не важно знать об этом каждую секунду. Все что я хочу видеть, это ненавязчивые и не сильно отвлекающие индикаторы прямо там, где я пишу код.
Второе. Если я редактирую какой-то тест или код, который как я знаю покрыт одним или даже несколькими тестами, то почему мой инструмент не может знать о этом и использовать это знание с умом? Все что мне нужно, это чтобы когда я вношу изменение в код, при этом выполнялось только то, что затронуто моим изменением — не больше и не меньше.
Третье. Если мое изменение кода требует запуска нескольких тестовых файлов и мои тестовые файлы независимы (а они должны быть независимы), я хочу чтобы полностью использовался потенциал моей системы и тесты выполнялись параллельно.
Эти три простых принципа, а также глубокая интеграция с редактором кода (на данный момент поддерживаются WebStorm, PhpStorm, IntelliJ IDEA Ultimate, PyCharm Professional, RubyMine, поддержка Visual Studio в процессе — скриншот на поддержка популярных тестовых фреймворков (Jasmine, Mocha, QUnit), показ сообщений об ошибках и console.log сообщений прямо там где они происходят, скриншоты выполнения тестов — это лишь часть того что умеет wallaby.js.
hey @VisualStudio [3] devs, first teaser on what's coming to you with http://t.co/93Ngi23tij [4] /cc @shanselman [5] @mkristensen [6] pic.twitter.com/IOaCdG0LSp [7]
— Artem Govorov (@ArtemGovorov) 29 января 2015 [8]
Теперь тесты можно использовать гораздо более эффективнее, возвращаясь к аналогии с гоночным автомобилем — устанавливаем бесплатную бета-версию wallaby и газ в пол!
Автор: Artem_Govorov
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/81358
Ссылки в тексте:
[1] мозга: http://www.braintools.ru
[2] wallaby.js: http://wallabyjs.com
[3] @VisualStudio: https://twitter.com/VisualStudio
[4] http://t.co/93Ngi23tij: http://t.co/93Ngi23tij
[5] @shanselman: https://twitter.com/shanselman
[6] @mkristensen: https://twitter.com/mkristensen
[7] pic.twitter.com/IOaCdG0LSp: http://t.co/IOaCdG0LSp
[8] 29 января 2015: https://twitter.com/ArtemGovorov/status/560929690701950976
[9] Источник: http://habrahabr.ru/post/249473/
Нажмите здесь для печати.