Комментарии 12
А вы уверены что написание тестов на clojure будет быстрее чем на родном для разработчика языке? Если для перехода с php на java или js надо привыкнуть к синтаксису и учесть нюансы, то для того чтобы свободно писать на clojure, необходимо хорошенько так сдвинуть мозг.
Однако не отрицаю, что clojure'вский repl положенный на разные предметные области даёт очень резкий вау-эффект, и экономит кучу времени.

Я сейчас так влюблён в Clojure, что не способен объективно отвечать!

Да я и сам уже несколько недель втайне от своего основного ЯП, по вечерам встречаюсь с clojure. И как раз поэтому могу сказать что нельзя просто так взять и сразу написать что-то адекватное на cjojure, так же, как это можно было бы сделать с более привычными языками.
НЛО прилетело и опубликовало эту надпись здесь
Я на Ruby пользюусь selenium-webdriver + pry (это REPL). Тоже интерактивно, почему именно Clojure (его тоже сейчас изучаю, хорошо мозги вправляет =) ) удобнее, так пока и не ясно.
Согласен. В статье вместо демонстрации сильных сторон Clojure, идёт сравнение тёплого (Selenium WebDriver) с мягким (Selenium IDE). Ну а REPL'ом давно уже никого не удивить )))
Код теста в примере пока что выглядит как-будто его с Java 1-в-1 переписали, не говоря уж о том, что запуск браузера, логирование и подсчёт результатов — это не обязанность конкретного теста.
На мой вкус этот тест (без потери функционала) должен выглядеть примерно так:
(selenium-test gosuslugi-main-search-form "https://www.gosuslugi.ru/"
    (->> ($ ".index-slider-search input")
         (type-text "загранпаспорт")
         (->>keys Keys/ARROW_DOWN)
         (->>keys Keys/ARROW_DOWN)
         (->>keys Keys/ENTER))

    (is (there ($ ".title_search"))))
Спасибо за замечание к тесту. Сделал комит с соответствующим макросом. Касательно сравнения тёплого с мягким, нужно было найти баланс, между полезностью и доступностью для новичков, все таки clojure далеко не мэйнстримовый язык.
Спасибо, так лучше, но всё ещё осталось управление потоком выполнения через исключения.
А по поводу доступности для новичков я бы ещё Вам попенял за название "->>keys", которое для новичка выглядит как-будто вариант использования "->>", лучше было бы банальное «send-key» или «press-key»

В сравнении с чем clojure помогает ускорить написание тестов? Ответа на данный вопрос в статье так и не нашёл. (Половина статьи вообще о самом Selenium, что к тезису про clojure как я понимаю отношения не имеет.)
Императивный стиль, который мифически вбивается кому-то со школы — уже давно не 100 процентно императивный, в большинстве высокоуровневых языков. Много где есть уже функции первого порядка, динамическое программирование и т.д. Может быть когда-то лисп и отличался подобными фичами и действительно имел смысл. Сейчас — все эти фичи как я понимаю уже встроили в более развитые и распространённые языки.
Так зачем нужен clojure и чем он быстрее в написании например JavaScript, Python, Ruby или там Java/Groovy/Scala (все из которых могут похвастаться более привычным синтаксисом, большим обилием документации и инструментов, стабильностью (по сравнению с clojure))?
Пока что такое впечатление что вы изучаете clojure и вам просто интересно изучить что-то новое. Но зачем же вы говорите тогда что оно быстрее? Так и напишите что это всё "для прикола", а не для какой-то эффективности.

>Так зачем нужен clojure и чем он быстрее в написании например JavaScript, Python, Ruby или там Java/Groovy/Scala.
Быстрее в первую очередь — REPL'лом, на него и сделан акцент в статье, к сожалению в статье видимо не удалось ясно показать чем REPL Clojure удобнее остальных REPL присутствующих в других языках. Его преимущество кроется в мелких деталях завязанных на фичах языка — иммутабельность, функциональность, чистые функции и многое другое. Как эти тонкие моменты передать в статье, я не знаю, все это познается на опыте. Если вы сможете сделать подобное сравнение, пусть даже не в пользу clojure, буду рад почитать.

Просто REPL'ом сейчас никого уже не удивишь. Мощь Lisp в том, что это метаязык с неограниченными возможностями (ну или ограниченными возможностями виртуальной машины, как в случае с Clojure). За счёт этого можно более изящно выражать свои намерения в коде. Проблема в том, что при переходе с мейнстрим-языков приходится долго въезжать в тему. И поначалу код получается похож на то, что было в привычном ЯП, только со странным синтаксисом. Примеры такого кода обычно отталкивают читателей от идеи изучить Lisp :-)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.