этого.
я установил 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 для тестирования сделан.
Обсуждают сегодня