bem-site / bem-forum-content-ru

Content BEM forum for Russian speak users
MIT License
56 stars 6 forks source link

Fail в тестировании #470

Open pavelpower opened 9 years ago

pavelpower commented 9 years ago

Было хотели прикрутить enb-bem-specs

В общем полная беда. Templates только на bemhtml, а мы пользуемся BH - ибо он по мнению команды понятнее.

Потом, как оказалось он тянет за собой блок jquery - которого у нас просто нет, а еще хочет i-bem.

i-bem

В общем очень странные желания для сборки тестов и не понятно почему ему нужен так jquery, и i-bem?

Итог выглядит печально:

Так может кто уже получил опыт заведения unit-тестирования без i-bem, jquery?

Видится это примерно так:

В блоках файлы *.spec.js

В которых написаны тесты в BDD стиле.

Сборка происходит в отдельную папочку, и для сборки используются только те слои переопределения кои используются для development мода.

pavelpower commented 9 years ago

Так там и bemhtml в зависимостях нет

pavelpower commented 9 years ago

А все таки он там есть, внутри либы enb-bemxjst

tavriaforever commented 9 years ago

@blond

blond commented 9 years ago

@pavelpower, привет!

Извини за долгий ответ.

На данный момент все действительно так.

Про возможность использовать кастомный шаблонизатор есть задача — https://github.com/enb-bem/enb-bem-specs/issues/11.

Я пробовал её решить с помощью введения специального понятия мета-технология, чтобы можно было самому настраивать чем и как собирать нужные файлы, в том числе и шаблонизатор в составе клиенского js — https://github.com/enb-bem/enb-bem-specs/pull/13. Но, кажется, такое решение оказалось сложным для использования.

Есть мысли, что можно сделать опцию, например, templateEngine: 'BH', которой просто указывать какой шаблонизатор использовать BEMHTML или BH. Такое решение устроит?

По поводу i-bem.js, кажется, что он тянется как раз из-за BEMHTML и если поддержать сборку с помощью BH то он приезжать не будет.

Блок jquery требуется в блоке speс: https://github.com/narqo/bem-pr/blob/master/spec.blocks/spec/spec.deps.js#L19. Раньше это было нужно для корректной работы mocha но, кажется, что это давно уже не так, и его можно безболезненно оторвать.

pavelpower commented 9 years ago

Салют, @blond! Спасибо за емкий ответ.

Решение по использованию шаблонизатора при помощи опции templateEngine на текущий момент выглядит хорошо.

И если есть возможность выпилить jquery - то это очень хорошо. Т.к. при формировании тестов для проверки на устройствах jquery печальный рудимент.

Вопрос в том, на сколько быстро можно внести эти изменения? И как можно помочь, сможешь ли скоорденировать действия поставив задачи?

Это я к чему - инструмент нужен и уже сейчас, и я готов выделить ресурсы на то, чтобы допилить его. Но, так же, не хочется терять время зря. Лучше делать все сразу по плану, который у тебя, судя по всему, уже есть.

blond commented 9 years ago

Вопрос в том, на сколько быстро можно внести эти изменения? И как можно помочь, сможешь ли скоорденировать действия поставив задачи?

Самый быстрый способ — присылать PR'ы :)

На все вопросы буду стараться быстро отвечать.

blond commented 9 years ago

Пока что завёл задачи: https://github.com/enb-bem/enb-bem-specs/issues/33 https://github.com/enb-bem/enb-bem-specs/issues/34

pavelpower commented 9 years ago

@blond Ты только скажи откуда берется <script class="spec-runner">(function() {var global = this;typeof modules === "object"? modules.require(["jquery", "mocha", "spec"], function($, mocha) { init($, mocha); }) : init(global.jQuery, global.mocha);function init($, mocha) { global.mochaPhantomJS? global.mochaPhantomJS.run(done) : mocha.run(done); function done() { $("#mocha").show() }}}());</script>

Понять не могу найти не ищется...

pavelpower commented 9 years ago

@blond все понял, придется еще и bem-pr править :(

pavelpower commented 9 years ago

Хотя там уже есть BH https://github.com/narqo/bem-pr/blob/master/spec.blocks/spec/spec.bh.js

Видимо нужно просто обновить версию

blond commented 9 years ago

@pavelpower всё так. Можно, конечно, ещё больше заморочится и попробовать отказаться от bem-pr.

Мне не нравится его использование с точки зрения API. Пользователь вынужден подключать bem-pr в уровни. Логичнее, чтобы необходимый код был в enb-bem-specs.

pavelpower commented 9 years ago

@narqo признайся, зачем ты туда BH добавил?

Не уж, то bem-spec свой уже с BH сделал?

pavelpower commented 9 years ago

@blond, да, ты прав bem-pr тут лишний однозначно. Лучше допишу блоки внутри enb-bem-specs

narqo commented 9 years ago

зачем ты туда BH добавил

Мне для какого-то своего проекта на bh нужно было написать тестов на блоки, чтобы удобнее было разрабатываться. Быстрее оказалось взять уровни из bem-pr, накидать сборку обычного бандла на enb и запускал тесты в браузере. Для разработки подошло, а никакого cli + ci там и не предполагалось. С тех в bem-pr есть bh-шаблоны.

pavelpower commented 9 years ago

@narqo Спасибо!

pavelpower commented 9 years ago

@blond ты посмотри что получается

https://github.com/pavelpower/enb-bem-specs/blob/master/lib/node-configurator.js

Я смотрю и стили исключительно через .styl используются. Но так повелось, что у нас в проекте прижился .less

И похоже, что нужно менять подход к данной либе, не очень все таки использовать настройки. Как-то плагинами надо, что-ли.

Может все таки немного изменим архитектуру?

kompolom commented 9 years ago

@pavelpower Наткнулся на те же грабли. Скажи сейчас в каком состоянии идея с поддержкой bh? \cc @blond

tadatuta commented 9 years ago

Скажи сейчас в каком состоянии идея с поддержкой bh?

enb-bh умеет собирать BH с мимикрией под BEMHTML, поэтому с точки зрения enb-bem-specs разницы вообще не будет.

kompolom commented 9 years ago

@tadatuta enb-bh умеет, но тут bemhtml подключается. Как ему можно bh скормить?

pavelpower commented 9 years ago

@komplomon ну как как решил, запилил свой enb-bem-specs с преферансом и поэтессами

https://github.com/pavelpower/enb-bem-specs

pavelpower commented 9 years ago

Теперь правда btmhtml не умеет а bh умеет

kompolom commented 9 years ago

@pavelpower Сейчас пробую запустить тесты bem-components c твоим форком enb-bem-specs. Тесты валятся ругаясь на неподключеный BEMTHML.

pavelpower commented 9 years ago

@kompolom я делал только под BH, т.к. времени не было на реализацию вместе BH и BEMHTML. У нас в проекте шаблоны только BH.

pavelpower commented 9 years ago

@kompolom вся магия в файле https://github.com/pavelpower/enb-bem-specs/blob/master/lib/node-configurator.js

в моем форке отличие два:

  1. используется less
  2. используется BH
kompolom commented 9 years ago

@pavelpower Все так, но в bem-components есть BH шаблоны. А less я обратно переключил на stylus

pavelpower commented 9 years ago

@kompolom тогда как решишь проблему с "Тесты валятся ругаясь на неподключеный BEMTHML." отпиши

kompolom commented 9 years ago

Добавлю, что теперь есть PR и есть форк, в котором можно выбрать шаблонизатор. Возможно не очень красиво, но работает.

pavelpower commented 9 years ago

@kompolom, по ходу забыл ты раскрыть как выбирать в конфигах технологию.

kompolom commented 9 years ago

@pavelpower там в examples есть пример https://github.com/kompolom/enb-bem-specs/blob/33%40add-template-engine-option/examples/silly/.enb/make.js