Комментарии 14
Как раз собрался переводить на Compose новые экраны на одном из проектов, очень полезная информация, кратко и по делу.)
Поделитесь опытом кастомизации тем для приложения, и, возможно, какими-нибудь полезными расширениями, которые постоянно используются. (ʘ‿ʘ)
Есть одно но - после создания вью пула rv все равно ощутимо (т.е. замеряемо и это повторяемо) быстрее чем lazy lists. Но на 1.5.0 про пводительность конечно заметно поднялась.
А зачем фрагменты с compose? Вроде же вся прелесть в том, что у нас вообще одна view на все приложение и в теории это должно работать быстрее чем старая система.
Фрагменты с Compose нужны для более поэтапной миграции. Даже сейчас большие приложения - это далеко не single activity. У нас есть множество как Activity, так и фрагментов.
Одновременно переезжать и по вью-стеку и по стеку навигации может быть неподъёмно.
Да, не сингл, согласен, но так ещё и навигацию тянуть придется... Кстати, а как вопрос с Deeplinks обстоит? Активити то одна.
Если не трогать "контейнеры" - activity/fragment - навигация не меняется, пока мы явно не захотим её упростить.
У NavComponent Compose примерно так же, как и раньше https://developer.android.com/jetpack/compose/navigation#deeplinks
Расскажите как вы тестируете такие экраны?
Примерно так же, как и экраны на View.
Добавляется AndroidComposeTestRule
+ делается PageObject на основе SemanticsNodeInteractionsProvider
.
У нас свой тестовый фреймворк, в котором коллеги это поддержали.
А почему именно Android? Обычного недостаточно?
Зависит от ситуации. Для чисто Compose-экранов может быть достаточно.
Т.к. мы мигрируем с View - нам удобно поправить в E2E тестах только те экраны, которые переписаны на Compose. И для этого подходит AndroidComposeTestRule
(чтобы получить PageObject от Activity, а не передавая Composable функцию в тест напрямую).
Похожим образом работает Kakao и Kaspresso
Есть где-нибудь пример такого запуска? Как решили проблему с гибридными тестами, где есть activity и экраны с compose?
Готового публичного примера нет. А в чем видите проблему?
запускается MainActivity, а compose находится на другом экране и нет доступа к page object элементам compose
Можно посмотреть пример в Kakao
У нас сделано похоже, относительно нашей тестовой инфры. В опенсорс не успели только вынести.
Миграция приложения на Jetpack Compose