Как стать автором
Обновить

Комментарии 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
У нас сделано похоже, относительно нашей тестовой инфры. В опенсорс не успели только вынести.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий