-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NpmScript - Test #2
Comments
@dhilt Забыл issues открыть однако. В общем, начал изучать вопрос с тестами через karma и все что нашел по части взаимодействия этой библиотеки с webpack'ом можно увидеть здесь - https://webpack.github.io/docs/usage-with-karma.html. Провел манипуляции как описано и все почти что работает (на данный момент karma ругается на браузеры по какой-то причине - но это есть и при тестах через grunt). И собственно есть вопрос, каким должен быть желаемый результат, что должно происходить после заветной команды |
@dhilt Еще капельку пошаманил и теперь вроде как точно все работает. Тест запускает браузер, самолично что-то проверяет, отписывается об этом в консоль и завершается.
Chrome-браузер не находит, его нужно в конфиге вписывать как 'Chromium' судя по всему. |
@dhilt Добавил своеобразную проверку на систему - ef1a67f. Теперь все работает и из-под Linux'а, и из-под Win10. |
@bitden Ты движешься в правильном направлении. Как осуществить полноценную замену работы тестов? Нужно увидеть, как это работает на Гранте в оригинальном репозитории и добиться точно того же результат на webpack в форке. Ты смотришь в Gruntfile и видишь регистрацию задачи test, которая дергается по npm-скрипту "test"
Этот процесс распадается на три составляющих: зачистка ./temp, default-сборка дистрибутива (то есть без минификации) и запуск Karma в default-mode. Рассмотрим третий шаг. Там же в Gruntfile в конфиге ищем карму и видим
Там два режима: default и compressed. Так вот default всего лишь запускает карму по конфигу './test/config/karma.conf.js' на 9100 порту. Режим compressed нужен для работы npm-скрипта build, это потом. Осталось сделать следующее.
Пока, вроде, все. Главное здесь – полностью повторить оригинальное поведение. Для этого я советую тебе держать два локальных репозитория – клон оригинального репо и твой форк – и постоянно сравнивать результат. В форке сразу переписывай npm-скрипты; они в конечном счете должны остаться теми же, меняется только начинка. И ты просто смотришь, как работает npm test на клоне оригинального репо и как работает npm test на форке. Не стоит пытаться держать две версии на одном только форке. Два репозитория, две консоли, один npm-скрипт. Я рад, что ты разобрался с Хромиумом под Линукс. Это позволит нам запускать тесты при деплое на Travis как на FF, так и на Chrome (сейчас только FF, как ты можешь судить по process.env.TRAVIS ? ['Firefox']), что будет очень полезно. Travis будем в последнюю очередь переводить. Но даже если вся эта затея с отказом от Grunt провалится (что уже невозможно, поскольку тесты почти вычленены), то по крайней мере мы сможем сделать от тебя фикс для Хромиума. |
@dhilt Так, ну теперь точно уловил разницу между default/compressed. И вернул обычное состояние на место - f622243. С вашим 5-ым пунктом я бы поспорил, так как после указания webpack'а в karma.conf.js сборки файлов в папку /temp не происходит. Можно просто удалить папку /temp, запустить npm-test без "webpack --config webpack.config.js", и увидеть ошибки по отсутствию файлов. И вопрос насчет удаления папки temp. Где оно должно происходить, в команде package.json или может можно это сделать усилиями node.js в файле karma.conf.js? (и да, то что в коммите я написал конечно же неразумно, ибо подходит для одной платформы) |
@bitden Я выкинул Webpack из Кармы и сделал другие изменения. Теперь npm test работает как надо за исключением затирания ./temp и сборки в стиле оригинального репозитория (п.2 из предыдущего комментария). Пока это некритично. Создай задачу для npm run build и воспроизведи процесс. Используй оригинальный конфиг Webpack. Разведи сборку на два режима. Давай назовем их 'development' и 'production'. Ранее в качестве 'production' выступал 'compressed'. Новые названия более семантически достоверны, будем придерживаться их. Еще будет третье окружение 'travis', об этом позднее. Так вот, npm run build должен выполнять сборку в 'production', а npm test в 'development'. |
@bitden В этой задаче решение через concurrently работает, но не идеально. Поскольку комамнды запускаются параллельно, Карма пытается захватить ./temp, когда Вебпак его удаляет и еще не наполнил. Да, Карма достаточно умен, чтобы не обломаться и потом предпринять еще одну попытку. Но лучше было бы найти такой подход, при котром:
Мне кажется, это невозможно. М лоя этого и нужны были все эти пляски с karma-webpack. Но все же я бы попробовал. Главный момент в текущей процедуре такой: при изменении в ./src, watch процесса dev-build форсирует перепаковку дистрибутива, в результате чего переписывается содержимое ./temp, в ответ на это watch процесса dev-test перезапускает тесты на обносленном дистрибутиве. |
@dhilt Вот что теперь показывает консоль при изменениях в *Spec.js:
Он ведь с этим ключом заново прогоняет тест? |
@dhilt Хм, кажется нашел маленькую идею, как заставить karma следить за .js-файлами в ./src:
|
@dhilt Ну, я думаю что-то вроде варианта получилось придумать, исходя из этой вышеописанной идеи - f5ceb4b. В общем, karma имея в конфиге preprocessors и webpack, перед тем как запустить тесты проводит сборку. И похоже в preprocessors надо бы писать те файлы, которые могут измениться в течение тестов. Из-за Очень коревянько, но вроде бы решение соответствует всем условиям. Сначала сборка, затем слежка за изменениями и пересборка с последующими тестами. Если в тестах вписать еще один it, он отобразится в консоли, а вот что касается изменений в ./src, я пока думаю как бы там что-нибудь непреднамеренно сломать. |
@dhilt И как сейчас вижу, решение не работает. |
@bitden Оставь эти попытки, я переиграл всю работу с development. Больше не будет папки ./temp, все происходит в памяти. Теперь npm test запускает только Карму и т.п.. Посмотри на код, если что-то непонятно, спроси. |
@dhilt К сожалению пока не могу посмотреть на результат, так как появилась странноватая ошибка:
Немного ранее она тоже как-то проявилась и исчезла без причины. Карма учитывает изменения в ./src и пересобирает проект, то есть если из ui-scroll-grid.js убрать или закомментить следующий участок кода
то посыпятся ошибки? Или же это вышло из обязанностей npm test? |
@dhilt Да, ошибки посыпались, значит все здорово и сборка проходит успешно. |
@bitden В таких случаях я рекомендую удалить package-lock.json и выполнить npm install. По следам этих приключений я опубликовал следующее сочинение: https://stackoverflow.com/a/47283941/3211932. Поставь +1! Если тебя нет на Stackoverflow, надо зарегистрироваться (через GitHub например). |
@dhilt Отличный совет, и правда помогло. Плюсик поставил конечно же, но ввиду репутации меньше 15 баллов меня пока не хотят учитывать похоже или что-то вроде того. |
@dhilt Сейчас заметил, что после |
@bitden Нет... это нехорошие новости и надо с этим разобраться. Хотя нет. Мы просто уберем npm run dev-build, он нам не нужен, будем пользоваться только test и start, а эти процессы будут работать исключительно в памяти. Интересно, а как набрать первые 15 очков? Задать вопрос, за который дадут три голоса (по +5 каждый) или дать ответ с положительной реакцией (по +10 за голос)... |
@dhilt Видимо, надо всячески активничать. Вот список с нужными действиями:
|
@bitden Я уточнил дела, связанные с jshint для тестов и нарисовал issue в jshint: jshint/jshint#3212. Сейчас мы имеем такую проблему: запустившись через |
No description provided.
The text was updated successfully, but these errors were encountered: