@100mslive/react-native-room-kit 1.0.2-beta.0 → 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 (266) 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/hooks-util.js +2 -1
  82. package/lib/commonjs/hooks-util.js.map +1 -1
  83. package/lib/commonjs/redux/reducers/hmsStates.js +15 -4
  84. package/lib/commonjs/redux/reducers/hmsStates.js.map +1 -1
  85. package/lib/commonjs/utils/constants.js +114 -0
  86. package/lib/commonjs/utils/constants.js.map +1 -0
  87. package/lib/module/HMSRoomSetup.js +1 -0
  88. package/lib/module/HMSRoomSetup.js.map +1 -1
  89. package/lib/module/Icons/BRB/index.js +2 -0
  90. package/lib/module/Icons/BRB/index.js.map +1 -1
  91. package/lib/module/Icons/Hand/index.js +2 -0
  92. package/lib/module/Icons/Hand/index.js.map +1 -1
  93. package/lib/module/Icons/Leave/index.js +2 -0
  94. package/lib/module/Icons/Leave/index.js.map +1 -1
  95. package/lib/module/Icons/Mic/index.js +2 -0
  96. package/lib/module/Icons/Mic/index.js.map +1 -1
  97. package/lib/module/Icons/Stop/index.js +2 -0
  98. package/lib/module/Icons/Stop/index.js.map +1 -1
  99. package/lib/module/components/BackButton.js +2 -0
  100. package/lib/module/components/BackButton.js.map +1 -1
  101. package/lib/module/components/BottomSheet.js +7 -1
  102. package/lib/module/components/BottomSheet.js.map +1 -1
  103. package/lib/module/components/ChangeNameModalContent.js +5 -0
  104. package/lib/module/components/ChangeNameModalContent.js.map +1 -1
  105. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js +5 -0
  106. package/lib/module/components/ChatAndParticipants/ChatAndParticipantsHeader.js.map +1 -1
  107. package/lib/module/components/CompanyLogo.js +2 -0
  108. package/lib/module/components/CompanyLogo.js.map +1 -1
  109. package/lib/module/components/EndRoomModalContent.js +6 -1
  110. package/lib/module/components/EndRoomModalContent.js.map +1 -1
  111. package/lib/module/components/HMSBaseButton.js +2 -0
  112. package/lib/module/components/HMSBaseButton.js.map +1 -1
  113. package/lib/module/components/HMSChat.js +2 -0
  114. package/lib/module/components/HMSChat.js.map +1 -1
  115. package/lib/module/components/HMSDangerButton.js +2 -0
  116. package/lib/module/components/HMSDangerButton.js.map +1 -1
  117. package/lib/module/components/HMSLiveIndicator.js +6 -1
  118. package/lib/module/components/HMSLiveIndicator.js.map +1 -1
  119. package/lib/module/components/HMSLocalScreenshareNotification.js +3 -0
  120. package/lib/module/components/HMSLocalScreenshareNotification.js.map +1 -1
  121. package/lib/module/components/HMSManageAudioOutput.js +32 -2
  122. package/lib/module/components/HMSManageAudioOutput.js.map +1 -1
  123. package/lib/module/components/HMSManageCameraRotation.js +2 -0
  124. package/lib/module/components/HMSManageCameraRotation.js.map +1 -1
  125. package/lib/module/components/HMSManageLeave.js +3 -1
  126. package/lib/module/components/HMSManageLeave.js.map +1 -1
  127. package/lib/module/components/HMSManageLocalAudio.js +2 -0
  128. package/lib/module/components/HMSManageLocalAudio.js.map +1 -1
  129. package/lib/module/components/HMSManageLocalVideo.js +2 -0
  130. package/lib/module/components/HMSManageLocalVideo.js.map +1 -1
  131. package/lib/module/components/HMSManageRaiseHand.js +2 -0
  132. package/lib/module/components/HMSManageRaiseHand.js.map +1 -1
  133. package/lib/module/components/HMSNotification.js +2 -0
  134. package/lib/module/components/HMSNotification.js.map +1 -1
  135. package/lib/module/components/HMSPreviewEditName.js +2 -0
  136. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  137. package/lib/module/components/HMSPreviewJoinButton.js +2 -0
  138. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  139. package/lib/module/components/HMSPreviewSubtitle.js +8 -0
  140. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  141. package/lib/module/components/HMSPreviewTitle.js +2 -0
  142. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  143. package/lib/module/components/HMSPrimaryButton.js +2 -0
  144. package/lib/module/components/HMSPrimaryButton.js.map +1 -1
  145. package/lib/module/components/HMSRoomOptions.js +2 -0
  146. package/lib/module/components/HMSRoomOptions.js.map +1 -1
  147. package/lib/module/components/HMSSendMessageInput.js +3 -0
  148. package/lib/module/components/HMSSendMessageInput.js.map +1 -1
  149. package/lib/module/components/HMSTextInput.js +1 -0
  150. package/lib/module/components/HMSTextInput.js.map +1 -1
  151. package/lib/module/components/LeaveRoomBottomSheet.js +7 -0
  152. package/lib/module/components/LeaveRoomBottomSheet.js.map +1 -1
  153. package/lib/module/components/Participants/ParticipantsGroupHeader.js +4 -0
  154. package/lib/module/components/Participants/ParticipantsGroupHeader.js.map +1 -1
  155. package/lib/module/components/Participants/ParticipantsItem.js +2 -0
  156. package/lib/module/components/Participants/ParticipantsItem.js.map +1 -1
  157. package/lib/module/components/Participants/ParticipantsSeachInput.js +2 -0
  158. package/lib/module/components/Participants/ParticipantsSeachInput.js.map +1 -1
  159. package/lib/module/components/PeerSettingsModalContent.js +8 -1
  160. package/lib/module/components/PeerSettingsModalContent.js.map +1 -1
  161. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js +3 -0
  162. package/lib/module/components/PeerVideoTile/PeerNameAndNetwork.js.map +1 -1
  163. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js +3 -0
  164. package/lib/module/components/PeerVideoTile/PeerVideoTileView.js.map +1 -1
  165. package/lib/module/components/RoomSettingsModalContent.js +13 -1
  166. package/lib/module/components/RoomSettingsModalContent.js.map +1 -1
  167. package/lib/module/hooks-util.js +2 -1
  168. package/lib/module/hooks-util.js.map +1 -1
  169. package/lib/module/redux/reducers/hmsStates.js +15 -4
  170. package/lib/module/redux/reducers/hmsStates.js.map +1 -1
  171. package/lib/module/utils/constants.js +108 -0
  172. package/lib/module/utils/constants.js.map +1 -0
  173. package/lib/typescript/HMSRoomSetup.d.ts.map +1 -1
  174. package/lib/typescript/Icons/BRB/index.d.ts.map +1 -1
  175. package/lib/typescript/Icons/Hand/index.d.ts.map +1 -1
  176. package/lib/typescript/Icons/Leave/index.d.ts.map +1 -1
  177. package/lib/typescript/Icons/Mic/index.d.ts.map +1 -1
  178. package/lib/typescript/Icons/Stop/index.d.ts.map +1 -1
  179. package/lib/typescript/components/BackButton.d.ts.map +1 -1
  180. package/lib/typescript/components/BottomSheet.d.ts +4 -1
  181. package/lib/typescript/components/BottomSheet.d.ts.map +1 -1
  182. package/lib/typescript/components/ChangeNameModalContent.d.ts.map +1 -1
  183. package/lib/typescript/components/ChatAndParticipants/ChatAndParticipantsHeader.d.ts.map +1 -1
  184. package/lib/typescript/components/CompanyLogo.d.ts.map +1 -1
  185. package/lib/typescript/components/EndRoomModalContent.d.ts.map +1 -1
  186. package/lib/typescript/components/HMSBaseButton.d.ts +2 -1
  187. package/lib/typescript/components/HMSBaseButton.d.ts.map +1 -1
  188. package/lib/typescript/components/HMSChat.d.ts.map +1 -1
  189. package/lib/typescript/components/HMSDangerButton.d.ts +2 -0
  190. package/lib/typescript/components/HMSDangerButton.d.ts.map +1 -1
  191. package/lib/typescript/components/HMSLiveIndicator.d.ts.map +1 -1
  192. package/lib/typescript/components/HMSLocalScreenshareNotification.d.ts.map +1 -1
  193. package/lib/typescript/components/HMSManageAudioOutput.d.ts.map +1 -1
  194. package/lib/typescript/components/HMSManageCameraRotation.d.ts.map +1 -1
  195. package/lib/typescript/components/HMSManageLeave.d.ts.map +1 -1
  196. package/lib/typescript/components/HMSManageLocalAudio.d.ts.map +1 -1
  197. package/lib/typescript/components/HMSManageLocalVideo.d.ts.map +1 -1
  198. package/lib/typescript/components/HMSManageRaiseHand.d.ts.map +1 -1
  199. package/lib/typescript/components/HMSNotification.d.ts +2 -1
  200. package/lib/typescript/components/HMSNotification.d.ts.map +1 -1
  201. package/lib/typescript/components/HMSPreviewEditName.d.ts.map +1 -1
  202. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  203. package/lib/typescript/components/HMSPreviewSubtitle.d.ts.map +1 -1
  204. package/lib/typescript/components/HMSPreviewTitle.d.ts.map +1 -1
  205. package/lib/typescript/components/HMSPrimaryButton.d.ts +2 -0
  206. package/lib/typescript/components/HMSPrimaryButton.d.ts.map +1 -1
  207. package/lib/typescript/components/HMSRoomOptions.d.ts.map +1 -1
  208. package/lib/typescript/components/HMSSendMessageInput.d.ts.map +1 -1
  209. package/lib/typescript/components/HMSTextInput.d.ts +2 -1
  210. package/lib/typescript/components/HMSTextInput.d.ts.map +1 -1
  211. package/lib/typescript/components/LeaveRoomBottomSheet.d.ts.map +1 -1
  212. package/lib/typescript/components/Participants/ParticipantsGroupHeader.d.ts.map +1 -1
  213. package/lib/typescript/components/Participants/ParticipantsItem.d.ts.map +1 -1
  214. package/lib/typescript/components/Participants/ParticipantsSeachInput.d.ts.map +1 -1
  215. package/lib/typescript/components/PeerSettingsModalContent.d.ts.map +1 -1
  216. package/lib/typescript/components/PeerVideoTile/PeerNameAndNetwork.d.ts.map +1 -1
  217. package/lib/typescript/components/PeerVideoTile/PeerVideoTileView.d.ts.map +1 -1
  218. package/lib/typescript/components/RoomSettingsModalContent.d.ts.map +1 -1
  219. package/lib/typescript/hooks-util.d.ts.map +1 -1
  220. package/lib/typescript/redux/reducers/hmsStates.d.ts.map +1 -1
  221. package/lib/typescript/utils/constants.d.ts +101 -0
  222. package/lib/typescript/utils/constants.d.ts.map +1 -0
  223. package/package.json +2 -2
  224. package/src/HMSRoomSetup.tsx +1 -0
  225. package/src/Icons/BRB/index.tsx +2 -0
  226. package/src/Icons/Hand/index.tsx +6 -0
  227. package/src/Icons/Leave/index.tsx +2 -0
  228. package/src/Icons/Mic/index.tsx +6 -0
  229. package/src/Icons/Stop/index.tsx +2 -0
  230. package/src/components/BackButton.tsx +2 -0
  231. package/src/components/BottomSheet.tsx +10 -3
  232. package/src/components/ChangeNameModalContent.tsx +8 -1
  233. package/src/components/ChatAndParticipants/ChatAndParticipantsHeader.tsx +26 -2
  234. package/src/components/CompanyLogo.tsx +2 -0
  235. package/src/components/EndRoomModalContent.tsx +13 -3
  236. package/src/components/HMSBaseButton.tsx +4 -1
  237. package/src/components/HMSChat.tsx +6 -1
  238. package/src/components/HMSDangerButton.tsx +4 -0
  239. package/src/components/HMSLiveIndicator.tsx +4 -3
  240. package/src/components/HMSLocalScreenshareNotification.tsx +3 -0
  241. package/src/components/HMSManageAudioOutput.tsx +35 -3
  242. package/src/components/HMSManageCameraRotation.tsx +2 -0
  243. package/src/components/HMSManageLeave.tsx +2 -0
  244. package/src/components/HMSManageLocalAudio.tsx +2 -0
  245. package/src/components/HMSManageLocalVideo.tsx +2 -0
  246. package/src/components/HMSManageRaiseHand.tsx +2 -1
  247. package/src/components/HMSNotification.tsx +4 -2
  248. package/src/components/HMSPreviewEditName.tsx +2 -1
  249. package/src/components/HMSPreviewJoinButton.tsx +6 -0
  250. package/src/components/HMSPreviewSubtitle.tsx +9 -6
  251. package/src/components/HMSPreviewTitle.tsx +2 -1
  252. package/src/components/HMSPrimaryButton.tsx +4 -0
  253. package/src/components/HMSRoomOptions.tsx +2 -1
  254. package/src/components/HMSSendMessageInput.tsx +3 -0
  255. package/src/components/HMSTextInput.tsx +3 -0
  256. package/src/components/LeaveRoomBottomSheet.tsx +7 -1
  257. package/src/components/Participants/ParticipantsGroupHeader.tsx +12 -2
  258. package/src/components/Participants/ParticipantsItem.tsx +2 -1
  259. package/src/components/Participants/ParticipantsSeachInput.tsx +2 -0
  260. package/src/components/PeerSettingsModalContent.tsx +9 -1
  261. package/src/components/PeerVideoTile/PeerNameAndNetwork.tsx +3 -0
  262. package/src/components/PeerVideoTile/PeerVideoTileView.tsx +3 -0
  263. package/src/components/RoomSettingsModalContent.tsx +14 -0
  264. package/src/hooks-util.ts +3 -2
  265. package/src/redux/reducers/hmsStates.ts +19 -7
  266. package/src/utils/constants.ts +146 -0
@@ -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.
@@ -8,6 +8,7 @@ import type { ParticipantAccordianData } from '../../hooks-util';
8
8
  import { ChevronIcon, ThreeDotsIcon } from '../../Icons';
9
9
  import { Menu } from '../MenuModal';
10
10
  import { ParticipantsGroupOptions } from './ParticipantsGroupOptions';
11
+ import { TestIds } from '../../utils/constants';
11
12
  // import type { RootState } from '../../redux';
12
13
  // import { isParticipantHostOrBroadcaster } from '../../utils/functions';
13
14
 
@@ -74,12 +75,16 @@ const _ParticipantsGroupHeader: React.FC<ParticipantsGroupHeaderProps> = ({
74
75
  >
75
76
  <View style={{ flexDirection: 'row', alignItems: 'center' }}>
76
77
  {onBackPress ? (
77
- <TouchableOpacity style={{ marginRight: 8 }} onPress={onBackPress}>
78
+ <TouchableOpacity
79
+ testID={TestIds.participants_group_back_btn}
80
+ style={{ marginRight: 8 }}
81
+ onPress={onBackPress}
82
+ >
78
83
  <ChevronIcon direction="left" />
79
84
  </TouchableOpacity>
80
85
  ) : null}
81
86
 
82
- <Text style={[styles.label, hmsRoomStyles.label]}>{label}</Text>
87
+ <Text testID={TestIds.participants_group_name} style={[styles.label, hmsRoomStyles.label]}>{label}</Text>
83
88
  </View>
84
89
 
85
90
  <View style={styles.controls}>
@@ -100,6 +105,11 @@ const _ParticipantsGroupHeader: React.FC<ParticipantsGroupHeaderProps> = ({
100
105
 
101
106
  {toggleGroupExpand ? (
102
107
  <TouchableOpacity
108
+ testID={
109
+ expanded
110
+ ? TestIds.participants_group_collapse_btn
111
+ : TestIds.participants_group_expand_btn
112
+ }
103
113
  style={[styles.control, expanded ? styles.expandedArrowIcon : null]}
104
114
  onPress={toggleGroupExpand}
105
115
  >
@@ -9,6 +9,7 @@ import { HandIcon, NetworkQualityIcon, ThreeDotsIcon } from '../../Icons';
9
9
  import { Menu } from '../MenuModal';
10
10
  import { ParticipantsItemOptions } from './ParticipantsItemOptions';
11
11
  import type { RootState } from '../../redux';
12
+ import { TestIds } from '../../utils/constants';
12
13
 
13
14
  interface ParticipantsItemProps {
14
15
  groupId: string;
@@ -51,7 +52,7 @@ const _ParticipantsItem: React.FC<ParticipantsItemProps> = ({
51
52
 
52
53
  return (
53
54
  <View style={styles.container}>
54
- <Text style={[styles.label, hmsRoomStyles.label]}>
55
+ <Text testID={TestIds.participant_name} style={[styles.label, hmsRoomStyles.label]}>
55
56
  {peer.name}
56
57
  {peer.isLocal ? ' (You)' : null}
57
58
  </Text>
@@ -4,6 +4,7 @@ import { StyleSheet, Platform } from 'react-native';
4
4
  import { useHMSRoomColorPalette, useHMSRoomStyle } from '../../hooks-util';
5
5
  import { SearchIcon } from '../../Icons';
6
6
  import { HMSTextInput } from '../HMSTextInput';
7
+ import { TestIds } from '../../utils/constants';
7
8
 
8
9
  type ParticipantsSearchInputProps = {
9
10
  searchText: string;
@@ -22,6 +23,7 @@ export const ParticipantsSearchInput: React.FC<
22
23
 
23
24
  return (
24
25
  <HMSTextInput
26
+ testID={TestIds.search_participant_input}
25
27
  value={searchText}
26
28
  onChangeText={setSearchText}
27
29
  placeholder="Search for participants"
@@ -7,7 +7,7 @@ import {
7
7
  LayoutAnimation,
8
8
  InteractionManager,
9
9
  } from 'react-native';
10
- import type { StyleProp, TextStyle } from 'react-native';
10
+ import type { StyleProp, TextStyle, TouchableOpacityProps } from 'react-native';
11
11
  import { useDispatch, useSelector } from 'react-redux';
12
12
  import { HMSTrack } from '@100mslive/react-native-hms';
13
13
 
@@ -24,6 +24,7 @@ import {
24
24
  PersonIcon,
25
25
  } from '../Icons';
26
26
  import { BottomSheet } from './BottomSheet';
27
+ import { TestIds } from '../utils/constants';
27
28
 
28
29
  interface PeerSettingsModalContentProps {
29
30
  peerTrackNode: PeerTrackNode;
@@ -112,7 +113,10 @@ export const PeerSettingsModalContent: React.FC<
112
113
  <BottomSheet.Header
113
114
  dismissModal={cancelModal}
114
115
  heading={peer.name + (peer.isLocal ? ' (You)' : '')}
116
+ headingTestID={TestIds.tile_modal_heading}
115
117
  subheading={peer.role?.name}
118
+ subheadingTestID={TestIds.tile_modal_subheading}
119
+ closeIconTestID={TestIds.tile_modal_close_btn}
116
120
  />
117
121
 
118
122
  <BottomSheet.Divider />
@@ -121,6 +125,7 @@ export const PeerSettingsModalContent: React.FC<
121
125
  <View style={styles.contentContainer}>
122
126
  {peer.isLocal ? (
123
127
  <SettingItem
128
+ testID={TestIds.tile_modal_change_name_btn}
124
129
  text={'Change Name'}
125
130
  icon={<PencilIcon style={styles.customIcon} />}
126
131
  onPress={changeName}
@@ -199,11 +204,13 @@ type SettingItemProps = {
199
204
  onPress(): void;
200
205
  text: string;
201
206
  icon: React.ReactElement;
207
+ testID?: TouchableOpacityProps['testID'];
202
208
  disabled?: boolean;
203
209
  textStyle?: StyleProp<TextStyle>;
204
210
  };
205
211
 
206
212
  const SettingItem: React.FC<SettingItemProps> = ({
213
+ testID,
207
214
  onPress,
208
215
  text,
209
216
  icon,
@@ -217,6 +224,7 @@ const SettingItem: React.FC<SettingItemProps> = ({
217
224
 
218
225
  return (
219
226
  <TouchableOpacity
227
+ testID={testID}
220
228
  disabled={disabled}
221
229
  style={[styles.button, disabled ? { opacity: 0.6 } : null]}
222
230
  onPress={onPress}
@@ -5,6 +5,7 @@ import { HMSTrackSource } from '@100mslive/react-native-hms';
5
5
  import { hexToRgbA } from '../../utils/theme';
6
6
  import { NetworkQualityIcon, ScreenShareIcon } from '../../Icons';
7
7
  import { useHMSRoomStyleSheet } from '../../hooks-util';
8
+ import { TestIds } from '../../utils/constants';
8
9
 
9
10
  export interface PeerNameAndNetworkProps {
10
11
  name: string;
@@ -43,6 +44,7 @@ export const PeerNameAndNetwork: React.FC<PeerNameAndNetworkProps> = ({
43
44
  ) : null}
44
45
 
45
46
  <Text
47
+ testID={TestIds.tile_user_name}
46
48
  style={[styles.name, hmsRoomStyles.name]}
47
49
  numberOfLines={1}
48
50
  ellipsizeMode={showTrackSource ? 'middle' : 'tail'}
@@ -53,6 +55,7 @@ export const PeerNameAndNetwork: React.FC<PeerNameAndNetworkProps> = ({
53
55
  </Text>
54
56
 
55
57
  <NetworkQualityIcon
58
+ testID={TestIds.tile_network_icon}
56
59
  quality={networkQuality}
57
60
  style={styles.networkIcon}
58
61
  />
@@ -27,6 +27,7 @@ import {
27
27
  } from '../../hooks-sdk-selectors';
28
28
  import { useHMSRoomStyleSheet } from '../../hooks-util';
29
29
  import { HMSFullScreenButton } from './HMSFullScreenButton';
30
+ import { TestIds } from '../../utils/constants';
30
31
 
31
32
  export interface PeerVideoTileViewProps {
32
33
  peerTrackNode: PeerTrackNode;
@@ -207,6 +208,7 @@ export const _PeerVideoTileView = React.forwardRef<
207
208
  onUnmount={hide}
208
209
  >
209
210
  <PressableIcon
211
+ testID={TestIds.tile_options}
210
212
  activeOpacity={0.7}
211
213
  style={[styles.iconWrapper, hmsRoomStyles.iconWrapperStyles]}
212
214
  border={false}
@@ -217,6 +219,7 @@ export const _PeerVideoTileView = React.forwardRef<
217
219
  </UnmountAfterDelay>
218
220
  ) : (
219
221
  <PressableIcon
222
+ testID={TestIds.tile_options}
220
223
  activeOpacity={0.7}
221
224
  style={[styles.iconWrapper, hmsRoomStyles.iconWrapperStyles]}
222
225
  border={false}