Привет!
Продолжаю пытаться начать работать с Gemini, есть несколько вопросов. Я прочла https://ru.bem.info/forum/396/ но там вроде моих вопросов нет. Так что вот.
- Я хочу сравнивать интерфейс на моём localhost с продакшеном. Какова последовательность действий?
- Если запускать
./node_modules/gemini/bin/gemini test --reporter html tests/gemini-test.js
, то ничего не происходит. Это от того что все тесты проходят? (Опция--flat
показывает их пройденными). Как посмотреть html-отчет даже в случае пройденных тестов? - Тот же тест через
gemini-ui
даёт такую картину: https://img-fotki.yandex.ru/get/34/14441195.34/0_92c3d_f85a7e6e_orig Мне не понятен этот интерфейс. Что с чем сравнивается? Я ожидала увидеть 2 скриншота для каждого браузера: эталонный и снятый сейчас. На кнопки я нажимала, меняется только фон. Вgemini-report
я просмотрела, что есть файлыchrome~ref.png
, но в визуальном интерфейсе не понятно, где что. - После того как я сняла идеальные скриншоты с продакшена, я хочу сравнить их с "испорченной" локальной копией. В конфиге я указала локальный сайт: https://github.com/varya/varya.github.com/blob/features/gemini/.gemini.yml И изменила фон у блока, теперь он выглядит вот так https://img-fotki.yandex.ru/get/4423/14441195.34/0_92c3e_54e46af6_orig То есть разница должна быть. Однако мой тест всё равно проходит.
Что я делаю не так?
Если что, вот ветка с моим сайтом: https://github.com/varya/varya.github.com/tree/features/gemini Чтобы запустить сайт, надо сделать
docpad run
. UPD: проблема в том, что после каждого изменения надо перезапускать PhantomJS - Как попроще указать большой список страниц для тестирования, если на них не предполагается делать никаких действий?
- Можно ли писать исполняемый JavaScript в файлах тестов? Например, чтобы сформировать похожие тесты динамически.
- Как в конфиге указать, что нужно протестировать в нескольких
windowSize
? - Зачем отдельно запускать phantomjs? Вот этот инструмент https://github.com/BBC-News/wraith не требует такого. Нельзя сделать так же?
- Если в Gemini нельзя сделать так чтобы не запускать PhantomJS в соседнем окне, то как это могу сделать я? Например, в своих gulp тасках. где я вызываю Gemini. В идеале я хочу, чтобы мои разработчики запускали в одном окне что-то вроде
gulp gemini-test
, и всё работало. Могу оформить в пакет :-)
Спасибо!
UPD:
-4. Тесты стали не проходить после перезапуска PhantomJS. Это нормально?
-10. Если в консоли прервать процесс
gemini-gui
, то страничкаhttp://localhost:8000/
никак об этом не знает и продолжает выглядеть рабочей. Используйте socket.io для обозначения разрыва соединения./cc @arikon @sevinf
Про фантом не понял проблемы
--reporter
. Вопрос в том, что при--reporter html
ничего не происходит. Выполнение команды заканчивается. Дальше что делать? Куда смотреть?gemini работает через webdriver API, а не как-то напрямую с фантомом. Он даже не знает фантом это или что-то еще. Поэтому запуск фантома вне скоупа gemini.
Конфиг можно указать в аргументах gemini. Переопределить урл конфига тоже можно через аргументы.
Отчет не открывается. Лежит по дефолту в gemini-report.
Самой простой оберткой может быть баш скрипт, который запускает фантом, потом джемини.
Адрес отчета при
--reporter html
можно выводить в консоль. Нравится вам такая идея? Сделаете?Если всё таки нет, то может быть вот сюда https://ru.bem.info/tools/testing/gemini/ написать, где смотреть отчеты?
Как решать проблему что при каждом изменении интерфейса надо перезапускать PhantomJS? Например, как вы её решаете при использовании инструмента?
Надо @SevInf спросить. Вообще это описано тут https://github.com/gemini-testing/gemini/blob/master/doc/commands.md
Мы не пользуемся фантомом. У нас все работает в selenium grid. Там поднимаются разные настоящие браузеры.
@arikon @sevinf Ответьте пожалуйста на мои вопросы (будет эффективно, если на изначальные, не учитывая переписку).
Как-то так:
flat
иhtml
и получить оба отчета одновременно). Сам репорт сохраняется в папкуgemini-report
, даже если все тесты прошли. Если его там нет, то это баг — скинь минимальный пример, на котором это можно повторить.Какой-нибудь такой код должен помочь:
В текущей стабильной windowSize один на всех и помогут разве что разные конфиги. В
0.13-alpha
можно так:Но 0.13 еще в процессе разработки и на новый формат конфига еще нет документации.
@SevInf,
Спасибо за ответы, многое прояснилось :-) Есть ещё дополнительные вопросы.
--report html
. Даже если тесты не проходят, в консоль ничего не сообщается (сам отчет формируется, с этим проблем нет). Может быть сделать вывод в консоль "Смотрите отчет в ./gemini-report/index.html"? Также, вот тут https://ru.bem.info/tools/testing/gemini/#Использование-cli впервые упоминается--report html
. Но не говорится о том, где смотреть отчеты. Несмотря на то, что об этом написано в более подробной документации, советую указать и тут тоже. Из тех соображений, чтобы смотря на эту страницу, человек мог совершить законченное действие — запустить тесты и посмотреть их.@varya @SevInf Не могли бы вы вместо номеров вопросов / реплик при ответах использовать цитирование вопроса? Непонятно, на какой вопрос или какую предыдущую реплику дан ответ. Это очень мешает присоединиться к дискуссии.
@varya
https://github.com/gemini-testing/gemini/issues/188
@SevInf Что думаешь?
https://github.com/gemini-testing/gemini-gui/issues/15
@varya С радостью примем pr про созданные issue =)
Я не уверен, что 3 одинаковых картинки не будут сильнее с толку сбивать. Имхо, лучше как-то более явно в интерфейсе показать, что разницы нет, тест прошел.