zapp

Форк
2

README.md

ZAPP

О проекте

ZAPP - это фреймворк для UI-тестирования на основе BDD.

Возможности:

  • Запуск тестов на основе сценариев, описанных в синтаксисе gherkin, то есть практически русским языком, описывающим действия со стороны пользователя.
  • Отображение результатов выполнения тестов в JIRA с привязкой к версиям проекта или к пользовательским историям.

Установка

Установка в виде python-приложения

Установка Python 3.8+ и virtualenv

Необходимо убедиться, что установлен Python версии 3.8+

python -V python3 -V

При необходимости нужно установить python3:

brew install python3

Установка virtualenv:

pip3 install virtualenv

Установка zapp в проект:

Клонирование репозитория в папку git clone https://gitverse.ru/sc/sbertech/zapp.git

Переход в папку с установленным ZAPP:

cd zapp

Создание виртуального окружения:

virtualenv .

Активация виртуального окружения (MacOS):

source bin/activate

Активация виртуального окружения (Windows + GitBash):

source Scripts/activate

Установка зависимостей:

pip install -U -r requirements.txt

Запуск

Находясь в корне проекта активировать виртуальное окружение и выполнить команду запуска с требуемыми параметрами (без указания параметров будет читаться zapp.config.json в корне):

source bin/activate python run.py --config=test.config.json

Для локального запуска браузера в папке bin (Scripts для win) созданного виртуального окружения должен лежать бинарный файл драйвера нужной версии и архитектуры, например chromedriver для Chrome

Перед первым запуском рекомендуется создать в корне файл конфига zapp.config.json который будет считываться по-умолчанию:

{ "PROJECT": "JIRA", "TEST_STAND": "https://example.com", "ENV": "STAGE", "DEBUG": "True", "SMARTWAIT_DELAY": "7", "tags": "@demo", "LOCAL_SCREENSHOTS": "True", "SCREENSHOT_DIR": "_screenshots" }
PROJECT - Имя тестируемого проекта в Jira TEST_STAND - основная страница проекта (используется в шаге Я перешел на главную страницу) ENV - тип тестируемой среды (QA, STAGE, PROD) DEBUG - режим вывода более подробных логов SMARTWAIT_DELAY - время максимального ожидания появления элемента или наступления события tags - тег(теги) по которым будут запускаться тесты Запись "tags": ["@first_page,@second_page" ,"@base","~@wip"], Эквивалентна параметрам командной строки --tags=@first_page,@second_page --tags=@base --tags=~@wip (запустить все тесты содержащие хотя бы один из тегов first_page/second_page и при этом содержащие тег base и не содержащие тег wip) LOCAL_SCREENSHOTS - режим сохранения скриншота локально при падении теста SCREENSHOT_DIR - директория сохранения скриншотов относительно корня установки

Это основные параметры фреймворка, к ним пользователь может добавить любое количество тестовых переменных. Рекомендуется именовать их в верхнем регистре и через подчеркивания. Например:

"MY_TEST_VAR": "my test string 1"

Каждый из параметров можно перекрывать параметром командной строки. Например:

python run.py --TEST_STAND=new.example.com --BROWSER=firefox

Также zapp умеет работать с разными наборами параметров. Указывая параметр командной строки --config можно выбирать файл (относительно корня установки), который будет использоваться для загрузки параметров:

python run.py --config=zapp-second.config.json python run.py --config=zapp-second.config.json --ENV=STAGE --BROWSER=firefox

При этом параметры, указанные в команде запуска перекроют значения, записанные в конфиге

Состав файлов

Примеры файлов, необходимых для реализации тестов находятся в папке features

  • <имя>.feature - файлы сценариев тестов. Содержат background секцию, выполняемую перед каждым сценарием и один или несколько тестовых сценариев. Расположены в папке features.
  • <имя>_locators.py - файлы со списком локаторов элементов. В момент запуска доступны элементы из всех файлов локаторов одновременно, независимо от названия фичи или файла локаторов. Расположены в папке features/steps
  • <имя>_steps.py - вспомогательные файлы с дополнительными шагами, расширяющими библиотеку шагов. Для правильной работы требуется добавить два импорта:
from features.steps.steps_library import * from behave import *

Рекомендации

  • Для реализации крупных декларативных шагов рекомендуется использовать context.execute_steps (см. zapp_demo_steps.py)
  • Для каждой фичи лучше создавать новый файл с локаторами, именуя его по образцу __locators
  • 1 фича = 1 файл .feature

Алгоритм скриншот-тестирования

  1. В начале сценария создаём объект run_info с данными прогона скриншот-тестирования
  2. Во время сценария пишем в объект run_info данные о проверенных элементах. Также на сервер сохраняются сделанные скриншоты и JSON с данными прогона.
  3. В конце сценария показываем результаты и сгенерированную ссылку, по которой можно посмотреть результаты прогона в web-интерфейсе. Результаты на сайте берутся из сохранённого в процессе прогона JSON, поэтому они доступны сразу же.

Алгоритм проверки элемента при скриншот-тестировании

  • Есть три типа изображений, которые сохраняются: эталон, текущий вариант (если есть отличия) и изображение с подстветкой отличий (если есть).
  • Эталон сохраняется в глобальной папке по идентификатору элемента.
  • Текущий вариант и отличия сохраняются в папке прогона.
  • Элемент уникально идентифицируется по совокупности следующих составляющих:
    • Имя локатора элемента (уникально в пределах всего проекта)
    • Имя браузера, используемого при прогоне (так как отображение элементов может незначительно отличаться в разных браузерах)
    • Ширина и высота окна браузера (чтобы можно было проверять одни и те же элементы на разных разрешениях)
  • Прогон уникально идентифицируется по времени начала и случайному хешу.
  • При первой проверке элемента, скриншот будет сохранён как эталон, а элемент получит статус "новый" в отчёте.
  • При повторной проверке и отсутствии отличий, новые скриншоты не будут сохранены, а элемент получит статус "одинаковый".
  • При повторной проверке и наличии отличий от эталона, будет сохранён новый скриншот, скриншот с подсветкой отличий, а элемент получит статус "отличается".
  • При нахождении отличающихся элементов прогон продолжается дальше и в конце завершается с ошибкой и сообщением о количестве отличающихся элементов.

Описание

ZAPP - это фреймворк для UI-тестирования на основе BDD. Возможности: Запуск тестов на основе сценариев, описанных в синтаксисе gherkin, то есть практически русским языком, описывающим действия со стороны пользователя. Является форком https://gitverse.ru/domclick/zapp

Языки

Python

  • Gherkin
  • Shell
Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.