Детокс, несколько элементов были сопоставлены для кнопки в переходе

Я использую detox e2e для создания тестовых примеров для моего реагирующего приложения. Короче говоря, у меня есть кнопка внутри функции рендеринга моего компонента, и эта кнопка перемещается слева направо. Я присвоил этой кнопке уникальный тестовый идентификатор. В моем тестовом примере я ожидаю, что эта кнопка появится с использованием своего тестового идентификатора. Но когда я запускаю «детокс-тест», тест не проходит, и в сообщении об ошибке указывается, что несколько элементов были сопоставлены с этим идентификатором теста.

Код моего тестового файла:

describe('Login flow', () => {
    // test case for wallet generation

    it('should generate new wallet', async () => {
        await expect(element(by.id('WelcomeScreen'))).toBeVisible()
        await expect(element(by.id('WelcomeScreenCreateWalletButton'))).toBeVisible() 
    }) 
})

а код моей кнопки внутри функции рендеринга:

<Transition appear="horizontal">
          <View style={styles.buttonContainer}>
            <Button
              text={I18n.t('create-wallet')}
              onPress={this.createWallet}
              style={[styles.button, styles.topButton]}
              testID="WelcomeScreenCreateWalletButton"
            />

            <Button
              text={I18n.t('restore-wallet')}
              transparent
              onPress={this.restoreWallet}
              style={styles.button}
              shared={'button'}
              testID="WelcomeScreenRestoreWalletButton"
            />
          </View>
        </Transition>

В моем тестовом примере я ожидаю, что будет видна кнопка с testid "WelcomeScreenCreateWalletButton". Если я удалю теги перехода из функции рендеринга моего компонента, тест пройдет успешно и пройдет успешно. Так что видимо есть какая-то проблема с переходом кнопки. Я читал, что синхронизация состояния простоя детокса решает проблемы с анимацией. Я не знаю, что мне не хватает: /.


person Meeran Tariq    schedule 05.10.2018    source источник


Ответы (1)


Итак, по-видимому, эта конкретная проблема была вызвана реакцией-родной-текучей навигацией, которая выполняет переходы путем дублирования элементов. Я использовал его для перехода кнопок слева направо. Простым решением было использовать второй элемент и выполнять с ним действия. Код, который работает, выглядит следующим образом:

describe('Login flow', () => {
// test case for wallet generation

    it('should generate new wallet', async () => {
        await expect(element(by.id('WelcomeScreen'))).toBeVisible()
        await expect(element(by.id('WelcomeScreenCreateWalletButton')).atIndex(1)).toBeVisible() 
    }) 
})

Добавление только atIndex (1) решило проблему.

person Meeran Tariq    schedule 08.10.2018
comment
Спасатель жизни! Спасибо. - person Zoltan Szokodi; 07.03.2021