Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions WireUI/Sources/WireLocators/Locators.swift
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,8 @@ public enum Locators {
case guestsArePresent = "Guests are present"
case conversationBackground
case openOngoingCallButton
case readReceiptsDisabledSystemMessage
case readReceiptsEnabledSystemMessage

}

Expand Down Expand Up @@ -232,6 +234,7 @@ public enum Locators {
case adminCell
case memberCell
case close
case readReceiptsSwitch
}

public enum ConversationDetailsActions: AutoPrefixedEnum {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import Foundation
import WireCommonComponents
import WireDataModel
import WireDesign
import WireLocators

struct ReadReceiptViewModel {
let icon: StyleKitIcon
Expand Down Expand Up @@ -88,7 +89,7 @@ final class ConversationReadReceiptSettingChangedCellDescription: ConversationMe

let containsHighlightableContent: Bool = false

let accessibilityIdentifier: String? = nil
let accessibilityIdentifier: String?
let accessibilityLabel: String?

init(
Expand All @@ -108,6 +109,14 @@ final class ConversationReadReceiptSettingChangedCellDescription: ConversationMe
showLine: true
)
self.accessibilityLabel = viewModel.attributedTitle()?.string
self.accessibilityIdentifier = switch systemMessageType {
case .readReceiptsDisabled:
Locators.ActiveConversationPage.readReceiptsDisabledSystemMessage.rawValue
case .readReceiptsEnabled:
Locators.ActiveConversationPage.readReceiptsEnabledSystemMessage.rawValue
default:
nil
}
self.actionController = nil
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ import UIKit
import WireCommonComponents
import WireDataModel
import WireDesign
import WireLocators

final class GroupDetailsReceiptOptionsCell: IconToggleCell {

override func setUp() {
super.setUp()

accessibilityIdentifier = "cell.groupdetails.receiptoptions"
toggle.accessibilityIdentifier = "ReadReceiptsSwitch"
toggle.accessibilityIdentifier = Locators.ConversationDetailsPage.readReceiptsSwitch.rawValue

title = L10n.Localizable.GroupDetails.ReceiptOptionsCell.title

Expand Down
18 changes: 18 additions & 0 deletions wire-ios/WireUITests/Pages/ActiveConversationPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -528,6 +528,24 @@ class ActiveConversationPage: PageModel {
return self
}

@discardableResult
func verifyReadReceiptsSystemMessage(
enabled: Bool,
file: StaticString = #filePath,
line: UInt = #line
) -> ActiveConversationPage {
let identifier = enabled
? Locators.ActiveConversationPage.readReceiptsEnabledSystemMessage.rawValue
: Locators.ActiveConversationPage.readReceiptsDisabledSystemMessage.rawValue
XCTAssertTrue(
app.descendants(matching: .any)[identifier].firstMatch.waitForExistence(timeout: 10),
"Expected read-receipts system message with identifier '\(identifier)' not found",
file: file,
line: line
)
return self
}

func verifyLinkPreviewCell(
file: StaticString = #filePath,
line: UInt = #line
Expand Down
10 changes: 10 additions & 0 deletions wire-ios/WireUITests/Pages/ConversationDetailsPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,16 @@ class ConversationDetailsPage: PageModel {
app.buttons[Locators.LastAdminLeaveAlert.deleteGroup.rawValue].firstMatch
}

var readReceiptsSwitch: XCUIElement {
app.switches[Locators.ConversationDetailsPage.readReceiptsSwitch.rawValue].firstMatch
}

@discardableResult
func toggleGroupReadReceipts() -> ConversationDetailsPage {
readReceiptsSwitch.waitAndTap()
return self
}

func appParticipantToConversation() throws -> SelectParticipantsPage {
addParticipantsButton.tap()
return try SelectParticipantsPage()
Expand Down
30 changes: 30 additions & 0 deletions wire-ios/WireUITests/SettingsTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -150,4 +150,34 @@ final class SettingsTests: WireUITestCase {
.verifyLinkPreviewCell()
}

@MainActor
func testUpdateReadReceiptSettingOnGroupConversation_TC_8947() async throws {

// GIVEN - a group conversation (read receipts are on by default)
let groupName = UserGenerator.generateRandomConversationName()
let (team, _, _, _) = try await UserHelper.default.registerTeam(
withMemberCount: 1,
conversation: .group(groupName)
)

let activeConversationPage = try app.loginUser(email: team.email, password: team.password)
.acceptPopup()
.openConversation()

// WHEN - read receipts are turned off
_ = try activeConversationPage
.openConversationDetails()
.toggleGroupReadReceipts()
.closeConversationDetails()
// THEN - a system message confirms read receipts are off
.verifyReadReceiptsSystemMessage(enabled: false)

// WHEN - read receipts are turned back on
_ = try activeConversationPage
.openConversationDetails()
.toggleGroupReadReceipts()
.closeConversationDetails()
// THEN - a system message confirms read receipts are on
.verifyReadReceiptsSystemMessage(enabled: true)
}
}
Loading