Fixed an issue where Appium couldn't long press message bubbles

This commit is contained in:
Morgan Pretty 2023-02-14 17:04:30 +11:00
parent 2f8ac7deaf
commit 2bcc049405
2 changed files with 13 additions and 2 deletions

View File

@ -1,6 +1,7 @@
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
import UIKit import UIKit
import SessionUIKit
import SignalUtilitiesKit import SignalUtilitiesKit
import SessionUtilitiesKit import SessionUtilitiesKit
import SessionMessagingKit import SessionMessagingKit
@ -771,12 +772,18 @@ final class VisibleMessageCell: MessageCell, TappableLabelDelegate {
// MARK: - Interaction // MARK: - Interaction
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if let bodyTappableLabel = bodyTappableLabel { // We are currently using Appium to do automated UI testing, unfortunately it seems to run into
let btIngetBodyTappableLabelCoordinates = convert(point, to: bodyTappableLabel) // issues when trying to long-press an element which has custom interaction logic - the TappableLabel
// only needs to custom handle touches for interacting with links so we check to see if it contains
// links before forwarding touches to it
if let bodyTappableLabel: TappableLabel = bodyTappableLabel, bodyTappableLabel.containsLinks {
let btIngetBodyTappableLabelCoordinates: CGPoint = convert(point, to: bodyTappableLabel)
if bodyTappableLabel.bounds.contains(btIngetBodyTappableLabelCoordinates) { if bodyTappableLabel.bounds.contains(btIngetBodyTappableLabelCoordinates) {
return bodyTappableLabel return bodyTappableLabel
} }
} }
return super.hitTest(point, with: event) return super.hitTest(point, with: event)
} }

View File

@ -55,6 +55,10 @@ public class TappableLabel: UILabel {
} }
} }
public var containsLinks: Bool {
return !links.isEmpty
}
// MARK: - Initialization // MARK: - Initialization
public override init(frame: CGRect) { public override init(frame: CGRect) {