UITests и React Native Header TouchableOpacity - PullRequest
1 голос
/ 29 января 2020

Я сейчас пытаюсь автоматизировать мой снимок приложения с помощью fastlane. В классе UITest я пытаюсь получить доступ к собственному компоненту TouchableOpacity React, который находится в пользовательском компоненте, а затем, когда я пытаюсь получить к нему доступ с использованием действия tap (), я получаю эту ошибку:

Failed to get matching snapshot: Multiple matching elements found for <XCUIElementQuery: 0x600000a71630>.


 MyApp_UITests.swift:49


 Executed 1 test, with 1 failure (0 unexpected) in 46.721 (46.729) seconds

Я не понимаю, почему причина в компоненте, есть только одна декларация. Может у кого-нибудь есть решение?

Есть класс Header Custom:

    export class KoHeader extends React.Component {
  constructor(props) {
    super(props);
  }

  handleBackPress = () => {
    this.props.navigation.goBack(null, { goBackHandle: true });
    return true;
  };

  render() {
      return (
        <Header style={styles.header}>
          <Left>
            <TouchableOpacity
              transparent
              testID={this.props.testID}
              accessibilityLabel={this.props.accessibilityLabel}
              onPress={() => this.handleBackPress()}
            >
              <Icon
                name="chevron-left"
                style={{ color: "white", fontSize: 35, marginTop: -5 }}
              />
              <Text style={{ fontSize: 11, color: "white", marginTop: -10 }}>
                {I18n.t("hdReWo")}
              </Text>
            </TouchableOpacity>
          </Left>
          <Body>
            <View>
              <Button
                transparent
                onPress={() => this.props.navigation.navigate("Accueil")}
              >
                <Image
                  style={{
                    resizeMode: "contain",
                    width: 60,
                    height: 28,
                    alignSelf: "center"
                  }}
                  source={require("../../assets/logo_sidebar.png")}
                />
              </Button>
            </View>
          </Body>
          <Right>
            <Button
              transparent
              onPress={() => this.props.navigation.navigate("Settings")}
            >
              <Icon name="settings" style={{ color: "white", fontSize: 23 }} />
            </Button>
          </Right>
        </Header>
      );

Вызов в компоненте:

<KoHeader
            {...this.props}
            testID={"Retour"}
            accessibilityLabel={"Retour"}
          />

И, наконец, как Я пытаюсь использовать его в классе UITesting:


class MyApp_UITests: XCTestCase {

    func testMyAppScreenShot() {
        let app = XCUIApplication()
        setupSnapshot(app)
        app.launch()
        sleep(10)
        let emailField = app.textFields["Adresse e-mail"]
        emailField.tap()
        emailField.clearText()
        emailField.typeText("XXX")

        let passwordField = app.secureTextFields["Mot de passe"]
        passwordField.tap()
        passwordField.typeText("XXX")

        app.otherElements["loginButtonScreen"].tap()
        sleep(5)
        snapshot("00HomeScreen")

        app.otherElements["orderButtonScreen"].tap()
        sleep(10)
        snapshot("01OrderScreen")

        app.otherElements["Retour"].tap()
        sleep(4)
        snapshot("02Test")


    }
}

Может быть, есть другой способ достичь этого?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...