Skip to content

Latest commit

 

History

History
441 lines (415 loc) · 50.2 KB

CHANGELOG.md

File metadata and controls

441 lines (415 loc) · 50.2 KB

Версия 3.6.0 (released 30.09.2023)

  • Обновлена версия библиотеки webdrivermanager до 5.4.1
  • Добавлен модуль chameleon-parallel-cucumber для поддержки параллельного выполнения тестов cucumber
  • В WebDriverFacade метод quit() закрывает WebDriver только для текущего потока. Добавлен новый метод quitAll(), который закрывает все драйверы, созданные для разных потоков. Его следует вызывать как destroy-method.
  • Добавлен интерфейс IDriverFacade, все взаимодействие с WebDriverFacade теперь рекомендуется выполнять через этот интерфейс
  • Добавлена возможность получения всех элементов страницы с учетом вложенности блоков, IPageObject.getSeleniumField() и IPageObject.getCollection()
  • Исправлено: при падении на не UI шагах, где браузер еще не запущен, происходит его запуск и создание скриншота с пустой страницы
  • Добавлена возможность переопределения кода, написанного в стандартный хуках фреймворка: интерфейсы IAssertsLifecycle и IStorageLifecycle
  • Исправлено: при использовании soft assertов не снимались скриншоты, если ошибки происходят чаще, чем раз в секунду
  • Добавлен вариант снятия скриншотов для избежания дублирования, если UI не менялся
  • Добавлены шаги ~SoftAssert "Прервать, если были ошибки" и ~SoftAssert "Выключить и прервать, если были ошибки", которые служат для управления прерыванием теста, если в блоке soft assert произошли ошибки. Без использования этих шагов выполнение теста происходит до конца или до появления первой ошибки, не включенной в блок soft assert.
  • Добавлена обработка исключительных ситуаций при ожидании элементов коллекции
  • Переработан механизм ожиданий элементов, добавлен служебный класс Waiting, поддерживающий различные сценарии ожидания
  • Доработан механизм генерации фабрик локаторов Selenium и работа с декораторами web-элементов

Версия 3.5.1 (released 31.07.2023)

  • В плагин добавлена поддержка IDEA 2023.1.4

Версия 3.5.0 (released 29.06.2023)

  • Изменено название фреймворка QualIT -> Chameleon
  • Пакеты переименованы ru.ibsqa.qualit -> ru.ibsqa.chameleon
  • Неймспейсы в XSD переименованы http://qualit.ibs-qa.ru -> http://chameleon.ibs-qa.ru
  • Переименованы классы:
  • QualITSpringExtension -> ChameleonSpringExtension
  • QualITFactory -> ChameleonFactory
  • Переработан механизм автокомплита, предлагающего имена компонентов при редактировании BDD-сценария и перетаскивании шагов из плагина в сценарий
  • Добавлен автокомплит компонентов в проекты DB и REST-API
  • Обновление Appium до 8.2.1

Версия 3.4.1 (released 29.05.2023)

  • Исправлена проблема с дублированием отчетов в случае запуска тестов через maven:
    • Необходимо наличие опции junit.platform.execution.listeners.deactivate=io.qameta.allure.junitplatform.AllureJunitPlatform в файле junit-platform.properties
      • Если на проекте подключен BDD фреймворк Cucumber, то также необходимо наличие файла cucumber.properties в ресурсных файлах проекта

Версия 3.4.0 (released 04.05.2023)

  • Изменен подход для операций сравнения и добавлена возможность создания кастомных операций сравнения Операции сравнения
  • Добавлена поддержка Java17
  • Добавлены контексты и автокомплит для шагов с базами данных
  • Сокращен вывод избыточной информации в лог при возникновении типовых ошибок
  • Исправлена ошибка, при которой не создавался отчет после JUnit тестов
  • Убран вывод в отчет информации о шагах при ожиданиях
  • Добавлено логирование коллекций в режиме Debug
  • Добавлен класс DelayUtils для шагов с ожиданием
  • В плагин добавлена возможность запускать тесты из вкладки 'Тесты'
  • В плагин добавлена возможность запускать тесты из вкладки 'Тэги' по выбранным тэгам
  • В плагин добавлена кнопка 'Показать команду запуска тестов для Maven'
  • В плагине исправлены ошибки при переносе шагов без аннотации @StepDescription из вкладки 'Действия' в сценарий
  • Для плагина добавлена поддержка версий IntelliJ IDEA до 2023.1.1 включительно
  • Дополнены примеры

3.3.1-SNAPSHOT (released 14.03.2023)

  • Исправлена ошибка для браузера Chrome 111

3.3.0-SNAPSHOT (released 27.01.2023)

  • Обновление Spring Framework до версии 5.3.24
  • Обновление Cucumber до версии 7.9.0
  • Обновление Selenium до версии 4.6.0 (изменения в конструкторах драйверов - DesiredCapabilities больше не поддерживаются)
  • В конфигурации драйверов методы set/getDesiredCapabilities заменены на set/getOptions
  • Обновление Appium до версии 8.2.0
  • Обновление webdrivermanager до версии 5.3.1
  • Актуализированы проектные тесты
  • Убрана поддержка браузера OPERA
  • Добавлена поддержка свободных конфигураций web-драйверов
  • Добавлен функционал Soft Assert
  • Добавлена аннотация @HiddenStep
  • Добавлены шаги для работы с alert-ами - AlertSteps
  • IFacadeSelenium в методе isFieldExists() теперь не анализируется отсутствие поля на странице, при отсутствии поля будет ошибка, для проверки отсутствия поля используйте метод isAbsent()
  • ElementLocatorImpl:
    • в методе findElements() таймаут теперь не применяется, при поиске отдельного элемента findElement() таймаут продолжает применяться
  • В WaitingUtils добавлен вариант ожидания в произвольных единицах времени
  • Во все классы шагов (наследующие AbstractSteps) добавлен служебный метод waiting(...), помогающий реализовать ожидание состояния; методы, реаилизующие интернационализацию сделаны статическими, при ожидании действие выполняется как минимум 1 раз
  • в классах ElementProxyHandler и ElementBlockProxyHandler:
    • общий функционал вынесен в AbstractElementHandler
    • учитывается ожидание по умолчанию, если у элемента не указано конкретное время
    • для полей коллекции не производится ожидание пропадания исключения StaleElementReferenceException (ожидание выполняется в слое шагов)
    • добавлен InvokeFieldException для проброса ошибок работы с элементами (например StaleElementReferenceException) в модули core, абстрагированные от конкретной имплементации полей
    • исправлена проблема при выполнении ожидания пропадания исключения StaleElementReferenceException
    • задержка между циклами сокращена 500 -> 200 мс
  • WebElementFacade:
    • метод isDisplayed() теперь не выполняет ожидание и возвращает моментальное значение видимости поля
    • новый метод waitToDisplayed() выполняет ожидание и теперь именно он используется при анализе загрузки страницы
    • добавлен метод isAbsent(), он возвращает признак отсутствия поля на странице не выполняя ожидание и без учета невидимости поля
    • добавлены индикативные интерфейсы фасадов - IFacadeWait и IFacadeAbsent
  • CoreFieldSteps, добавлено ожидание состояния в рамках таймаута элемента в следующих шагах (новое поведение применяется не для всех полей, а только в том случае, если поле поддерживает таймаут):
    • checkFieldValue
    • checkFieldExists
    • checkFieldNotExists
  • SeleniumFieldSteps, добавлено ожидание состояния в рамках таймаута элемента в следующих шагах:
    • fieldIsDisplayed, данный метод работает аналогично checkFieldExists
    • fieldIsNotExist переименовано в fieldIsNotDisplayed, данный метод работает аналогично checkFieldNotExists
    • fieldIsEnabled
    • fieldIsDisabled
    • checkFieldPlaceholder
    • fieldIsEditable
    • fieldIsNotEditable
    • checkFieldError
    • checkFieldAttribute
  • CollectionSteps, добавлено ожидание состояния в рамках таймаута в следующих шагах:
    • stepCheckItemCount
    • searchItemByIndex
    • searchItem
    • checkSorted
  • а также:
    • в шагах проверки количества элементов коллекции добавлена поддержка всего спектра операций сравнения, что расширяет универсальность этих шагов
    • методах getItems добавлены варианты для работы с ранее найденной коллекцией, а не только самостоятельный поиск по имени
  • Исправлены шаги выполняющие двойной и правый клик мышью
  • В плагин добавлено управление модулями QualIT на вкладке 'Модули'
  • В плагин добавлена поддержка многомодульных проектов
  • В плагин добавлен генератор проектов QualIT и возможность подключить QualIT из плагина
  • Дополнены примеры

3.2.1-SNAPSHOT (released 16.11.2022)

  • В шагах работы с коллекциями добавлена поддержка сравнения с пустыми значениями

3.2.0-SNAPSHOT (released 01.11.2022)

  • Исправлены проблемы в плагине
  • Расширение для Chrome переведено на новый формат манифеста
  • Поддержка функции вызова теста из теста
  • Добавлена возможность фильтрации автопоиска репозоториев
  • Исправлены проблемы с подключением к открытому браузеру в режиме подсветки элементов
  • Доработан табличный шаг сравнения значений полей (допускается пропуск столбца с операцией сравнения)

3.1.0-SNAPSHOT (released 01.06.2022-31.10.2022)

  • Изменено название фреймфорка Chameleon -> QualIT
  • Пакеты переименованы ru.appline.chameleon -> ru.ibsqa.chameleon
  • Переименованы классы:
    • ChameleonFeatureHooks -> DefaultFeatureHooks
    • ChameleonCucumberListener -> DefaultCucumberListener
    • ElementLocatorChameleonImpl -> ElementLocatorImpl
    • CustomElementLocatorFactory -> ElementLocatorFactoryImpl
    • ChameleonPageObject -> DefaultPageObject
    • ChameleonCollectionObject -> DefaultCollectionObject
  • Удалены классы:
    • ChameleonElementLocatorImpl
  • Работа с web выделена в отдельные модули
    • qualit-web (+ у стандартных элементов для web поменялся пакет, удален элемент TextBox - его аналог StaticText)
    • qualit-web-cucumber
    • использование в проектах qualit-selenium-* не предполагается, эти модули содержат общий функционал для тестирования UI и являются основой для других модулей
    • Из шагов PageSteps и PageStorySteps выделены шаги, применимые только в WEB-тестах и перенесены в модули qualit-web и qualit-web в классы BrowserSteps и BrowserStorySteps
  • Работа с winium выделена в отдельные модули
    • qualit-winium
    • qualit-winium-cucumber
  • Из модуля qualit-sap выделена в отдельный модуль qualit-sap-cucumber функциональность BDD
  • Изменен подход к работе с файлами репозиториев, теперь у корневого тега необходимо указывать аттрибут xmlns, один из вариантов:
  • Три типа репозиториев (endpoints, credentials, proxies) при тестировании API объединены в общий тип http://qualit.ibs-qa.ru/schema/api
  • Добавлено автоконфигурирование репозиториев элементов, в простых случаях нет необходимости описывать конфигурацию spring, файлы с описанием элементов ищутся в ресурсах проекта на основе namespace.
  • Добавлен универсальный загрузчик репозиториев из XML, отсутствует необходимость определять ILoaderXmlFactory, метаклассы ищутся автоматически.
  • Добавлен маппинг метаклассов на фасады элементов, для использования этого функционала возможны два варианта, которые в совокупности позволяют строить отношения много-ко-многим:
    • добавить аннотацию @ElementFacade перед описанием метакласса, параметр аннотации будет указывать на соответсвующий фасад.
    • добавить аннотацию @MetaElement перед описанием фасадного класса, при этом у аннотации несколько параметров: указание на соответствующий метакласс, тип драйвера (необязательный) и приоритет (необязательный).
  • Добавлено автоконфигурирование драйверов selenium, в простых случаях нет необходимости описывать конфигурацию spring.
  • Для работы с драйверами популярных браузеров подключена библиотека WebDriverManager, она используется, если в конфигурации драйвера не указан driverPath.
  • Добавлен упрощенный способ настройки конфигурации драйвера из кода java, для этого нужно имплементировать бин интерфейса IDriverConfigurationAppender.
  • Enum SupportedDriver переименован в WebSupportedDriver.
  • SeleniumDriverFactory переименован в WebDriverFactory.
  • В WebElementFacade
    • добавлены стандартные имплементации для getErrorMsg и getLabel
    • удален конструктор с параметрами
    • вместо него добавлен метод pushArguments
  • В AbstractCollection
    • удален конструктор с параметрами
    • вместо него добавлен метод pushArguments
  • В IElementFacadeMapper.getFacadeClassName() и Meta*.getFacadeClassName() добавлен параметр учитывающий тип драйвера.
  • Удален элемент TextBox в модуле web (вместо него используется аналог - StaticText, ранее было дублирование).
  • Изменены пакеты расположения и имена метаклассов
  • Изменены пакеты расположения фасадов
  • Переделана реализация получения скриншотов, поддерживается различная функциональность в зависимости от типа драйвера
  • Переделаны ICollectionSuperClassResolver и IPageSuperClassResolver: поддерживается различная функциональность в зависимости от типа драйвера
  • Переделан механизм декораторов, поддерживается различная функциональность в зависимости от типа драйвера
  • Переименован модуль интеграции jBehave и Jira: qualit-jira-jbehave
  • Доработана логика обработчиков шагов (изменен контракт интерфейса IStepListener, для получения свойств шага добавлен интерфейс IStepInformerManager и класс AspectUtils)
  • Во всех шагах нижнего уровня применена аннотация @TestStep. Изменен синтаксис плейсхолдера для параметров в аннотации @TestStep: добавлен знак доллара перед фигурными скобками. Пример: ${имя_параметра}
  • У методов, возвращающих аттачменты для системы построения отчетов, применена аннотация @TestAttachment
  • Для вывода аттачментов и переменных окружения в систему построения отчетов разработан интерфейс IReporterManager
  • Добавлены модули qualit-testit и qualit-testit-cucumber для интеграции с TMS "Test IT"
  • Добавлены модули qualit-allure и qualit-allure-cucumber для интеграции с системой построения отчетов Allure
  • Добавлен модуль qualit-bom, он может быть применен:
    • для управления версиями зависимостей maven, если подключен к целевому проекту в разделе dependencyManagement
    • для управления версиями зависимостей и плагинами maven, если подключен к целевому проекту как родительский pom

3.0.0-SNAPSHOT (released 25.10.2021-01.06.2022)

  • Использование Java 11 (артефакты собраны также Java 11)
    • В pom.xml файлах заменено <source>1.8</source><target>1.8</target> на <release>11</release>
  • Обновление Spring Framework с версии 5.0.5 до версии 5.3.19
  • Во всех проектах, кроме JBehave, обновлен JUnit 4 на JUnit 5
    • Все TestRunner классы переделаны
    • Заменено import static org.junit.Assert.*; на import static org.junit.jupiter.api.Assertions.*;
    • Обязательно создание package в каталоге test (например, ru.ibsqa.chameleon)
    • Обязательно наличие в каталоге resources, файла spring.xml, в котором указана конфигурация для сканирования пакетов
  • Проекты с Cucumber обновлены с версии 4 до версии 7
    • Все объекты cucumber переехали из неймспейса cucumber. в неймспейс io.cucumber
    • Аннотации переехали из import cucumber.api.java.ru.*; в import io.cucumber.java.ru.*;
    • Все файлы cucumber.xml переименованы в spring.xml
  • Обновлена версия генерируемого отчета Allure c 2.8.0 до 2.17.3
  • Обновление Selenium до версии 4.1.3
  • Обновление UIAutomation с версии 0.4.3 до версии 0.7.0
    • Исчезло слово Automation в большом количестве классов и методов
    • Новые элементы создаются через ElementBuilder
    • Методы UIA перестали возвращать исключение PatternNotFoundException
  • Изменение отчетности: во все проекты добавлена настройка ${project.basedir}/../.allure которая создает ".allure" каталог не в корне каждого проекта, а родительском каталоге всего проекта Chameleon, это ускоряет генерацию отчета при выполнении site в каждом проекте
  • Информация по зависимостям:
    • jakarta.annotation:jakarta-annotation-api нельзя обновлять выше 1.3.5 версии, так как там переезд в другие неймспейсы
    • jakarta.xml.bind:jakarta.xml.bind-api нельзя обновлять выше 2.3.3 версии, так как там переезд в другие неймспейсы
    • com.sun.xml.bind:jaxb-impl нельзя обновлять выше 2.3.6 версии, так как там переезд в другие неймспейсы
    • junit:junit версии 4.13.2 используется для проектов с jbehave в имени, текущая версия 4.8.3 не поддерживает более высокий junit. Ведется разработка над JBehave 5.0 с поддержкой JUnit 5.
  • Удален проект qualit-test-runner
  • В Selenium 4.1.3 и новых версиях FireFox WebDriver убрали поддержку старого движка MARIONETTE, в связи с чем минимальная поддерживаемая версия FireFox стала 60.
  • Удалены из файлов комментарии Created by и @Author, в главном pom.xml сделан раздел developers с описанием основных участников.
  • Замены в именах шагов и функций: Шаги @Step(Было --> стало): "выполнен переход к фрейму по умочанию" --> "выполнен переход к фрейму по умолчанию" "выполнется запись видео" --> "выполняется запись видео" "в гриде {0} выполнено нажтие на кнопку {1}" --> "в гриде {0} выполнено нажатие на кнопку {1}" "к БД выполнняется запрос "{queryName}" c параметрами: {params}" --> "к БД выполняется запрос "{queryName}" c параметрами: {params}" "к БД "{dbName}" выполнняется запрос "{queryName}" c параметрами: {params}" --> "к БД "{dbName}" выполняется запрос "{queryName}" c параметрами: {params}" "к БД выполнняется запрос "{queryName}"" --> "к БД выполняется запрос "{queryName}"" "к БД "{dbName}" выполнняется запрос "{queryName}"" --> "к БД "{dbName}" выполняется запрос "{queryName}"" "к БД выполнняется запрос "$queryName" c параметрами: $params" --> "к БД выполняется запрос "$queryName" c параметрами: $params" "к БД "$dbName" выполнняется запрос "$queryName" c параметрами: $params" --> "к БД "$dbName" выполняется запрос "$queryName" c параметрами: $params" "к БД выполнняется запрос "$queryName"" --> "к БД выполняется запрос "$queryName"" "к БД "$dbName" выполнняется запрос "$queryName"" --> "к БД "$dbName" выполняется запрос "$queryName"" "^к БД выполнняется запрос "([^\"])" c параметрами:$" --> "^к БД выполняется запрос "([^\"])" c параметрами:$" "^к БД "([^\"])" выполнняется запрос "([^\"])" c параметрами:$" --> "^к БД "([^\"])" выполняется запрос "([^\"])" c параметрами:$" "^к БД выполнняется запрос "([^\"])"$" --> "^к БД выполняется запрос "([^\"])"$" "^к БД "([^\"])" выполнняется запрос "([^\"])"$" --> "^к БД "([^\"])" выполняется запрос "([^\"])"$" Функции(Было --> стало): switсhToDefaultFrame() --> switchToDefaultFrame() creatElementListProxy(ClassLoader loader, InvocationHandler handler) --> createElementListProxy(ClassLoader loader, InvocationHandler handler) stepSwitсhToDefaultFrame() --> stepSwitchToDefaultFrame() switсhToDefaultFrame() --> switchToDefaultFrame() stepSwitсhToDefaultFrame() --> stepSwitchToDefaultFrame() deleteFeild(String fieldName) --> deleteField(String fieldName) createFeild(String fieldName, Variable value) --> createField(String fieldName, Variable value) deleteFeild(String fieldName) --> deleteField(String fieldName) createFeild(String fieldName, String value) --> createField(String fieldName, String value) getPatternCompliled() --> getPatternCompiled() getSpecifiactionByProxy(String proxyName) --> getSpecificationByProxy(String proxyName) getSpecifiactionByProxy(String proxyName) --> getSpecificationByProxy(String proxyName)
  • Информация по работе с зависимостями:
    • В тексте далее слово зависимость равнозначно слову библиотека, а слово проект равнозначно слову модуль.
    • View -> Tool Windows -> Dependencies иногда показывает пустоту, помогает перезапуск IDEA 1-2 раза. В этом же окне стоит только смотреть зависимости, но нажимать кнопку Upgrade или Upgrade All не стоит, так как это разрушит логически выстроенные на проекте вручную связи и обновит ненужные вещи, которые приведут проект в нерабочее состояние. Дополнительная информация в разделе Информация по зависимостям выше.
    • Добавлен плагин com.github.ekryd.sortpom:sortpom-maven-plugin который при вызове sortpom:sort приводит файл pom.xml к единой структуре и сортирует зависимости в алфавитном порядке.
    • При выполнении команды dependency:analyze, если в проекте из зависимости используются только аннотации, то такая зависимость будет помечена как неиспользуемая, но на этапе компиляции это вызовет ошибки.
    • При выполнении команды dependency:analyze можно получить информацию по зависимостям проект в виде списков Unused declared dependencies found и Used undeclared dependencies found. Used undeclared dependencies found - строка в выводе должна отсутствовать, если присутствует, то все зависимости, которые указаны под ней необходимо явно включить в проект. Unused declared dependencies found - этот список нужно внимательно изучать, для небольших модулей он будет пустым, а для модулей содержащих тесты, lombok аннотации, работу с БД, будут перечислены зависимости, которые называются транзитивными зависимостями. Транзитивные зависимости не влияют на код и на этапы компиляции, поэтому проект соберется без проблем, но во время выполнения такого проекта, функционал связанный с этими библиотеками, будет отсутствовать. Типовой список транзитивных зависимостей:
      • ru.ibsqa.chameleon:chameleon-log - логирование автотестов, только для проектов, содержащий раздел test
      • io.qameta.allure:allure-junit5 - для проектов, содержащий юнит тесты, не будет создаваться allure отчет
      • org.junit.jupiter:junit-jupiter-engine - для проектов, содержащий юнит тесты, тесты не будут запускаться
      • org.junit.platform:junit-platform-suite-engine - для проектов, содержащий TestRunner с аннотацией @Suite, или сьюиты не будут запускаться
      • org.projectlombok:lombok - для проектов, содержащий аннотации lombok
    • dependency:tree показывает дерево зависимостей, в которых можно изучать какие зависимости тянут зависимости каких версий. Удобно использовать для поиска старых версий библиотек, которые явно не указаны в pom проектов, но не ясно почему они находятся в общем списке dependencies проекта.
    • Для зависимостей расставлены настройки, по следующему принципу:
      • test - если зависимости нужны только на этапе запуска тестов.
      • provided - если зависимость точно будет принесена другой библиотекой. Например: в chameleon-core используется библиотека org.springframework:spring-beans, в chameleon-core-cucumber тоже она используется, но также используется и chameleon-core. Поэтому spring-beans в chameleon-core-cucumber можно пометить как provided, чтобы не добавлять в каждый jar при сборке одни и те же зависимости.
    • Некоторые зависимости тянут за собой огромное количество других зависимостей что негативно будет сказываться на размере дистрибутива Chameleon, скорость его сборки и времени выполнения тестов, так как используя команды clean test site происходит полная пересборка проекта, поэтому необходимо следить за увеличением списка зависимостей и не допускать ситуации, когда тянется куча зависимостей ради пары вызовов. На текущий момент dependency:tree в проекте Chameleon выдает результат (log output) в ~2700 СТРОК.
    • некоторые библиотеки перестали развиваться, соответственно, они тянут в проект старые версии библиотек, несмотря на то, что более новые версии у нас уже могут использоваться, в результате чего происходит дублирование библиотек. Принудительное обновление без подробного тестирования зависимостей таких библиотек может сломать их, поэтому такие библиотеки мы оставляем как есть, но желательно время от времени делать общее ревью на наличие новых версий или возможности удаления устаревшего функционала, если у него нет пользователей.
  • Изменен формат файла properties.xml (см. properties_rules.xsd), добавлена возможность валидации входных параметров, валидация производится при старте автотестов, добавлен вывод входных параметров в раздел environment Allure-отчета.

Версия 2.x.x

2.8.3-SNAPSHOT (released 26.07.2021-...)

  • Добавлен модуля chameleon-test-runner для запуска тестов через сервис

2.8.2-SNAPSHOT (released 20.07.2020-...)

  • В конструктор WebElementFacade добавлен параметр int waitTimeOut. Этот пункт затрагивает все классы-потомки WebElementFacade, к которым относятся кастомные элементы. При миграции у кастомного элемента следует удалить конструктор и пересоздать его, следуя подсказкам IDEA.
  • В конструктор AbstractCollection добавлен параметр int waitTimeOut
  • В конструктор AbstractCollectionIterator добавлен параметр int waitTimeOut
  • В конструктор BlockElement добавлен параметр int waitTimeOut
  • В конструктор ElementProxyHandler добавлен параметр int waitTimeOut
  • В конструктор ElementBlockProxyHandler добавлен параметр int waitTimeOut
  • В конструктор ElementListProxyHandler добавлен параметр int waitTimeOut
  • В классе PageFactoryUtils изменены параметры методов: createElement, createCollection, добавлены методы: getElementWaitTimeOut, getPageWaitTimeOut
  • В классе PageObjectLoader изменены параметры метода createBlockElement
  • В классе DefaultDriverManager убрана неиспользуемая константа DEFAULT_TIMEOUT
  • В табличных шагах работы с коллекциями теперь допускается не указывать значение в столбце operation (допускается также пропускать весь столбец). Если значение operation не указано, то подразумевается операция "равно" (это строгое равно, где наличие пробелов учитывается).
  • В тестах в Selenium в случае ошибки при соответствующих настройках снимается скриншот. Если при снятии скриншота происходила ошибка, то она перетирала исходную. Исправлено.

2.8.1-SNAPSHOT (released 08.06.2020-19.07.2020)

  • В конфигурацию драйвера и в драйвер добавлен параметр defaultWaitTimeOut (по умолчанию 10 сек). Это время ожидания действует, если у конкретного элемента в waitTimeOut не указано иное.
  • Параметр implicitlyWait пробрасывается из конфигурации в драйвер. implicitlyWait - минимальное время неявного ожидания элемента драйвером (по умолчанию 0 сек).
  • Ожидание переключения к окну браузера ориентировано на параметр defaultWaitTimeOut
  • Ожидание переключения к фрейму ориентировано на параметр defaultWaitTimeOut
  • Изменен шаг ^значение поля "([^\"])" сохранено в переменной "([^\"])" начиная с индекса "([^\"])"$ => ^в переменной "([^"])" сохранено значение поля "([^"])" начиная с индекса "([^"])"$

2.8.0-SNAPSHOT (released 20.02.2020-07.06.2020)

  • Удалены шаги: ^значение выражения "([^"])" равно "([^"])"$ ^значение выражения "([^"])" не равно "([^"])"$ ^значение выражения "([^"])" больше "([^"])"$ ^значение выражения "([^"])" больше или равно "([^"])"$ ^значение выражения "([^"])" меньше "([^"])"$ ^значение выражения "([^"])" меньше или равно "([^"])"$ ^значение выражения "([^"])" содержит значение "([^"])"$ ^значение выражения "([^"])" начинается с "([^"])"$ ^значение поля "([^"])" равно "(.)"$ ^значение поля "([^"])" не равно "([^"])"$ ^значение поля "([^"])" больше "([^"])"$ ^значение поля "([^"])" больше или равно "([^"])"$ ^значение поля "([^"])" меньше "([^"])"$ ^значение поля "([^"])" меньше или равно "([^"])"$ ^значение поля "([^"])" содержит значение "([^"])"$ ^значения полей без учета регистра:$ ^значение поля "([^"])" начинается с "([^"])"$ ^длинна значения поля "([^"])" не превышает "([^"])"$ ^длинна значения поля "([^"])" не меньше "([^"])"$ ^значение подсказки для поля "([^"])" равно "([^"])"$ ^значение атрибута "([^"])" поля "([^"])" равно "([^"])"$ ^значение атрибута "([^"])" поля "([^"])" содержит "([^"])"$ ^значение поля "([^"])" равно "([^"])", выполнять следующие шаги:$ ^значение поля "([^"])" не равно "([^"])", выполнять следующие шаги:$ ^значение выражения "([^"])" равно "([^"])", выполнять следующие шаги:$ ^значение выражения "([^"])" не равно "([^"])", выполнять следующие шаги:$ ^ожидается элемент коллекции "([^"])" в течение "([^"])" секунд с параметрами (по частичному вхождению):$ ^выбран элемент коллекции "([^"])" содержащий параметры:$ ^присутствует элемент коллекции "([^"])" с параметрами (по частичному вхождению):$ ^отсутствует элемент коллекции "([^"])" с параметрами (по частичному вхождению):$ ^количество элементов коллекции "([^"])" равно "([^"])" с параметрами (по частичному вхождению):$ ^в переменной "([^"])" сохранено количество элементов коллекции "([^"]*)" с параметрами (по частичному вхождению):$

  • Изменены шаги (добавлен средний столбец, указывающий операцию сравнения) ^значения полей:$ ^значения выражений:$ - первый столбец также переименован variable -> expression ^выбран элемент коллекции "([^"])" с параметрами:$ ^присутствует элемент коллекции "([^"])" с параметрами:$ ^отсутствует элемент коллекции "([^"])" с параметрами:$ ^количество элементов коллекции "([^"])" равно "([^"])" с параметрами:$ ^в переменной "([^"])" сохранено количество элементов коллекции "([^"])" с параметрами:$ ^ожидается элемент коллекции "([^"])" в течение "([^"]*)" секунд с параметрами:$

  • Изменен шаг ^значение поля "([^"])" сохранено в переменной "([^"])"$ => ^в переменной "([^"])" сохранено значение поля "([^"])"$

  • Добавлены шаги (предпоследний параметр содержит текстовое название операции сравнения): ^значение выражения "([^"])" ([^"]) "([^"])"$ ^значение поля "([^"])" ([^"]) "(.)"$ ^значение подсказки для поля "([^"])" ([^"]) "([^"])"$ ^значение атрибута "([^"])" поля "([^"])" ([^"]) "([^"])"$ ^значение выражения "([^"])" ([^"]) "([^"])", выполнять следующие шаги:$ ^значение поля "([^"])" ([^"]) "([^"]*)", выполнять следующие шаги:$

  • Предусмотрены операции сравнения: равно не равно содержит значение не содержит значение начинается с не начинается с оканчивается на не оканчивается на соответствует не соответствует равно игнорируя регистр не равно игнорируя регистр равно игнорируя пробелы не равно игнорируя пробелы по длине равно по длине не равно по длине больше по длине не меньше по длине меньше по длине не больше больше больше или равно меньше меньше или равно

  • Добавлен модуль chameleon-image: Модуль по поиску элементов приложения по сохраненному изображению

2.7.1-SNAPSHOT (released 19.12.2019-19.02.2020)

  • Добавлен функционал кастомных преобразователей из строки в объект (ChameleonTypeConverter)

2.7.0-SNAPSHOT (released 02.12.2019-14.12.2019)

  • Поддержка UI Automation
  • В плагине для отображения шагов необходимо указывать в каком представлении он будет отображаться(простой или экспертный) Во фреймворке это значение аттрибута expertView аннотации StepDescription

2.6.3-SNAPSHOT (released 19.07.2019-30.10.2019)

  • Отображение лога выполнения теста поверх всех окон
  • Упорядочено логирование. Описание
  • (Cucumber) Добавлена возможность вызова одного сценария из другого. Описание
  • Выполнен переход на Cucumber 4. Описание
  • Доработана функция снятия скриншотов
  • cucumber allure listener with logging Описание

2.5-SNAPSHOT (released 05.07.2019)

  • Изменена логика работы с коллекциями (тесты Хамелеона проходят, но если на проекте используются необычные вариации, то могут появиться глюки, надо проверять!)
  • Управление фреймами на уровне описания страниц, коллекций, полей (добавлен атрибут frames, несколько фреймов можно указывать через разделитель >)
  • Шаги для управления фреймами
  • Шаги для работы с окнами браузера
  • У IFacadeSelenium добавлены методы нажатия на правую кнопку мыши, наведения указателя мыши, прокрутки страницы/списка к элементу
  • Утилиты для выполнения ожидания события с таймаутом
  • Оптимизирован поиск элемента в коллекции
  • При переходе к предыдущей странице проверять, что страница загружена
  • Кукумберовские шаги для модуля windows
  • Добавлен атрибут customType для Page

2.1-SNAPSHOT (released 29.04.2019)

  • добавлена поддержка Selenoid. Описание
  • возможность снятия скриншотов FOR_EACH_STEP, BEFORE_AND_AFTER_EACH_STEP, FOR_FAILURES, DISABLED. Описание
  • созданы maven архетипы для популярных проектов. Описание
  • добавлен модуль для тестирования SAP. Описание