Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

import Swerkin

class ExampleBaseScreen: Screen, Navigable {
@MainActor
class ExampleBaseScreen: @MainActor Screen, Navigable {
final var test: BaseTestCase

final let renderer: ScreenRenderer = ExampleScreenRenderer()
Expand All @@ -20,8 +21,8 @@ class ExampleBaseScreen: Screen, Navigable {

var trait: String { return "" }
var name: String { return "" }
func create() -> UIViewController { UIViewController() }
func renderScreen() {}
@MainActor func create() -> UIViewController { UIViewController() }
@MainActor func renderScreen() {}
func entryPathSegments() -> [PathSegment] {
return []
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import Swerkin

@MainActor
public class ExampleScreenProvider: ScreenProvider<ExamplePresentableScreen> {
public var testReference: BaseTestCase! = nil

Expand Down
24 changes: 16 additions & 8 deletions Example/Swerkin-UITests-Examples/TestCore/ExampleTestCase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,21 +10,28 @@ import Swerkin
@testable
import Swerkin_Example

@MainActor
open class ExampleTestCase: BaseTestCase {

open override func setUp() {
super.setUp()

self.screenPresenter.registerScreenProvider(ExampleScreenProvider(testCase: self), for: ExamplePresentableScreen.self)
MainActor.assumeIsolated {
self.screenPresenter.registerScreenProvider(ExampleScreenProvider(testCase: self), for: ExamplePresentableScreen.self)
}


addTeardownBlock { @MainActor [weak self] in
guard let self else { return }
self.cleanupNavigation()
}
}

open override func tearDown() {

@MainActor
private func cleanupNavigation() {
resetNavigation {
self.navigateHome()
self.waitForAnimationsToFinish()
}

super.tearDown()
}

open override class func setUp() {
Expand All @@ -35,15 +42,16 @@ open class ExampleTestCase: BaseTestCase {
super.tearDown()
}

private func resetNavigation(navigate: @escaping () -> Void) {
@MainActor
private func resetNavigation(navigate: @escaping @MainActor () -> Void) {
if let alert = UIApplication.shared.topNavigationController()?.presentedViewController {
alert.dismiss(animated: false) { navigate() }
} else {
navigate()
}
}

private func navigateHome() {
@MainActor private func navigateHome() {
guard let rootNavController = UIApplication.shared.rootNavigationController() else {
fatalError("Failed to get rootViewController")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import UIKit

public extension UIApplication {
func rootNavigationController() -> UINavigationController? {
guard let keyWindow = UIApplication.shared.windows.first(where: { $0.isKeyWindow }) else {
guard let keyWindow = UIApplication.shared.connectedScenes
.compactMap ({ $0 as? UIWindowScene })
.flatMap ({ $0.windows })
.first (where: { $0.isKeyWindow }) else {
return nil
}
return keyWindow.rootViewController as? UINavigationController
Expand Down
1 change: 1 addition & 0 deletions Example/Swerkin-UnitTests/BaseTestCaseTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import XCTest
import Swerkin

@MainActor
class BaseTestCaseTests: XCTestCase {

let baseTestCase = BaseTestCase()
Expand Down
28 changes: 14 additions & 14 deletions Example/Swerkin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,7 @@
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 6.0;
};
name = Debug;
};
Expand Down Expand Up @@ -768,7 +768,7 @@
SDKROOT = iphoneos;
SWIFT_OBJC_BRIDGING_HEADER = "";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 4.2;
SWIFT_VERSION = 6.0;
VALIDATE_PRODUCT = YES;
};
name = Release;
Expand All @@ -780,7 +780,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = 75R8QKK66M;
INFOPLIST_FILE = Swerkin/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MODULE_NAME = ExampleApp;
OTHER_LDFLAGS = (
Expand All @@ -799,7 +799,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
};
name = Debug;
};
Expand All @@ -810,7 +810,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEVELOPMENT_TEAM = 75R8QKK66M;
INFOPLIST_FILE = Swerkin/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MODULE_NAME = ExampleApp;
OTHER_LDFLAGS = (
Expand All @@ -829,7 +829,7 @@
PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
};
name = Release;
};
Expand All @@ -849,14 +849,14 @@
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Swerkin-UnitTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.progressive.Swerkin-UnitTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
Expand All @@ -876,12 +876,12 @@
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Swerkin-UnitTests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.progressive.Swerkin-UnitTests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
Expand All @@ -904,15 +904,15 @@
DEBUG_INFORMATION_FORMAT = dwarf;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Swerkin-UITests-Examples/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.progressive.Swerkin-UITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swerkin_Example.app/Swerkin_Example";
};
Expand All @@ -935,12 +935,12 @@
CODE_SIGN_STYLE = Automatic;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "Swerkin-UITests-Examples/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 17.6;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.progressive.Swerkin-UITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
SWIFT_VERSION = 6.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swerkin_Example.app/Swerkin_Example";
};
Expand Down
2 changes: 1 addition & 1 deletion Example/Swerkin/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

import UIKit

@UIApplicationMain
@main
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
Expand Down
Loading
Loading