Какие планы по объединению фреймворков для десктопа и микросервисов
Что проверяют
Судя по формулировке, в команде уже есть два отдельных фреймворка, и интервьюер хочет понять, умеете ли вы свести их без переписывания всего с нуля. Следом обычно спрашивают, что именно станет общим, а что останется раздельным.
Как отвечать
Главная мысль: объединяют не драйверы, а ядро. Управлять окном приложения и отправлять HTTP-запросы это разные задачи, одного инструмента на обе нет.
Общим имеет смысл сделать:
- язык и раннер: один стек, например Java с JUnit 5 или Python с pytest, чтобы тесты читали и правили одни люди;
- конфигурацию и данные: единый способ задать стенд, учётки и тестовые данные;
- API-клиенты: десктопные тесты готовят состояние через API сервисов, а через интерфейс проверяют только то, что действительно про интерфейс. UI-прогоны от этого ускоряются в разы;
- отчётность и CI: общий Allure, общий пайплайн, одинаковые правила ретраев и карантина нестабильных тестов.
Раздельными остаются адаптеры. Для Windows-приложений это FlaUI в .NET, pywinauto в Python или Appium с Windows-драйвером, который работает поверх давно не развивающегося WinAppDriver. Для Electron подойдёт Playwright с экспериментальной поддержкой Electron. Для сервисов REST Assured или httpx.
План миграции: аудит обоих фреймворков, выделение общего модуля, перенос по одному набору тестов с параллельным прогоном старой и новой версии, пока результаты не совпадут. Если похожего опыта у вас не было, так и скажите и объясните, как разобрались бы в текущем устройстве, прежде чем что-то предлагать.
Где спотыкаются
Предлагают Selenium для десктопа. Selenium управляет только браузерами, нативное окно он не видит.
Предлагают завернуть десктопное приложение в Docker. Для Windows-приложений с интерфейсом контейнеры не подходят, нужны отдельные машины или виртуалки с интерактивной сессией: агент CI, запущенный как служба, окон не увидит.
Переписывают всё разом. На месяцы команда остаётся без рабочей регрессии, а старый фреймворк всё это время приходится чинить параллельно.