Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как обойти капчу при автоматизированном тестировании iOS react native (+firebase) приложении

java
ios
Теги: #<Tag:0x00007f7b6486e520> #<Tag:0x00007f7b6486e390>

(Михайло Мiкусь) #1

Проблема (Вопрос) заключается в том, что при авторизации приложения идет автоматический редирект на гуглКапчу (особенности авторизации пользователя в firebase).
Капча появляяєтся тольно на iOS версии приложения.
Может сталкивался кто с проблемой в такой же конфинурации?
Какой совет можно дать девам для создания QA билда в котором капча би не вспливала?
Детали на SO:


(Vatslau) #2

http://antigate.com/


(Михайло Мiкусь) #3

спасибо… как вариант… но такое использовать буду в последнюю очередь…
надеюсь существуєт какойто особий способ авторизации, имплементировав которий, дев сможет создать QA билд без капчи.


(Denys Kozachok) #4

На моем проекте дев сделал параметр для логина.

Я логинюсь через пост запрос
При отправке пост запроса я добавляю параметр
register_nonce 5XQwcTvSFT
И соответственно капча игнорируется, я сохраняю куки сессии из респонса и дальше все открываю нужные мне страницы.


(Михайло Мiкусь) #5

Спасибо… Но здесь немного не то
У нас UI test для нейтивной апликухи под ios. (Appium, ios, android)
Ваше решение подойдет для API или WEB тестирования но для нейтив UI mobile неочень
Или, возможно я неправильно вас понял?


(Vatslau) #6

для норм дева это 5 минут работы
if debug:
blah-blah-blah


(Михайло Мiкусь) #7

спасибо) а можно поконкретнее?)


(Vatslau) #8

дайте код приложения джава\котлин
по свифту вряд ли помогу
но принцип одинаковый - капча вызывается методом
его можно обернуть в if
и выключить


(Михайло Мiкусь) #9

как я уже писал, приложение написано на React-Native (код на JS и интерпретиреется на iOS используя XCode и Android используя AndroidStudio)
На андроид версии билда капчи нету… только при iOS.
Место где я встретил джава код - ето инициализация MainApplication для андроид билда:

   private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
       @Override
       public boolean getUseDeveloperSupport() {
           return BuildConfig.DEBUG;
       }

       @SuppressLint("MissingPermission")
       @Override
       protected List<ReactPackage> getPackages() {
           return Arrays.<ReactPackage>asList(
                   new MainReactPackage(),
                   new ReactVideoPackage(),
                   new LottiePackage(),
                   new RNFirebasePackage(),
                   // add/remove these packages as appropriate
                   new RNFirebaseAuthPackage(),
                   new RNFirebaseFirestorePackage(),
                   new RNFirebaseStoragePackage(),
                   new SplashScreenReactPackage(),
                   new RNDeviceInfo(),
                   new ImagePickerPackage(),
                   new VectorIconsPackage(),
                   new RCTMGLPackage()
           );
       }

       @Override
       protected String getJSMainModuleName() {
           return "index";
       }
   };

   @Override
   public ReactNativeHost getReactNativeHost() {
       return mReactNativeHost;
   }

   @Override
   public void onCreate() {
       super.onCreate();
       FirebaseApp.initializeApp(this);
       SoLoader.init(this, /* native exopackage */ false);
   }

Все остальное делается из react-native кода
Сам процес авторизации юзера использует google auth из библиотеки firebaseSDK
Приложение капчу специально нигде не вызывает.
Редирект на капчу идет автоматически при первом реквесте firebaseSDK


(Vatslau) #10

первая ссылка…
странно что РАЗРАБОТЧИК этого не знает или не хочет знать /ивестигейтить
тем более потом нужно это будет вырезать из продакшен кода перед сборкой скорее всего


(Михайло Мiкусь) #11

Спасибо. Ето уже предлагал… думают)