Как войти в Facebook в лаборатории тестирования Firebase?

Я тестирую свое приложение в Firebase Test Lab, но вначале моему приложению требуется логин на Facebook, а эмулятор Firebase останавливается на Facebook Web Login.

Я попытался записать "Эспрессо-тест" и ввел свои учетные данные для входа в FB Test, но не сработал, поскольку он не записывает символы в TextView в WebView Facebook Login.

Есть какой-нибудь способ поставить мои тестовые учетные записи Facebook и продолжить тест на эмуляторах Firebase?

Мне кажется странным, что Firebase создал хорошую тестовую среду, но вы не можете поставить свои учетные данные Fb для теста. (Кстати, я не могу удалить Логин Facebook, потому что приложение основано на информации Fb)

1 ответ

По состоянию на 9 июня 2020 года роботизированный скрипт Firebase Test lab по-прежнему не поддерживает вход в facebook. Об этом говорится здесь,

Примечание. Записи сценариев Robo не фиксируют ваши действия за пределами протестированного приложения. Например, вход через Facebook, Twitter и другие социальные приложения не записывается.

Таким образом, вы не можете указать робо-роботу ввести ваши тестовые учетные данные facebook на странице входа в sdk через робо-скрипты.

Хакерский трюк

Однако я придумал хитрый трюк, чтобы обойти вход в facebook. Я добавляю скрытую функцию в альфа-сборку (убедитесь, что она не отправлена ​​в производство), описанную ниже:

  • Когда текст версии на экране входа был нажат 10 раз, я показал диалог с EditText для ввода токена доступа к facebook вручную.
  • Из консоли разработчика facebook я создал тестового пользователя и получил его токен доступа.
  • Я записал робо-скрипт из плагина Firebase Assistant в студии Android.
  • После ввода токена доступа в диалоговом окне я выполнил функцию, которую вызываю, когда получаю токен доступа из facebook sdk.
  • Я создал новый пакет приложений и отправил его в робо-тест вместе с записанным робот-скриптом.

Вот и все. Теперь вход в facebook отключен. Вот пример кода,

    var fbTokenInputDialogVisibiltyCountDown = 0
    binding.textViewVersion.setOnClickListener {
        if (fbTokenInputDialogVisibiltyCountDown < 10) {
            fbTokenInputDialogVisibiltyCountDown = fbTokenInputDialogVisibiltyCountDown.inc()
            return@setOnClickListener
        }
        val inputFbTokenBinding =
            ViewInputDialogBinding.inflate(LayoutInflater.from(requireContext()))
        AlertDialog.Builder(requireContext())
            .setView(inputFbTokenBinding.root)
            .setNegativeButton("Cancel", null)
            .setPositiveButton("Submit") { _, _ ->
                val fbAccessToken =
                    inputFbTokenBinding.editTextToken.value() // extension function show error for invalid input
                if (fbAccessToken.isNotEmpty()) onGetFacebookAccessToken(fbAccessToken)
            }
            .show()
        fbTokenInputDialogVisibiltyCountDown = 0
    }

Я надеюсь, что это помогает. Дайте знать, если у вас появятся вопросы?

Вероятно, лучший путь - изучить, как использовать UI Automator для доступа к WebView для управления его элементами, предоставляемыми API-интерфейсами доступа Android. Это не просто, но определенно выполнимо.

Написание тестов для приложения для Android, которое входит в Facebook: UIAutomator не может заполнить текст в поле имени пользователя Facebook

Другие вопросы по тегам