Update UI test snapshots. (#4722)

* Update UI test snapshots.

* Stop snapshotting the photo picker, just assert that it was presented.

* Fix a swipe action not being detected in the UI tests.

* Handle the split view properly on iPad when accepting a space invite.

Fixes a test but also properly handles replacing a room with a space.
This commit is contained in:
Doug
2025-11-11 11:34:01 +00:00
committed by GitHub
parent b698e0855d
commit f48c4ec2ff
38 changed files with 90 additions and 88 deletions
@@ -47,7 +47,6 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
private var cancellables = Set<AnyCancellable>()
private let sidebarNavigationStackCoordinator: NavigationStackCoordinator
private let detailNavigationStackCoordinator: NavigationStackCoordinator
private let selectedRoomSubject = CurrentValueSubject<String?, Never>(nil)
@@ -64,7 +63,6 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
self.flowParameters = flowParameters
sidebarNavigationStackCoordinator = NavigationStackCoordinator(navigationSplitCoordinator: navigationSplitCoordinator)
detailNavigationStackCoordinator = NavigationStackCoordinator(navigationSplitCoordinator: navigationSplitCoordinator)
navigationSplitCoordinator.setSidebarCoordinator(sidebarNavigationStackCoordinator)
setupStateMachine()
@@ -272,6 +270,9 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
switch context.toState {
case .roomList(detailState: .room(let detailStateRoomID)):
self?.selectedRoomSubject.send(detailStateRoomID)
case .roomList(detailState: .space):
// We don't show joined spaces in the room list yet so clear the selected room when accepting a space invite.
self?.selectedRoomSubject.send(nil)
case .roomList(detailState: nil):
self?.selectedRoomSubject.send(nil)
default:
@@ -472,9 +473,10 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
via: [String],
entryPoint: RoomFlowCoordinatorEntryPoint,
animated: Bool) {
let navigationStackCoordinator = NavigationStackCoordinator(navigationSplitCoordinator: navigationSplitCoordinator)
let coordinator = RoomFlowCoordinator(roomID: roomID,
isChildFlow: false,
navigationStackCoordinator: detailNavigationStackCoordinator,
navigationStackCoordinator: navigationStackCoordinator,
flowParameters: flowParameters)
coordinator.actions.sink { [weak self] action in
@@ -495,9 +497,7 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
roomFlowCoordinator = coordinator
if navigationSplitCoordinator.detailCoordinator !== detailNavigationStackCoordinator {
navigationSplitCoordinator.setDetailCoordinator(detailNavigationStackCoordinator, animated: animated)
}
navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator, animated: animated)
switch entryPoint {
case .room:
@@ -530,10 +530,11 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
// MARK: Space Flow
private func startSpaceFlow(spaceRoomListProxy: SpaceRoomListProxyProtocol, animated: Bool) {
let navigationStackCoordinator = NavigationStackCoordinator(navigationSplitCoordinator: navigationSplitCoordinator)
let coordinator = SpaceFlowCoordinator(entryPoint: .space(spaceRoomListProxy),
spaceServiceProxy: userSession.clientProxy.spaceService,
isChildFlow: false,
navigationStackCoordinator: detailNavigationStackCoordinator,
navigationStackCoordinator: navigationStackCoordinator,
flowParameters: flowParameters)
coordinator.actionsPublisher
.sink { [weak self] action in
@@ -551,9 +552,7 @@ class ChatsFlowCoordinator: FlowCoordinatorProtocol {
spaceFlowCoordinator = coordinator
if navigationSplitCoordinator.detailCoordinator !== detailNavigationStackCoordinator {
navigationSplitCoordinator.setDetailCoordinator(detailNavigationStackCoordinator, animated: animated)
}
navigationSplitCoordinator.setDetailCoordinator(navigationStackCoordinator, animated: animated)
coordinator.start()
}
@@ -154,8 +154,9 @@ class ChatsFlowCoordinatorStateMachine {
switch (fromState, event) {
case (.roomList, .selectRoom(let roomID, _, _)):
return .roomList(detailState: .room(roomID: roomID))
case (.roomList, .deselectRoom):
return .roomList(detailState: nil)
case (.roomList(let detailState), .deselectRoom):
// Ignore the flow's dismissal if it has already been replaced with a space.
return detailState == .space ? nil : .roomList(detailState: nil)
case (.roomList, .startSpaceFlow):
return .roomList(detailState: .space)