Как скачать файл с устройства Firebase Test Lab
Я пытаюсь загрузить файлы с устройства Google Firebase Test Lab. Эти файлы создаются при выполнении инструментальных тестов. Файлы скриншоты. Мне нужно скачать скриншоты, потому что последующие прогоны тестов будут сравнивать экраны с этими скриншотами. Таким образом, скриншоты являются основой для визуального обнаружения изменений.
Я пытался найти способ подключиться к Обозревателю файлов устройств устройства Firebase Test Lab. Но, похоже, нет способа получить к нему удаленный доступ.
Поскольку Firebase Test Lab очищает устройство после теста, я полагаю, что единственный способ добиться того, что я хочу сделать, - это добавить код в тест, чтобы куда -нибудь отправить файлы.
Одно из мест, куда я хотел бы отправить файлы, - это хранилище Google Cloud, в котором хранятся результаты тестов. Из приведенной ниже документации кажется, что это целевое назначение области хранения:
После того как Test Lab завершит тестирование вашего приложения, вы можете просмотреть результаты тестирования в консоли Firebase или в хранилище Google Cloud в вашем проекте. Вы также можете добавить команду gsutil к команде оболочки, показанной выше, чтобы скопировать данные результатов теста на локальный компьютер. Чтобы узнать больше, см. Анализ результатов тестирования Firebase Lab Lab. ( Документация Firebase)
Для этого подхода, как мои инструментальные тесты выдвигают файлы в корзину? Откуда он знает, какое ведро использовать? Какой API для передачи файлов?
Другой подход, который я мог бы использовать, - это делать скриншоты из инструментальных тестов лаборатории тестирования Firebase, которые позволят получить скриншоты в корзину. Но я вижу две потенциальные проблемы.
Первая проблема заключается в том, что скриншоты библиотеки скриншотов могут отличаться от скриншотов, сделанных из UiAutomation.takeScreenshot(). Другими словами, базовый снимок экрана делается с помощью библиотеки снимков экрана, но при последующих запусках я бы делал снимок экрана с помощью UiAutomation.takeScreenshot() и сравнивал их. Поскольку библиотеки разные, их скриншоты могут отличаться. Возможным решением было бы сделать оба снимка экрана с библиотекой снимков экрана. Но тогда мне нужно было бы выяснить, как читать скриншот обратно в память, чтобы я мог выполнять свои операции сравнения. Сегодня я читаю их как растровые изображения.
Для этого подхода, как мои инструментальные тесты будут загружать скриншоты библиотеки скриншотов как растровые изображения?
Вторая проблема - выяснить, как загрузить скриншоты из корзины на мой локальный компьютер. Пользовательский интерфейс для корзины не имеет кнопки загрузки. Он имеет только кнопку загрузки:
Для этого подхода, как мне загрузить файлы из корзины на локальный компьютер, чтобы я мог добавить их в каталог ресурсов, который может прочитать мой инструментальный тест?
2 ответа
Хорошо, я надеюсь, что я записал все ваши вопросы ниже:
По умолчанию все файлы из /sdcard/Screenshots копируются с устройства в корзину GCS, к которой у вас есть доступ. Вы можете записать свои собственные файлы во время теста в ту же папку на устройстве. Тестовая лаборатория подберет их и скопирует в ведро.
Если вы хотите загрузить дополнительные папки и загрузить их локально, я могу порекомендовать flank, у которого есть опция под названием "каталоги для извлечения", чтобы указать несколько каталогов. Он уже предоставляет многое из того, что вы пытаетесь достичь вручную, и многое другое.
Если вы не хотите использовать фланг, gcloud также имеет эту опцию, но помещает файл в корзину GCS. Нет загрузки на локальный компьютер.
Пользовательский интерфейс облачного хранилища выглядит довольно ограниченным. Это позволяет загружать отдельные файлы, но не папки в виде почтового индекса. Используйте gsutil для рекурсивной загрузки файлов:
gsutil -m cp -r gs://path/to/bucket/folder path/to/local/folder
По умолчанию Test Lab предоставляет местоположение корзины GCS для вас, куда она копирует файлы, но вы можете использовать свою собственную корзину и местоположение, например, с помощью клиента gcloud:
gcloud firebase test android run --results-bucket=gs://my-bucket --results-dir=path/to/folder
Еще пара битов информации для вас. Вам не нужно использовать фланг, чтобы использовать --directories-to-pull
, Этот флаг доступен в тестовой лаборатории gcloud firebase test android run
Команда - см. https://cloud.google.com/sdk/gcloud/reference/firebase/test/android/run для получения дополнительной информации.
Кроме того, вы, безусловно, можете загружать файлы из пользовательского интерфейса Cloud Storage - просто нажмите на имя файла, и он спросит вас, где вы хотите сохранить файл на локальном диске (или, в зависимости от типа файла, вам, возможно, придется щелкнуть правой кнопкой мыши). и выберите "Сохранить ссылку как...").