Я использую детокс для своего реактивного проекта, и у него есть компонент календаря, использующий компонент Agenda из реактивного-родного-календаря. Я хочу добавить testID для компонента повестки дня, но, похоже, его нет. Это мой код повестки дня.
<Agenda
items = {this.state.items}
onDayPress = {(day)=>{console.info('day pressed',day)}}
onDayChange = {(day)=>{console.info('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'
}}/>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Быстрый поиск репозитория react-native-calendars показывает, что реквизит testID поддерживается только в компоненте CalendarHeader.
Похоже, что остальные компоненты, предоставляемые этой библиотекой, не поддерживают testID, но это не значит, что они не могут.
Если вы посмотрите на Detox руководство по устранению неполадок для добавления testID реквизита, то это будет указано:
Solution: React Native only supports the
testIDprop on the native built-in components. If you've created a custom composite component, you will have to support this prop yourself. You should probably propagate the testID prop to one of your rendered children (a built-in component):
К сожалению, компонент Agenda не является тем, который вы создали сами, поэтому у вас мало контроля над его реквизитами. Есть несколько вариантов действий, которые вы можете предпринять:
testID. Затем вы можете использовать свою разветвленную версию библиотеки. Это может быть полезно, но учтите, что вам придется поддерживать разветвленное репо. Вы всегда можете отправить изменение как PR, и оно может быть объединено с реальным релизом.Самым быстрым решением, очевидно, является вариант 2. Затем вы можете использовать свою разветвленную версию в своем package.json следующим образом:
"react-native-calendars": "your_github_name/react-native-calendars"