Мы начинаем структурировать наши тесты пользовательского интерфейса e2e, используя стек Appium / Cucumber / Ruby.
Поскольку мы используем Xamarin Forms, мы, очевидно, хотим протестировать iOS и Android.
В конце мы хотим загрузить тесты в App Center для запуска на нескольких устройствах, получить отчеты и т. Д.
Огурец обычно использует эту структуру каталогов:
Е2Е
---- ОСОБЕННОСТИ
-------- ПОДДЕРЖКА
------------ env.rb
------------ hooks.rb
-------- STEP_DEFINITIONS
------------ home_steps.rb
-------- Home.feature
Проблема начинается с файла env.rb, который содержит все требуемые возможности Appium, и они совершенно разные или iOS и Android.
1 - Как мы могли бы практично переключать env.rb с одной платформы на другую?
Функции и определения шагов будут в основном одинаковыми для обеих платформ, но со временем будут иметь различия, например, при тестировании поведения кнопки возврата в Android.
2 - Можем ли мы создать какую-то глобальную переменную PLATFORM и создать условия, например, IF PLATFORM = ANDROID THEN ... в наших определениях шагов и функциях?
Другой подход заключается в том, чтобы полностью отделить исходный код для каждой платформы, примерно так:
Е2Е
---- IOS
-------- ОСОБЕННОСТИ
------------ ПОДДЕРЖКА
---------------- env.rb
---------------- hooks.rb
------------ STEP_DEFINITIONS
---------------- home_steps.rb
------------ Home.feature
---- ANDROID
-------- ОСОБЕННОСТИ
------------ ПОДДЕРЖКА
---------------- env.rb
---------------- hooks.rb
------------ STEP_DEFINITIONS
---------------- home_steps.rb
------------ Home.feature
При таком подходе код будет намного чище без условий для каждой платформы, но, очевидно, недостатком является то, что нам придется писать все тесты дважды.
3 - Какой подход, по вашему мнению, лучше?
Спасибо