@100mslive/react-native-room-kit 1.0.2-beta.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/lib/commonjs/HMSRoomSetup.js +1 -0
  2. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  3. package/lib/commonjs/Icons/BRB/index.js +2 -0
  4. package/lib/commonjs/Icons/BRB/index.js.map +1 -1
  5. package/lib/commonjs/Icons/Hand/index.js +2 -0
  6. package/lib/commonjs/Icons/Hand/index.js.map +1 -1
  7. package/lib/commonjs/Icons/Leave/index.js +2 -0
  8. package/lib/commonjs/Icons/Leave/index.js.map +1 -1
  9. package/lib/commonjs/Icons/Mic/index.js +2 -0
  10. package/lib/commonjs/Icons/Mic/index.js.map +1 -1
  11. package/lib/commonjs/Icons/Stop/index.js +2 -0
  12. package/lib/commonjs/Icons/Stop/index.js.map +1 -1
  13. package/lib/commonjs/components/BackButton.js +2 -0
  14. package/lib/commonjs/components/BackButton.js.map +1 -1
  15. package/lib/commonjs/components/BottomSheet.js +7 -1
  16. package/lib/commonjs/components/BottomSheet.js.map +1 -1
  17. package/lib/commonjs/components/ChangeNameModalContent.js +5 -0
  18. package/lib/commonjs/components/ChangeNameModalContent.js.map +1 -1
  19. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js +5 -0
  20. package/lib/commonjs/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  21. package/lib/commonjs/components/CompanyLogo.js +2 -0
  22. package/lib/commonjs/components/CompanyLogo.js.map +1 -1
  23. package/lib/commonjs/components/EndRoomModalContent.js +6 -1
  24. package/lib/commonjs/components/EndRoomModalContent.js.map +1 -1
  25. package/lib/commonjs/components/HMSBaseButton.js +2 -0
  26. package/lib/commonjs/components/HMSBaseButton.js.map +1 -1
  27. package/lib/commonjs/components/HMSChat.js +2 -0
  28. package/lib/commonjs/components/HMSChat.js.map +1 -1
  29. package/lib/commonjs/components/HMSDangerButton.js +2 -0
  30. package/lib/commonjs/components/HMSDangerButton.js.map +1 -1
  31. package/lib/commonjs/components/HMSLiveIndicator.js +6 -1
  32. package/lib/commonjs/components/HMSLiveIndicator.js.map +1 -1
  33. package/lib/commonjs/components/HMSLocalScreenshareNotification.js +3 -0
  34. package/lib/commonjs/components/HMSLocalScreenshareNotification.js.map +1 -1
  35. package/lib/commonjs/components/HMSManageAudioOutput.js +32 -2
  36. package/lib/commonjs/components/HMSManageAudioOutput.js.map +1 -1
  37. package/lib/commonjs/components/HMSManageCameraRotation.js +2 -0
  38. package/lib/commonjs/components/HMSManageCameraRotation.js.map +1 -1
  39. package/lib/commonjs/components/HMSManageLeave.js +3 -1
  40. package/lib/commonjs/components/HMSManageLeave.js.map +1 -1
  41. package/lib/commonjs/components/HMSManageLocalAudio.js +2 -0
  42. package/lib/commonjs/components/HMSManageLocalAudio.js.map +1 -1
  43. package/lib/commonjs/components/HMSManageLocalVideo.js +2 -0
  44. package/lib/commonjs/components/HMSManageLocalVideo.js.map +1 -1
  45. package/lib/commonjs/components/HMSManageRaiseHand.js +2 -0
  46. package/lib/commonjs/components/HMSManageRaiseHand.js.map +1 -1
  47. package/lib/commonjs/components/HMSNotification.js +2 -0
  48. package/lib/commonjs/components/HMSNotification.js.map +1 -1
  49. package/lib/commonjs/components/HMSPreviewEditName.js +2 -0
  50. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  51. package/lib/commonjs/components/HMSPreviewJoinButton.js +2 -0
  52. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  53. package/lib/commonjs/components/HMSPreviewSubtitle.js +8 -0
  54. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  55. package/lib/commonjs/components/HMSPreviewTitle.js +2 -0
  56. package/lib/commonjs/components/HMSPreviewTitle.js.map +1 -1
  57. package/lib/commonjs/components/HMSPrimaryButton.js +2 -0
  58. package/lib/commonjs/components/HMSPrimaryButton.js.map +1 -1
  59. package/lib/commonjs/components/HMSRoomOptions.js +2 -0
  60. package/lib/commonjs/components/HMSRoomOptions.js.map +1 -1
  61. package/lib/commonjs/components/HMSSendMessageInput.js +3 -0
  62. package/lib/commonjs/components/HMSSendMessageInput.js.map +1 -1
  63. package/lib/commonjs/components/HMSTextInput.js +1 -0
  64. package/lib/commonjs/components/HMSTextInput.js.map +1 -1
  65. package/lib/commonjs/components/LeaveRoomBottomSheet.js +7 -0
  66. package/lib/commonjs/components/LeaveRoomBottomSheet.js.map +1 -1
  67. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js +4 -0
  68. package/lib/commonjs/components/Participants/ParticipantsGroupHeader.js.map +1 -1
  69. package/lib/commonjs/components/Participants/ParticipantsItem.js +2 -0
  70. package/lib/commonjs/components/Participants/ParticipantsItem.js.map +1 -1
  71. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js +2 -0
  72. package/lib/commonjs/components/Participants/ParticipantsSeachInput.js.map +1 -1
  73. package/lib/commonjs/components/PeerSettingsModalContent.js +8 -1
  74. package/lib/commonjs/components/PeerSettingsModalContent.js.map +1 -1
  75. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js +3 -0
  76. package/lib/commonjs/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  77. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js +3 -0
  78. package/lib/commonjs/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  79. package/lib/commonjs/components/RoomSettingsModalContent.js +13 -1
  80. package/lib/commonjs/components/RoomSettingsModalContent.js.map +1 -1
  81. package/lib/commonjs/utils/constants.js +114 -0
  82. package/lib/commonjs/utils/constants.js.map +1 -0
  83. package/lib/module/HMSRoomSetup.js +1 -0
  84. package/lib/module/HMSRoomSetup.js.map +1 -1
  85. package/lib/module/Icons/BRB/index.js +2 -0
  86. package/lib/module/Icons/BRB/index.js.map +1 -1
  87. package/lib/module/Icons/Hand/index.js +2 -0
  88. package/lib/module/Icons/Hand/index.js.map +1 -1
  89. package/lib/module/Icons/Leave/index.js +2 -0
  90. package/lib/module/Icons/Leave/index.js.map +1 -1
  91. package/lib/module/Icons/Mic/index.js +2 -0
  92. package/lib/module/Icons/Mic/index.js.map +1 -1
  93. package/lib/module/Icons/Stop/index.js +2 -0
  94. package/lib/module/Icons/Stop/index.js.map +1 -1
  95. package/lib/module/components/BackButton.js +2 -0
  96. package/lib/module/components/BackButton.js.map +1 -1
  97. package/lib/module/components/BottomSheet.js +7 -1
  98. package/lib/module/components/BottomSheet.js.map +1 -1
  99. package/lib/module/components/ChangeNameModalContent.js +5 -0
  100. package/lib/module/components/ChangeNameModalContent.js.map +1 -1
  101. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +5 -0
  102. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  103. package/lib/module/components/CompanyLogo.js +2 -0
  104. package/lib/module/components/CompanyLogo.js.map +1 -1
  105. package/lib/module/components/EndRoomModalContent.js +6 -1
  106. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  107. package/lib/module/components/HMSBaseButton.js +2 -0
  108. package/lib/module/components/HMSBaseButton.js.map +1 -1
  109. package/lib/module/components/HMSChat.js +2 -0
  110. package/lib/module/components/HMSChat.js.map +1 -1
  111. package/lib/module/components/HMSDangerButton.js +2 -0
  112. package/lib/module/components/HMSDangerButton.js.map +1 -1
  113. package/lib/module/components/HMSLiveIndicator.js +6 -1
  114. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  115. package/lib/module/components/HMSLocalScreenshareNotification.js +3 -0
  116. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -1
  117. package/lib/module/components/HMSManageAudioOutput.js +32 -2
  118. package/lib/module/components/HMSManageAudioOutput.js.map +1 -1
  119. package/lib/module/components/HMSManageCameraRotation.js +2 -0
  120. package/lib/module/components/HMSManageCameraRotation.js.map +1 -1
  121. package/lib/module/components/HMSManageLeave.js +3 -1
  122. package/lib/module/components/HMSManageLeave.js.map +1 -1
  123. package/lib/module/components/HMSManageLocalAudio.js +2 -0
  124. package/lib/module/components/HMSManageLocalAudio.js.map +1 -1
  125. package/lib/module/components/HMSManageLocalVideo.js +2 -0
  126. package/lib/module/components/HMSManageLocalVideo.js.map +1 -1
  127. package/lib/module/components/HMSManageRaiseHand.js +2 -0
  128. package/lib/module/components/HMSManageRaiseHand.js.map +1 -1
  129. package/lib/module/components/HMSNotification.js +2 -0
  130. package/lib/module/components/HMSNotification.js.map +1 -1
  131. package/lib/module/components/HMSPreviewEditName.js +2 -0
  132. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  133. package/lib/module/components/HMSPreviewJoinButton.js +2 -0
  134. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  135. package/lib/module/components/HMSPreviewSubtitle.js +8 -0
  136. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  137. package/lib/module/components/HMSPreviewTitle.js +2 -0
  138. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  139. package/lib/module/components/HMSPrimaryButton.js +2 -0
  140. package/lib/module/components/HMSPrimaryButton.js.map +1 -1
  141. package/lib/module/components/HMSRoomOptions.js +2 -0
  142. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  143. package/lib/module/components/HMSSendMessageInput.js +3 -0
  144. package/lib/module/components/HMSSendMessageInput.js.map +1 -1
  145. package/lib/module/components/HMSTextInput.js +1 -0
  146. package/lib/module/components/HMSTextInput.js.map +1 -1
  147. package/lib/module/components/LeaveRoomBottomSheet.js +7 -0
  148. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  149. package/lib/module/components/Participants/ParticipantsGroupHeader.js +4 -0
  150. package/lib/module/components/Participants/ParticipantsGroupHeader.js.map +1 -1
  151. package/lib/module/components/Participants/ParticipantsItem.js +2 -0
  152. package/lib/module/components/Participants/ParticipantsItem.js.map +1 -1
  153. package/lib/module/components/Participants/ParticipantsSeachInput.js +2 -0
  154. package/lib/module/components/Participants/ParticipantsSeachInput.js.map +1 -1
  155. package/lib/module/components/PeerSettingsModalContent.js +8 -1
  156. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  157. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js +3 -0
  158. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  159. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +3 -0
  160. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  161. package/lib/module/components/RoomSettingsModalContent.js +13 -1
  162. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  163. package/lib/module/utils/constants.js +108 -0
  164. package/lib/module/utils/constants.js.map +1 -0
  165. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  166. package/lib/typescript/Icons/BRB/index.d.ts.map +1 -1
  167. package/lib/typescript/Icons/Hand/index.d.ts.map +1 -1
  168. package/lib/typescript/Icons/Leave/index.d.ts.map +1 -1
  169. package/lib/typescript/Icons/Mic/index.d.ts.map +1 -1
  170. package/lib/typescript/Icons/Stop/index.d.ts.map +1 -1
  171. package/lib/typescript/components/BackButton.d.ts.map +1 -1
  172. package/lib/typescript/components/BottomSheet.d.ts +4 -1
  173. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  174. package/lib/typescript/components/ChangeNameModalContent.d.ts.map +1 -1
  175. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -1
  176. package/lib/typescript/components/CompanyLogo.d.ts.map +1 -1
  177. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  178. package/lib/typescript/components/HMSBaseButton.d.ts +2 -1
  179. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  180. package/lib/typescript/components/HMSChat.d.ts.map +1 -1
  181. package/lib/typescript/components/HMSDangerButton.d.ts +2 -0
  182. package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
  183. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  184. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -1
  185. package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -1
  186. package/lib/typescript/components/HMSManageCameraRotation.d.ts.map +1 -1
  187. package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
  188. package/lib/typescript/components/HMSManageLocalAudio.d.ts.map +1 -1
  189. package/lib/typescript/components/HMSManageLocalVideo.d.ts.map +1 -1
  190. package/lib/typescript/components/HMSManageRaiseHand.d.ts.map +1 -1
  191. package/lib/typescript/components/HMSNotification.d.ts +2 -1
  192. package/lib/typescript/components/HMSNotification.d.ts.map +1 -1
  193. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  194. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  195. package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
  196. package/lib/typescript/components/HMSPreviewTitle.d.ts.map +1 -1
  197. package/lib/typescript/components/HMSPrimaryButton.d.ts +2 -0
  198. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  199. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  200. package/lib/typescript/components/HMSSendMessageInput.d.ts.map +1 -1
  201. package/lib/typescript/components/HMSTextInput.d.ts +2 -1
  202. package/lib/typescript/components/HMSTextInput.d.ts.map +1 -1
  203. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  204. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts.map +1 -1
  205. package/lib/typescript/components/Participants/ParticipantsItem.d.ts.map +1 -1
  206. package/lib/typescript/components/Participants/ParticipantsSeachInput.d.ts.map +1 -1
  207. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  208. package/lib/typescript/components/PeerVideoTile/PeerNameAndNetwork.d.ts.map +1 -1
  209. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  210. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  211. package/lib/typescript/utils/constants.d.ts +101 -0
  212. package/lib/typescript/utils/constants.d.ts.map +1 -0
  213. package/package.json +2 -2
  214. package/src/HMSRoomSetup.tsx +1 -0
  215. package/src/Icons/BRB/index.tsx +2 -0
  216. package/src/Icons/Hand/index.tsx +6 -0
  217. package/src/Icons/Leave/index.tsx +2 -0
  218. package/src/Icons/Mic/index.tsx +6 -0
  219. package/src/Icons/Stop/index.tsx +2 -0
  220. package/src/components/BackButton.tsx +2 -0
  221. package/src/components/BottomSheet.tsx +10 -3
  222. package/src/components/ChangeNameModalContent.tsx +8 -1
  223. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +26 -2
  224. package/src/components/CompanyLogo.tsx +2 -0
  225. package/src/components/EndRoomModalContent.tsx +13 -3
  226. package/src/components/HMSBaseButton.tsx +4 -1
  227. package/src/components/HMSChat.tsx +6 -1
  228. package/src/components/HMSDangerButton.tsx +4 -0
  229. package/src/components/HMSLiveIndicator.tsx +4 -3
  230. package/src/components/HMSLocalScreenshareNotification.tsx +3 -0
  231. package/src/components/HMSManageAudioOutput.tsx +35 -3
  232. package/src/components/HMSManageCameraRotation.tsx +2 -0
  233. package/src/components/HMSManageLeave.tsx +2 -0
  234. package/src/components/HMSManageLocalAudio.tsx +2 -0
  235. package/src/components/HMSManageLocalVideo.tsx +2 -0
  236. package/src/components/HMSManageRaiseHand.tsx +2 -1
  237. package/src/components/HMSNotification.tsx +4 -2
  238. package/src/components/HMSPreviewEditName.tsx +2 -1
  239. package/src/components/HMSPreviewJoinButton.tsx +6 -0
  240. package/src/components/HMSPreviewSubtitle.tsx +9 -6
  241. package/src/components/HMSPreviewTitle.tsx +2 -1
  242. package/src/components/HMSPrimaryButton.tsx +4 -0
  243. package/src/components/HMSRoomOptions.tsx +2 -1
  244. package/src/components/HMSSendMessageInput.tsx +3 -0
  245. package/src/components/HMSTextInput.tsx +3 -0
  246. package/src/components/LeaveRoomBottomSheet.tsx +7 -1
  247. package/src/components/Participants/ParticipantsGroupHeader.tsx +12 -2
  248. package/src/components/Participants/ParticipantsItem.tsx +2 -1
  249. package/src/components/Participants/ParticipantsSeachInput.tsx +2 -0
  250. package/src/components/PeerSettingsModalContent.tsx +9 -1
  251. package/src/components/PeerVideoTile/PeerNameAndNetwork.tsx +3 -0
  252. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +3 -0
  253. package/src/components/RoomSettingsModalContent.tsx +14 -0
  254. package/src/utils/constants.ts +146 -0
@@ -1,12 +1,13 @@
1
1
  import * as React from 'react';
2
+ import { useSelector } from 'react-redux';
2
3
  import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
3
4
 
4
5
  import { useHMSRoomStyleSheet, useLeaveMethods } from '../hooks-util';
5
6
  import { AlertTriangleIcon, CloseIcon } from '../Icons';
6
7
  import { HMSDangerButton } from './HMSDangerButton';
7
- import { useSelector } from 'react-redux';
8
8
  import type { RootState } from '../redux';
9
9
  import { OnLeaveReason } from '../utils/types';
10
+ import { TestIds } from '../utils/constants';
10
11
 
11
12
  export interface EndRoomModalContentProps {
12
13
  dismissModal(): void;
@@ -48,7 +49,10 @@ export const EndRoomModalContent: React.FC<EndRoomModalContentProps> = ({
48
49
  <View style={styles.headerControls}>
49
50
  <AlertTriangleIcon />
50
51
 
51
- <Text style={[styles.headerText, hmsRoomStyles.headerText]}>
52
+ <Text
53
+ testID={TestIds.end_confirmation_heading}
54
+ style={[styles.headerText, hmsRoomStyles.headerText]}
55
+ >
52
56
  {canStream && isStreaming
53
57
  ? 'End Stream'
54
58
  : canEndRoom
@@ -58,13 +62,18 @@ export const EndRoomModalContent: React.FC<EndRoomModalContentProps> = ({
58
62
  </View>
59
63
 
60
64
  <TouchableOpacity
65
+ testID={TestIds.end_confirmation_close_btn}
61
66
  onPress={dismissModal}
62
67
  hitSlop={styles.closeIconHitSlop}
63
68
  >
64
69
  <CloseIcon />
65
70
  </TouchableOpacity>
66
71
  </View>
67
- <Text style={[styles.text, hmsRoomStyles.text]}>
72
+
73
+ <Text
74
+ testID={TestIds.end_confirmation_description}
75
+ style={[styles.text, hmsRoomStyles.text]}
76
+ >
68
77
  {canStream && isStreaming
69
78
  ? 'The stream will end for everyone after they’ve watched it.'
70
79
  : canEndRoom
@@ -72,6 +81,7 @@ export const EndRoomModalContent: React.FC<EndRoomModalContentProps> = ({
72
81
  : 'Others will continue after you leave. You can join the session again.'}
73
82
  </Text>
74
83
  <HMSDangerButton
84
+ testID={TestIds.end_confirmation_cta}
75
85
  loading={false}
76
86
  onPress={() => {
77
87
  if (canStream && isStreaming) {
@@ -6,12 +6,13 @@ import {
6
6
  TouchableHighlight,
7
7
  View,
8
8
  } from 'react-native';
9
- import type { StyleProp, ViewStyle, TextStyle, ColorValue } from 'react-native';
9
+ import type { StyleProp, ViewStyle, TextStyle, ColorValue, TouchableHighlightProps } from 'react-native';
10
10
 
11
11
  export interface HMSBaseButtonProps {
12
12
  title: string;
13
13
  loading: boolean;
14
14
  onPress(): void;
15
+ testID?: TouchableHighlightProps['testID'];
15
16
  underlayColor?: ColorValue | undefined;
16
17
  loaderColor?: ColorValue | undefined;
17
18
  style?: StyleProp<ViewStyle>;
@@ -21,6 +22,7 @@ export interface HMSBaseButtonProps {
21
22
  }
22
23
 
23
24
  export const HMSBaseButton: React.FC<HMSBaseButtonProps> = ({
25
+ testID,
24
26
  underlayColor,
25
27
  loaderColor,
26
28
  title,
@@ -33,6 +35,7 @@ export const HMSBaseButton: React.FC<HMSBaseButtonProps> = ({
33
35
  }) => {
34
36
  return (
35
37
  <TouchableHighlight
38
+ testID={testID}
36
39
  underlayColor={underlayColor}
37
40
  style={[styles.button, style]}
38
41
  onPress={onPress}
@@ -3,6 +3,7 @@ import * as React from 'react';
3
3
  import { ChatIcon } from '../Icons';
4
4
  import { PressableIcon } from './PressableIcon';
5
5
  import { useShowChatAndParticipants } from '../hooks-util';
6
+ import { TestIds } from '../utils/constants';
6
7
 
7
8
  export const HMSChat = () => {
8
9
  const { overlayChatVisible, show, hide } = useShowChatAndParticipants();
@@ -16,7 +17,11 @@ export const HMSChat = () => {
16
17
  };
17
18
 
18
19
  return (
19
- <PressableIcon onPress={toggleChatWindow} active={overlayChatVisible}>
20
+ <PressableIcon
21
+ testID={overlayChatVisible ? TestIds.close_chat_btn : TestIds.open_chat_btn}
22
+ onPress={toggleChatWindow}
23
+ active={overlayChatVisible}
24
+ >
20
25
  <ChatIcon />
21
26
  </PressableIcon>
22
27
  );
@@ -3,12 +3,14 @@ import type { StyleProp, ViewStyle } from 'react-native';
3
3
 
4
4
  import { useHMSRoomColorPalette, useHMSRoomStyleSheet } from '../hooks-util';
5
5
  import { HMSBaseButton } from './HMSBaseButton';
6
+ import type { HMSBaseButtonProps } from './HMSBaseButton';
6
7
  import { COLORS } from '../utils/theme';
7
8
 
8
9
  export interface HMSDangerButtonProps {
9
10
  title: string;
10
11
  loading: boolean;
11
12
  onPress(): void;
13
+ testID?: HMSBaseButtonProps['testID'];
12
14
  style?: StyleProp<ViewStyle>;
13
15
  disabled?: boolean;
14
16
  leftComponent?: React.ReactElement | null;
@@ -18,6 +20,7 @@ export const HMSDangerButton: React.FC<HMSDangerButtonProps> = ({
18
20
  title,
19
21
  loading,
20
22
  onPress,
23
+ testID,
21
24
  style,
22
25
  disabled,
23
26
  leftComponent,
@@ -45,6 +48,7 @@ export const HMSDangerButton: React.FC<HMSDangerButtonProps> = ({
45
48
 
46
49
  return (
47
50
  <HMSBaseButton
51
+ testID={testID}
48
52
  loaderColor={alertErrorBrighterColor}
49
53
  loading={loading}
50
54
  onPress={onPress}
@@ -16,6 +16,7 @@ import {
16
16
  import { EyeIcon } from '../Icons';
17
17
  import { COLORS, hexToRgbA } from '../utils/theme';
18
18
  import type { RootState } from '../redux';
19
+ import { TestIds } from '../utils/constants';
19
20
 
20
21
  const _HMSLiveIndicator = () => {
21
22
  const isHLSViewer = useIsHLSViewer();
@@ -62,7 +63,7 @@ const _HMSLiveIndicator = () => {
62
63
  <View style={styles.container}>
63
64
  {/* Live */}
64
65
  <View style={[styles.live, hmsRoomStyles.live]}>
65
- <Text style={[styles.liveText, hmsRoomStyles.liveText]}>LIVE</Text>
66
+ <Text testID={TestIds.live_text} style={[styles.liveText, hmsRoomStyles.liveText]}>LIVE</Text>
66
67
  </View>
67
68
 
68
69
  {/* Viewer Count */}
@@ -72,9 +73,9 @@ const _HMSLiveIndicator = () => {
72
73
  onPress={showParticipantsSheet}
73
74
  disabled={!canShowParticipants}
74
75
  >
75
- <EyeIcon />
76
+ <EyeIcon testID={TestIds.peer_count_icon} />
76
77
 
77
- <Text style={[styles.count, hmsRoomStyles.count]}>
78
+ <Text testID={TestIds.peer_count} style={[styles.count, hmsRoomStyles.count]}>
78
79
  {previewPeerCount}
79
80
  </Text>
80
81
  </TouchableOpacity>
@@ -6,6 +6,7 @@ import { HMSDangerButton } from './HMSDangerButton';
6
6
  import { HMSNotification } from './HMSNotification';
7
7
  import { useHMSRoomStyle } from '../hooks-util';
8
8
  import { NotificationTypes } from '../types';
9
+ import { TestIds } from '../utils/constants';
9
10
 
10
11
  export interface HMSLocalScreenshareNotificationProps {}
11
12
 
@@ -28,9 +29,11 @@ export const HMSLocalScreenshareNotification: React.FC<
28
29
  autoDismiss={false}
29
30
  style={notificationStyle}
30
31
  text={'You are sharing your screen'}
32
+ textTestID={TestIds.notification_sharing_screen}
31
33
  icon={<ScreenShareIcon />}
32
34
  cta={
33
35
  <HMSDangerButton
36
+ testID={TestIds.notification_stop_screen_share_btn}
34
37
  loading={false}
35
38
  onPress={stopScreenshare}
36
39
  title="Stop"
@@ -30,6 +30,7 @@ import {
30
30
  } from '../hooks-util';
31
31
  import type { RootState } from '../redux';
32
32
  import { BottomSheet } from './BottomSheet';
33
+ import { TestIds } from '../utils/constants';
33
34
 
34
35
  export const HMSManageAudioOutput: React.FC = () => {
35
36
  const hmsInstance = useHMSInstance();
@@ -141,6 +142,7 @@ export const HMSManageAudioOutput: React.FC = () => {
141
142
  return (
142
143
  <View>
143
144
  <PressableIcon
145
+ testID={TestIds.manage_audio_output}
144
146
  onPress={handleSpeakerChange}
145
147
  style={isHLSViewer ? styles.button : null}
146
148
  >
@@ -155,6 +157,8 @@ export const HMSManageAudioOutput: React.FC = () => {
155
157
  <BottomSheet.Header
156
158
  dismissModal={dismissModal}
157
159
  heading="Audio Output"
160
+ headingTestID={TestIds.audio_modal_heading}
161
+ closeIconTestID={TestIds.audio_modal_close_btn}
158
162
  />
159
163
 
160
164
  <BottomSheet.Divider />
@@ -162,7 +166,10 @@ export const HMSManageAudioOutput: React.FC = () => {
162
166
  <View style={styles.contentContainer}>
163
167
  {availableAudioOutputDevices.length === 0 ? (
164
168
  <View style={styles.emptyView}>
165
- <Text style={[styles.itemText, hmsRoomStyles.text]}>
169
+ <Text
170
+ testID={TestIds.audio_modal_empty_text}
171
+ style={[styles.itemText, hmsRoomStyles.text]}
172
+ >
166
173
  No other devices available!
167
174
  </Text>
168
175
  </View>
@@ -182,6 +189,7 @@ export const HMSManageAudioOutput: React.FC = () => {
182
189
  )}
183
190
 
184
191
  <TouchableOpacity
192
+ testID={audioDeviceTestIds[device]}
185
193
  style={styles.audioDeviceItem}
186
194
  onPress={() => handleSelectAudioDevice(device)}
187
195
  >
@@ -193,13 +201,13 @@ export const HMSManageAudioOutput: React.FC = () => {
193
201
  : device
194
202
  )}
195
203
 
196
- <Text style={[styles.itemText, hmsRoomStyles.text]}>
204
+ <Text testID={audioDeviceTextTestIds[device]} style={[styles.itemText, hmsRoomStyles.text]}>
197
205
  {getDescription(device, currentAudioOutputDevice)}
198
206
  </Text>
199
207
  </View>
200
208
 
201
209
  {device === currentAudioOutputDevice ? (
202
- <CheckIcon />
210
+ <CheckIcon testID={activeAudioDeviceTestIds[device]} />
203
211
  ) : null}
204
212
  </TouchableOpacity>
205
213
  </React.Fragment>
@@ -290,3 +298,27 @@ const audioDeviceSortOrder = {
290
298
  [HMSAudioDevice.EARPIECE]: 3,
291
299
  [HMSAudioDevice.BLUETOOTH]: 4,
292
300
  } as const;
301
+
302
+ const audioDeviceTestIds = {
303
+ [HMSAudioDevice.AUTOMATIC]: TestIds.automatic_audio_device_btn,
304
+ [HMSAudioDevice.SPEAKER_PHONE]: TestIds.phone_speaker_audio_device_btn,
305
+ [HMSAudioDevice.WIRED_HEADSET]: TestIds.wired_headset_audio_device_btn,
306
+ [HMSAudioDevice.EARPIECE]: TestIds.earpiece_audio_device_btn,
307
+ [HMSAudioDevice.BLUETOOTH]: TestIds.bluetooth_audio_device_btn,
308
+ } as const;
309
+
310
+ const audioDeviceTextTestIds = {
311
+ [HMSAudioDevice.AUTOMATIC]: TestIds.automatic_audio_device_text,
312
+ [HMSAudioDevice.SPEAKER_PHONE]: TestIds.phone_speaker_audio_device_text,
313
+ [HMSAudioDevice.WIRED_HEADSET]: TestIds.wired_headset_audio_device_text,
314
+ [HMSAudioDevice.EARPIECE]: TestIds.earpiece_audio_device_text,
315
+ [HMSAudioDevice.BLUETOOTH]: TestIds.bluetooth_audio_device_text,
316
+ } as const;
317
+
318
+ const activeAudioDeviceTestIds = {
319
+ [HMSAudioDevice.AUTOMATIC]: TestIds.automatic_audio_device_active,
320
+ [HMSAudioDevice.SPEAKER_PHONE]: TestIds.phone_speaker_audio_device_active,
321
+ [HMSAudioDevice.WIRED_HEADSET]: TestIds.wired_headset_audio_device_active,
322
+ [HMSAudioDevice.EARPIECE]: TestIds.earpiece_audio_device_active,
323
+ [HMSAudioDevice.BLUETOOTH]: TestIds.bluetooth_audio_device_active,
324
+ } as const;
@@ -6,6 +6,7 @@ import { useCanPublishVideo, useHMSActions } from '../hooks-sdk';
6
6
  import type { RootState } from '../redux';
7
7
  import { PressableIcon } from './PressableIcon';
8
8
  import { useHMSRoomStyle } from '../hooks-util';
9
+ import { TestIds } from '../utils/constants';
9
10
 
10
11
  export const HMSManageCameraRotation = () => {
11
12
  const canPublishVideo = useCanPublishVideo();
@@ -42,6 +43,7 @@ const RotateCameraButton = () => {
42
43
 
43
44
  return (
44
45
  <PressableIcon
46
+ testID={isLocalVideoMuted ? TestIds.switch_camera_disabled : TestIds.switch_camera}
45
47
  onPress={handleVideoMuteTogglePress}
46
48
  disabled={isLocalVideoMuted}
47
49
  >
@@ -6,6 +6,7 @@ import { useHMSRoomStyleSheet, useModalType } from '../hooks-util';
6
6
  import { ModalTypes } from '../utils/types';
7
7
  import { PressableIcon } from './PressableIcon';
8
8
  import { COLORS } from '../utils/theme';
9
+ import { TestIds } from '../utils/constants';
9
10
 
10
11
  export const HMSManageLeave: React.FC<LeaveButtonProps> = (props) => {
11
12
  // TODO: read current meeting joined state
@@ -65,6 +66,7 @@ const LeaveButton: React.FC<LeaveButtonProps> = (props) => {
65
66
  {React.cloneElement(leaveButtonDelegate, {
66
67
  onPress: handleLeaveButtonPress,
67
68
  style: hmsRoomStyles.button,
69
+ testID: TestIds.footer_leave_btn
68
70
  })}
69
71
  </View>
70
72
  );
@@ -5,6 +5,7 @@ import { MicIcon } from '../Icons';
5
5
  import { useCanPublishAudio, useHMSActions } from '../hooks-sdk';
6
6
  import type { RootState } from '../redux';
7
7
  import { PressableIcon } from './PressableIcon';
8
+ import { TestIds } from '../utils/constants';
8
9
 
9
10
  export const HMSManageLocalAudio = () => {
10
11
  const canPublishAudio = useCanPublishAudio();
@@ -31,6 +32,7 @@ const ToggleAudioMuteButton = () => {
31
32
 
32
33
  return (
33
34
  <PressableIcon
35
+ testID={!!isLocalAudioMuted ? TestIds.mic_muted_btn : TestIds.mic_unmuted_btn}
34
36
  onPress={handleAudioMuteTogglePress}
35
37
  active={isLocalAudioMuted}
36
38
  >
@@ -5,6 +5,7 @@ import type { RootState } from '../redux';
5
5
  import { useCanPublishVideo, useHMSActions } from '../hooks-sdk';
6
6
  import { PressableIcon } from './PressableIcon';
7
7
  import { CameraIcon } from '../Icons';
8
+ import { TestIds } from '../utils/constants';
8
9
 
9
10
  export const HMSManageLocalVideo = () => {
10
11
  const canPublishVideo = useCanPublishVideo();
@@ -31,6 +32,7 @@ const ToggleVideoMuteButton = () => {
31
32
 
32
33
  return (
33
34
  <PressableIcon
35
+ testID={!!isLocalVideoMuted ? TestIds.camera_muted_btn : TestIds.camera_unmuted_btn}
34
36
  onPress={handleVideoMuteTogglePress}
35
37
  active={isLocalVideoMuted}
36
38
  >
@@ -6,6 +6,7 @@ import { useHMSActions } from '../hooks-sdk';
6
6
  import { PressableIcon } from './PressableIcon';
7
7
  import { HandIcon } from '../Icons';
8
8
  import { parseMetadata } from '../utils/functions';
9
+ import { TestIds } from '../utils/constants';
9
10
 
10
11
  export const HMSManageRaiseHand = () => {
11
12
  const hmsActions = useHMSActions();
@@ -34,7 +35,7 @@ export const HMSManageRaiseHand = () => {
34
35
  };
35
36
 
36
37
  return (
37
- <PressableIcon onPress={toggleRaiseHand} active={isHandRaised}>
38
+ <PressableIcon testID={isHandRaised ? TestIds.hand_raised_btn : TestIds.hand_raise_btn} onPress={toggleRaiseHand} active={isHandRaised}>
38
39
  <HandIcon />
39
40
  </PressableIcon>
40
41
  );
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useDispatch } from 'react-redux';
3
3
  import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
4
- import type { StyleProp, ViewStyle, TextStyle } from 'react-native';
4
+ import type { StyleProp, ViewStyle, TextStyle, TextProps } from 'react-native';
5
5
 
6
6
  import { useHMSRoomStyleSheet } from '../hooks-util';
7
7
  import { CloseIcon } from '../Icons';
@@ -11,6 +11,7 @@ import { removeNotification } from '../redux/actions';
11
11
  export interface HMSNotificationProps {
12
12
  id: string;
13
13
  text: string | React.ReactElement;
14
+ textTestID?: TextProps['testID'];
14
15
  style?: StyleProp<ViewStyle>;
15
16
  textStyle?: StyleProp<TextStyle>;
16
17
  icon?: React.ReactElement;
@@ -28,6 +29,7 @@ export const HMSNotification: React.FC<HMSNotificationProps> = ({
28
29
  style,
29
30
  textStyle,
30
31
  cta,
32
+ textTestID,
31
33
  onDismiss,
32
34
  dismissDelay = 5000,
33
35
  autoDismiss = true,
@@ -59,7 +61,7 @@ export const HMSNotification: React.FC<HMSNotificationProps> = ({
59
61
  {icon ? <View style={styles.icon}>{icon}</View> : null}
60
62
 
61
63
  {typeof text === 'string' ? (
62
- <Text style={[styles.text, hmsRoomStyles.text, textStyle]}>
64
+ <Text testID={textTestID} style={[styles.text, hmsRoomStyles.text, textStyle]}>
63
65
  {text}
64
66
  </Text>
65
67
  ) : (
@@ -5,6 +5,7 @@ import type { RootState } from '../redux';
5
5
  import { changeUsername } from '../redux/actions';
6
6
  import { useHMSConfig } from '../hooks-util';
7
7
  import { HMSTextInput } from './HMSTextInput';
8
+ import { TestIds } from '../utils/constants';
8
9
 
9
10
  export interface HMSPreviewEditNameProps {}
10
11
 
@@ -18,5 +19,5 @@ export const HMSPreviewEditName: React.FC<HMSPreviewEditNameProps> = () => {
18
19
  updateConfig({ username: name });
19
20
  };
20
21
 
21
- return <HMSTextInput value={userName} onChangeText={handleNameChange} />;
22
+ return <HMSTextInput testID={TestIds.enter_name} value={userName} onChangeText={handleNameChange} />;
22
23
  };
@@ -10,6 +10,7 @@ import {
10
10
  useShouldGoLive,
11
11
  } from '../hooks-util';
12
12
  import { HMSPrimaryButton } from './HMSPrimaryButton';
13
+ import { TestIds } from '../utils/constants';
13
14
 
14
15
  export interface HMSPreviewJoinButtonProps {
15
16
  onJoin(): void;
@@ -49,6 +50,11 @@ export const HMSPreviewJoinButton: React.FC<HMSPreviewJoinButtonProps> = ({
49
50
 
50
51
  return (
51
52
  <HMSPrimaryButton
53
+ testId={
54
+ shouldGoLive
55
+ ? TestIds.go_live_btn
56
+ : TestIds.join_now_btn
57
+ }
52
58
  loading={loading}
53
59
  onPress={onJoin}
54
60
  title={
@@ -4,6 +4,7 @@ import type { StyleProp, TextStyle } from 'react-native';
4
4
 
5
5
  import { useCanPublishAudio, useCanPublishVideo } from '../hooks-sdk';
6
6
  import { useHMSLayoutConfig, useHMSRoomStyle } from '../hooks-util';
7
+ import { TestIds } from '../utils/constants';
7
8
 
8
9
  export interface HMSPreviewSubtitleProps {
9
10
  subtitle?: string;
@@ -27,29 +28,31 @@ export const HMSPreviewSubtitle: React.FC<HMSPreviewSubtitleProps> = ({
27
28
 
28
29
  const textStyles: StyleProp<TextStyle> = [styles.title, titleStyles];
29
30
 
31
+ const testID = TestIds.subtitle;
32
+
30
33
  if (subtitle) {
31
- return <Text style={textStyles}>{subtitle}</Text>;
34
+ return <Text testID={testID} style={textStyles}>{subtitle}</Text>;
32
35
  }
33
36
 
34
37
  if (hmsRoomPreviewSubtitle) {
35
- return <Text style={textStyles}>{hmsRoomPreviewSubtitle}</Text>;
38
+ return <Text testID={testID} style={textStyles}>{hmsRoomPreviewSubtitle}</Text>;
36
39
  }
37
40
 
38
41
  if (canPublishAudio && canPublishVideo) {
39
42
  return (
40
- <Text style={textStyles}>Setup your audio and video before joining</Text>
43
+ <Text testID={testID} style={textStyles}>Setup your audio and video before joining</Text>
41
44
  );
42
45
  }
43
46
 
44
47
  if (canPublishAudio) {
45
- return <Text style={textStyles}>Setup your audio before joining</Text>;
48
+ return <Text testID={testID} style={textStyles}>Setup your audio before joining</Text>;
46
49
  }
47
50
 
48
51
  if (canPublishVideo) {
49
- return <Text style={textStyles}>Setup your video before joining</Text>;
52
+ return <Text testID={testID} style={textStyles}>Setup your video before joining</Text>;
50
53
  }
51
54
 
52
- return <Text style={textStyles}>Enter your name before joining</Text>;
55
+ return <Text testID={testID} style={textStyles}>Enter your name before joining</Text>;
53
56
  };
54
57
 
55
58
  const styles = StyleSheet.create({
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { StyleSheet, Text } from 'react-native';
3
3
 
4
4
  import { useHMSLayoutConfig, useHMSRoomStyle } from '../hooks-util';
5
+ import { TestIds } from '../utils/constants';
5
6
 
6
7
  export interface HMSPreviewTitleProps {
7
8
  title?: string;
@@ -22,7 +23,7 @@ export const HMSPreviewTitle: React.FC<HMSPreviewTitleProps> = ({
22
23
  fontFamily: `${typography.font_family}-SemiBold`,
23
24
  }));
24
25
 
25
- return <Text style={[styles.title, titleStyles]}>{hmsRoomPreviewTitle}</Text>;
26
+ return <Text testID={TestIds.title} style={[styles.title, titleStyles]}>{hmsRoomPreviewTitle}</Text>;
26
27
  };
27
28
 
28
29
  const styles = StyleSheet.create({
@@ -3,11 +3,13 @@ import type { StyleProp, ViewStyle } from 'react-native';
3
3
 
4
4
  import { useHMSRoomColorPalette, useHMSRoomStyleSheet } from '../hooks-util';
5
5
  import { HMSBaseButton } from './HMSBaseButton';
6
+ import type { HMSBaseButtonProps } from './HMSBaseButton';
6
7
 
7
8
  export interface HMSPrimaryButtonProps {
8
9
  title: string;
9
10
  loading: boolean;
10
11
  onPress(): void;
12
+ testId?: HMSBaseButtonProps['testID'];
11
13
  style?: StyleProp<ViewStyle>;
12
14
  disabled?: boolean;
13
15
  leftComponent?: React.ReactElement | null;
@@ -17,6 +19,7 @@ export const HMSPrimaryButton: React.FC<HMSPrimaryButtonProps> = ({
17
19
  title,
18
20
  loading,
19
21
  onPress,
22
+ testId,
20
23
  style,
21
24
  disabled,
22
25
  leftComponent,
@@ -42,6 +45,7 @@ export const HMSPrimaryButton: React.FC<HMSPrimaryButtonProps> = ({
42
45
 
43
46
  return (
44
47
  <HMSBaseButton
48
+ testID={testId}
45
49
  loaderColor={onPrimaryHighColor}
46
50
  loading={loading}
47
51
  onPress={onPress}
@@ -21,6 +21,7 @@ import { useModalType } from '../hooks-util';
21
21
  import { BottomSheet } from './BottomSheet';
22
22
  import { ChangeNameModalContent } from './ChangeNameModalContent';
23
23
  import { StopRecordingModalContent } from './StopRecordingModalContent';
24
+ import { TestIds } from '../utils/constants';
24
25
 
25
26
  interface HMSRoomOptionsProps {}
26
27
 
@@ -46,7 +47,7 @@ export const HMSRoomOptions: React.FC<HMSRoomOptionsProps> = () => {
46
47
 
47
48
  return (
48
49
  <View>
49
- <PressableIcon onPress={onSettingsPress}>
50
+ <PressableIcon testID={TestIds.room_options_btn} onPress={onSettingsPress}>
50
51
  <HamburgerIcon />
51
52
  </PressableIcon>
52
53
 
@@ -4,6 +4,7 @@ import type { StyleProp, TextStyle, ViewStyle } from 'react-native';
4
4
 
5
5
  import { HMSTextInput } from './HMSTextInput';
6
6
  import { useHMSRoomStyleSheet, useSendMessage } from '../hooks-util';
7
+ import { TestIds } from '../utils/constants';
7
8
 
8
9
  interface HMSSendMessageInputProps {
9
10
  style?: StyleProp<TextStyle>;
@@ -25,6 +26,7 @@ export const HMSSendMessageInput: React.FC<HMSSendMessageInputProps> = ({
25
26
 
26
27
  return (
27
28
  <HMSTextInput
29
+ testID={TestIds.enter_message_input}
28
30
  style={[styles.input, style]}
29
31
  value={message}
30
32
  onChangeText={setMessage}
@@ -37,6 +39,7 @@ export const HMSSendMessageInput: React.FC<HMSSendMessageInputProps> = ({
37
39
  containerStyle,
38
40
  ]}
39
41
  sendIcon={true}
42
+ sendIconTestID={TestIds.send_message_cta}
40
43
  onSendIconPress={sendMessage}
41
44
  onSubmitEditing={sendMessage}
42
45
  returnKeyType="send"
@@ -10,6 +10,7 @@ import type {
10
10
  StyleProp,
11
11
  TextInputProps,
12
12
  TextStyle,
13
+ TouchableOpacityProps,
13
14
  ViewStyle,
14
15
  } from 'react-native';
15
16
 
@@ -31,6 +32,7 @@ export type HMSTextInputProps = TextInputProps & {
31
32
  | {
32
33
  rightIcon?: undefined;
33
34
  sendIcon: boolean;
35
+ sendIconTestID?: TouchableOpacityProps['testID'];
34
36
  onSendIconPress(): void;
35
37
  containerStyle?: StyleProp<ViewStyle>;
36
38
  focusedContainerStyle?: StyleProp<ViewStyle>;
@@ -160,6 +162,7 @@ export const HMSTextInput: React.FC<HMSTextInputProps> = ({
160
162
  {resetProps.rightIcon ||
161
163
  (resetProps.sendIcon ? (
162
164
  <TouchableOpacity
165
+ testID={resetProps.sendIconTestID}
163
166
  style={styles.sendIconButton}
164
167
  onPress={resetProps.onSendIconPress}
165
168
  >
@@ -8,6 +8,7 @@ import type { RootState } from '../redux';
8
8
  import { BottomSheet } from './BottomSheet';
9
9
  import { StopIcon } from '../Icons';
10
10
  import { ModalTypes, OnLeaveReason } from '../utils/types';
11
+ import { TestIds } from '../utils/constants';
11
12
 
12
13
  // const HEADER_CONTENT_HEIGHT = 24 + 8 + 8 + 2; // ICON_SIZE + TOP_PADDING + BOTTOM_PADDING + TOP&BOTTOM_BORDER_WIDTH
13
14
  // const HEADER_HEIGHT = 8 + HEADER_CONTENT_HEIGHT + 8; // TOP_HEADER_PADDING + HEADER_CONTENT_HEIGHT + BOTTOM_HEADER_PADDING
@@ -111,6 +112,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
111
112
  >
112
113
  <View>
113
114
  <TouchableOpacity
115
+ testID={TestIds.leave_cta}
114
116
  style={styles.button}
115
117
  onPress={onLeavePress}
116
118
  >
@@ -120,7 +122,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
120
122
  <Text style={[styles.text, hmsRoomStyles.text]}>
121
123
  Leave
122
124
  </Text>
123
- <Text style={[styles.subtext, hmsRoomStyles.subtext]}>
125
+ <Text testID={TestIds.leave_description} style={[styles.subtext, hmsRoomStyles.subtext]}>
124
126
  Others will continue after you leave. You can join the session
125
127
  again.
126
128
  </Text>
@@ -129,6 +131,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
129
131
 
130
132
  {canStream && isStreaming ? (
131
133
  <TouchableOpacity
134
+ testID={TestIds.end_stream_cta}
132
135
  style={[styles.button, hmsRoomStyles.endButton]}
133
136
  onPress={onEndStreamPress}
134
137
  >
@@ -139,6 +142,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
139
142
  End Stream
140
143
  </Text>
141
144
  <Text
145
+ testID={TestIds.end_stream_description}
142
146
  style={[styles.subtext, hmsRoomStyles.endSubtext]}
143
147
  >
144
148
  The stream will end for everyone after they’ve watched it.
@@ -147,6 +151,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
147
151
  </TouchableOpacity>
148
152
  ) : canEndRoom ? (
149
153
  <TouchableOpacity
154
+ testID={TestIds.end_session_cta}
150
155
  style={[styles.button, hmsRoomStyles.endButton]}
151
156
  onPress={onEndSessionPress}
152
157
  >
@@ -157,6 +162,7 @@ export const LeaveRoomBottomSheet: React.FC<LeaveRoomBottomSheetProps> = () => {
157
162
  End Session
158
163
  </Text>
159
164
  <Text
165
+ testID={TestIds.end_session_description}
160
166
  style={[styles.subtext, hmsRoomStyles.endSubtext]}
161
167
  >
162
168
  The session will end for everyone in the room immediately.