Детокс: как проверить многострочный TextInput

Я пытаюсь использовать детокс, чтобы проверить форму в моем приложении-реактиве.

Один из входов в форме имеет multiline={true},

Я пытаюсь запустить следующий тест:

const inputElement = element(by.id('input_multiline'));
await expect(inputElement).toBeVisible();
await inputElement.typeText('line1\n');
await inputElement.typeText('line2\n');
await inputElement.typeText('line3\n');

const submitElement = element(by.id('submit'));
await submitElement.toBeVisible();
await submitElement.tap();

Этот тест не проходит 75% критериев видимости, потому что клавиатура скрывает кнопку отправки.

Обычно для TextInput с multiline={false} Вы можете просто добавить \n для входной строки, автоматически переходящей к следующему этапу, но для многострочного ввода \n просто добавляет новую строку.

Что я могу сделать, чтобы пройти этот тест в детоксикации?

1 ответ

Решение

Сначала мы должны иметь возможность отклонить клавиатуру для TextInput с multiline={true},

Для этого мы собираемся использовать модуль Keyboard из Reaction-native.

import {Keyboard} from 'react-native'

Теперь оберните вашу форму с помощью TouchableWithoutFeedback и вызовите Keyboard.dismiss() при печати.

<TouchableWithoutFeedback onPress={Keyboard.dismiss}>
  { /*your form goes here here*/ }
</TouchableWithoutFeedback>

Теперь измените свой тест на детокс, чтобы отклонить клавиатуру.

const inputElement = element(by.id('input'));
await expect(inputElement).toBeVisible();
await inputElement.typeText('line1\n');
await inputElement.typeText('line2\n');
await inputElement.typeText('line3\n');
// click somewhere outside the input
await inputElement.tapAtPoint({x: 0, y: 1});

const submitElement = element(by.id('submit'));
await submitElement.toBeVisible();
await submitElement.tap();

Детокс, проводящий тест

Другие вопросы по тегам