Size: a a a

React Native — русскоговорящее сообщество

2020 March 22

GB

Gena Black in React Native — русскоговорящее сообщество
Andrew Bodryi
добрый день! при такой форме записи этот редьюсер будет возвращать новую ссылку на стейтб если изменился другой редьюсер?
Просто напишите тест )
источник

GB

Gena Black in React Native — русскоговорящее сообщество
На самом деле вопрос ещё абсолютно непонятен
источник

GB

Gena Black in React Native — русскоговорящее сообщество
Если изменился другой редьюсер - это изменилась какая-то другая ф-ция, что вообще не имеет отношения к диспатчингу акшнов и работой приведенного кода
источник

A

Alexander in React Native — русскоговорящее сообщество
Andrew Bodryi
добрый день! при такой форме записи этот редьюсер будет возвращать новую ссылку на стейтб если изменился другой редьюсер?
Документацию immer почитай
источник

BY

Bohdan Yurchuk in React Native — русскоговорящее сообщество
Народ всем привет, если кто то писал e2e тесты с помощью Appium (для реакт нейтив разумеется)
можете поделиться знаниями или ссылку на ваш репо скинуть (если он публичный)

Уже несколько дней пытаюсь все красиво настроить и  все не то
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
Bohdan Yurchuk
Народ всем привет, если кто то писал e2e тесты с помощью Appium (для реакт нейтив разумеется)
можете поделиться знаниями или ссылку на ваш репо скинуть (если он публичный)

Уже несколько дней пытаюсь все красиво настроить и  все не то
а что конкретно не получается?
источник

BY

Bohdan Yurchuk in React Native — русскоговорящее сообщество
Vitaliy Ponomarev
а что конкретно не получается?
спасибо что от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();
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
Bohdan Yurchuk
спасибо что от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% in React Native — русскоговорящее сообщество
Если только начали писать е2е то попробуйте wix/detox, он из коробки работает без костылей
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
%username%
Если только начали писать е2е то попробуйте wix/detox, он из коробки работает без костылей
только он grey box testing
источник

%

%username% in React Native — русскоговорящее сообщество
Не вижу в этом никаких проблем
источник

BY

Bohdan Yurchuk in React Native — русскоговорящее сообщество
%username%
Если только начали писать е2е то попробуйте wix/detox, он из коробки работает без костылей
решения по выбору фреймворка делал не я :)
и насколько мне известно то именно аппум позволяет ганять тесты на разных устройствах
источник

Л

Лиса 🦊 in React Native — русскоговорящее сообщество
Bohdan Yurchuk
решения по выбору фреймворка делал не я :)
и насколько мне известно то именно аппум позволяет ганять тесты на разных устройствах
Detox тоже позволяет
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
%username%
Не вижу в этом никаких проблем
ну в теории можно залезть туда, куда в реальности в проде не залезешь.

но интереснее другое - для appium много вариантов масштабирования на практике уже есть (фермы и т.п.), detox в этом вопросе вроде как заметно отстает.

по крайней мере когда год назад глубоко в этом копался, было так. detox даже на android не умел работать на актуальных тогда версиях rn
источник

%

%username% in React Native — русскоговорящее сообщество
Ну он моложе, да, есть такой нюанс - его тесты проще писать самим разработчикам, однако апиум популярнее и есть толпа автоматизаторов, которые уже умеют это делать дешевле
источник

%

%username% in React Native — русскоговорящее сообщество
Ну и инфраструктура больше
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
%username%
Ну он моложе, да, есть такой нюанс - его тесты проще писать самим разработчикам, однако апиум популярнее и есть толпа автоматизаторов, которые уже умеют это делать дешевле
сложность appium-тестов преувеличена.
это ровно тот же jest + wd / macaca-wd (для js / ts разработчиков)

плюс куча вариантов для автоматизаторов на других языках, да.
источник

D

Denis in React Native — русскоговорящее сообщество
Vitaliy Ponomarev
сложность appium-тестов преувеличена.
это ровно тот же jest + wd / macaca-wd (для js / ts разработчиков)

плюс куча вариантов для автоматизаторов на других языках, да.
Одни из очевидных минусов аппуима:
- Отсутствие testID и необходимость добавлять a11y id для андроида
- Плохая документация для RN


Возможно, если углубится, это все решается, но детокс как-то выглядит приятнее) Плюс детокс разрабатывался до RN виксом, у которых есть приложения на RN
источник

VP

Vitaliy Ponomarev in React Native — русскоговорящее сообщество
Denis
Одни из очевидных минусов аппуима:
- Отсутствие testID и необходимость добавлять a11y id для андроида
- Плохая документация для RN


Возможно, если углубится, это все решается, но детокс как-то выглядит приятнее) Плюс детокс разрабатывался до RN виксом, у которых есть приложения на RN
про эти минусы я как раз написал выше - есть костыли для android - приходится тестировать промежуточную сборку и игнорировать a11y id в прод-сборке

документация для RN (js) в blackbox-тестах appium сводится к документации wd в основном, и паре заранее предусмотренных подпорок для a11y

я год назад именно это и разруливал собирая инфу по всем источникам. ничего сложного там не было.
но опять же - detox тогда еще совсем ничего не умел.
источник

BY

Bohdan Yurchuk in React Native — русскоговорящее сообщество
запустил команду
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 ребята подскажите
источник