Рассказал HRше, что их в IT называют "хрюши". Она не знала. Расскажет ли она теперь остальным?
👍6
https://chromewebstore.google.com/detail/%D0%BE%D0%B1%D0%BE%D0%B9%D1%82%D0%B8-%D0%B7%D0%B0%D0%BC%D0%B5%D0%B4%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-youtube/khpkadmigccakicajloljbckokgnknkp надеюсь я ошибаюсь, но… Уверен, сейчас как грибы полезут мошеннические расширения. "Активация через Телегу" для меня выглядит как способ эту самую Телегу увести.
Проверять не буду и вам не советую.
Проверять не буду и вам не советую.
Google
Chrome Web Store
Add new features to your browser and personalize your browsing experience.
👍4
Если вы пишите автотесты под Android и это не (или не только)
Когда-то давно Google предлагал утилиту на java
Возможно, вы уже нашли для себя замену. А если нет, то можно уже и не искать особо. Выложил в публичный доступ утилиту, которую написал для себя. Точнее, её исходники: https://gitea.myachin.xyz/umnik/android-ui-viewer
Espresso, вам нужен инструмент для разбора разметки экрана и получения информации о вьюхах.Когда-то давно Google предлагал утилиту на java
uiautomatorviewer, но ей пришёл кирдык.Возможно, вы уже нашли для себя замену. А если нет, то можно уже и не искать особо. Выложил в публичный доступ утилиту, которую написал для себя. Точнее, её исходники: https://gitea.myachin.xyz/umnik/android-ui-viewer
Gitea: Git with a cup of tea
android-ui-viewer
👍6
Сегодня, в 19:00 всей Францией запускаем бумажные самолётики из окон!
🤡3👍1
Почему я никогда не использую для написания автотестов не нативные фреймворки платформы.
Вот статья на Хабре от 2013 года: https://habr.com/ru/companies/intel/articles/205864/
Комментарии:
- чем это лучше роботиума?
- Работал и работаю с calabash. Из плюсов — Ruby и кросс-платформенность. Cucumber и BDD тоже можно отнести к плюсам. Тесная интеграция с Xamarin, в будущем calabash станет плагином к Frank. Ну и конечно же активное сообщество, частые коммиты и релизы.
Сейчас это смешно читать, а тогда кто-то всерьёз считал, что использовать левые фреймворки - это хорошо и правильно.
Вот статья на Хабре от 2013 года: https://habr.com/ru/companies/intel/articles/205864/
Комментарии:
- чем это лучше роботиума?
- Работал и работаю с calabash. Из плюсов — Ruby и кросс-платформенность. Cucumber и BDD тоже можно отнести к плюсам. Тесная интеграция с Xamarin, в будущем calabash станет плагином к Frank. Ну и конечно же активное сообщество, частые коммиты и релизы.
Сейчас это смешно читать, а тогда кто-то всерьёз считал, что использовать левые фреймворки - это хорошо и правильно.
Хабр
Автоматизация тестирования Android приложений с помощью UIAutomator
Источник фото Тестирование — это очень важный процесс во время разработки приложений. В случае Android, тестирование приложения следует производить на большом количестве устройств, в связи с тем, что...
https://issuetracker.google.com/issues/127100532 с 2019 года Гугл просят добавить поддержку JUnit5. Если считаете, что
+1 играет роль, то влепите. Ну невозможно же уже. Как минимум параметризация тестов в JUnit5 намного лучше. В 4 она прям совсем базовая.Когда-то давно, когда я только вкатывался в автоматизацию и в программирование в целом, у меня очень часто что-то не работало, хотя мне казалось, что код написан правильно. Нет, всякий раз это были мои ошибки, а не библиотек или чего-то ещё.
Прошло несколько лет. Каждый, сука, раз, это ошибки библиотек теперь, а не мои.
Я не могу запустить тест из командной строки правильным способом:
Получаю, что OK, 0 тестов выполнено. Хотя раньше всё работало.
А проблема в том, что в Google сломали такой способ запуска ПАРАМЕТРИЗИРОВАННЫХ тестов. Не параметризированные работают по-прежнему.
https://issuetracker.google.com/issues/321752267
Судя по приоритетам и важности, исправления будем ждать долго.
Прошло несколько лет. Каждый, сука, раз, это ошибки библиотек теперь, а не мои.
Я не могу запустить тест из командной строки правильным способом:
adb shell am instrument -w -e class xyz.myachin.letsappsbeupdated.rustore.tests.RuStoreDescriptionTest#whatsNewTestRuStore xyz.myachin.letsappsbeupdated.test/androidx.test.runner.AndroidJUnitRunnerПолучаю, что OK, 0 тестов выполнено. Хотя раньше всё работало.
А проблема в том, что в Google сломали такой способ запуска ПАРАМЕТРИЗИРОВАННЫХ тестов. Не параметризированные работают по-прежнему.
https://issuetracker.google.com/issues/321752267
Судя по приоритетам и важности, исправления будем ждать долго.
👍6
Если вы ловите исключение
то это не вы дурак. Это опять всё сломали в Андирод 15. Причём ещё в дев превью.
https://github.com/protocolbuffers/protobuf/issues/19371
java.lang.IllegalAccessError: class com.google.protobuf.GeneratedMessageV3 tried to access method 'boolean com.google.protobuf.CodedInputStream.shouldDiscardUnknownFields()' (com.google.protobuf.GeneratedMessageV3 is in unnamed module of loader java.net.URLClassLoader @4cd1c1dc; com.google.protobuf.CodedInputStream is in unnamed module of loader 'app')то это не вы дурак. Это опять всё сломали в Андирод 15. Причём ещё в дев превью.
https://github.com/protocolbuffers/protobuf/issues/19371
GitHub
java.lang.IllegalAccessError: class com.google.protobuf.GeneratedMessageV3 tried to access method 'boolean com.google.protobuf…
What version of protobuf and what language are you using? Version: protobuf-lite: version: 3.0.1 Language: java What operating system (Linux, Windows, ...) and version? Windows 11 What runtime / co...
👍2
Мой баг дня (записки тестировщика)
Если вы ловите исключение java.lang.IllegalAccessError: class com.google.protobuf.GeneratedMessageV3 tried to access method 'boolean com.google.protobuf.CodedInputStream.shouldDiscardUnknownFields()' (com.google.protobuf.GeneratedMessageV3 is in unnamed module…
Исправлено в
Android Build Gradle версии 8.6.1This media is not supported in your browser
VIEW IN TELEGRAM
Решил я посмотреть итоги года в Я.Музыке, пока ждал жену. А там рядом кружок танцев для детей и десяток мам ждут своих. Я не знал, что итоги будут с музыкой, которая у меня была на полную громкость. Ткнул в кнопку и как оно включилось.
Наверное не надо в фон 18+ ставить из прослушанного. И не надо по умолчанию звук включать.
Наверное не надо в фон 18+ ставить из прослушанного. И не надо по умолчанию звук включать.
👍9🤡6
This media is not supported in your browser
VIEW IN TELEGRAM
Вот хочу освоить ЯП со встроенной поддержкой создания GUI. Решил взять Flutter, потому что стильно, модно, молодёжно. Написал программу, которая разбирает экран Android на элементы: https://gitea.myachin.xyz/umnik/android-ui-viewer
Недавно вернулся к автотестам на проекте и потребовалось улучшить программу:
- поддерживать несколько подключенных устройств
- обновлять экран без необходимости перезапуска программы
Поправил код, создал бранч https://gitea.myachin.xyz/umnik/android-ui-viewer/src/branch/new-features Меня уже устраивает, как он работает. Но не нравится, что вьюхи у меня списком, надо бы дерево.
Разобрался, как разбирать деревья, как их строить. Смотрю, что во Флаттер есть РОДНОГО для отрисовки деревьев. Рекомендуется использовать
Три дня я, прошу прощения, проебался с ним. Я чувствовал себя идиотом. Я читал документацию, читал примеры из официальной статьи, но не мог победить баг - при прокрутке списка он не прокручивается, а просто исчезает сверху, см. видео (заодно видно, какие красивости добавил)
Продолжение в комментарии.
Недавно вернулся к автотестам на проекте и потребовалось улучшить программу:
- поддерживать несколько подключенных устройств
- обновлять экран без необходимости перезапуска программы
Поправил код, создал бранч https://gitea.myachin.xyz/umnik/android-ui-viewer/src/branch/new-features Меня уже устраивает, как он работает. Но не нравится, что вьюхи у меня списком, надо бы дерево.
Разобрался, как разбирать деревья, как их строить. Смотрю, что во Флаттер есть РОДНОГО для отрисовки деревьев. Рекомендуется использовать
TreeSliver https://api.flutter.dev/flutter/widgets/TreeSliver-class.htmlТри дня я, прошу прощения, проебался с ним. Я чувствовал себя идиотом. Я читал документацию, читал примеры из официальной статьи, но не мог победить баг - при прокрутке списка он не прокручивается, а просто исчезает сверху, см. видео (заодно видно, какие красивости добавил)
Продолжение в комментарии.
👍4
ГОТОВО ДЛЯ РАБОТЫ!
Почти тысяча багов первого и второго приоритета на Flutter, для которых есть шаги воспроизведения, нет (не предложено) обходных решений, которые воспроизводятся на любой платформе, а не на конкретных, для которых нет фикса и при этом они не относятся к accessibility
https://github.com/flutter/flutter/issues?q=is%3Aopen+label%3Aframework+label%3Ap1%2Cp2+-label%3Ateam-accessibility+label%3A%22has+reproducible+steps%22+-label%3A%22workaround+available%22+-label%3A%22waiting+for+PR+to+land+%28fixed%29%22+-label%3Aplatform-ios+-label%3Aplatform-web+-label%3Aplatform-androidПочти тысяча багов первого и второго приоритета на Flutter, для которых есть шаги воспроизведения, нет (не предложено) обходных решений, которые воспроизводятся на любой платформе, а не на конкретных, для которых нет фикса и при этом они не относятся к accessibility
👍10
Обновил приложение для разбора экрана Android для тех, кто пишет не на Espresso и не на Appium. Ну или кому просто интересно посмотреть на структуру приложения.
Изменения (не то, чтобы вы знали, что было в прошлый раз):
- Фьючеры и асинхронность
- Может быть подключено сколько угодно устройств, начиная с ни одного - эти ситуации обрабатываются
- Отдельная кнопка для перечитывания экрана заново
- Имитация дерева вьюх. Сделаю нормальное дерево, когда Google баг исправит: https://t.me/mydaybug/501
Изменения (не то, чтобы вы знали, что было в прошлый раз):
- Фьючеры и асинхронность
- Может быть подключено сколько угодно устройств, начиная с ни одного - эти ситуации обрабатываются
- Отдельная кнопка для перечитывания экрана заново
- Имитация дерева вьюх. Сделаю нормальное дерево, когда Google баг исправит: https://t.me/mydaybug/501
Telegram
Мой баг дня (записки тестировщика)
Вот хочу освоить ЯП со встроенной поддержкой создания GUI. Решил взять Flutter, потому что стильно, модно, молодёжно. Написал программу, которая разбирает экран Android на элементы: https://gitea.myachin.xyz/umnik/android-ui-viewer
Недавно вернулся к автотестам…
Недавно вернулся к автотестам…
👍3
Screencast_20250210_192541.webm
1.7 MB
Подлянки от РуСтора:
- Если не хочешь ничего устанавливать из списка рекомендаций - запрос всё равно будет каждый раз при новом запуске. Ну, может после десятка-двадцатка-сотни раз уйдёт, но я не дождался
- Тротлинг загрузок! Негоже открывать приложение больше Х раз - ловишь блокировку. Теперь надо ждать, пока с меня ограничение не снимут
Вам запрещено запускать приложение, просто вдумайтесь в это.
- Если не хочешь ничего устанавливать из списка рекомендаций - запрос всё равно будет каждый раз при новом запуске. Ну, может после десятка-двадцатка-сотни раз уйдёт, но я не дождался
- Тротлинг загрузок! Негоже открывать приложение больше Х раз - ловишь блокировку. Теперь надо ждать, пока с меня ограничение не снимут
Вам запрещено запускать приложение, просто вдумайтесь в это.
🤡4
О локализационном тестировании. В оригинале Discard и Cancel, так что переведено правильно, как бы, но нам очевидно, что неправильно.
Проблема в том, что для русского и других языков здесь нужен другой строковой ресурс, а не общий. То есть, к примеру, в приложении есть куча этих discard и cancel и для них есть ресурс R.string.discard и R.string.cancel. И есть переводы этих ресурсов на десятки языков. С точки зрения разработчика всё хорошо, потому что на его языковой группе всё хорошо работает.
Но плохо для некоторых других языковых групп. Чтобы это исправить, нужно завести новые ресурсы типа R.string.delete_dialog_{discard,cancel}. И для языковой группы разработчика тут будут те же самые слова (и с его точки зрения это бесполезная работа, потому он её и не делает), а вот для нашей тут будут «Да» и «Нет».
В итоге в крупных проектах с разными языками получается куча дублирующих ресурсов и становится даже не понятно, так нужно или это ошибка. Возникает желание "одинаковые" слова слить в один ресурс.
Проблема в том, что для русского и других языков здесь нужен другой строковой ресурс, а не общий. То есть, к примеру, в приложении есть куча этих discard и cancel и для них есть ресурс R.string.discard и R.string.cancel. И есть переводы этих ресурсов на десятки языков. С точки зрения разработчика всё хорошо, потому что на его языковой группе всё хорошо работает.
Но плохо для некоторых других языковых групп. Чтобы это исправить, нужно завести новые ресурсы типа R.string.delete_dialog_{discard,cancel}. И для языковой группы разработчика тут будут те же самые слова (и с его точки зрения это бесполезная работа, потому он её и не делает), а вот для нашей тут будут «Да» и «Нет».
В итоге в крупных проектах с разными языками получается куча дублирующих ресурсов и становится даже не понятно, так нужно или это ошибка. Возникает желание "одинаковые" слова слить в один ресурс.
👍2