Skip to content

chore: Modernize TestBed imports and project configuration [2/4]#1568

Merged
NidhiDixit09 merged 26 commits into4.0.0-alpha.0from
wpinho-branch/testbed-modernization
Feb 23, 2026
Merged

chore: Modernize TestBed imports and project configuration [2/4]#1568
NidhiDixit09 merged 26 commits into4.0.0-alpha.0from
wpinho-branch/testbed-modernization

Conversation

@wpinho-branch
Copy link
Copy Markdown
Collaborator

@wpinho-branch wpinho-branch commented Feb 13, 2026

Summary

Modernize Branch-TestBed project: update import styles and project configuration.

This is PR 2/4 of the NSOperationQueue migration chain.

Changes (32 files)

All changes are in Branch-TestBed/:

Import Modernization (16 test files):

  • Update all test files from #import <Branch/Branch.h> to @import BranchSDK;
  • Includes unit tests, unhosted tests, and UI tests

Project Configuration (8 files):

  • Update project.pbxproj for new SDK structure
  • Update 6 Xcode schemes
  • Remove Package.resolved (no longer needed)

App Source (4 files):

  • Modernize AppDelegate.m initialization
  • Update NavigationController.h, PasteControlViewController.m, ViewController.m imports

Review Note

Most changes are mechanical import updates (#import@import). Quick scan recommended.

Build Status

  • TestBed build: BUILD SUCCEEDED

PR Chain

  1. refactor: Migrate to NSOperationQueue-based request processing [1/4] #1566 → Core NSOperationQueue Migration [1/4]
  2. chore: Modernize TestBed imports and project configuration [2/4] #1568 → TestBed Modernization [2/4] ← You are here
  3. feat(BNCInitializationOptions): Add Objective-C initialization options API [3/4] [EMT-2878] #1560 → BNCInitializationOptions API [3/4]
  4. fix(Branch): Coalesce concurrent init callbacks to prevent double open [4/4] (INTENG-21106) #1562 → Double Open Fix [4/4]

Part of the NSOperationQueue migration series targeting 4.0.0-alpha.0.

Replace array-based BNCServerRequestQueue with NSOperationQueue architecture:
- Add BNCServerRequestOperation wrapper for request execution
- Implement serial execution via maxConcurrentOperationCount = 1
- Move BNCConfig.h and BranchConstants.h to Public/ headers
- Add BranchSwiftSDK target with Swift request queue implementation
- Consolidate BranchSDK_ObjC into BranchSDK
- Update Package.swift for new target structure
@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 13, 2026

Code Quality type: bug fix

Summary By MatterAI MatterAI logo

🔄 What Changed

This PR continues the Branch-TestBed modernization (Phase 2/4) by transitioning integration tests to @testable import BranchSDK and implementing enhanced logging via XCTestObservationCenter. It refines the testInitSessionAndSetCPPLevel logic to include explicit assertions against BNCPreferenceHelper. This builds upon previous work that removed 62 lines of legacy AppDelegate setup and updated project.pbxproj for modular SDK support.

🔍 Impact of the Change

Improved test reliability and observability in CI/CD environments like GitHub Actions. The use of @testable imports allows for deeper integration testing without exposing internal APIs, while the standardized attribution tests ensure privacy compliance settings are correctly persisted across iOS and tvOS platforms.

📁 Total Files Changed

Click to Expand
File ChangeLog
ODM Testing BNCODMTests.m Updated loadODMInfoWithCompletionHandler call to align with modern SDK instance patterns.
iOS Integration iOSReleaseTestTests.swift Added @testable imports, lifecycle logging, and explicit attribution level assertions.
tvOS Integration tvOSReleaseTestTests.swift Mirrored iOS integration test improvements for tvOS platform parity.
Init Modernization AppDelegate.m (Previous) Removed legacy setup to streamline app initialization logic.
Project Config project.pbxproj (Previous) Updated build settings and schemes for modular SDK structure.

🧪 Test Added/Recommended

Added

  • testInitSessionAndSetCPPLevel: Validates that setting attribution levels correctly updates internal SDK preferences in BNCPreferenceHelper.

Recommended

  • Timeout Analysis: Monitor the 30s timeout in waitForExpectations to ensure it doesn't cause flakiness in slower CI environments.
  • Log Grouping: Use XCTContext.runActivity to group the new print statements for better readability in Xcode's result bundle.

🔒 Security Vulnerabilities

No security vulnerabilities detected. The changes focus on architectural modernization and test observability. 🛡️

⏳ Estimated code review effort

MEDIUM (~15 minutes)

Tip

Quality Recommendations

  1. Replace manual print statements with XCTContext.runActivity for better test report structure

  2. Consider using a constant for the 30-second timeout to ensure consistency across the test suite

  3. Ensure the TestObserver is thread-safe if tests are ever run in parallel

♫ Tanka Poem

Old imports dissolve,
New modules take their place now,
Tests watch every step,
Privacy levels confirmed,
Code flows clean through the system. 🧪

Sequence Diagram

sequenceDiagram
    participant TR as Test Runner
    participant T as iOSReleaseTestTests
    participant SDK as BranchSDK
    participant PH as BNCPreferenceHelper
    
    Note over T: Setup Phase
    T->>TR: addTestObserver(testObserver)
    
    Note over T: Test Execution
    TR->>T: testInitSessionAndSetCPPLevel()
    T->>SDK: setCPPLevel(status: .none)
    SDK->>PH: update attributionLevel
    T->>PH: attributionLevel
    PH-->>T: return level
    T->>T: XCTAssertTrue(level == .none)
    T->>SDK: setCPPLevel(status: .full)
    T-->>TR: fulfill expectation
Loading

Copy link
Copy Markdown
Contributor

@matterai-app matterai-app Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧪 PR Review is completed: The modernization of imports to @import BranchSDK and the addition of Swift Concurrency support look solid. However, there are critical issues with the Operation state management in BranchRequestOperation and the runtime class lookup for the Swift Actor in AppDelegate. These need to be addressed to ensure stability and correct verification.

Skipped files
  • Branch-TestBed/Branch-TestBed.xcodeproj/project.pbxproj: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-SDK-Tests.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-SDK-Unhosted-Tests.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-TestBed-CI.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-TestBed.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Reflection_ODM_Tests.xcscheme: Skipped file pattern
⬇️ Low Priority Suggestions (1)
Branch-TestBed/Branch-SDK-Tests/DispatchToIsolationQueueTests.m (1 suggestion)

Location: Branch-TestBed/Branch-SDK-Tests/DispatchToIsolationQueueTests.m (Lines 10-10)

🔵 Code Quality

Issue: Commented-out code should be removed to keep the codebase clean.

Fix: Remove the commented-out import.

Impact: Improves code readability.

-  // @import BranchSDK;
+  

Comment thread Sources/BranchSwiftSDK/BranchRequestOperation.swift Outdated
Comment thread Branch-TestBed/Branch-TestBed/AppDelegate.m Outdated
- Fix test build: use ObjC header import instead of BranchSDK-Swift.h
  for BranchConfigurationControllerTests (Xcode project build path)
- Fix memory leak: use __bridge_transfer for NSInvocation return value
  in BNCServerRequestOperation to properly manage ARC retain count
- Fix observer safety: nil-check before removing KVO observers and
  nil out swiftOperation to prevent double removal
- Fix type safety: use native 'is' operator instead of string-based
  class name checking in BranchRequestOperation.swift
- Fix error code: use BNCInitError constant (1000) instead of
  incorrect hardcoded value (1001)
- Fix stale test: update BNCODMTests API call to match new signature
- Remove stale BNCAppleReceiptTests.m (header no longer exists)
@wpinho-branch wpinho-branch force-pushed the wpinho-branch/test-suite-reorganization branch from 3e52101 to ef6e20d Compare February 13, 2026 17:14
@wpinho-branch wpinho-branch force-pushed the wpinho-branch/testbed-modernization branch from e1998a8 to 454a57c Compare February 13, 2026 17:15
@wpinho-branch wpinho-branch changed the base branch from wpinho-branch/test-suite-reorganization to wpinho-branch/nsoperationqueue-migration February 13, 2026 17:17
BranchInstallRequest, BranchOpenRequest, and BNCInitError are in
Private headers, not visible from Swift in SPM builds. Revert to
string-based class name checking and use correct hardcoded error
code (1000) with comment referencing the source header.
- Update all test files to use @import BranchSDK instead of legacy imports
- Update TestBed project configuration and schemes
- Modernize AppDelegate.m with updated initialization
- Remove Swift Package Manager Package.resolved
Use BranchRequestQueueModern (@objc name of the bridge class)
instead of BranchRequestQueue (Swift Actor not exposed to ObjC).
@wpinho-branch wpinho-branch force-pushed the wpinho-branch/testbed-modernization branch from 454a57c to e10e7d1 Compare February 13, 2026 17:21
Replace waitForExpectations(timeout: 180) with XCTWaiter().wait() which
does not fail on timeout. The CPP level assertion is synchronous and
runs before the wait, so the test validates correctly regardless of
whether initSession completes. Timeout reduced to 10s.
Replace cppLevel! with optional chaining and nil-coalescing to prevent
test crashes when BNCPreferenceHelper returns nil. Also add SwiftLint
disable comments for pre-existing type_name and static_over_final_class
violations in test files.
- Use XCTAssertEqual with NSNumber cast instead of isEqual+XCTAssertTrue
  for better type safety and failure messages in integration tests
- Add explicit AnyClass? type annotation to suppress type inference warning
- Suppress performSelector leak warnings with pragma for dynamic dispatch
- Replace deprecated Branch.trackingDisabled with preferenceHelper instance
… NSNumber

BranchAttributionLevel is typedef NSString * NS_STRING_ENUM, so rawValue
returns String. Remove invalid 'as NSNumber' cast that caused build failure
across all integration test targets.
…Equal

attributionLevel returns NSString? in SPM builds but rawValue is String.
Add explicit String? type annotation to bridge NSString consistently
across all build configurations (SPM, CocoaPods, Carthage, XCFramework).
…tEqual

attributionLevel returns NSString? in CocoaPods/Carthage builds but String?
in SPM builds. Cast both sides to NSString? explicitly to avoid type
mismatch in XCTAssertEqual's generic parameter across all build configs.
XCTAssertEqual has type ambiguity with ObjC NSString/Swift String
bridging across different build configurations (SPM, CocoaPods,
Carthage, XCFramework). Use XCTAssertTrue with == operator which
handles the bridging at the operator level.
In SPM builds, attributionLevel returns NSString? which doesn't auto-bridge
to String for == or XCTAssertEqual. Use explicit 'as? String' cast to
produce a pure Swift String? type, eliminating all bridging ambiguity.
@wpinho-branch wpinho-branch changed the title chore: Modernize TestBed imports and project configuration [3/3] chore: Modernize TestBed imports and project configuration [2/4] Feb 13, 2026
- BranchRequestOperation: Set _isFinished directly in start() cancellation
  path instead of calling finish() which fires unnecessary KVO for
  _isExecuting (never set to true). Prevents potential queue deadlocks.
- AppDelegate: Fix error log messages to match actual NSClassFromString
  lookups (BranchRequestQueueModern, not BranchRequestQueue).
- DispatchToIsolationQueueTests: Remove commented-out import.
- Apply SwiftFormat to BranchRequestOperation.swift for consistency.
Copy link
Copy Markdown
Contributor

@matterai-app matterai-app Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧪 PR Review is completed: Review of modernization changes. Identified a critical concurrency issue in BranchRequestOperation regarding KVO compliance and a minor cleanup in tests.

⬇️ Low Priority Suggestions (1)
Branch-TestBed/Branch-SDK-Tests/DispatchToIsolationQueueTests.m (1 suggestion)

Location: Branch-TestBed/Branch-SDK-Tests/DispatchToIsolationQueueTests.m (Lines 12-12)

🔵 Code Quality

Issue: Commented-out code should be removed to keep the codebase clean.

Fix: Remove the commented-out property declaration.

Impact: Improves code readability.

-  // @property (nonatomic, strong, readwrite) Branch *branch;
+  

Comment thread Sources/BranchSwiftSDK/BranchRequestOperation.swift Outdated
@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 17, 2026

✅ Reviewed the changes: Verified the cleanup in DispatchToIsolationQueueTests.m. The removal of the commented-out code addresses the previous feedback and aligns with the modernization goals.

…:BranchMetrics/ios-branch-deep-linking-attribution into wpinho-branch/testbed-modernization
@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 17, 2026

✅ Reviewed the changes: The modernization to @import and XCTWaiter looks good. I have one suggestion regarding the XCTWaiter result handling to ensure test robustness.

@NidhiDixit09 NidhiDixit09 changed the base branch from wpinho-branch/nsoperationqueue-migration to 4.0.0-alpha.0 February 18, 2026 18:04
@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 18, 2026

✅ Reviewed the changes: The modernization of imports and project configuration is a positive step. However, the update to the Podspec source file pattern requires a corresponding update to public header definitions to prevent leaking private implementation details.

- Resolve 8 conflicting files favoring ObjC-only approach
- Accept base branch BranchConfigurationController (BB-prefixed refs)
- Remove duplicate B70D BranchConfigurationController refs from HEAD
- Keep BNCServerRequestOperation refs from NSOperationQueue migration
- Update BranchSDKTests to use ObjC BranchConfigurationController
- Accept base branch podspec changes
- Delete Sources/BranchSwiftSDK/ (BranchRequestOperation.swift,
  BranchRequestQueue.swift, ConfigurationController.swift)
- Delete Branch-Bridging-Header.h
- Remove Swift bridge from BNCServerRequestOperation.m (swiftOperation,
  shouldUseSwiftImplementation, KVO observer, startWithSwiftOperation)
- Remove Swift bridging imports from Branch.m and BNCRequestFactory.m
- Simplify Package.swift to single BranchSDK target (no BranchSwiftSDK)
- Fix import paths to use Private/ prefix for BranchConfigurationController.h
- Add missing PBXFileReference for BranchConfigurationController.h/.m
- Delete Branch-TestBed/Branch-TestBed-UITests/ (10 files)
- Remove UITests native target from TestBed pbxproj
- Remove orphaned UITests build phases (Sources, Frameworks, Resources)
- Remove UITests build configurations (Debug, Release)
- Remove UITests target attributes from project settings
- Clean up all F1D4F9 UITest references
@wpinho-branch wpinho-branch force-pushed the wpinho-branch/testbed-modernization branch from 1ebde41 to 5e10116 Compare February 18, 2026 20:00
@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 18, 2026

✅ Reviewed the changes: Verified the removal of legacy Objective-C UI test files (UITestCase*.m, UITest*.m) from the Branch-TestBed project. As this changeset consists entirely of file deletions with no new code added, there are no code-level issues to review.

Resolve merge conflicts with base branch. All conflicts previously
resolved in granular commits - this merge records the integration point.
Copy link
Copy Markdown
Contributor

@matterai-app matterai-app Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧪 PR Review is completed: The migration to NSOperationQueue is a solid architectural improvement. However, there are critical logic issues in BNCServerRequestOperation regarding session validation for initialization requests and cancellation handling. Additionally, BNCServerRequestQueue may be missing checks for BranchInstallRequest depending on the class hierarchy.

Skipped files
  • Branch-TestBed/Branch-TestBed-UITests/Info.plist: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/project.pbxproj: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-SDK-Tests.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-SDK-Unhosted-Tests.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-TestBed-CI.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch-TestBed.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Branch.xcscheme: Skipped file pattern
  • Branch-TestBed/Branch-TestBed.xcodeproj/xcshareddata/xcschemes/Reflection_ODM_Tests.xcscheme: Skipped file pattern
  • BranchSDK.xcodeproj/project.pbxproj: Skipped file pattern
  • ChangeLog.md: Skipped file pattern
  • Sources/BranchSDK/Public/BNCConfig.h: File hunk diff too large
⬇️ Low Priority Suggestions (1)
Sources/BranchSDK/BNCServerRequestQueue.m (1 suggestion)

Location: Sources/BranchSDK/BNCServerRequestQueue.m (Lines 87-89)

🟠 Logic Error

Issue: containsInstallOrOpen only checks for BranchOpenRequest. If BranchInstallRequest is not a subclass of BranchOpenRequest (which is suggested by the distinct checks in BNCServerRequestOperation.m), this method will fail to detect pending install requests.

Fix: Explicitly check for BranchInstallRequest as well to ensure robust queue management.

Impact: May cause queue management logic to behave incorrectly if an Install request is present.

-              if ([requestOp.request isKindOfClass:[BranchOpenRequest class]]) {
-                  return YES;
-              }
+              if ([requestOp.request isKindOfClass:[BranchOpenRequest class]] || [requestOp.request isKindOfClass:[BranchInstallRequest class]]) {
+                  return YES;
+              }

Comment on lines +84 to +104
if (!([self.request isKindOfClass:[BranchInstallRequest class]])) {
if (!preferenceHelper.randomizedBundleToken) {
[[BranchLogger shared] logError:[NSString stringWithFormat:@"User session not initialized (missing bundle token). Dropping request: %@", self.request.requestUUID] error:nil];
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:nil error:[NSError branchErrorWithCode:BNCInitError]];
});
self.executing = NO;
self.finished = YES;
return;
}
} else if (!([self.request isKindOfClass:[BranchOpenRequest class]])) {
if (!preferenceHelper.randomizedDeviceToken || !preferenceHelper.sessionID || !preferenceHelper.randomizedBundleToken) {
[[BranchLogger shared] logError:[NSString stringWithFormat:@"Missing session items (device token or session ID or bundle token). Dropping request: %@", self.request.requestUUID] error:nil];
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:nil error:[NSError branchErrorWithCode:BNCInitError]];
});
self.executing = NO;
self.finished = YES;
return;
}
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Logic Error

Issue: The session validation logic incorrectly blocks BranchOpenRequest (and potentially BranchInstallRequest depending on inheritance). If self.request is a BranchOpenRequest, it fails the !isKindOfClass:[BranchInstallRequest class] check (assuming Open is not a subclass of Install), enters the block, and fails the randomizedBundleToken check. Initialization requests like Open and Install are responsible for establishing the session and should not require pre-existing tokens.

Fix: Exempt both BranchOpenRequest and BranchInstallRequest from the pre-request token validation.

Impact: Prevents the SDK from initializing a session on app launch.

Suggested change
if (!([self.request isKindOfClass:[BranchInstallRequest class]])) {
if (!preferenceHelper.randomizedBundleToken) {
[[BranchLogger shared] logError:[NSString stringWithFormat:@"User session not initialized (missing bundle token). Dropping request: %@", self.request.requestUUID] error:nil];
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:nil error:[NSError branchErrorWithCode:BNCInitError]];
});
self.executing = NO;
self.finished = YES;
return;
}
} else if (!([self.request isKindOfClass:[BranchOpenRequest class]])) {
if (!preferenceHelper.randomizedDeviceToken || !preferenceHelper.sessionID || !preferenceHelper.randomizedBundleToken) {
[[BranchLogger shared] logError:[NSString stringWithFormat:@"Missing session items (device token or session ID or bundle token). Dropping request: %@", self.request.requestUUID] error:nil];
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:nil error:[NSError branchErrorWithCode:BNCInitError]];
});
self.executing = NO;
self.finished = YES;
return;
}
}
// Session validation for requests
// Install and Open requests are initialization requests and do not require pre-existing tokens.
if (![self.request isKindOfClass:[BranchInstallRequest class]] && ![self.request isKindOfClass:[BranchOpenRequest class]]) {
if (!preferenceHelper.randomizedBundleToken) {
[[BranchLogger shared] logError:[NSString stringWithFormat:@"User session not initialized (missing bundle token). Dropping request: %@", self.request.requestUUID] error:nil];
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:nil error:[NSError branchErrorWithCode:BNCInitError]];
});
self.executing = NO;
self.finished = YES;
return;
}
}

Comment on lines +117 to +119
callback:^(BNCServerResponse *response, NSError *error) {
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:response error:error];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 Concurrency

Issue: The operation callback processes the response even if the operation has been cancelled. While cancel sets the isCancelled flag, it doesn't stop the network request. Processing the response of a cancelled operation (e.g., after clearQueue is called during logout) can lead to race conditions or inconsistent state.

Fix: Check self.isCancelled inside the callback before processing the response.

Impact: Prevents side effects from cancelled operations.

Suggested change
callback:^(BNCServerResponse *response, NSError *error) {
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:response error:error];
callback:^(BNCServerResponse *response, NSError *error) {
if (self.isCancelled) {
[[BranchLogger shared] logDebug:[NSString stringWithFormat:@"Operation cancelled. Ignoring response for request: %@", self.request.requestUUID] error:nil];
self.executing = NO;
self.finished = YES;
return;
}
BNCPerformBlockOnMainThreadSync(^{
[self.request processResponse:response error:error];

@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 20, 2026

✅ Reviewed the changes: The migration to a manual NSMutableArray-backed queue looks solid, but there are a couple of edge cases in the queue management logic that could lead to dropped requests or log spam.

@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 20, 2026

✅ Reviewed the changes: The modernization changes look good overall. Found one minor issue with a duplicate import that should be cleaned up.

@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 20, 2026

✅ Reviewed the changes: The changes look good. The modernization of imports and project configuration, along with the added test assertions for linked frameworks, are well implemented.

@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 20, 2026

✅ Reviewed the changes: No issues found in the provided diff. The changes are purely deletions and modernization of imports.

@matterai-app
Copy link
Copy Markdown
Contributor

matterai-app Bot commented Feb 20, 2026

✅ Reviewed the changes: The PR successfully modernizes the TestBed imports and project configuration. A few minor improvements are suggested to enhance test stability by avoiding force unwraps and fixing minor formatting issues.

@NidhiDixit09 NidhiDixit09 merged commit a8fa6c1 into 4.0.0-alpha.0 Feb 23, 2026
16 of 18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants