![](https://habrastorage.org/getpro/habr/upload_files/e69/8e9/389/e698e93894149f93a6ccfe2dc9e6841d.jpeg)
Приветствую, меня зовут Иван, я инженер по ручному и автоматизированному тестированию. В ремесле более 2х лет! Со мной сегодня Frontend Dev Алексей! Он расскажет все нюансы использования Cypress при написании автотестов.
Контакты я оставляю в конце статьи на свой канал и канал Алексея.
Сегодня мы поделимся навыком тестирования сайтов и веб-приложений с помощью Cypress. Автоматизируем поиск книг по тестированию и добавим их в избранное на сайте Литрес!
Тесты мы будем писать на 🟡JavaScript.
Статья, где мы пишем на Selenium с помощью 🔴Java
Cypress - это фреймворк для написания автотестов, который позволяет автоматизировать тестирование веб-приложений. Запуск автотестов происходит в браузере Chrome, советуем установить актуальную версию браузера. В конце этой статьи вы найдете видео-инструкцию по установке всех необходимых компонентов.
![План действий по установке Cypress План действий по установке Cypress](https://habrastorage.org/getpro/habr/upload_files/e55/33f/10d/e5533f10d1cd6cd4dd8c065536c7089c.png)
Что нам необходимо для установки и запуска автотестов:
1. Браузер Chrome актуальной версии;
2. Редактор кода VS Code;
3. Терминал или Командная строка (PowerShell) по умолчанию есть на macOS и Windows;
4. Доступ к терминалу есть также внутри программы VS Code;
5. Node.js и Cypress мы установим через Терминал (Командную строку).
На ваш компьютер необходимо установить 3 программы (Chrome, VS Code и Node.js)
Остальные установки будут происходить внутри Терминала на вашем компьютере.
![Установка происходит с помощью ⚫️ Терминала или 🔵 Терминала в VS Code на вашем компьютере по следующим командам: Установка происходит с помощью ⚫️ Терминала или 🔵 Терминала в VS Code на вашем компьютере по следующим командам:](https://habrastorage.org/getpro/habr/upload_files/0c3/057/810/0c3057810e1b1b74dceb37d3aa54941d.png)
В открывшемся Терминале/Командной строке мы создаем директорию (папку) с помощью команды:
mkdir litres-testing //создаем директорию для нашего теста
cd litres-testing //переход в директорию
Перед тем как инициализировать проект, необходимо убедится, что на компьютере установлен Node.js. Можно установить как файл, или установить через терминал: Статья по установке Node.js
node -v // проверка версии node.js на вашем компьютере
После установки Node.js инициализируем проект
npm init //инициализация
![Терминал при выполнении команд выше Терминал при выполнении команд выше](https://habrastorage.org/getpro/habr/upload_files/888/70d/508/88870d508cf5b7fa34c7cdacf5d6880b.png)
npm install cypress -D //устанавливаем Сypress
После установки библиотеки Cypress мы запускаем её с помощью команды:
npx cypress open //открываем Cypress
![Выбираем E2E Testing Выбираем E2E Testing](https://habrastorage.org/getpro/habr/upload_files/e8f/10f/76d/e8f10f76decf39367b7494bcb1892745.png)
![Выбираем Chrome (отображается версия, установленная на вашем компьютере) Выбираем Chrome (отображается версия, установленная на вашем компьютере)](https://habrastorage.org/getpro/habr/upload_files/06b/8ee/959/06b8ee959b572d81754836083d46ec43.png)
![Chrome запускает вкладку litres-testing (название проекта) и тестовый визит по умолчанию Chrome запускает вкладку litres-testing (название проекта) и тестовый визит по умолчанию](https://habrastorage.org/getpro/habr/upload_files/05f/842/f17/05f842f178315a038c73be9e42ce2f3b.png)
Далее необходимо запустить VS Code и открыть директорию litres-testing.
![](https://habrastorage.org/getpro/habr/upload_files/76e/908/339/76e9083395d85e8fde33d850d43ae419.png)
В папке e2e
создаем файл searchBooks.cy.js
Вставляем код в файл:
describe('template spec', () => {
it('passes', () => {
cy.visit('https://www.litres.ru')
// Вводим данные в поле поиска
cy.get('[data-testid="header__search-input--desktop"]').type('тестирование на JavaScript')
// Нажимаем на кнопку "Найти"
cy.contains('[data-testid="header__search-button--desktop"]', 'Найти').click()
// Кликаем на изображение
cy.get('img[itemprop="image"][alt="Тестирование JavaScript"]').click()
// Проверяем содержание текста по заголовку
cy.contains('h1[itemprop="name"].BookCard-module__book__mainInfo__title_2zz4M', 'Тестирование JavaScript')
})
})
Если у вас в VS Code не настроено автосохранение, то нажимаем комбинацию Ctr + S
или Cmd + S
Возвращаемся обратно в Chrome. Тест запускается автоматически при каждом изменении файла.
🟣 Чтобы перезапустить тест - нажмите на повтор;
🟢 Статус теста в зелёной области;
🟠 Запросы и статусы ответа;
🔴 Справа - отображение фактического результат при запуске автотеста.
![](https://habrastorage.org/getpro/habr/upload_files/207/44b/0b8/20744b0b8134521db8745ec596f4194b.png)
При наведении на определенный запрос 🟠 - справа отображается момент данного запроса на странице 🔴. После запуска вы можете провести поэтапное изучение вашего автотеста.
![](https://habrastorage.org/getpro/habr/upload_files/8a1/843/d9b/8a1843d9b728c84b23a3b35c6ed90f0b.png)
В папке e2e
создаем файл shortCode.cy.js
Это второй файл с тестом, который делает поиск книг и добавляет их в избранное. По итогу добавления отображает список всех добавленных книг на сайте Литрес.
Тест имеет повторяющиеся действия, т.к. на каждую книгу необходимо выполнить одинаковые шаги. Чтобы не создавать копипаст, мы можем оптимизировать его:
const searchAndClickLikeButton = (searchText) => {
cy.get('[data-testid="header__search-input--desktop"]').clear().type(searchText)
cy.contains('[data-testid="header__search-button--desktop"]', 'Найти').click()
cy.get('button.LikeButton-module__likeButton_gtG7W').first().click()
}
describe('template spec', () => {
it('passes', () => {
cy.visit('https://www.litres.ru')
searchAndClickLikeButton('Что такое тестирование')
searchAndClickLikeButton('Как тестируют в Google')
searchAndClickLikeButton('Софт отстой и что с этим делать')
searchAndClickLikeButton('Пиши, сокращай')
searchAndClickLikeButton('Этой кнопке нужен текст')
cy.get('[data-testid="tab-favorite"]').click()
})
})
![Как выглядят наши тесты в редакторе кода VS Как выглядят наши тесты в редакторе кода VS](https://habrastorage.org/getpro/habr/upload_files/4eb/180/502/4eb180502520b1225ac4ce153c6c6012.png)
На скриншоте выше мы можем увидеть файл commands.js
в директории support
- там хранятся кастомные команды, которые используются в разных автотестах, такие как авторизация пользователя, завершение сессии на веб-странице и т.д.
Простыми словами в файле commands.js
хранятся предусловия и постусловия выполнения автотеста, которые вы можете использовать в большинстве своих автотестов.
Такой подход называется принципом инкапсуляции, когда код, отвечающий за определенные действия или проверки, выносится в отдельные функции или команды. Это позволяет повторно использовать код, упрощает его понимание и обеспечивает более легкую поддержку автотестов. Принцип DRY.
Заключение
Сегодня мы познакомились с ещё одним инструментом автоматизации - Cypress. Спасибо Алексею за помощь написания статьи. Мы попытались объяснить более понятно и на забавном тесте, в котором мы ищем книги по тестированию. Это также обогатит вашу библиотеку тестировщика.
Контакты:
Канал Ивана - QAtoDev
Канал Алексея - frontend_tales
Шпаргалка по Cypress:
Установка VS Code и Node.js
Официальная документация Cypress
Кастомные команды Cypress: практикум
Шпаргалка по Cypress
Что такое Cypress? | Видео-Обзор Cypress