Селектор Detox не работает после обновления до React Native 0.61.3 - PullRequest
1 голос
/ 01 ноября 2019

В этом тесте используются 2 селектора:

a)

element(by.id('FirstName').withAncestor(by.id('SignUpScreen'));

b)

element(by.id('FirstName').withAncestor(by.id('SignUpScreen')).and(by.traits(['selected'])));

, а второй, который не срабатывает, генерируетследующий «запрос»:

(
    (
        !(kindOfClass('RCTScrollView')) && 
        (
            (
                (
                    (respondsToSelector(accessibilityIdentifier) && accessibilityID('FirstName')) 
                    && (
                        (kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) 
                        && ancestorThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('SignUpScreen')))
                    )
                ) && ((respondsToSelector(isAccessibilityElement) && isAccessibilityElement) && accessibilityTraits: UIAccessibilityTraitSelected))
            && !(kindOfClass('UIAccessibilityTextFieldElement'))
        )
    ) || 
    (
        (
            (kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) 
            && parentThatMatches(kindOfClass('RCTScrollView'))
        ) 
        && (
            (kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) 
            && parentThatMatches(((
                (
                    (respondsToSelector(accessibilityIdentifier) && accessibilityID('FirstName')) && 
                    (
                        (kindOfClass('UIView') || respondsToSelector(accessibilityContainer)) 
                        && ancestorThatMatches((respondsToSelector(accessibilityIdentifier) && accessibilityID('SignUpScreen')))
                    )
                ) && ((respondsToSelector(isAccessibilityElement) && isAccessibilityElement) && accessibilityTraits: UIAccessibilityTraitSelected)
            ) && !(kindOfClass('UIAccessibilityTextFieldElement'))))
        )
    )
)

И иерархия:

|--<RCTScrollView:0x7f92ab6ee4d0; AX=N; AX.id='SignUpScreen';>
|  |  |--<RCTView>
|  |  |  |--<RCTSinglelineTextInputView>
|  |  |  |  |--<RCTUITextField AX.id='LastName'; AX.traits='UIAccessibilityTraitSelected'>
|  |  |  |  |  |--<_UITextFieldCanvasView>
|  |  |  |  |  |--<UIAccessibilityTextFieldElement AX.id='LastName'; AX.traits='UIAccessibilityTraitSelected'>
|  |  |--<RCTTextView AX.id='Typography'; AX.label='Last name'; AX.traits='UIAccessibilityTraitStaticText'>
|  |--<RCTView AX.label='First name';>
|  |  |--<RCTView>
|  |  |  |--<RCTSinglelineTextInputView>
|  |  |  |  |--<RCTUITextField AX.id='FirstName'; AX.traits='UIAccessibilityTraitSelected'>
|  |  |  |  |  |--<UIFieldEditor>
|  |  |  |  |  |  |--<_UITextFieldCanvasView>
|  |  |  |  |  |  |  |--<UITextSelectionView>
|  |  |  |  |  |  |  |  |--<UIView>
|  |  |  |  |  |--<UIAccessibilityTextFieldElement AX.id='FirstName'; AX.traits='UIAccessibilityTraitSelected'>

Теперь мне странно, что вся проблема связана с частью .and(by.traits(['selected']))), которая использовалась дляработать до 0.61.3.

И, насколько я понимаю, и запрос, и иерархия имеют UIAccessibilityTraitSelected ... так ... почему именно он терпит неудачу? Чего мне не хватает?

Некоторые другие тесты, которые я сделал:

Неудачи

element(by.id('FirstName').and(by.traits(['selected'])))

Неудачи

element(by.traits(['selected']).withAncestor(by.id('SignUpScreen')))

Работы

element(by.id('FirstName'))

Работы

element(by.id('FirstName').withAncestor(by.id('SignUpScreen')))
...