Разбираюсь с программным интерфейсом Gemini (https://ru.bem.info/tools/testing/gemini/api/). На базе тестов, написанных для запуска из консоли, всё работает — спасибо! Даже нет бага с записью "пустого" index.html на диск, который был из-за gulp-shell
.
Теперь я хочу сделать так, чтобы тесты физически не располагались на диске. Можно их создавать динамически в том же месте в коде, в котором я запускаю genimi.test()
?
Юзкейс мой такой: есть много однотипных проектов, которые я хотела бы тестировать. Им всем считай подходит один тест. Я хотела сделать проще для разработчиков этих проектов: предложить им gulp-плагин, внутри которого уже всё про Gemini зашито. Структура у проектов одинаковая, так что теоретически это возможно. И им не надо будет размещать непонятные для них файлы нигде.
Но мне не понятно, могу ли я сделать что-то вроде gemini.test(arrayOfSuits)
. И поскольку АПИ в разработке, я решила, что нелишне спросить.
/cc @arikon @SevInf
Ping
gemini.test(paths, ...)
иgemini.gather
принимают массив путей к файлам с тестами. Остается сделать нужный набор тестов для каждого проекта и прокидывать их туда. А хранить сами тесты удаленно можно разными способами.@pazone У меня другой вопрос. Я хочу передавать код теста непосредственно в программе, которая вызвает
gemini.test
. Нужно это, например, для того чтобы в тестах использовать переменные из этих программ. С отдельными файлами это невозможно.@arikon @SevInf Пожалуйста, ответьте, можете ли вы добавить такую возможность в беклог? Её отсутствие приносит много проблем. Мне приходится требовать от пользователей вместе с установкой npm-пакета плагина вручную устанавливать gemini, потому что его нужно реквайрить в коде теста. Причем приходится просить строгую зависимость, потому что иногда конфликтуют даже патчи. Если бы было возможно передавать объект теста в функцию (а не файл), это бы решило и эту и многие другие проблемы.
Прямо сейчас можно попробовать в своём скрипте реконструировать вот эту логику по созданию тестов: https://github.com/gemini-testing/gemini/blob/master/lib/test-reader.js#L53-L63
Но хотя да, дальше начинаешься треш и угар. Надо полностью воспроизводить раннер в своём скрипте.
Нам такое пока не требовалось, поэтому в ближайшее время мы скорее всего этим заниматься не сможем. Но если у тебя есть понимание, что именно нужно вытащить в публичное API (чтобы такое стало возможным), и ты сможешь прислать pull request — мы его обязательно рассмотрим не откладывая. Так же можем предварительно обсудить детали реализации, чтобы влить максимально быстро.
@varya Завёл issue про это всё https://github.com/gemini-testing/gemini/issues/266
Спасибо за ответ. Попробую повторить логику внутренностей, а там может и до пулреквеста дойдет.