Документация

Для начала необходимо ознакомиться с документацией по началу работы с Origami Framework

Origami Core

Подключение

Подключается автоматически при добавлении parent в pom проекта.

Аннотации

Чтобы тесты в Test IT и Allure отчетах отображались с указанными шагами, описанием и заголовками необходимо использовать универсальные аннотации (замена Allure и Test IT аннотаций)

Аннотации класса

                      
                      

@Epic, @Feature - стандартные Allure аннотации, в Test IT не используются. @Story - заменяет Allure аннотацию @Story. В Test IT не было аналога, используется в качестве значения пакета для тестовых классов. @DisplayName - заменяет Allure аннотацию @DisplayName. Заменяет Test IT аннотации - @DisplayName, @Title. @Link - заменяет Allure аннотацию @Link. Заменяет Test IT аннотацию - @Link. Для @Link можно выбрать тип ссылки отдельно для Allure(allureType) и отдельно для Test IT(testItType).

Аннотации теста

Тест

                      
                      

@DisplayName - заменяет Allure аннотацию @DisplayName. Заменяет Test IT аннотации - @DisplayName, @Title. @Description - заменяет Allure аннотацию @Description. Заменяет Test IT аннотацию - @Description. @WorkItemIds - стандартная Test IT аннотация, не используется в Allure. Указывается id теста (или id нескольких тестов - @WorkItemIds({"270492", "270493"})), который необходимо пометить как автоматизированный.

Параметризованный тест

                      
                      

Для параметризованного теста так же можно указать @DisplayName - будет влиять только на отображение названия группы тестов в IDE. Значение для теста в Test IT берется из @ParameterizedTest + параметризованные данные.

Шаг

                      
                      

@Step - заменяет Allure аннотацию @Step. Заменяет Test IT аннотации - @Step, @Title.

Аннотации предусловий/постусловий

                      
                      

Ранее в Allure для методов предусловий/постусловий бралось название на англ из метода. Теперь при указании данной аннотации будет взято ее значение.

Добавление описания в Test IT для вложений

В Allure при добавлении аннотации @Attachment к шагу будет добавлено вложение(например: sql запрос, сообщение в очередь и тд.). Для Test IT реализована аналогичная возможность добавления данных вложений к шагам. Вложения будут добавлены в виде Описания к шагу при условии, что у шага отсутствует свое описание(@Description).
К методу необходимо добавить аннотацию @Step со значением TEST_IT_ATTACHMENT_TECH_STEP_VALUE. С данным значением новый шаг не будет создан ни в Allure, ни в Test IT. А описание будет прикреплено к шагу в Test IT, который создавался до вызова данного метода. Так же необходимо добавить аннотацию @Description, которая будет содержать описание, которое будет прикреплено к шагу.

                      
                      

Task

Позволяет выполнить задачу, которая возвращает результат из отдельного потока. Может вызвать исключение.

Для использования необходимо: 1. Унаследоваться от класса Task 2. Переопределить конструктор с вызовом конструктора родителя

                      
                      

3. Реализовать необходимые для задачи методы - с возвращаемым результатом или без 4. В тестовом методе создать новый объект, где в сигнатуре конструктора: - первый параметр methodName - название метода для запуска в отдельном потоке - последующие параметры (могут быть/могут не быть) - входящие параметры для указанного метода Очередность параметров должна строго соответствовать очередности метода. 5. Вызвать у объекта submit() для запуска задачи в отдельном потоке 6. Вызвать один из нижеперечисленных методов: - get() / get(long timeout, TimeUnit unit) - при необходимости ожидает завершения задачи, а затем извлекает результат - cancel(boolean mayInterruptIfRunning) - пытается завершить выполнение текущей задачи - isCancelled() - возвращает true, если эта задача была отменена до ее завершения - isDone() - возвращает true, если эта задача завершена

Пример

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

                      
                      

Использование вышеприведенных методов в шаге теста

                      
                      

Asserts

Asserts включает в себя необходимые проверки для использования в тестах.

Environment

Environment необходим для работы с параметрами. Вычитывает параметры из origami.properties, из /config/{stand}.json, где stand - системное свойство. Так же вычитывает параметры из statics/routs.json и statics/any.json (необязательные). Существует возможность указать пользовательские файлы конфигураций. Для этого в origami.properties необходимо указать пути до таких файлов. Название параметра должно начинаться с custom.properties.file.path Если какие-либо параметры определены и в пользовательском файле и в файле stand, то возьмется значение из stand файла.

                      
                      

Существует возможность задать глобальный системный параметр для ssl.trust.store. Для этого необходимо в origami.properties указать путь и пароль от сертификата. Возможно указать как полный путь от корня проекта, так и путь конкретно в resources. В примере приведены оба варианта.

                      
                      

Существует возможность глобально отключить проверку сертификатов для всех HTTPS-соединений

                      
                      

Методы

Получение значения параметра по ключу

                      
                      

Получение значения параметра по ключу или вернется null при отсутствии значения

                      
                      

Параметры из origami.properties будут добавлены в системные параметры.

OrigamiHelper

OrigamiHelper содержит общие методы, такие как ожидания, работа с xml/json и тд.

Allure

Чтобы задать шаблон URL для ссылок типа issue, необязательно создавать отдельный файл allure.properties и в нем прописывать значение параметра. В origami.properties можно задать аналогичный параметр allure.link.issue.pattern. Для генерации отчета в один html файл необходимо запустить mvn allure:report. Сгенерированный файл появится по пути /target/site/allure-maven-plugin/index.html Для генерации excel отчета на основе allure необходимо выполнить команду mvn exec:java@allure-excel. Сгенерированный файл появится по пути /target/allure-report_dd_MM_yyyy.xlsx

Origami Hibernate

Описание

Модуль для работы с базами данных на основе Hibernate.

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

Так же необходимо создать файл конфигурации для работы с требуемой базой:     - hibernate-postgres.cfg.xml     - hibernate-clickhouse.cfg.xml     - hibernate-oracle.cfg.xml     - hibernate-mssql.cfg.xml В файле необходимо указать параметр со значением класса драйвера:

                      
                      

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

Необходимо унаследовать класс с шагами для работы с конкретной базой данных от CommonFixtureSteps. В конструкторе класса в sessionProperties необходимо указать параметры для подключения и после проинициализировать сессию. Пример:

                      
                      

Запросы SELECT рекомендуется выполнять на языке hql.

                      
                      

Запросы INSERT, UPDATE, DELETE и тд. рекомендуется выполнять на языке sql.

                      
                      

Динамическая схема

При необходимости использования различных схем, например, в рамках различных стендов, реализована возможность использования динамических схем. Для этого в схеме таблицы необходимо указать схему DYNAMIC_SCHEMA.

                      
                      

В параметрах подключения в таком случае необходимо указать схему

                      
                      

Таким образом запрос будет выполнен с той или иной схемой в зависимости от переданного параметра.

Схема по умолчанию

При выполнении некоторых запросов, в БД может срабатывать триггер, например, при выполнении insert, и будет вызываться функция. Выполнение такой функции может проходить в той схеме, к которой установлено подключение, т.е. без явной привязки к схеме. Для такой ситуации добавлена возможно установки подключения к конкретной схеме БД. В параметрах подключения необходимо указать схему по умолчанию

                      
                      

Параметры

- hibernate.excel.result.enabled - параметр необходим для прикрепления результата выборки из базы данных в формате Excel. По умолчанию: false.

Origami Kafka

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

Таблица совместимости SASL механизмов и Security Protocol

Sasl Mechanism PLAINTEXT SASL_PLAINTEXT SSL SASL_SSL — (нет SASL) PLAIN SCRAM-SHA-256 SCRAM-SHA-512 GSSAPI (Kerberos) OAUTHBEARER EXTERNAL

Properties

- setBootstrapServers() - список адресов Kafka-брокеров - setGroupId() - имя группы консьюмеров, которые работают вместе - addSecurityProtocol() - протокол безопасности для подключения клиента. Опционально с указанием regexp для названия стенда. При запуске тестов на стендах, для которых указан протокол, будет использован данный протокол, для запусков на остальных стендов будет использован протокол без указания regexp. - addSaslMechanism() - определяет, какой механизм аутентификации SASL (Simple Authentication and Security Layer) будет использоваться клиентом Kafka - setUsername() - имя пользователя для аутентификации - setPassword() - пароль пользователя для аутентификации - setClientId() - идентификатор приложения (client), зарегистрированного во внешней системе авторизации (например, OAuth-сервере) - setClientSecret() - секретный ключ (пароль), привязанный к этому clientId - setSaslOauthBearerTokenEndpoint() - это URL-адрес, по которому Kafka-клиент будет запрашивать OAuth 2.0 access token у внешнего сервера авторизации, указывая свои clientId, clientSecret. Этот токен затем используется для аутентификации с Kafka-брокером - setSaslOauthBearerJwksEndpoint() - это URL, по которому Kafka-брокер (или клиент) получает открытые ключи для проверки подписи JWT-токенов - setSslTruststoreLocation() - путь к truststore-файлу, в котором хранятся сертификаты доверенных центров сертификации (CA certificates) - setSslTruststorePassword() - пароль для доступа к truststore-файлу - setSaslKerberosServiceName() - определяет имя Kerberos-сервиса, под которым зарегистрирован Kafka-брокер в Kerberos KDC (Key Distribution Center) - setSslKeystoreLocation() - путь к файлу keystore (обычно формата JKS или PKCS12), в котором хранятся приватный ключ и сертификат клиента (или брокера) - setSslKeystorePassword() - пароль для доступа ко всему keystore-файлу (для его открытия) - setSslKeyPassword() - пароль, который защищает приватный ключ внутри keystore - setTopicPrefix() - префикс будет добавлен перед названием топика кафки. Необходим для обхода различий в названии топиков на разных стендах. - setTopicPostfix() - постфикс будет добавлен после названия топика кафки. Необходим для обхода различий в названии топиков на разных стендах - setRetryWaitingTime() - установка общего времени ожидания для попыток чтения - setRetryMaxAttempts() - установка попыток чтения - setRetryReadTimeout() - установка времени ожидания между попытками чтения

Origami RestAssured

Описание

Модуль для работы с HTTP-запросами на основе RestAssured.

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

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

Необходимо унаследовать класс CommonSteps от RestSteps. Необходимо использовать метод получения базового RequestSpecBuilder: getRequestSpecBuilder(). В CommonSteps реализуются методы "сборщики" базовых RequestSpecBuilder. Пример:

                      
                      

Далее необходимо унаследоваться от CommonSteps. Унаследованный класс должен содержать методы для работы с конкретным сервисом, который содержит методы получения RequestSpec для методов сервиса. Пример:

                      
                      

Далее необходимо унаследоваться от класса с общими шагами сервиса. Унаследованный класс будет содержать методы, доступные в тесте (методы, выполняющие get, post, put..., методы с проверками).

                      
                      

Методы

RestSteps содержит методы, для проверки статус кодов ответов. Примеры: Статус код 200:

                      
                      

Статус код 404:

                      
                      

Статус код 500:

                      
                      

Метод then(), доступный в классе с шагами проверок. Возвращает последний response для дальнейшей работы с ним.

                      
                      

Так же реализованы методы расширяющие стандартные у RestAssured, которые позволяют добавлять только not null значения в заголовки, параметры и тд.

                      
                      

Origami WebSocket

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

WsSteps

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

Необходимо унаследоваться от WsSteps с указанием в конструкторе параметров для подключения. Параметр withWss: true при https, иначе false. Пример:

                      
                      

Методы

Осуществление подписки на топик

                      
                      

Осуществление подписки на топик с маппингом результата на переданный класс

                      
                      

Осуществление отписки от топика и получение результата. В случае переданного класса вернется список из объектов переданного класса. В ином случае вернется List<String>

                      
                      

Методы для отписки от топика при получении сообщения или списка сообщений. При неполучении сообщения в течении 5 сек или заданного интервала тест будет провален.

                      
                      

Аналогичные приведенным выше методы, но с возможностью получения пустого результата (не найдено сообщение в топике)

                      
                      

Осуществление отписки от топика без получения результата.

                      
                      

WsTopic

Представляет собой Enum, который содержит названия топиков.

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

Необходимо унаследоваться от WsTopic. Пример:

                      
                      

Origami Selenide

Описание

Модуль для работы с Web UI на основе Selenide.

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

Параметры

- web.site.url - базовый URL-адрес - web.browser.name - браузер для использования. По умолчанию: chrome - web.timeout - таймаут в миллисекундах для провала теста, если условия все еще не выполнены. По умолчанию: 5000 - web.page.load.timeout - таймаут загрузки веб-страницы (в миллисекундах). По умолчанию: 10000

Origami IBM MQ

Подключение

Необходимо добавить зависимость в pom.xml в проекте:

                      
                      

Producer

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

Необходимо унаследоваться от IbmMqProducer с указанием в конструкторе параметров для подключения. Пример:

                      
                      

Методы

Отправка сообщения в топик

                      
                      

Browser

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

Необходимо унаследоваться от IbmMqBrowser с указанием в конструкторе параметров для подключения. Пример:

                      
                      

Методы

В результате выполнения метода вернется Message. Сообщение останется доступно для чтения из очереди.

                      
                      

Consumer

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

Необходимо унаследоваться от IbmMqConsumer с указанием в конструкторе параметров для подключения. Пример:

                      
                      

Методы

В результате выполнения метода вернется первый Message в очереди и сообщение будет более недоступно в очереди.

                      
                      

MessageHelper

MessageHelper содержит вспомогательные методы для работы с Message.

Методы

В результате выполнения метода из переданного Message будет извлечено сообщение в формате byte[] и возвращено String.