test(ios): add smoke coverage tests
parent
a5b3b8743a
commit
eec6212cdf
|
|
@ -15,7 +15,7 @@ final class BridgeConnectionController: ObservableObject {
|
||||||
private var didAutoConnect = false
|
private var didAutoConnect = false
|
||||||
private var seenStableIDs = Set<String>()
|
private var seenStableIDs = Set<String>()
|
||||||
|
|
||||||
init(appModel: NodeAppModel) {
|
init(appModel: NodeAppModel, startDiscovery: Bool = true) {
|
||||||
self.appModel = appModel
|
self.appModel = appModel
|
||||||
|
|
||||||
BridgeSettingsStore.bootstrapPersistence()
|
BridgeSettingsStore.bootstrapPersistence()
|
||||||
|
|
@ -32,7 +32,9 @@ final class BridgeConnectionController: ObservableObject {
|
||||||
self.discovery.$statusText
|
self.discovery.$statusText
|
||||||
.assign(to: &self.$discoveryStatusText)
|
.assign(to: &self.$discoveryStatusText)
|
||||||
|
|
||||||
self.discovery.start()
|
if startDiscovery {
|
||||||
|
self.discovery.start()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setScenePhase(_ phase: ScenePhase) {
|
func setScenePhase(_ phase: ScenePhase) {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
import Testing
|
||||||
|
@testable import Clawdis
|
||||||
|
|
||||||
|
@Suite struct IOSBridgeChatTransportTests {
|
||||||
|
@Test func requestsFailFastWhenBridgeNotConnected() async {
|
||||||
|
let bridge = BridgeSession()
|
||||||
|
let transport = IOSBridgeChatTransport(bridge: bridge)
|
||||||
|
|
||||||
|
do {
|
||||||
|
try await transport.setActiveSessionKey("node-test")
|
||||||
|
Issue.record("Expected setActiveSessionKey to throw when bridge not connected")
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
do {
|
||||||
|
_ = try await transport.requestHistory(sessionKey: "node-test")
|
||||||
|
Issue.record("Expected requestHistory to throw when bridge not connected")
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
do {
|
||||||
|
_ = try await transport.sendMessage(
|
||||||
|
sessionKey: "node-test",
|
||||||
|
message: "hello",
|
||||||
|
thinking: "low",
|
||||||
|
idempotencyKey: "idempotency",
|
||||||
|
attachments: [])
|
||||||
|
Issue.record("Expected sendMessage to throw when bridge not connected")
|
||||||
|
} catch {}
|
||||||
|
|
||||||
|
do {
|
||||||
|
_ = try await transport.requestHealth(timeoutMs: 250)
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,54 @@
|
||||||
|
import SwiftUI
|
||||||
|
import Testing
|
||||||
|
import UIKit
|
||||||
|
@testable import Clawdis
|
||||||
|
|
||||||
|
@Suite struct SwiftUIRenderSmokeTests {
|
||||||
|
@MainActor private static func host<V: View>(_ view: V) -> UIWindow {
|
||||||
|
let window = UIWindow(frame: UIScreen.main.bounds)
|
||||||
|
window.rootViewController = UIHostingController(rootView: view)
|
||||||
|
window.makeKeyAndVisible()
|
||||||
|
window.rootViewController?.view.setNeedsLayout()
|
||||||
|
window.rootViewController?.view.layoutIfNeeded()
|
||||||
|
return window
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test @MainActor func settingsTabBuildsAViewHierarchy() {
|
||||||
|
let appModel = NodeAppModel()
|
||||||
|
let bridgeController = BridgeConnectionController(appModel: appModel, startDiscovery: false)
|
||||||
|
|
||||||
|
let root = SettingsTab()
|
||||||
|
.environmentObject(appModel)
|
||||||
|
.environmentObject(appModel.voiceWake)
|
||||||
|
.environmentObject(bridgeController)
|
||||||
|
|
||||||
|
_ = Self.host(root)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test @MainActor func rootTabsBuildAViewHierarchy() {
|
||||||
|
let appModel = NodeAppModel()
|
||||||
|
let bridgeController = BridgeConnectionController(appModel: appModel, startDiscovery: false)
|
||||||
|
|
||||||
|
let root = RootTabs()
|
||||||
|
.environmentObject(appModel)
|
||||||
|
.environmentObject(appModel.voiceWake)
|
||||||
|
.environmentObject(bridgeController)
|
||||||
|
|
||||||
|
_ = Self.host(root)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test @MainActor func voiceTabBuildsAViewHierarchy() {
|
||||||
|
let appModel = NodeAppModel()
|
||||||
|
|
||||||
|
let root = VoiceTab()
|
||||||
|
.environmentObject(appModel)
|
||||||
|
.environmentObject(appModel.voiceWake)
|
||||||
|
|
||||||
|
_ = Self.host(root)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test @MainActor func voiceWakeWordsViewBuildsAViewHierarchy() {
|
||||||
|
let root = NavigationStack { VoiceWakeWordsSettingsView() }
|
||||||
|
_ = Self.host(root)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue