Автор оригинала: FreeCodeCamp Community Member.
Григори Бивер
Это казалось достаточно простым.
Просто настроил карму с Travisci Чтобы запустить тесты на Saucelabs Таким образом, я могу быть уверенным, мой код не нарушает Интернет, когда бабушка вытирает паутину и выстреливает Internet Explorer, чтобы просмотреть сайт, который использует мой код.
Сначала это казалось, что самая сложная задача будет настроить karma.conf.js. Мой проект, React-Selection-Hoc , представляет собой комментарий реагирования, который позволяет любому списку вещей, чтобы стать выбором, используя Компоненты высшего порядка Отказ Короче говоря, я хочу убедиться, что он работает на каждом браузере, он мог работать.
Проект написан в ES6 и JSX, поэтому для работы кармы мне нужно как-то упаковать код таким образом, чтобы Бабел мог преобразовать его в ES5. Это оказалось намного сложнее, чем я ожидал. В конце концов, я нашел решение в том, что React-Big-Calendar обрабатывает его, упаковка тестов с плагином Karma-WebPack. Это работало с локальным хромированным браузером. Сделанный!
Следующий шаг: настроить Saucelabs. Примечание: я считал, что использует Брасирбак , который oh-Soly Sexy и лучшая вещь когда-либо для ручного тестирования, но автоматические тесты имеют некоторые ограничения, которые означают, что тестовый набор работает около 10-15 минут медленнее, чем Saucelabs. Некоторые из них были ограниченный бесплатный счет, некоторые из них дизайн, но в конечном итоге Saucelabs работает лучше для моих потребностей. Если бы я был закрыт источником с мега-баксами, я бы, наверное, пошел бы с BooderSackack, но это ни здесь, ни там.
Настройка Saucelabs сложно. Не потому, что это сложно, но потому что документация разбросана во всей вселенной. Конфигуратор для Sucelabs устарел, но путем треугольника с помощью списка платформы можно создать массив браузеров, которые будут работать.
Кроме того, я хотел бы быть в состоянии быстро разрабатывать тест на местном уровне, используя функцию Autowatch Karma, вроде перезагрузки горячего модуля для тестирования. То, как я решил это изначально, было использование отдельной команды для локального тестирования, которая передает переменную среды в карму, которая заставляет его использовать только локальный браузер Chrome с Singlerun, установленным на false. Отключите постоянную переменную среды, и соединяется с SauCelab. Конечно, я должен помнить, чтобы начать Saucelabs Подключите туннель И вы не должны забывать об этом при запуске собственной настройки.
Короче говоря, вот первая рабочая установка, которую я использовал! Все казалось хорошо, пока …
Начинается чистилище
Часть моей цели с помощью модульных тестов для выбора RACT-SELECT состоит в том, чтобы убедиться, что в браузере тестируются и учитываются, чтобы любой вклад имел тестовую структуру для обеспечения того, чтобы они не нарушали кого-то установку. Код использует только пару специфичных для DOM-специфичных измерений, чтобы определить, является ли щелчок/нажатие или перетащивание мыши/пальца над выбираемым элементом или нет. Это должно быть просто проверить эти права?
Для проверки этих простых вещей во всех браузерах достопримечательно проверяйте правильность кода, это означает модификацию DOM, а затем запрашивать его. Из-за того, как работает карма, это означает, что фактическая среда тестирования модифицирована, которая заключается в том, где мы входим в чистилище в этой истории.
Сначала все казалось прохладным. Я нашел краевые случаи, которые не работали в IOS и Internet Explorer, исправили их и переехали на другие вещи. Затем я начал замечать тесты, не случайные, которые работали раньше.
Но худшая часть была, когда я пробежал тесты IE в изоляции, что означает только на Internet Explorer и Edge, все они прошли. Каждый. Один. время.
Итак, чтобы исправить это, я впервые попытался поместить коду манипуляции DOM в своих собственных блоках, с до/после кода для настройки манипулирования. Без улучшения. Затем я попробовал настроить CaseiFRames к false, что говорит карме запустить тесты в отдельном окне. Это отлично подходит для Internet Explorer, но сломала каждый мобильный браузер, и оставил меня в луже отчаяния.
Раствор, или нирвана появляется
Момент просвещения наконец пришел сегодня. На прихотите, я решил посмотреть, что произойдет, если бы я пройдет 2 последовательных пробега кармы с тем же идентификатором сборки для Saucelabs. Для моего восторга Sucelabs послушно сгруппировал все тесты вместе. Итак, я изменил все мои файлы конфигурации KAMA CARFICT, сделали решение на основе переменного на основе окружающей среды и завершились этим идеальным рабочим решением:
В моей упаковке.json все, что мне нужно, чтобы запустить все тесты:
"test": "karma start karma.noie.conf.js && karma start karma.ie.conf.js",
Я надеюсь, что это решает чужую загадку. Карма + Saucelabs – это фантастический способ проверить оба высокого уровня, так и очень низкоуровневых предположений о том, как браузеры работают, чтобы убедиться, что ваш трекер выпуска не будет заполняться раздражением, должны проверены – эти ошибки.
Счастливое тестирование!