Вам дано приложение на JavaScript и нужно написать для него автотесты: интеграционные тесты на интерфейс и модульные тесты на серверную часть.
Приложение отображает в браузере информацию из git репозитория: список коммитов, файловую систему для выбранного коммита, содержимое выбранного файла (поддерживаются только текстовые форматы). Для удобства навигации на каджой странице отображаются "хлебные крошки".
Перед запуском, не забудьте заклонить тестовый репозиторий для интеграционных тестов.
git clone [email protected]:teleginzhenya/shri-testing-homework.git
git clone [email protected]:teleginzhenya/teleginzhenya.github.io.git
cd shri-testing-homework
npm i
npm start
npm i
npm run test
npm i
npm run selenium-start
npm run start-hermione
npm run test-hermione
# or npm run test-hermione-concurrently
Отчеты лежат в hermione-reports/index.html
.
Для интеграциионных тестов темплейты hbs добавил class
, чтобы выбирать через селектор в тесте. Эти темплейты подставляются только при env=test_hermione
.
Сценарии для интеграционных тестов
- на всех страницах (история коммитов, просмотр файловой системы, просмотр содержимого файла) правильно отображается их содержимое;
- правильно работают переходы по страницам
- из списка коммитов на список файлов
- из списка файлов во вложенную папку
- из списка файлов на страницу отдельного файла
- переходы по хлебным крошкам
- нужно добавить в README список логических блоков системы и их сценариев
- для каждого блока нужно написать модульные тесты
- если необходимо, выполните рефакторинг, чтобы реорганизовать логические блоки или добавить точки расширения
-
app
- /
- возвращает статус 200 при роуте
- /files/:hash/*?
- возвращать статус 200 для рут папки
- возвращать статус 200 для любой другой папки
- возвращать статус 500 при некорректном
hash
- /content/:hash/*?
- возвращать статус 200 для файла из рут папки
- возвращать статус 200 для файла из любой другой папки
- возвращать статус 500 при некорректном
hash
- возвращать статус 404 при несуществующем роуте
- /
-
git
- gitHistory
- вызывается
getExecFile
- вызывается
- gitFileTree
- вызывается
getExecFile
, когда естьpath
- вызывается
getExecFile
, когда нетpath
- вызывается
- gitFileContent
- вызывается
getExecFile
- вызывается
- gitHistory
-
helpers
- getOffset
- корректно возвращать сдвиг
- parseFileTreeItem
- корректно делит строку на
type
,hash
иpath
- корректно делит строку на
- parseHistoryItem
- корректно делит строку на
hash
,author
,timestamp
иmsg
- корректно делит строку на
- getOffset
-
navigation
- buildFolderUrl
- возвращает корректный путь, когда есть
path
- возвращает корректный путь, когда нет
path
- возвращает корректный путь, когда есть
- buildFileUrl
- возвращает корректный путь
- buildObjectUrl
- возвращает корректный url для
type="tree"
- возвращает корректный url для
type="blob"
- возвращает # для иных случаев
- возвращает корректный url для
- buildBreadcrumbs
- возвращает массив, первым элементом которого является объект
{ text: 'HISTORY', href: '/' }
- возвращает правильный массив, когда нет
hash
и нетpath
- возвращает правильный массив, когда есть
hash
и нетpath
- возвращает правильный массив, когда есть
hash
и вложенность 1 уровня - возвращает правильный массив, когда есть
hash
и вложенность 2 уровня - возвращает правильный массив, когда есть
hash
, вложенность 1 уровня и файл - возвращает правильный массив, когда есть
hash
, вложенность 2 уровня и файл
- возвращает массив, первым элементом которого является объект
- buildFolderUrl
-
contentController
- отправляет данные для рендера, если это
blob
- возвращает ошибку в иных случаях
- отправляет данные для рендера, если это
-
filesController
- отправляет данные для рендера, если есть
path
- отправляет данные для рендера, если нет
path
- возвращает ошибку в иных случаях
- отправляет данные для рендера, если есть
-
indexController
- возвращает корректные данные и рендерит их
- возвращает ошибку в иных случаях