Skip to content

ivandashk/shri-testing-homework

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание: автотесты

Вам дано приложение на 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-команд
  • Полученные git-командой данные корректно обрабатываются

  • Так как логика генерации контента для страниц была жестко зашита в файлах папки controllers/ был выполнен рефакторинг и данная логика была вынесена в модуль utils/page-preparation.js, которую теперь удобно тестировать
  • В модуле git был выполнен рефакторинг с целью установки точки расширения, чтобы можно было установить mock на приватный метод executeGit(). Для этого все открытые методы были объединены в класс и сделаны статическими, чтобы для их вызова не пришлось создавать новый объект. Также было добавлено статическое свойство executeCommand, которое по умолчанию принимает значение executeGit, но может быть заменено на mock, что и является точкой расширения.
  • Для генерации отчета о покрытии проекта модульными тестами можно запустить команду
npm run test-coverage

Отчет будет доступен в папке /coverage

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 72.5%
  • HTML 22.3%
  • CSS 5.2%