То, что вы описали никак не относится к юнит-тестам. Это все интеграционное (функциональное) тестирование или просто недоработка как в случае с 0 шириной.
Юнит-тесты проверяют работу модуля. Написав тесты вы фиксирует контракт модуля по отношению к другим частям системы. Если в ходе рефакторинга или доработки этот контракт вдруг неожиданно поменяется. Тесты вам про это сразу скажут. Т.е. они не нужны чтобы проверять что работает прямо сейчас, они нужны чтобы убедиться что все работает как задумано потом.
У вас функция getValues() дергает значения для обоих слайдеров, соответственно когда создается больше 1, то другие еще не созданы. Переделайте, чтобы бралось для текущего слайдера
Я думаю имелось в виду, что подтягивать данные через AJAX для мобильной версии. Какой в этом практический смысл мне трудно сказать. Поисковики, имхо, давно игнорят все что в скрытых блоках. Какой смысл генерить разный контент для разных устройств и тем самым уменьшать релевантность страницы, мне тоже не понятно.
А зачем все это в 2016 году? Хром, ФФ и Опера это браузеры с отличной поддержкой стандартов. Для них ничего не нужно писать отдельно. Да даже для ИЕ не нужно уже давно.
Учи JavaScript. Сейчас он может работать не только в браузере, но и на сервере. Поэтому на одном языке сможешь написать и клиентскую и серверную часть. Для 10-20 товаров про базы вообще не заморачивайся. Подойдет любое хранилище.
Еще давным-давно в скриптах можно было делать document.write() в ходе исполнения скрипта и это дополняло бы текущий документ. Атрибут async, говорит что скрипт можно грузить и выполняться асинхронно и соотв такое поведение с нем не допустим.