Помогите научиться писать тесты на qUnit + Karma

В общем я знаком с JavaScript на не очень глубоком уровне.
Сейчас мне надо написать тесты для одной JavaScript библиотеки. Надо это сделать с помощью стэка qUnit + Karma + Grunt.
Хотя вместо Grunt можно использовать Gulp.
Вызвано тем, что именно это уже используется сейчас на проекте.

Раньше я писал тесты с помощью TestNG для Java проектов. Теперь вот надо осваивать JavaScript.

Практическая цель, которую я себе поставил: я написал несложную страницу:
https://learn-karma.gitlab.io/
в которой есть JS

и в нём три функции, которые я хочу покрыть тестами:

  1. calculate – это просто JS. Тест написать легко, я это уже умею.
  2. calculateAndPrint – это уже JS, который взаимодействует с DOM. Я представляю, как написать тест на чистом qUnit, но не могу понять, как это сделать с Karma? Потому что Karma открывает свой браузер и свою страницу – как мне сделать, чтобы Karma работала с моей HTML страницей?
  3. calculateAndSend – это JS и AJAX request. Как написать тест, который проверит, что отправляется правильный request? Приходят правильные данные?

Ещё вопросы:

  • Я запускаю тесты с помощью “karma start”. И вначале приходится как-то настраивать зависимости через npm. Это мне не очень понятно. Нужно, чтобы мне пояснили как работают эти зависимости и как ими управлять через Grunt / Gulp. И как это дело можно прикрутить к какой-нибудь CI системе.

https://freelance.ru/projects/konsultaciya-nauchit-menya-ispolzovat-qunit-karma-910688.html
https://www.upwork.com/jobs/~0180d8389250d5b145

Не сильно помогу в освоении karmajs и тестировании реального проекта. Но хотел бы отметить, что этот код из примера гораздо проще покрыть юнит-тестами, что будет работать быстро и стабильно и без необходимости запускать браузер и веб-сервер, и даст 80-90% гарантии рабочего кода. И только затем можно накидать 1-2 e2e теста, с запуском браузера и кликом по кнопкам на selenium-framework’e н-р: codeceptJS, или нашем самописном glaceJS.