排毒,多个元素匹配过渡按钮

Mee*_*riq 5 javascript jestjs react-native detox

我正在使用detox e2e为我的react-native应用程序创建测试用例.简而言之,我在组件的渲染功能中有一个按钮,该按钮从左向右过渡.我给了那个按钮一个唯一的测试ID.在我的测试用例中,我希望该按钮能够使用其测试ID出现.但是当我运行"排毒测试"时,测试失败并且错误表明多个元素与该测试ID匹配.我的测试文件的代码是:

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() 
    }) 
})
Run Code Online (Sandbox Code Playgroud)

我的按钮内部渲染功能的代码是:

<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>
Run Code Online (Sandbox Code Playgroud)

Inisde我的测试用例我期待带有testid"WelcomeScreenCreateWalletButton"的按钮可见.如果我从组件的render函数中删除转换标记,则测试成功运行并通过.显然,按钮的转换存在一些问题.我已经读过detox的空闲状态同步处理动画问题.我不知道我错过了什么:/.PS如果在我的问题中没有明确说明某些事情之前请求更多详细信息.

Mee*_*riq 12

因此,显然这个特殊问题是由反应本机流体导航引入的,它通过复制项目来进行转换.我正在使用它来从左到右转换按钮.简单的解决方案是使用第二个项目并对其执行操作.有效的代码如下:

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() 
    }) 
})
Run Code Online (Sandbox Code Playgroud)

仅添加atIndex(1)解决了这个问题.