Основы Cypress: использование baseUrl |
20.12.2023 00:00 |
Автор: Филип Рик (Filip Hric) Cypress создан для тестирования вашего приложения. Иными словами, он спроектирован, чтобы протестировать приложение, к которому у вас есть доступ, которое вы активно разрабатываете. Поэтому в Cypress встроен параметр baseUrl, помогающий настроить стартовую точку ваших усилий по тестированию. В этой статье мы разберемся, что это такое, и как этим пользоваться. Настройка baseUrl в конфигурации Cypress Первый шаг на пути использования baseUrl в Cypress – это его настройка в файле cypress.config.js. Этот файл расположен в корне вашего Cypress-проекта и содержит различные опции настройки тестов. Конфигурация будет выглядеть примерно так: cypress.config.js 1 const { defineConfig } = require('cypress') Вам нужно заменить https://example.com на реальный URL вашего веб-приложения. Это может быть локальный адрес (если вы тестируете локально), препрод или прод. Конфигурация делает заданный тут URL доступным в качестве baseUrl в ваших тестах. Доступ к baseUrl в тестахПосле настройки baseUrl в конфигурации можно получить к нему доступ различными способами. К примеру, команды cy.visit(), cy.request() и cy.intercept() будут пользоваться этим baseURL, поэтому вместо ввода полного URL используйте только путь. 1 cy.visit('/home') ???? Знаете ли вы, что вместо перехода по URL можно открыть файл html? Используйте cy.visit('index.html') для открытия файла index.html в корневой папке вашего проекта. Изменение baseUrl в ходе прогона тестовВ некоторых случаях может понадобиться поменять baseUrl на уровне теста. Это может пригодиться для дымовых тестов, предназначенных для покрытия более крупной системы, состоящей из приложений, разделенных на несколько доменов. Для настройки другого baseUrl в тесте можно использовать объект конфигурации теста: 1 describe('smoke tests', () => { Проверки с baseUrlВ тестах могут понадобиться проверки, задействующие baseUrl. К примеру, нужно убедиться, что после определенного действия приложение переходит на правильную страницу. Вот пример, как это сделать: 1 describe('Redirect Test', () => { Передача baseUrl через CLIНа самом деле можно вообще не настраивать baseUrl в файле cypress.config.js. Вместо этого можно указывать его при открытии Cypress: 1 npx cypress open --config baseUrl=https://staging.example.com Таким образом можно легко переключаться между разными окружениями и открывать Cypress в том окружении, в котором вы хотите тестировать. Динамическое определение baseUrlМожно пойти на уровень выше и динамически определять baseUrl. Это можно сделать как в самом параметре, так и применив функцию setupNodeEvents(). Посмотрим на примеры. cypress.config.js 1 const { defineConfig } = require('cypress') В этом примере локация https://staging.example.com установлена для прогона тестов через процессы CI. Большинство сервисов CI устанавливают переменную CI=1, которой можно воспользоваться для принятия решения. Мы добавляем условие, которое установит https://staging.example.com, если мы в CI-окружении, и http://localhost:3000, если это не так. Если нужно переключаться между несколькими URL, воспользуемся функцией setupNodeEvents(): cypress.config.js 1 const { defineConfig } = require('cypress') Теперь можно легко переключаться между разными URL, передавая имя версии приложения во флаг -env: 1 # будет использоваться http://localhost:3000 Хорошие практики использования baseUrlРаспространенная ошибка применения baseUrl: ❌ не делайте так 1 cy.visit(Cypress.config('baseUrl') + '/home') Как показано в первом примере статьи, в этом нет смысла, а в тестах появляется дупликация. Настройка baseUrl позволяет писать тест так, чтобы запускать его в любом окружении. Это жизненно необходимо для гибкости ваших тестов. |