Повестка дня React-NativeCalendar не имеет testID для Detox

Я использую detox для моего реактивного проекта, и в нем есть компонент календаря, использующий компонент Agenda из реактивного-календаря. Я ищу, чтобы добавить testID для компонента повестки дня, но, кажется, не один. Это мой код повестки дня.

  <Agenda
    items={this.state.items}
    onDayPress={(day)=>{console.log('day pressed',day)}}
    onDayChange={(day)=>{console.log('day changed')}}
    pastScrollRange={50}
    futureScrollRange={50}
    renderItem={(item, firstItemInDay) => {return (<CalendarEvent EventID={item.EventID} navigation ={this.props.navigation}/>);}}


    renderEmptyDate={() => {return (<EmptyEvent/>);}}
    // specify what should be rendered instead of ActivityIndicator
    //renderEmptyData = {() => {return (<EmptyEvent/>)}}
    rowHasChanged={(r1, r2) => {return r1.text !== r2.text}}
    // By default, agenda dates are marked if they have at least one item, but you can override this if needed
    markedDates={markedDates}
    theme={{
                    backgroundColor: '#203546',
                    calendarBackground: '#203546',
                    textSectionTitleColor: '#ffffff',
                    selectedDayBackgroundColor: '#203546',
                    selectedDayTextColor: '#ffffff',
                    todayTextColor: '#00adf5',
                    dayTextColor: '#ffffff',
                    textDisabledColor: '#ffffff',
                    dotColor: '#ffffff',
                    selectedDotColor: '#ffffff',
                    monthTextColor: '#ffffff',
                    textMonthFontWeight: 'bold',
                    textDayFontSize: 16,
                    textMonthFontSize: 20,
                    textDayHeaderFontSize: 15,
                    agendaDayTextColor: 'white',
                    agendaDayNumColor: 'white',
                    agendaTodayColor: '#00adf5',
                    agendaKnobColor: 'white'
                    }}/>

1 ответ

Быстрый поиск react-native-calendars репо показывает, что testID опора поддерживается только в CalendarHeader составная часть.

Похоже, что остальные компоненты этой библиотеки не поддерживают testID но это не значит, что они не могут.

Если вы посмотрите руководство по устранению неполадок Detox для добавления testID Пропорция утверждает:

Решение: React Native поддерживает только testID опора на встроенные встроенные компоненты. Если вы создали собственный составной компонент, вам придется поддерживать эту опору самостоятельно. Вероятно, вам следует распространить подпрограмму testID на одного из ваших отрисованных дочерних элементов (встроенного компонента):

К сожалению Agenda компонент - это не тот, который вы создали сами, поэтому вы не можете контролировать его свойства. Есть несколько вариантов действий, которые вы можете предпринять:

  1. Создайте проблему и надейтесь, что кто-то из команды разработчиков репозитория сделает нужное вам изменение.
  2. Вилка библиотеки. Это теперь даст вам полный контроль над компонентом. Вы сможете добавить testID реквизит, который вам требуется. Затем вы можете использовать свою раздвоенную версию библиотеки. Это может быть полезно, но учтите, что вам придется поддерживать раздвоенный репо. Вы всегда можете отправить изменение в качестве PR, и оно может быть объединено в фактическую версию.

Самым быстрым решением, очевидно, является вариант 2. Затем вы можете использовать свою раздвоенную версию в своем package.json следующее:

"react-native-calendars": "your_github_name/react-native-calendars"
Другие вопросы по тегам