Bohdan
а что конкретно не получается?
спасибо что отrликнулся. я с реакт нейтив особо не работал до этого. я установил appium + webdrverio в одном терминале запускаю metro bundler (react-native start) в другом поднимаю сервер апиума в третьем запускаю тест (ссилка на app: android/app/build/outputs/apk/debug/app-debug.apk) —- вопросы: 1) Действительно ли нужно запукать три терминала постоянно ? 2) Если я что то поменял в джс коде, нужно ли запускать react-native android ? — проблемы: 1) не находит елемент по accessibilityLabel код: App.js -- <Input accessibilityLabel="todoInput" value={this.state.inputValue} onChange={this.onInputChange} onSubmit={this.onSubmit} /> sample.test.js -- const wdio = require("webdriverio"); const assert = require("assert"); const opts = { port: 4723, capabilities: { platformName: "Android", platformVersion: "9", deviceName: "Pixel_2_Pie", app: "E:/react-native-demo-1/android/app/build/outputs/apk/debug/app-debug.apk", automationName: "UiAutomator2" } }; async function main () { const client = await wdio.remote(opts); await client.pause(5000); const field = await client.$("~todoInput"); await field.setValue("Hello World!"); const value = await field.getText(); assert.equal(value,"Hello World!"); await client.deleteSession(); } main();
Vitaliy
спасибо что отrликнулся. я с реакт нейтив особо не работал до этого. я установил appium + webdrverio в одном терминале запускаю metro bundler (react-native start) в другом поднимаю сервер апиума в третьем запускаю тест (ссилка на app: android/app/build/outputs/apk/debug/app-debug.apk) —- вопросы: 1) Действительно ли нужно запукать три терминала постоянно ? 2) Если я что то поменял в джс коде, нужно ли запускать react-native android ? — проблемы: 1) не находит елемент по accessibilityLabel код: App.js -- <Input accessibilityLabel="todoInput" value={this.state.inputValue} onChange={this.onInputChange} onSubmit={this.onSubmit} /> sample.test.js -- const wdio = require("webdriverio"); const assert = require("assert"); const opts = { port: 4723, capabilities: { platformName: "Android", platformVersion: "9", deviceName: "Pixel_2_Pie", app: "E:/react-native-demo-1/android/app/build/outputs/apk/debug/app-debug.apk", automationName: "UiAutomator2" } }; async function main () { const client = await wdio.remote(opts); await client.pause(5000); const field = await client.$("~todoInput"); await field.setValue("Hello World!"); const value = await field.getText(); assert.equal(value,"Hello World!"); await client.deleteSession(); } main();
у меня есть репо (правда год уже висит, не актуализировал, но вроде бы всё самое основное должно работать и на свежем RN) https://bitbucket.org/ponomarevv/rn-appium-e2e-demo/ насчет вопросов 1 - для тестов нужны только appium-сервер и e2e (production с небольшими костылями для android) сборка. при локальной разработке можно попробовать dev-сборки использовать, тогда нужен metro-bundler, но тест может не пройти из-за этого по времени (пока бандл с сервера обновится и т.п.) 2 - только если собирать production / e2e билды, в dev обновляется только js с сервера сборки, ну и при закрытии/открытии android dev приложения это самый понятный способ подключиться к metro по accessibilityLabel уже точно не помню, но в репке как раз этот баг борол, смотри readme и как helper для тестирования сделан.
%username% 🍺
Если только начали писать е2е то попробуйте wix/detox, он из коробки работает без костылей
%username% 🍺
Не вижу в этом никаких проблем
Bohdan
Если только начали писать е2е то попробуйте wix/detox, он из коробки работает без костылей
решения по выбору фреймворка делал не я :) и насколько мне известно то именно аппум позволяет ганять тесты на разных устройствах
Vitaliy
Не вижу в этом никаких проблем
ну в теории можно залезть туда, куда в реальности в проде не залезешь. но интереснее другое - для appium много вариантов масштабирования на практике уже есть (фермы и т.п.), detox в этом вопросе вроде как заметно отстает. по крайней мере когда год назад глубоко в этом копался, было так. detox даже на android не умел работать на актуальных тогда версиях rn
%username% 🍺
Ну он моложе, да, есть такой нюанс - его тесты проще писать самим разработчикам, однако апиум популярнее и есть толпа автоматизаторов, которые уже умеют это делать дешевле
%username% 🍺
Ну и инфраструктура больше
Vitaliy
Ну он моложе, да, есть такой нюанс - его тесты проще писать самим разработчикам, однако апиум популярнее и есть толпа автоматизаторов, которые уже умеют это делать дешевле
сложность appium-тестов преувеличена. это ровно тот же jest + wd / macaca-wd (для js / ts разработчиков) плюс куча вариантов для автоматизаторов на других языках, да.
Denis
сложность appium-тестов преувеличена. это ровно тот же jest + wd / macaca-wd (для js / ts разработчиков) плюс куча вариантов для автоматизаторов на других языках, да.
Одни из очевидных минусов аппуима: - Отсутствие testID и необходимость добавлять a11y id для андроида - Плохая документация для RN Возможно, если углубится, это все решается, но детокс как-то выглядит приятнее) Плюс детокс разрабатывался до RN виксом, у которых есть приложения на RN
Vitaliy
Одни из очевидных минусов аппуима: - Отсутствие testID и необходимость добавлять a11y id для андроида - Плохая документация для RN Возможно, если углубится, это все решается, но детокс как-то выглядит приятнее) Плюс детокс разрабатывался до RN виксом, у которых есть приложения на RN
про эти минусы я как раз написал выше - есть костыли для android - приходится тестировать промежуточную сборку и игнорировать a11y id в прод-сборке документация для RN (js) в blackbox-тестах appium сводится к документации wd в основном, и паре заранее предусмотренных подпорок для a11y я год назад именно это и разруливал собирая инфу по всем источникам. ничего сложного там не было. но опять же - detox тогда еще совсем ничего не умел.
Bohdan
запустил команду cd android && ./gradlew assembleRelease но при запуске тестов падает ошибка в емуляторе, я так понимаю билд прошел не правильно ? не думаю что надо метро бандлер стартовать Unable to load script.Make sure you are either running a Metro server or that your bundle 'index.android.bundle' is packaged correctly for release @ponomarevv @latus @tronin ребята подскажите
Bohdan
запускал команду что бы получить билд в apk формате
%username% 🍺
Погугли команду react-native bundle
%username% 🍺
Сначала надо собрать бандл, а потом запустить тесты
%username% 🍺
Ну релиз собрать после того как бандл соберешь
Bohdan
я просто не до конца наверно понимаю, разве мне не достаточно одного апк файла для запуска апки на телефоне?
%username% 🍺
Достаточно, но внутри него должен лежать android.bundle для этого его надо собрать перед компиляцией приложения
%username% 🍺
Апп соберется вместе с ним
%username% 🍺
Считай что это необходимые ассеты
Bohdan
окей попробую сейчас
Bohdan
спасибо
%username% 🍺
На стэке была прям целая команда для сборки этого добра перед компиляцией
Gena
Достаточно, но внутри него должен лежать android.bundle для этого его надо собрать перед компиляцией приложения
Не надо, он должен собираться в процессе компиляции, как один из её шагов.
Gena
%username% 🍺
Здесь явно видно что он не собран
%username% 🍺
Найти причину конечно же будет полезнее
Gena
Не видно. Чтоб увидеть что он не собран, надо распаковать apk и убедиться, что файла нет.
%username% 🍺
Gena
К примеру эту же ошибку даст ситуация, когда бандл собран, но имя отличается от того, что хочет грузить натив, при неправильной конфигурации гермеса, да и ещё по всяким странным причинам )
%username% 🍺
Ну давай посмотрим с чем вернется Богдан и будем решать проблемы по мере поступления
%username% 🍺
Мало ли поможет
Bohdan
@gblack9 @tronin Давайте сначала :) в доке реат нейтив есть только пункт генерации aab файла для публикации на Play Store мне же нужен apk файл что бы запустить e2e тесты — я запускал react-native run-android эта команда дала мене android/app/build/outputs/apk/debug/app-debug.apk я запускал /android/gradlew assembleRelease у меня сгенерилось app/build/outputs/apk/release/app-release.apk — что из этого не правильно?
Gena
@gblack9 @tronin Давайте сначала :) в доке реат нейтив есть только пункт генерации aab файла для публикации на Play Store мне же нужен apk файл что бы запустить e2e тесты — я запускал react-native run-android эта команда дала мене android/app/build/outputs/apk/debug/app-debug.apk я запускал /android/gradlew assembleRelease у меня сгенерилось app/build/outputs/apk/release/app-release.apk — что из этого не правильно?
Всё правильно. Что вы хотите получить? Какой apk вам нужен, release? Тогда gradlew app:assembleRelease (это, если что, ничем не отличается от просто assembleRelase, только скипает некоторые ненужные шаги, которые потенциально могут оказаться в одном из модулей)
Gena
Желательно так же, между сборками с разными типами и flavours делать чистку (`gradlew clean`)
Gena
лог сборки абсолютно нормальный
Это экспо? Тогда я - пас. С экспо не работаю, подсказать по нему ничего не могу и вообще считаю, что это в их службу техподдержки...
Bohdan
Желательно так же, между сборками с разными типами и flavours делать чистку (`gradlew clean`)
проблема в том что при запуске тестов из одним из апк файлов в емуляторе
Gena
Expo ≠ RN
Gena
А я что-то знаю про RN
Gena
По экспо ничего не смогу сказать, это просто другой продукт
Gena
даже после eject ?
Это не важно... вы не используете RN, вы используете ExpoKit
Bohdan
ага, пробую в етом направлении поискать
Gena
Да нет же... наверняка всё решаемо и в экспо, просто я тут мало что могу сказать... там много ломкого плохого кода (и в RN, и в Expo), я хорошо знаю RN и его косяки. Косяки экспо мне неизвестны.
Bohdan
Да нет же... наверняка всё решаемо и в экспо, просто я тут мало что могу сказать... там много ломкого плохого кода (и в RN, и в Expo), я хорошо знаю RN и его косяки. Косяки экспо мне неизвестны.
я заметил что в реакт нейтив очень много тонких моментов наверное проще будет проект под флаттер переписать чем все косяки исправить :)
Bohdan
Зависит от размеров проекта
кстати я находил туториал что можно проект через expo web запускать и тестировать с помощью cypress не слышали о таком?
Timur 👨‍💻
Всем привет, подскажите плиз, кто через что рендерит masonry grid?
Евгений
Как применить then к dispatch? Что бы выполнить действие только после того как придёт ответ
Kto?
Как применить then к dispatch? Что бы выполнить действие только после того как придёт ответ
Можешь добавить callback в диспатч экшн, который вызовешь когда тебе нужно
Vitaliy
проблема в том что при запуске тестов из одним из апк файлов в емуляторе
а вот это, похоже, именно то, о чем я говорил если для тестов dev-сборки использовать, нужно чтобы был запущен metro-bundler. и то не факт что всё сработает как положено. а тут похоже что для теста использовался app-debug.apk в app-release такого сообщения просто не должно появиться, там приложение крашится и всё, без перехвата ошибок и вывода предупреждений.
Sergey
expo web позволяет запускать проект под web, те как бы мультиплатформа
как раз можно прогонять в тч и тесты под web, можно писать и свои с поддержкой enzym/ui-jest в последних expo
Евгений
Помогите, второй день завис над этим. Почему в функцию onScrollList приходят не правильные данные? В 32 строку приходит 1 и 0, хотя должно приходить 3 и 12, где 3 это количество уже подгруженных постов, а 12 это общее их количество. Если вывести значения за функцией, то все нормально https://codepen.io/kolotywka/pen/rNVZwgG?editors=0010
Евгений
Не тот чат
А куда с таким?)
Георгий
ребят всем привет, в react-navigation есть что то типо params как в react-router-dom или useRouter как в next, или как передавать данные при переходах по скринам?
Sergey
А куда с таким?)
у тебя вопрос по react, а здесь типа react native, где window нет 🙂 я не совсем понял, что за функция dispatch - redux?
Sergey
navigation.navigate('page', {name: 'Serg'})
Shaxboz
Привет. Кто работал с USSD-диском в React Native?
Shaxboz
Shaxboz
Shaxboz
Какое значение принимает функция dialNumber( )?
ana 🪢
Какое значение принимает функция dialNumber( )?
то есть не String (строку) - это точно вам туда нужно число передать)
Vitaliy
там же написано - Double
да не, там интереснее всё, загляни под капот
ana 🪢
да не, там интереснее всё, загляни под капот
а это вообще хорошая практика - использовать эту библиотеку?) даже доки нет
Vitaliy
а это вообще хорошая практика - использовать эту библиотеку?) даже доки нет
ну если понимаешь что внутри происходит, других решений нет и готов форкнуть и поддерживать у себя - то да, вполне ))