- Стек JS/CSS - любой.
- Страница Списка Товаров – список товаров с разбиением по категориям.
- Страница Деталей Товара - страница с подробным описанием товара.
- Для проверки на элементы надо добавить
data-test-id
, с помощью которых выполняется поиск элементов (список ниже).
100% совпадения с дизайном не требуется и это никак не влияет на оценку качества
- логотип @MyCompany не кликабельный;
- товары в 4 категориях, количество товаров в каждой категории может быть разное;
- для каждого товара в категории выводится только фотография, название, цена и описание в 1 строчку (обрезается ... в конце);
- при клике на название товара или картинку идет переход на страницу Деталей Товара;
- заголовок Категории не кликабельный.
- логотип @MyCompany кликабельный и ведет на страницу Списка Товаров
- навигация (хлебные крошки):
- элемент All products кликабельный и ведет на Список Товаров;
- элемент Product Name не кликабельный;
- картинка товара шириной 2/3 экрана;
- справа от картинки товара распологается блок с названием товара, ценой и рейтингом;
- под картинкой товара распологается заголовок Description и под ним полное описание товара.
- Для backend API магазина нужно использовать Fake Store API:
/products/{id}
-> информация по конкретному продукту:{ "id": 1, "title": "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops", "price": 109.95, "description": "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday", "category": "men's clothing", "image": "https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg", "rating": { "rate": 3.9, "count": 120 } }
/products
-> 20 продуктов./products/categories
-> 4 категории товаров./img/{name}
-> картинка продукта.
Пожалуйста, внимательно добавляйте data-test-id
, так как по этим аттрибутом будет осуществляться автоматическая
проверка качества вашей работы. Аттрибуты статические и не требуют подстановки динамических данных.
- Страница Списка Товаров должна содержать следующие
data
-аттрибуты:- логотип @MyCompany -
data-test-id="Shop_Logo"
; - название магазина -
data-test-id="Shop_Name"
; - название категории -
data-test-id="Category_Name"
; - область клика перехода на страницу товара из списка -
data-test-id="List_Item"
.
- логотип @MyCompany -
- Страница Детали Товара должна содержать следующие
data
-аттрибуты:- логотип @MyCompany –
data-test-id="Shop_Logo"
; - название магазина -
data-test-id="Shop_Name"
; - навигация (хлебные крошки):
- ссылка All Products -
data-test-id="Navigation_All_Products"
; - текст с именем товара -
data-test-id="Navigation_Product_Name"
;
- ссылка All Products -
- фотография товара -
data-test-id="Product_Picture"
; - название товара -
data-test-id="Product_Name"
; - цена товара -
data-test-id="Product_Price"
; - рейтинг товара -
data-test-id="Product_Rating"
; - текст описания товара -
data-test-id="Product_Description"
;
- логотип @MyCompany –
- Сборка должна запускать по команде
npm run build
. - Резульатат сборки лежит в папке
dist
и имеет как минимум один файлindex.html
.
Для проверки используется Github Actions, шаги сборки описаны в build.yml.
Для прогона тестов приложение заворачивается в docker и запускается на localhost:8080
через docker compose.
После запускаются UI тесты в headless
режиме с помощью puppeteer. Для локального запуска в
бразуере нужно запусть с флагом --headless=false
:
# собираем приложение
$ npm install && npm run build
$ docker compose build
# запускаем в docker (доступно по адресу http://localhost:8080)
$ docker compose up -d
# собираем тесты
$ cd tests
$ npm install
# запускаем тесты в браузере
$ node index.mjs --url=http://localhost:8080 --headless=false
- Создаете Fork этого репозитория.
- Сделайте Single Page Application для интернет магазина c 2 страницами как описано выше.
- После успешного прохождения тестов в вашем репозитории (вкладка
Actions
), создаете Pull Request в основной репозиторий (Pull requests -> New pull request), в названии Pull Request указываете ваше имя, (например Романов Алексей).