Add standalone HoneyDueAPITests target for pure-API suites
Split the pure-API integration tests (no UI) out of the UITest target into a dedicated standalone unit-test target that runs in seconds without launching the simulator app. - HoneyDueAPITests target: standalone unit-test bundle (no TEST_HOST — touches no app code), shares the API client/seeder/cleaner support files from the UITest target via explicit references, with its own shared scheme. - MultiUserSharingTests -> HoneyDueAPITests/SharingAPITests.swift (18 tests). Runs in ~2.3s vs. ~40-140s per UI test. - run_ui_tests.sh: new Phase 1b runs the API target (fast) between Seed and the parallel UI phase; the helper now takes a scheme so each phase targets the right one; summary reports the API result. Both targets build green; SharingAPITests passes (18/18) against the live stack. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,11 @@
|
||||
1C81F2892EE41BB6000739EA /* HoneyDueQLThumbnail.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
1C81F3902EE69AF1000739EA /* PostHog in Frameworks */ = {isa = PBXBuildFile; productRef = 1C81F38F2EE69AF1000739EA /* PostHog */; };
|
||||
36A43DA6D19BA51568EC55A5 /* SnapshotTesting in Frameworks */ = {isa = PBXBuildFile; productRef = 6424E7E39866AD706041F321 /* SnapshotTesting */; };
|
||||
53469EBEDD37557816983B6D /* SharingAPITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECF8E25041D46376FEC29BE2 /* SharingAPITests.swift */; };
|
||||
59A92CA8C3A412D8A18338C7 /* TestAccountAPIClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D70FEF27FDF4EFFACCE83F54 /* TestAccountAPIClient.swift */; };
|
||||
91A9D5E4A93A022693888B95 /* TestDataSeeder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C51B2E73D6FB0BDB53123DDC /* TestDataSeeder.swift */; };
|
||||
99FB08E574AA3B88AD73DEAC /* TestDataCleaner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1579B80B44611651771CC51A /* TestDataCleaner.swift */; };
|
||||
BEF62D0EDC3E9B922195C7ED /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12403969C38C7CB74B1EA820 /* Foundation.framework */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
@@ -73,6 +78,8 @@
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
12403969C38C7CB74B1EA820 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
|
||||
1579B80B44611651771CC51A /* TestDataCleaner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TestDataCleaner.swift; path = HoneyDueUITests/Framework/TestDataCleaner.swift; sourceTree = "<group>"; };
|
||||
1C07893D2EBC218B00392B46 /* HoneyDueExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HoneyDueExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1C07893F2EBC218B00392B46 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
|
||||
1C0789412EBC218B00392B46 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
|
||||
@@ -86,7 +93,11 @@
|
||||
1CBF1BED2ECD9768001BF56C /* HoneyDueUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HoneyDueUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
4B07E04F794A4C1CAA8CCD5D /* PhotoViewerSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoViewerSheet.swift; sourceTree = "<group>"; };
|
||||
96A3DDC05E14B3F83E56282F /* honeyDue.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = honeyDue.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
A52A91DEA0ECFB45CBAAE168 /* HoneyDueAPITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HoneyDueAPITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
AD6CD907CA1045CBBC845D91 /* CompletionCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompletionCardView.swift; sourceTree = "<group>"; };
|
||||
C51B2E73D6FB0BDB53123DDC /* TestDataSeeder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TestDataSeeder.swift; path = HoneyDueUITests/Framework/TestDataSeeder.swift; sourceTree = "<group>"; };
|
||||
D70FEF27FDF4EFFACCE83F54 /* TestAccountAPIClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TestAccountAPIClient.swift; path = HoneyDueUITests/Framework/TestAccountAPIClient.swift; sourceTree = "<group>"; };
|
||||
ECF8E25041D46376FEC29BE2 /* SharingAPITests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SharingAPITests.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
||||
@@ -268,6 +279,14 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
55A71EFD2C2AB71B02035D05 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
BEF62D0EDC3E9B922195C7ED /* Foundation.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
@@ -278,6 +297,7 @@
|
||||
1C0789412EBC218B00392B46 /* SwiftUI.framework */,
|
||||
1C81F26A2EE416EE000739EA /* QuickLook.framework */,
|
||||
1C81F2812EE41BB6000739EA /* QuickLookThumbnailing.framework */,
|
||||
F9901640A563803981701DD0 /* iOS */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
@@ -306,9 +326,30 @@
|
||||
1C07893E2EBC218B00392B46 /* Frameworks */,
|
||||
FA6022B7B844191C54E57EB4 /* Products */,
|
||||
1C078A1B2EC1820B00392B46 /* Recovered References */,
|
||||
E7D6E53AF0B8430440E6B3EE /* HoneyDueAPITests */,
|
||||
D70FEF27FDF4EFFACCE83F54 /* TestAccountAPIClient.swift */,
|
||||
C51B2E73D6FB0BDB53123DDC /* TestDataSeeder.swift */,
|
||||
1579B80B44611651771CC51A /* TestDataCleaner.swift */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E7D6E53AF0B8430440E6B3EE /* HoneyDueAPITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
ECF8E25041D46376FEC29BE2 /* SharingAPITests.swift */,
|
||||
);
|
||||
name = HoneyDueAPITests;
|
||||
path = HoneyDueAPITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
F9901640A563803981701DD0 /* iOS */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
12403969C38C7CB74B1EA820 /* Foundation.framework */,
|
||||
);
|
||||
name = iOS;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA6022B7B844191C54E57EB4 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
@@ -318,6 +359,7 @@
|
||||
1CBF1BED2ECD9768001BF56C /* HoneyDueUITests.xctest */,
|
||||
1C81F2692EE416EE000739EA /* HoneyDueQLPreview.appex */,
|
||||
1C81F2802EE41BB6000739EA /* HoneyDueQLThumbnail.appex */,
|
||||
A52A91DEA0ECFB45CBAAE168 /* HoneyDueAPITests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -458,6 +500,23 @@
|
||||
productReference = 96A3DDC05E14B3F83E56282F /* honeyDue.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
E9D862A585C17DD92D22D303 /* HoneyDueAPITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 8D660A43441A0D51114CC335 /* Build configuration list for PBXNativeTarget "HoneyDueAPITests" */;
|
||||
buildPhases = (
|
||||
836DD50B36C6061FE1C3D6E3 /* Sources */,
|
||||
55A71EFD2C2AB71B02035D05 /* Frameworks */,
|
||||
4100A8774ECB9CF390C44011 /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = HoneyDueAPITests;
|
||||
productName = HoneyDueAPITests;
|
||||
productReference = A52A91DEA0ECFB45CBAAE168 /* HoneyDueAPITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
@@ -514,6 +573,7 @@
|
||||
1CBF1BEC2ECD9768001BF56C /* HoneyDueUITests */,
|
||||
1C81F2682EE416EE000739EA /* HoneyDueQLPreview */,
|
||||
1C81F27F2EE41BB6000739EA /* HoneyDueQLThumbnail */,
|
||||
E9D862A585C17DD92D22D303 /* HoneyDueAPITests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
@@ -554,6 +614,13 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
4100A8774ECB9CF390C44011 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
50827B76877E1E3968917892 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
@@ -627,6 +694,17 @@
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
836DD50B36C6061FE1C3D6E3 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
53469EBEDD37557816983B6D /* SharingAPITests.swift in Sources */,
|
||||
59A92CA8C3A412D8A18338C7 /* TestAccountAPIClient.swift in Sources */,
|
||||
91A9D5E4A93A022693888B95 /* TestDataSeeder.swift in Sources */,
|
||||
99FB08E574AA3B88AD73DEAC /* TestDataCleaner.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
@@ -1119,6 +1197,33 @@
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
8B9401AF773E28539812BEB4 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueAPITests;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_VERSION = 5.0;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
90CF3F8366EF59205F9444AC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_OBJC_WEAK = NO;
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 26.1;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.myhoneydue.HoneyDueAPITests;
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_VERSION = 5.0;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
E767E942685C7832D51FF978 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
@@ -1212,6 +1317,15 @@
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
8D660A43441A0D51114CC335 /* Build configuration list for PBXNativeTarget "HoneyDueAPITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
90CF3F8366EF59205F9444AC /* Release */,
|
||||
8B9401AF773E28539812BEB4 /* Debug */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
F25B3A5CCAC6BFCC21CD4636 /* Build configuration list for PBXProject "honeyDue" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
|
||||
Reference in New Issue
Block a user