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
6 changes: 5 additions & 1 deletion BrowserKit/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,11 @@ let package = Package(
]
),
.testTarget(name: "SummarizeKitTests",
dependencies: ["SummarizeKit"]),
dependencies: ["SummarizeKit"],
swiftSettings: [
.unsafeFlags(["-enable-testing"]),
.enableExperimentalFeature("StrictConcurrency")
]),
.target(
name: "JWTKit",
dependencies: ["Common", "Shared"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import XCTest
import Common
@testable import SummarizeKit

@MainActor
final class LiteLLMClientTests: XCTestCase {
private static let mockAPIEndpoint = "https://test-api-url.com"
private static let mockAPIKey = "test-api-key"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ struct MockLanguageModelResponseSnapshot: LanguageModelResponseSnapshotProtocol
/// Mock implementation of a language model session for testing the session and responses.
/// This allows injecting controlled outputs or errors without calling the real inference backend.
@available(iOS 26, *)
final class MockLanguageModelSession: LanguageModelSessionProtocol {
final class MockLanguageModelSession: LanguageModelSessionProtocol, @unchecked Sendable {
var respondWith: [String] = [""]
var respondWithError: Error?

Expand Down
2 changes: 1 addition & 1 deletion BrowserKit/Tests/SummarizeKitTests/Mocks/MockWebView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import WebKit

class MockWebView: WKWebView {
final class MockWebView: WKWebView, @unchecked Sendable {
var overridenURL: URL

init(_ url: URL) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Foundation
import XCTest

public extension XCTestCase {
@MainActor
func trackForMemoryLeaks(_ object: AnyObject?, file: StaticString = #filePath, line: UInt = #line) {
addTeardownBlock { [weak object] in
XCTAssertNil(object, "Memory leak detected in \(file):\(line)")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import XCTest
@testable import SummarizeKit

@MainActor
final class SSEDataParserTests: XCTestCase {
private struct EventExampleType: Decodable, Equatable {
let id: Int
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
@testable import SummarizeKit
import XCTest

@MainActor
final class SummarizationCheckerTests: XCTestCase {
func jsStubBuilder(
canSummarize: Bool,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ final class MockSummarizeNavigationHandler: SummarizeNavigationHandler {
}

@MainActor
final class SummarizeControllerTests: XCTestCase {
final class SummarizeControllerTests: XCTestCase, @unchecked Sendable {
private var summarizer: MockSummarizer!
private var navigationHandler: MockSummarizeNavigationHandler!
private var webView: MockWebView!
Expand Down Expand Up @@ -87,24 +87,24 @@ final class SummarizeControllerTests: XCTestCase {
)
private let maxWords = 5000

override func setUp() {
super.setUp()
override func setUp() async throws {
UIView.setAnimationsEnabled(false)
summarizer = MockSummarizer(shouldRespond: ["Response"], shouldThrowError: nil)
navigationHandler = MockSummarizeNavigationHandler()
webView = MockWebView(URL(string: "https://www.example.com")!)
viewModel = MockSummarizeViewModel()
AppContainer.shared.register(service: DefaultThemeManager(sharedContainerIdentifier: "") as ThemeManager)
try await super.setUp()
}

override func tearDown() {
override func tearDown() async throws {
UIView.setAnimationsEnabled(true)
summarizer = nil
navigationHandler = nil
webView = nil
viewModel = nil
AppContainer.shared.reset()
super.tearDown()
try await super.tearDown()
}

func test_viewDidLoad_startSummarizing() async {
Expand Down
11 changes: 6 additions & 5 deletions BrowserKit/Tests/SummarizeKitTests/SummarizeViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// file, You can obtain one at http://mozilla.org/MPL/2.0/

import XCTest
import Common
@testable import SummarizeKit

extension Result {
Expand All @@ -25,28 +26,28 @@ class MockDateProvider: DateProvider {
}

@MainActor
final class SummarizeViewModelTests: XCTestCase {
final class SummarizeViewModelTests: XCTestCase, @unchecked Sendable {
private var tosAcceptor: MockSummarizeToSAcceptor!
private var summarizerService: MockSummarizerService!
private var webView: MockWebView!
private var dateProvider: MockDateProvider!
private let maxWords = 5000
private let url = URL(string: "https://example.com")!

override func setUp() {
super.setUp()
override func setUp() async throws {
try await super.setUp()
webView = MockWebView(url)
dateProvider = MockDateProvider()
summarizerService = MockSummarizerService()
tosAcceptor = MockSummarizeToSAcceptor()
}

override func tearDown() {
override func tearDown() async throws {
try await super.tearDown()
tosAcceptor = nil
dateProvider = nil
summarizerService = nil
webView = nil
super.tearDown()
}

func test_summarize_whenTosNotAccepted_whenTriggerIsShake_showsToSScreen() {
Expand Down
15 changes: 13 additions & 2 deletions BrowserKit/Tests/SummarizeKitTests/SummarizerServiceTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,24 @@

@testable import SummarizeKit
import XCTest
import Common

@MainActor
final class SummarizerServiceTests: XCTestCase {
static let mockResponse = ["Summarized", "content"]
static let maxWords = 100
static let maxWordCount = 50
var mockWebView = MockWebView(URL(string: "https://foo.com")!)
private var mockWebView: MockWebView!

override func setUp() async throws {
try await super.setUp()
mockWebView = MockWebView(URL(string: "https://foo.com")!)
}

override func tearDown() async throws {
try await super.tearDown()
mockWebView = nil
}

func testSummarizerServiceReturnsSummary() async throws {
let subject = createSubject()
Expand Down Expand Up @@ -93,7 +105,6 @@ final class SummarizerServiceTests: XCTestCase {
)
}

/// Convenience method to simplify error checking in the test cases
private func assertSummarizeThrows(
_ expected: SummarizerError,
when running: @escaping () async throws -> Void
Expand Down
2 changes: 1 addition & 1 deletion firefox-ios/Client/Configuration/version.xcconfig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
APP_VERSION = 146.0
APP_VERSION = 146.1