Анонс - генерация ui-тестов

Коллеги, привет!
Мы давно уже планировали генерировать тесты на основе метаданных, и вот - зацените первые результаты (осторожно, звук)!

На текущий момент фича в ранней бета-версии, активно разрабатывается и обрастает новыми возможностями. Уже реализовано следующее:

Описание компонентов страниц

Для каждой формы, панели, филдсета и реестра генерируется объектная модель, позволяющая писать код теста быстро и удобно. Пример сгенерированного описания закладки Сведения, расположенной в панели вкладок
формы Федеральный проект.Создание.Версия

Разверните для просмотра кода
public class BarsUpPageCmp_Сведения : ExtJsTab
{
    /// <summary>
    /// Форма редактирования поля []
    /// Идентификатор [f3085fe7-23d2-4616-bd84-47d2212b00c9]
    public FederalProjectCreationEditorPageObject Форма_редактирования_поля { get; internal set; }

    /// <summary>
    /// Многострочный редактор текста [Наименование:]
    /// Идентификатор [f457b9d0-dc2f-4300-9900-15d9f02691f7]
    /// Поле сущности: Версия проекта.Наименование
    /// </summary>
    public ExtJsFormField<string> Наименование_ { get; internal set; }

    /// <summary>
    /// Однострочный редактор текста [Код проекта]
    /// Идентификатор [2c94e9a2-bccd-4d5e-86f6-d94d2cdf9e02]
    /// Поле сущности: Версия проекта.Код проекта
    /// </summary>
    public ExtJsFormField<string> Код_проекта { get; internal set; }

    /// <summary>
    /// Скрытое поле [Идентификатор]
    /// Идентификатор [6454b5d3-3ee1-424b-801f-5c05e35239a3]
    /// Поле сущности: Версия проекта.Идентификатор
    /// </summary>
    public ExtJsFormField<long?> Идентификатор { get; internal set; }

    /// <summary>
    /// Однострочный редактор текста [Краткое наименование:]
    /// Идентификатор [6306d4d3-a395-42db-ac58-ad3e5d9c78ca]
    /// Поле сущности: Версия проекта.Краткое наименование проекта
    /// </summary>
    public ExtJsFormField<string> Краткое_наименование_ { get; internal set; }

    /// <summary>
    /// Выбор из справочника [Код проекта (по БК)]
    /// Идентификатор [2165e661-a278-4bb7-88ce-c3f0359cc956]
    /// Поле сущности: Версия проекта.Код по БК
    /// </summary>
    public BarsUpSelectorField<NationalProjectModel> Код_проекта__по_БК_ { get; internal set; }

    /// <summary>
    /// Поле ввода даты [Дата начала]
    /// Идентификатор [99a0045b-ae3d-4a6c-8ed6-dd3ae837d929]
    /// Поле сущности: Версия проекта.Дата начала
    /// </summary>
    public ExtJsFormField<DateTime?> Дата_начала { get; internal set; }

    /// <summary>
    /// Поле ввода даты [Дата окончания]
    /// Идентификатор [cffdfd99-a787-4305-84b2-343f7f48db6c]
    /// Поле сущности: Версия проекта.Дата окончания
    /// </summary>
    public ExtJsFormField<DateTime?> Дата_окончания { get; internal set; }

    /// <summary>
    /// Выпадающий список (перечисление) [Вид проекта]
    /// Идентификатор [8f7abfa6-3a31-4196-a3f6-99ad1ffca114]
    /// Поле сущности: Версия проекта.Вид проекта
    /// </summary>
    public BarsUpEnumField<ProjectKindEnum> Вид_проекта { get; internal set; }

    /// <summary>
    /// Флажок [Отображать в реестре проектов]
    /// Идентификатор [65883673-483c-4d3c-962b-0c7d0559bcbb]
    /// Поле сущности: Версия проекта.Отображать в реестре проектов
    /// </summary>
    public ExtJsFormField<bool?> Отображать_в_реестре_проектов { get; internal set; }
}

Кликер, обходящий реестры, включенные меню

Для каждого пункта меню генерируется тест, проверяющий возможность перехода на соответствующий адрес, и прокликивающий открывшийся реестр

  • клик на кнопку Обновить если она есть
  • получение списка записей
  • обход списка записей и открытие каждой записи в настроенном в реестре редакторе
  • если редакторов несколько (как на реестра ФП, например), то будет протестировано открытие всех редакторов

В будущем планируется добавить и прокликивание редакторов

  • открытие всех табов
  • открытие всех узлов панели навигации
  • прокликивание вложенных реестров

Таким образом уже в этом году все проекты получат инструмент дополнительной проверки работоспособности приложения перед обновлением.

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

image

7 Лайков

просто Пушка-бомба :bomb: