Как войти в 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. Это не просто, но определенно выполнимо.