jiti-meet/react/features/base/testing/components/TestHint.android.js

50 lines
1.7 KiB
JavaScript

/* @flow */
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Text } from 'react-native';
import type { TestHintProps } from './AbstractTestHint';
import { _mapStateToProps } from './AbstractTestHint';
/**
* The Android version of <code>TestHint</code>. It will put the identifier,
* as the 'accessibilityLabel'.
*
* FIXME The 'testID' attribute (which is used on iOS) does not work with
* the react-native as expected, because is mapped to component's tag instead of
* any attribute visible to the UI automation. Because of that it can not be
* used to find the element.
* On the other hand it's not possible to use 'accessibilityLabel' on the iOS
* for the id purpose, because it will merge the value with any text content or
* 'accessibilityLabel' values of it's children. So as a workaround a TestHint
* class was introduced in 'jitsi-meet-torture' which will accept generic 'id'
* attribute and then do the search 'under the hood' either by the accessibility
* label or the id, depending on the participant's platform. On the client side
* the TestHint class is to be the abstraction layer which masks the problem by
* exposing id and value properties.
*/
class TestHint extends Component<TestHintProps> {
/**
* Renders the test hint on Android.
*
* @returns {ReactElement}
*/
render() {
if (!this.props._testModeEnabled) {
return null;
}
return (
<Text
accessibilityLabel = { this.props.id }
onPress = { this.props.onPress } >
{ this.props.value }
</Text>
);
}
}
export default connect(_mapStateToProps)(TestHint);