Вам дано приложение на JavaScript и нужно написать для него автотесты: интеграционные тесты на интерфейс и модульные тесты на серверную часть.
Приложение отображает в браузере информацию из git репозитория: список коммитов, файловую систему для выбранного коммита, содержимое выбранного файла (поддерживаются только текстовые форматы). Для удобства навигации на каджой странице отображаются "хлебные крошки".
git clone git@github.com:dima117/shri-testing-homework.git
cd shri-testing-homework.git
npm i
npm start
Сценарии для интеграционных тестов
- на всех страницах (история коммитов, просмотр файловой системы, просмотр содержимого файла) правильно отображается их содержимое;
- правильно работают переходы по страницам
- из списка коммитов на список файлов
- из списка файлов во вложенную папку
- из списка файлов на страницу отдельного файла
- переходы по хлебным крошкам
- нужно добавить в README список логических блоков системы и их сценариев
- для каждого блока нужно написать модульные тесты
- если необходимо, выполните рефакторинг, чтобы реорганизовать логические блоки или добавить точки расширения
Требуется Java 8
npm i
npm i selenium-standalone --global
selenium-standalone install
Для всех тестов необходимо сначала запустить исходное приложение
npm start
Далее, в другом окне терминала
Для запуска требуются установленные chrome и firefox
npm run hub
И в другом окне терминала
npm run hermione
npm test
Пул-реквест содержит историю коммитов с атомарными изменениями и подробными описаниями.
- Реализованы для двух браузеров: chrome и firefox
- Находятся в папке test/integrational/
- Три модуля для тестирования: breadcrumbs - переходы по "хлебным крошкам", content - содержимое страницы, content-transitions - переходы по ссылкам в содержимом.
- Тестирование проводится на последнем видимом коммите в истории
- Тестирование скриншотами:
Корректно работает только на Linux и MacOS В начале следует определить эталонные скриншоты. Запускать команду
./node-modules/.bin/hermione gui ./test/integrational/content.hermione.js
Затем перейти на localhost:8000 и для всех тесткейсов со скриншотами нажать Accept.
После этого, запустить интеграционные тесты: npm run hermione.
- Логические блоки для тестирования: модуль по выполнению git-команд, модуль навигации и модуль по генерации контента для страниц.
Генерируется корректный url до:
- коммита
- папки в коммите
- файла в коммите
"Хлебные крошки" корректно отображаются:
- по умолчанию, страница "История коммитов"
- если указан hash, внутри коммита
- если указан hash + путь до файла/папки
Возвращаются корректные объекты для рендера
- Истории коммитов
- Файловой структуры коммита
- Текстового содержимого файла
В публичных функциях:
- Передаются корректные аргументы для выполнения git-команд
- Полученные git-командой данные корректно обрабатываются
- Так как логика генерации контента для страниц была жестко зашита в файлах папки controllers/ был выполнен рефакторинг и данная логика была вынесена в модуль utils/page-preparation.js, которую теперь удобно тестировать
- В модуле git был выполнен рефакторинг с целью установки точки расширения, чтобы можно было установить mock на приватный метод executeGit(). Для этого все открытые методы были объединены в класс и сделаны статическими, чтобы для их вызова не пришлось создавать новый объект. Также было добавлено статическое свойство executeCommand, которое по умолчанию принимает значение executeGit, но может быть заменено на mock, что и является точкой расширения.
- Для генерации отчета о покрытии проекта модульными тестами можно запустить команду
npm run test-coverage
Отчет будет доступен в папке /coverage