Рефакторинг проекта
by Антон Е

1. UI
1.1. Чтобы не вводить больших изменений в структуре UI, группировку по модулям оставляем прежней (по смыслу). Описать структуру в WiKi и приложить ссылку в проект.
1.2. В части UI нужно удалить дубли оставшиеся после прошлого рефакторинга. Также структурировать PO классы (перенести локаторы в нужные классы, выделить методы в Actions, использовать PageObjectBase).
1.3. Структура PageObject: BasePageObject -> PageObject -> PageObjectActions (действия на странице). При необходимости вводятся хелперы.
1.3.1. Содержимое класса BasePageObject
1.3.1.1. Общий конструктор
1.3.1.2. Экземпляр PageObjectActions
1.4. Наименования карт оставляем прежним (наименование содержит ID формы, в случае его отсутствия размещается в соответствующем пакете с наименованием отражающим суть (именуется по смыслу)).
1.5. Провести рефакторинг в классах базовых элементов (Grid, Combobox и т.д.), удалить дубли, отладить, привести к единой структуре.
1.6. Провести рефакторинг общего класса PageObjectActions (удалить дубли, привести к единой структуре). Добавить закрытие алерта с адаптером для Красноярска.
2. API
2.1. Завершить перенос API-классов из модулей (старая реализация) в контролёры (новая реализация).
2.2. Зафиксировать структуру: Actions-классы содержат вспомогательные атомарные действия (поиск значения в результатах выполнения метода, поиск или создание сущности и проверка её существования, поиск и удаление сущности и проверка её удаления, поиск и изменение сущьности и проверка внесённых изменений). Паттерн - Builder. При необходимости реализации сложной логики она размещается в Helper-классе.
2.2.1. Содержание Action-класса
2.2.1.1. Поиск значения в результатах выполнения метода.
2.2.1.2. Поиск или создание сущности и проверка её существования.
2.2.1.3. Поиск и удаление сущности и проверка её удаления.
2.2.1.4. Поиск и изменение сущьности и проверка внесённых изменений.
3. Helpers
3.1. Выделить хелперы с базовыми действиями в структуре (Пациент, АПЛ, КВС, АРМ). Только такие хелперы можно использовать в своих хелперах. Аналогично для UI.
3.1.1. Струтура Helper классов
3.1.1.1. Базовые (не используют методы из других хелперов).
3.1.1.2. Вспомогательные (могут использовать методы из базовых хелперов).