Getting Started - Gibiscus/wiki Wiki

Let's write the first test script in COTT 🚀

Automation is easy

On this page, we'll take a look at how easy it is:

  • ⚙️ Set up a global configuration file
  • ▶️ Run scripts
  • 🔧 Create the first UI script
  • ⛏ Create an API script
  • 🛠 Create merge script
  • 🔍 View script logs

Recommended development environment for COTT - IntelliJ IDEA


Set up a global configuration file

Шаг 1:

  • Указать дефолтный путь к XSD - схеме используя тег

global_config.png ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Шаг:2

  • Раскрыть тег:
 <stopScenarioOnFailure>false</stopScenarioOnFailure> - для управление ScenarioRunner при exception

true ( при запуске нескольких или одного тестового сценария, и обнаружении exception в одном из, - стартер будет остановлен, с выводом ошибки, в конкретном сценарии, и на конкретном шаге )

false ( при запуске нескольких или одного тестового сценария, и обнаружении exception, стартер не будет остановлен, все сценарии и шаги будут выполняться до завершения работы стартера, с дальнейшим выводом exception для всех сценариев которые были пройдены, и получили exception.

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Шаг:3

  • Раскрыть тег:
<runScenariosByTag>

Дать имена тегам, которые будут использованы для запуска сценариев по тегам

  • Пример:
   <runScenariosByTag enable="true">
       <tag name="positive_case" enable="true"/>
       <tag name="negative_case" enable="false"/>
   </runScenariosByTag>

Запуск сценария по тегам, не является обязательным требованием для пользователя. У вас есть возможность включать и выключать данную функцию используя enable="" |true or false|

При enable="false" - Scenario Runner будет работать в стандартном режиме

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Шаг:4

<ui>
  • Раскрыть тег <ui> для настройки кроссбраузерности

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Вы имеете возможность выбрать гибкую настройки конфигураций для одного и несколько типов браузеров индивидуально

Например сконфигурировать несколько версий и режимов запуска Crome Browser

Количество конфигураций для браузеров не ограничено

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Основные теги при раскрытии <ui> тега:

<baseUrl>http//:locahost:8080</baseUrl>
  • Внутри которого должен находится URL тестируемого сайта
<browserSettings>
  • Выполняет основные настройки кроссбраузерности

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Теги внутри <browserSettings>:

<takeScreenshotOfEachUiCommand> 
  • Для включения и выключения режима работы скриншотов
  • Имеет флаг true | false

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

<webElementAutowait>
  • Взаимодействует с тегами:

click

<input>

assert

dropDown

navigate

  • Предназначен для ожидания и получения элементов <id>, <class>, <xpath> из дерева
  • <webElementAutowait> - будет работать до тех пор пока не найдет нужный элемент страницы

Имеет параметр seconds="5" - для назначения времени ожидания

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

<browsers>

Раскрывает настройки конфигураций браузеров:

  • chrome
  • opera
  • edge
  • firefox
  • safari

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Структура конфигурация браузеров:

  • Chrome Local Browser
          <chrome enable="false" maximizedBrowserWindow="false" headlessMode="false" browserWindowSize="1920x1080">
                <browserType>
                    <localBrowser driverVersion="102.0.5005.27"/>
                </browserType>
                    <chromeOptionsArguments>
                        <argument>--incognito</argument>
                    </chromeOptionsArguments>
          </chrome>
  • maximizedBrowserWindow="" - выбор размера окна браузера true | false
  • headlessMode="" - встроенный option режима запуска браузера true | false
  • browserWindowSize="1920x1080" - указание размера браузера при maximizedBrowserWindow="false"
  • localBrowser driverVersion="" - указание определенной локальной версии браузера
  • <chromeOptionsArguments> - указание аргумента

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • Edge in Docker Browser
                <edge enable="true" maximizedBrowserWindow="true" headlessMode="true" browserWindowSize="800x600">
                    <browserType>
                        <browserInDocker browserVersion="91.0.864.37" enableVNC="true">
                            <screenRecording enable="true" outputFolder="/Users/user/e2e-testing-scenarios"/>
                        </browserInDocker>
                    </browserType>
                    <edgeOptionsArguments>
                        <argument>--disable-extensions</argument>
                    </edgeOptionsArguments>
                </edge>
  • <browserInDocker browserVersion="" - выбор версии драйвера для запуска в docker
  • enableVNC="" - позволяет подключаться к сеансу удаленного рабочего стола, просто вызывая метод enableVnc() докеризованного браузера. При использовании этой опции внутри используются две разные технологии:
  • Virtual Network Computing (VNC), графическая система совместного использования рабочего стола. VNC-сервер запускается в контейнере браузера.
  • noVNC, веб-клиент VNC с открытым исходным кодом, использует собственный образ noVNC Docker для подключения через noVNC.
  • <screenRecording enable="" - режим для записи прохода тестового сценария в docker имеет флаг true | false исп. при enableVNC="true"
  • outputFolder="" - указание определенной директории для хранения записи тестового сценария
  • <edgeOptionsArguments> - указание аргумента

Шаг:5

<integration>
  • Раскрыть тег <integration> для настройки интеграций

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Сконфигурируйте нескольких API

Сконфигурируйте нескольких DB

Сконфигурируйте сервисов

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • Примеры конфигураций

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • APIsIntergration
        <apis>
            <api alias="SHOPIZER" url="http://localhost:8080/"/>
        </apis>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • PostgresIntegration
       <postgresIntegration>
            <postgres alias="SHOPIZER" enabled="true">
                <jdbcDriver>org.postgresql.Driver</jdbcDriver>
                <username>postgres</username>
                <password>password</password>
                <connectionUrl>jdbc:postgresql://localhost:5433/SHOPIZER</connectionUrl>
                <schema>salesmanager</schema>
                <hikari>
                    <connectionTimeout>45000</connectionTimeout>
                    <idleTimeout>60000</idleTimeout>
                    <maxLifetime>180000</maxLifetime>
                    <maximumPoolSize>50</maximumPoolSize>
                    <minimumIdle>5</minimumIdle>
                    <connectionInitSql>SELECT 1</connectionInitSql>
                    <connectionTestQuery>SELECT 1</connectionTestQuery>
                    <poolName>core-postgres-db-pool</poolName>
                    <autoCommit>true</autoCommit>
                </hikari>
            </postgres>
        </postgresIntegration>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • SendgridIntegration
        <sendgridIntegration>
            <sendgrid alias="email" enabled="true">
                <apiUrl>http://localhost:8080/</apiUrl>
                <apiKey>apiKey</apiKey>
            </sendgrid>
        </sendgridIntegration>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • RedisIntegrations
        <redisIntegration>
            <redis alias="redis" enabled="true">
                <host>localhost</host>
                <port>6379</port>
            </redis>

            <redis alias="redis_two" enabled="true">
                <host>localhost</host>
                <port>6360</port>
            </redis>
        </redisIntegration>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

После создания файла конфигурации, Edit Configuration в Test Runner

runner.png

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Укажите путь файлу с глобальными конфигурациями

path_runner.png


➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

Create UI test-script

Шаг:1

  • Создать папку с названием тестового сценария внутри папки scenarios
  • Внутри папки создать файл scenario.xml

scenarios.png


Шаг:2

  • Открыть папку locators
  • Создать файл с названием UI страницы в формате: registration.xml
  • Внутри файла созданного файла - открыть тег <page> - заполнить данные

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

locatorst_xsd.png

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • Открыть тег <locators>
  • Создать необходимое количество локаторов

Шаг:3

  • Открыть созданный файл scenario.xml
  • Открыть тег <scenario>
  • Заполнить список выпадающих тегов

scenario get started.png

 <description>
  • Описание тестового сценария

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

<name>
  • Имя тестового сценария

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

<tags>
  • Указания тега, прописанного в global-config-file.xml ( Для запуска сценаряи по тегам )

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

  • Раскрыть UI tag в scenario.xml и приступить к написанию тестового сценария

choseUItag.png


YouTube Instructions UI

Instructions for working with the UI test scenario

'To start, click on the running line'

⤵️

Typing SVG

⤴️


Create REST - API script

Шаги:

  • Находясь в уже созданном сценарии, или в созданном новом:
  • Убедится что UI тег закрыт, или отсутсвует
  • Открыть тег http
  • Выбрать метод запроса

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

http_scenario.png


  • Указать endpoint и response code

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

http_response.png


  • Создать пустой expected_file.json в папке сценария
  • Указать expected_file.json в http запросе
  • Номер expected_file - зависит от номера шага тестового сценария

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

expected_api.png


  • Выбрать способ передачи тела запроса
  • Открыть тег <body>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

body_hrrp.png

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

  • Пример передачи тела запроса с помощью параметра <from> file
  • Создать request_file.json для передачи тела запроса ( в папке сценария )
  • Положить тело запроса в созданный request_file.json
  • Указать имя request_file.json - внутри <from file=""/>

➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖ ➖

⤵️⤵️⤵️

request_file.png


YouTube Instructions API

Instructions for working with the API test scenario

'To start, click on the running line'

⤵️

Typing SVG

⤴️


Merge test (UI/API)

Больше возможностей

UI & API в одном тестовом сценарии

Высокий уровень покрытия

Merge режим

YouTube Instructions Merge Test

Instructions for working with the Merge test scenario

'To start, click on the running line'

⤵️

Typing SVG

⤴️

⚠️ **GitHub.com Fallback** ⚠️