Проблема при выделении текста в TextView на Android 15+
При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.
Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.
Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
😱1
Я заставил мое приложение работать в офлайне - архитектурный сдвиг
Моё приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки.
А когда я отключил ниточки, марионетка рухнула.
И я принял решение. Я переделаю своё приложение так, чтобы оно работало только в offline режиме.
Никаких оправданий. Никаких сообщений «попробуйте ещё раз позже». Только локальная архитектура.
И этот выбор изменил всё в моём подходе к разработке приложений.
Статья: https://apptractor.ru/info/articles/ya-zastavil-moe-prilozhenie-rabotat-v-oflayne-arhitekturnyy-sdvig.html
Платформа: разработка
Моё приложение на самом деле не было приложением. Оно было просто марионеткой, которой управлял интернет, дергая за все ниточки.
А когда я отключил ниточки, марионетка рухнула.
И я принял решение. Я переделаю своё приложение так, чтобы оно работало только в offline режиме.
Никаких оправданий. Никаких сообщений «попробуйте ещё раз позже». Только локальная архитектура.
И этот выбор изменил всё в моём подходе к разработке приложений.
Статья: https://apptractor.ru/info/articles/ya-zastavil-moe-prilozhenie-rabotat-v-oflayne-arhitekturnyy-sdvig.html
Платформа: разработка
❤1
Memo Notes - приложение для ведения заметок
Memo Notes — это лёгкое и интуитивно понятное приложение для создания заметок, разработанное для устройств iOS, призванное помочь пользователям записывать и организовывать свои мысли, задачи и идеи. Благодаря понятному и удобному интерфейсу Memo Notes позволяет быстро создавать, редактировать и эффективно управлять заметками. Работайте продуктивно благодаря таким функциям, как удобное редактирование, свайп для быстрого обновления и удобное использование на всех ваших устройствах.
Memo Notes на GitHub: https://github.com/KhubaibKhan4/MemoNotes
Платформа: iOS
⭐️: 16
Memo Notes — это лёгкое и интуитивно понятное приложение для создания заметок, разработанное для устройств iOS, призванное помочь пользователям записывать и организовывать свои мысли, задачи и идеи. Благодаря понятному и удобному интерфейсу Memo Notes позволяет быстро создавать, редактировать и эффективно управлять заметками. Работайте продуктивно благодаря таким функциям, как удобное редактирование, свайп для быстрого обновления и удобное использование на всех ваших устройствах.
Memo Notes на GitHub: https://github.com/KhubaibKhan4/MemoNotes
Платформа: iOS
⭐️: 16
👍1
Разбираемся с existential container в Swift
Existential container - это структура данных в рантайме, которая хранит значение типа, скрытого за протоколом. Он появляется там, где мы используем название протокола в качестве типа переменной или аргумента функции. С помощью existential container реализован динамический вызов методов протокола, а также управление жизненным циклом внутреннего значения типа.
Статья: https://habr.com/ru/articles/949268/
Платформа: iOS
Existential container - это структура данных в рантайме, которая хранит значение типа, скрытого за протоколом. Он появляется там, где мы используем название протокола в качестве типа переменной или аргумента функции. С помощью existential container реализован динамический вызов методов протокола, а также управление жизненным циклом внутреннего значения типа.
Статья: https://habr.com/ru/articles/949268/
Платформа: iOS
👍1
Погружение в JNI: проблемы и решения при взаимодействии между JVM и нативным кодом
Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Статья: https://habr.com/ru/companies/yandex/articles/948570/
Платформа: Android
Меня зовут Геннадий Денисов, я руковожу одной из команд разработки мобильного Яндекс Браузера для Android. Недавно в рамках одного проекта мы интегрировали С++‑код в мобильное приложение Браузера. В этой статье я поделюсь основными нюансами работы с Java Native Interface (JNI), инструментами для упрощения разработки и подробностями нашего подхода.
Статья: https://habr.com/ru/companies/yandex/articles/948570/
Платформа: Android
👍1
Гайд по File Templates: как шарить шаблоны с однотипным кодом
Расскажу, как можно шарить
Статья: https://habr.com/ru/companies/tbank/articles/949658/
Платформа: Android
Расскажу, как можно шарить
File Templates для своей команды, чтобы облегчить жизнь другим и сэкономить немного времени. Причем коллегам ничего самостоятельно не придется настраивать: подтянутый из git-а репозиторий с кодом все сделает сам. Эта статья — бонус к трем предыдущим, в которых я рассказывал, как уменьшить написание boilerplate-кода. Статья: https://habr.com/ru/companies/tbank/articles/949658/
Платформа: Android
👍1
Apple тихо переписывает iOS, и это не Swift или Objective-C
Apple переписывает ключевые части iOS на Rust для обеспечения безопасности и производительности. Это не убивает Swift, но означает, что фундамент Swift меняется. Меньше сбоев, лучшая безопасность и, возможно, начало будущего, основанного на Rust, для разработчиков iOS.
Статья: https://apptractor.ru/info/articles/apple-tiho-perepisyvaet-ios-i-eto-ne-swift-ili-objective-c.html
Платформа: iOS
Apple переписывает ключевые части iOS на Rust для обеспечения безопасности и производительности. Это не убивает Swift, но означает, что фундамент Swift меняется. Меньше сбоев, лучшая безопасность и, возможно, начало будущего, основанного на Rust, для разработчиков iOS.
Статья: https://apptractor.ru/info/articles/apple-tiho-perepisyvaet-ios-i-eto-ne-swift-ili-objective-c.html
Платформа: iOS
🤯5👍2🔥1
Valiutchik - курсы обмена валют в Беларуси
Valiutchik - это приложение для Android, помогающее найти лучшие курсы обмена валют в Беларуси. Приложение позволяет быстро загрузить лучшие курсы обмена валют в некоторых городах Беларуси. Нажав на элемент списка, можно найти ближайшие отделения банков с лучшими курсами на карте. Длительное нажатие на карту с валютой позволяет скопировать курс обмена в буфер обмена, например, для вставки в калькулятор. Информация о курсах обмена предоставляется MyFin.
Это небольшой проект, призванный стать полигоном для самых новых и ярких разработок, полностью написан на Kotlin, использует Koin, корутины, чистую архитектуру, Room, AndroidX Benchmark и модульные тесты. Любой вклад приветствуется.
Valiutchik на GitHub: https://github.com/fobo66/valiutchik-android
Платформа: Android
⭐️: 11
Valiutchik - это приложение для Android, помогающее найти лучшие курсы обмена валют в Беларуси. Приложение позволяет быстро загрузить лучшие курсы обмена валют в некоторых городах Беларуси. Нажав на элемент списка, можно найти ближайшие отделения банков с лучшими курсами на карте. Длительное нажатие на карту с валютой позволяет скопировать курс обмена в буфер обмена, например, для вставки в калькулятор. Информация о курсах обмена предоставляется MyFin.
Это небольшой проект, призванный стать полигоном для самых новых и ярких разработок, полностью написан на Kotlin, использует Koin, корутины, чистую архитектуру, Room, AndroidX Benchmark и модульные тесты. Любой вклад приветствуется.
Valiutchik на GitHub: https://github.com/fobo66/valiutchik-android
Платформа: Android
⭐️: 11
👍1👎1
Почему большие проекты Swift утыкаются в стену (и как пробиться сквозь нее)
С большими кодовыми базами Swift трудно работать - медленная сборка, нестабильное тестирование, сложные графы. Мы подробно разберёмся, почему инструментарий Apple испытывает трудности при масштабировании и как команды могут преодолеть эти трудности без React Native или Bazel.
Статья: https://apptractor.ru/info/articles/pochemu-bolshie-proekty-swift-utykayutsya-v-stenu-i-kak-probitsya-skvoz-nee.html
Платформа: iOS
С большими кодовыми базами Swift трудно работать - медленная сборка, нестабильное тестирование, сложные графы. Мы подробно разберёмся, почему инструментарий Apple испытывает трудности при масштабировании и как команды могут преодолеть эти трудности без React Native или Bazel.
Статья: https://apptractor.ru/info/articles/pochemu-bolshie-proekty-swift-utykayutsya-v-stenu-i-kak-probitsya-skvoz-nee.html
Платформа: iOS
👍2🤔1
Swift Explorer - глубокий анализ кода Swift
Swift Explorer - инструмент для быстрого исследования и анализа Swift Intermediate Representation (IR), созданного компилятором LLVM, и сгенерированного ассемблерного кода.
Что дает:
• Глубокое понимание кода: Разработчики могут видеть, как код Swift преобразуется в LLVM IR и код ассемблера, что помогает им лучше понимать оптимизацию и низкоуровневое поведение.
• Расширенная отладка: Просмотр LLVM IR и ассемблерного кода может помочь выявить проблемы производительности или трудноотслеживаемые ошибки в исходном коде.
• Образование и обучение: Ценный образовательный инструмент для изучения компиляторов и того, как различные языковые конструкции преобразуются в промежуточное представление и код ассемблера.
• Оптимизация: Помогает выявить и оптимизировать фрагменты кода, которые неэффективно компилируются, предоставляя информацию из LLVM IR и кода ассемблера.
• Сравнительный анализ: Позволяет сравнить, как разные подходы или версии кода генерируют различный IR и ассемблерный код, облегчая выбор оптимальных практик программирования.
Swift Explorer на GitHub: https://github.com/heroesofcode/swift-explorer
Платформа: iOS
⭐️: 9
Swift Explorer - инструмент для быстрого исследования и анализа Swift Intermediate Representation (IR), созданного компилятором LLVM, и сгенерированного ассемблерного кода.
Что дает:
• Глубокое понимание кода: Разработчики могут видеть, как код Swift преобразуется в LLVM IR и код ассемблера, что помогает им лучше понимать оптимизацию и низкоуровневое поведение.
• Расширенная отладка: Просмотр LLVM IR и ассемблерного кода может помочь выявить проблемы производительности или трудноотслеживаемые ошибки в исходном коде.
• Образование и обучение: Ценный образовательный инструмент для изучения компиляторов и того, как различные языковые конструкции преобразуются в промежуточное представление и код ассемблера.
• Оптимизация: Помогает выявить и оптимизировать фрагменты кода, которые неэффективно компилируются, предоставляя информацию из LLVM IR и кода ассемблера.
• Сравнительный анализ: Позволяет сравнить, как разные подходы или версии кода генерируют различный IR и ассемблерный код, облегчая выбор оптимальных практик программирования.
Swift Explorer на GitHub: https://github.com/heroesofcode/swift-explorer
Платформа: iOS
⭐️: 9
❤2👍1
•
(iOS En) Code along with the Foundation Models framework•
(iOS En) SwiftUI Pro Components Collection - Build Amazing iOS Apps Faster!•
(iOS En) SwiftUI WebView reloaded: adding a "View Original" feature•
(iOS En) Convert SwiftUI Views into Multi-Page PDF File•
(iOS En) Is MVVM a bad architecture for SwiftUI?•
(iOS En) iOS 26 Custom Menu Using SwiftUI•
(And Ru) Роболектрик-скриншот-тесты на платформе Android•
(And Ru) Поймай меня, если сможешь: как обнаружить Root и Frida•
(And En) Optimize your app battery drain using Android Vitals wake lock metric•
(And En) Threads vs. Kotlin Coroutines vs. Dispatchers•
(And En) Everything About Context Parameters In Kotlin (Super Cool New Feature!)•
(Crs En) Make your UI Beautiful and Adaptive on each platform (Compose Multiplatform•
(Dev Ru) Кто такой сеньор глазами тимлида•
(Dev Ru) Как нейросети обещали ускорить тестирование, а сделали только хуже•
(Dev Ru) Строим продукт на основе AI•
(Dev En) REST API Design for Mobile Apps: A Complete Guide•
(Dev En) Your First AI Agent in Kotlin•
(Dev En) How to Build Advanced AI Agents – Course for Beginners (LiveKit, Exa, LangChain)Прошлогодние видео:
•
(iOS Ru) Ускоряем SwiftUI с Observable•
(iOS Ru) Как укротить виджеты в супераппе?•
(iOS Ru) UICollectionViewLayout с самого начала•
(iOS Ru) UITableView с различными типами ячеек•
(And Ru) Размер имеет значение: как измерить и уменьшить вес Android-приложения•
(And Ru) Установка Android-приложений от доисторических времен до наших дней•
(Crs Ru) React Native перевернул игру•
(Crs Ru) Темная сторона изолятов в Dart•
(Dev Ru) Интероп – неизбежность в больших системах: C и C++, JNI, WinAPIPlease open Telegram to view this post
VIEW IN TELEGRAM
👍1
Миграция на SPM: что мы выиграли и что потеряли
В этом году мы решили сменить менеджер зависимостей и мигрировать с CocoaPods на SPM. Результаты оправдали ожидания, хотя и сложности на этом пути, конечно, были. В статье расскажу про проблемы, с которыми мы столкнулись в процессе, и предупрежу, на что стоит обратить внимание, чтобы не повторить наши ошибки.
Статья: https://habr.com/ru/companies/tuturu/articles/948276/
Платформа: iOS
В этом году мы решили сменить менеджер зависимостей и мигрировать с CocoaPods на SPM. Результаты оправдали ожидания, хотя и сложности на этом пути, конечно, были. В статье расскажу про проблемы, с которыми мы столкнулись в процессе, и предупрежу, на что стоит обратить внимание, чтобы не повторить наши ошибки.
Статья: https://habr.com/ru/companies/tuturu/articles/948276/
Платформа: iOS
👍1
Загрузка данных во ViewModel: рекомендации и Flow-based архитектура
Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать.
Эта статья показывает мой субъективный взгляд на паттерны загрузки данных. Взгляд, отточенный опытом и восстановлением после недавних операций (одно из которых еще продолжается).
Рассматривайте статью как снапшот моих навыков и знаний в 2025 году.
Статья: https://habr.com/ru/articles/950494/
Платформа: Android
Дискуссии об архитектуре Android часто перерастают в жаркие споры, вызывая и восторг, и резкую критику. Писать на такие темы непросто, и именно поэтому это стоит делать.
Эта статья показывает мой субъективный взгляд на паттерны загрузки данных. Взгляд, отточенный опытом и восстановлением после недавних операций (одно из которых еще продолжается).
Рассматривайте статью как снапшот моих навыков и знаний в 2025 году.
Статья: https://habr.com/ru/articles/950494/
Платформа: Android
👍1
Analytiks - события, пользователи и данные
Analytiks — это мощная библиотека для Android, разработанная для упрощения интеграции аналитики путём централизации нескольких аналитических сервисов в едином унифицированном интерфейсе. Вместо управления несколькими SDK и их различными API, Analytiks предлагает единый способ отслеживания событий, идентификации пользователей и управления аналитикой во всём приложении.
Analytiks на GitHub: https://github.com/aminekarimii/analytiks
Платформа: Android
⭐️: 54
Analytiks — это мощная библиотека для Android, разработанная для упрощения интеграции аналитики путём централизации нескольких аналитических сервисов в едином унифицированном интерфейсе. Вместо управления несколькими SDK и их различными API, Analytiks предлагает единый способ отслеживания событий, идентификации пользователей и управления аналитикой во всём приложении.
Analytiks на GitHub: https://github.com/aminekarimii/analytiks
Платформа: Android
⭐️: 54
Kotlin QA: как перейти с Java и писать тесты в 2 раза быстрее
С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году, язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования.
Многие команды QA инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования.
Статья: https://habr.com/ru/companies/otus/articles/950864/
Платформа: Android
С момента официального объявления Kotlin как предпочтительного языка для Android‑разработки в 2017 году, язык стремительно завоевал популярность не только в мобильной сфере, но и в автоматизации тестирования.
Многие команды QA инженеров сталкиваются с выбором: остаться на привычном Java‑стеке или перейти на Kotlin. В этой статье мы рассмотрим некоторые ключевые различия, преимущества и практические аспекты перехода на Kotlin в контексте автоматизации тестирования.
Статья: https://habr.com/ru/companies/otus/articles/950864/
Платформа: Android
👎1🔥1
SQLiteData - быстрая и легкая замена SwiftData с SQL и CloudKit
SQLiteData — это быстрая и лёгкая замена SwiftData от Point-Free, включающая SQL и синхронизацию с CloudKit (и даже шаринг CloudKit), построенная на основе популярной библиотеки GRDB.
Пример:
Этот пример извлекают элементы из внешнего хранилища данных с использованием типов данных Swift, и автоматически отслеживается SwiftUI, поэтому представления пересчитываются при изменении внешних данных. При этом SQLiteData работает непосредственно с SQLite и может использоваться откуда угодно, включая UIKit, модели @Observable и многое другое.
SQLiteData на GitHub: https://github.com/pointfreeco/sqlite-data
Платформа: iOS
⭐️: 1.1K
SQLiteData — это быстрая и лёгкая замена SwiftData от Point-Free, включающая SQL и синхронизацию с CloudKit (и даже шаринг CloudKit), построенная на основе популярной библиотеки GRDB.
Пример:
@FetchAll
var items: [Item]
@Table
struct Item {
let id: UUID
var noscript = ""
var isInStock = true
var notes = ""
}
Этот пример извлекают элементы из внешнего хранилища данных с использованием типов данных Swift, и автоматически отслеживается SwiftUI, поэтому представления пересчитываются при изменении внешних данных. При этом SQLiteData работает непосредственно с SQLite и может использоваться откуда угодно, включая UIKit, модели @Observable и многое другое.
SQLiteData на GitHub: https://github.com/pointfreeco/sqlite-data
Платформа: iOS
⭐️: 1.1K
Мой iPhone 8 отказывается умирать: теперь это OCR-сервер на солнечном питании
Большинство людей после апгрейда закидывают свои старые iPhone в ящик. А вот автор статьи превратил свой старый iPhone 8 в OCR-сервер на солнечных батареях, используя фреймворк Apple и зарядную станцию EcoFlow River 2 Pro. Он месяцами напролёт работает в режиме 24/7, обрабатывая тысячи изображений на полностью автономном питании. За год с лишним сервер обработал 83 418 запросов на распознавание текста (OCR) и 48 ГБ изображений, используя только фреймворк Apple Vision и возобновляемую энергию.
Статья: https://habr.com/ru/companies/ruvds/articles/950814/
Платформа: iOS
Большинство людей после апгрейда закидывают свои старые iPhone в ящик. А вот автор статьи превратил свой старый iPhone 8 в OCR-сервер на солнечных батареях, используя фреймворк Apple и зарядную станцию EcoFlow River 2 Pro. Он месяцами напролёт работает в режиме 24/7, обрабатывая тысячи изображений на полностью автономном питании. За год с лишним сервер обработал 83 418 запросов на распознавание текста (OCR) и 48 ГБ изображений, используя только фреймворк Apple Vision и возобновляемую энергию.
Статья: https://habr.com/ru/companies/ruvds/articles/950814/
Платформа: iOS
❤1
Почему loadKoinModules и unloadKoinModules в Koin могут ломать ваши зависимости и как этого избежать
В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах.
Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку:
Статья: https://habr.com/ru/articles/951778/
Платформа: Android
В Android-проектах Koin остаётся одной из самых популярных DI-библиотек, особенно в MVP/MVI и Compose-приложениях. Она проста в настройке, гибкая и хорошо работает в больших кодовых базах.
Но многие команды, стремясь к модульности и тестопригодности, начинают активно использовать функции loadKoinModules() и unloadKoinModules(). И здесь разработчики часто натыкаются на странную ошибку:
org.koin.core.error.NoBeanDefFoundException: No definition found for …
Статья: https://habr.com/ru/articles/951778/
Платформа: Android
Derived Data: 5 ошибок iOS-разработчиков
Папка Derived Data (производные данные) — один из важнейших каталогов, используемых iOS-разработчиком. Хотя вы не работаете с ней напрямую, Xcode активно использует её для кэширования информации и оптимизации разработки.
Тем не менее, у iOS-разработчиков есть множество возможностей максимально эффективно использовать Derived Data. Будь то удаление файлов для оптимизации сборки или просмотр информации о каталоге, все эти действия могут улучшить работу разработчиков. Давайте рассмотрим 5 ошибок, которые совершают iOS-разработчики.
Статья: https://apptractor.ru/info/articles/derived-data.html
Платформа: iOS
Папка Derived Data (производные данные) — один из важнейших каталогов, используемых iOS-разработчиком. Хотя вы не работаете с ней напрямую, Xcode активно использует её для кэширования информации и оптимизации разработки.
Тем не менее, у iOS-разработчиков есть множество возможностей максимально эффективно использовать Derived Data. Будь то удаление файлов для оптимизации сборки или просмотр информации о каталоге, все эти действия могут улучшить работу разработчиков. Давайте рассмотрим 5 ошибок, которые совершают iOS-разработчики.
Статья: https://apptractor.ru/info/articles/derived-data.html
Платформа: iOS
ShadowGlow - улучшенные тени для Jetpack Compose
ShadowGlow — это библиотека Jetpack Compose с широкими возможностями настройки, разработанная для отображения теней у элементов. Создавайте потрясающие визуальные эффекты глубины, свечения и динамики с помощью таких функций, как параллакс, управляемый гироскопом, и плавная анимация дыхания.
Фичи:
🎨 Сплошные и градиентные тени
📐 Настройка форм
🎭 Различные стили размытия
🌌 Эффект параллакса с гироскопом
🌬 Эффект пульсирующей анимации
🚀 Простота использования
📱 Совместимость со светлыми и темными темами
ShadowGlow на GitHub: https://github.com/StarkDroid/compose-ShadowGlow
Платформа: Android
⭐️: 17
ShadowGlow — это библиотека Jetpack Compose с широкими возможностями настройки, разработанная для отображения теней у элементов. Создавайте потрясающие визуальные эффекты глубины, свечения и динамики с помощью таких функций, как параллакс, управляемый гироскопом, и плавная анимация дыхания.
Фичи:
🎨 Сплошные и градиентные тени
📐 Настройка форм
🎭 Различные стили размытия
🌌 Эффект параллакса с гироскопом
🌬 Эффект пульсирующей анимации
🚀 Простота использования
📱 Совместимость со светлыми и темными темами
ShadowGlow на GitHub: https://github.com/StarkDroid/compose-ShadowGlow
Платформа: Android
⭐️: 17
Укрощаем Android UI-тесты на Compose: как Page Object спас нас от рутины
Вы когда-нибудь тратили слишком много драгоценного времени на поиск нужного testTag в иерархии Compose Screen? А потом еще полдня чинили тесты после каждого чиха в UI? Или, может быть, несколько недель ждали, пока в дизайн-систему добавят недостающий тег или семантику, чтобы вообще начать писать свой UI-тест? Если вы хоть на один вопрос ответили «Да», эта статья для вас. Давайте навсегда покончим с этой рутиной и займемся более креативными задачами!
Статья: https://habr.com/ru/companies/raiffeisenbank/articles/950474/
Платформа: Android
Вы когда-нибудь тратили слишком много драгоценного времени на поиск нужного testTag в иерархии Compose Screen? А потом еще полдня чинили тесты после каждого чиха в UI? Или, может быть, несколько недель ждали, пока в дизайн-систему добавят недостающий тег или семантику, чтобы вообще начать писать свой UI-тест? Если вы хоть на один вопрос ответили «Да», эта статья для вас. Давайте навсегда покончим с этой рутиной и займемся более креативными задачами!
Статья: https://habr.com/ru/companies/raiffeisenbank/articles/950474/
Платформа: Android