Skip to content

fix(ci/build): CI reliability — pre-push git-env, per-test timeouts, TriageBotCore double-link#1053

Open
mauricecarrier7 wants to merge 4 commits into
developfrom
fix/pre-push-gate-worktree-git-env
Open

fix(ci/build): CI reliability — pre-push git-env, per-test timeouts, TriageBotCore double-link#1053
mauricecarrier7 wants to merge 4 commits into
developfrom
fix/pre-push-gate-worktree-git-env

Conversation

@mauricecarrier7

@mauricecarrier7 mauricecarrier7 commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Two CI/test-runner reliability fixes (both make the board trustworthy per the green-board contract).

1. pre-push-test-gate: clear leaked git env before xcodebuild

git invokes pre-push hooks with GIT_DIR/GIT_WORK_TREE exported; xcodebuild's SwiftPM resolution shells out to git and an inherited GIT_WORK_TREE makes local-package paths resolve to /the package manifest at '/Package.swift' doesn't exist. Blocked every push touching a Palace/*.swift file from a linked worktree. Fixed with env -u GIT_DIR -u GIT_WORK_TREE … + worktree-scoped DerivedData. Reproduced: -resolvePackageDependencies succeeds with the env cleared, fails with it set.

2. xcode-test-optimized.sh: enable per-test timeouts

A single deadlocked test hangs the entire build-and-test job until the 60-min job timeout — the -retry-tests-on-failure -test-iterations 3 net never engages (process stuck, not failed). This is how the pre-existing CatalogPreloaderTests order/timing hang (passes in isolation, in focused pairs, and in a full local suite run — i.e. CI-runner-timing-specific) reddened every PR with a 1h+ job kill. Added -test-timeouts-enabled YES -default-test-execution-time-allowance 120 -maximum-test-execution-time-allowance 300 (the pattern ui-testing.yml already uses). A hung test now fails at 120s and the existing retry re-runs it: a timing-flaky hang passes on retry (green); a deterministic hang fails all 3 (red, correctly).

Does NOT mask pollution (contract #2) — it ensures a hang fails-fast INTO the retry net instead of killing the job before the net can act (contract #1). The underlying loadCatalogs polluter is tracked separately for a root fix.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

🧪 Unit Test Results

📊 View Full Interactive Report

❌ 3 TESTS FAILED

7126 tests | 7023 passed | 3 failed | 100 skipped | ⏱️ 17m 21s | 📊 98.6% | 📈 47.8% coverage

Tests by Class — 820 classes, 3 with failures
Class Tests Passed Failed Duration
✅ AccessLintComplianceTests 11 11 0 159ms
✅ AccessibilityAnnouncementCenterTests 20 20 0 1.71s
✅ AccessibilityLabelTests 9 9 0 211ms
✅ AccessibilityPreferencesTests 26 26 0 90ms
✅ AccessibilityServiceTests 11 11 0 173ms
✅ AccountAuthDocCarryoverTests 5 5 0 720ms
✅ AccountAuthSurfaceHostsTests 7 7 0 26ms
✅ AccountAwareNetworkTests 10 10 0 300ms
✅ AccountDetailCredentialStateTests 7 0 0 115ms
✅ AccountDetailPINVisibilityTests 25 0 0 2.00s
✅ AccountDetailSignOutConfirmationTests 2 0 0 172ms
✅ AccountDetailViewModelGapTests 1 1 0 109ms
✅ AccountDetailViewModelTests 19 0 0 142ms
✅ AccountDetailsAuthenticationIsBrowserBasedTests 10 10 0 717ms
✅ AccountDetailsNeedsAuthAggregateTests 10 10 0 91ms
✅ AccountDetailsURLTests 17 17 0 159ms
✅ AccountModelGapTests 9 9 0 1.24s
✅ AccountModelTests 20 20 0 6.01s
✅ AccountProfileDocumentTests 3 3 0 29ms
✅ AccountStateMachineTests 10 10 0 119ms
✅ AccountSwitchCleanupTests 8 8 0 146ms
✅ AccountSwitchIntegrationTests 8 8 0 144ms
✅ AccountSwitchLifecycleTests 9 0 0 99ms
✅ AccountsManagerCacheTests 16 16 0 463ms
✅ AccountsManagerCancellationTests 5 5 0 582ms
✅ AccountsManagerGapTests 3 3 0 17ms
✅ AccountsManagerHelpersTests 12 12 0 69ms
✅ AccountsManagerIsolationLintTests 2 2 0 1.31s
✅ AccountsManagerStateMachineWiringTests 13 13 0 16.41s
✅ AccountsManagerTests 51 51 0 8.16s
✅ ActiveSessionsViewModelTests 12 12 0 295ms
✅ AdobeActivationTests 6 6 0 44ms
✅ AdobeCertificateGapTests 7 7 0 704ms
✅ AdobeDRMCharacterizationTests 21 21 0 114ms
✅ AdobeDRMErrorGapTests 3 3 0 19ms
✅ AdobeDRMHandlerTests 12 12 0 1.09s
✅ AdobeDRMServiceGapTests 2 2 0 5ms
✅ AlertModelCoverageTests 6 6 0 30ms
✅ AlertModelRetryTests 7 7 0 16ms
✅ AlertModelTests 2 2 0 7ms
✅ AlertUtilsTests 20 20 0 813ms
✅ AnnotationContractTests 3 3 0 51ms
✅ AnnotationDeviceIDTests 2 2 0 5ms
✅ AnnotationPostResponseContractTests 1 1 0 4ms
✅ AnnouncementChainTests 5 5 0 41ms
✅ AnnouncementTests 3 3 0 13ms
✅ AnonymousBorrowBaselineFixtureTests 13 13 0 71ms
✅ AnonymousBorrowCandidateFixtureTests 6 6 0 44ms
✅ AnonymousBorrowDeltaTests 2 2 0 19ms
✅ AppContainerAudiobookFactoryTests 3 3 0 15ms
✅ AppContainerAuthCoordinatorRegistrationTests 3 3 0 16ms
✅ AppContainerImageLoaderInjectionTests 4 4 0 115ms
✅ AppContainerIsolationLintTests 5 5 0 1.49s
✅ AppContainerResetTests 4 4 0 817ms
✅ AppContainerTests 4 4 0 24ms
✅ AppContainerWithSignInModalSheetPresenterTests 2 2 0 4ms
✅ AppHealthViewModelTests 8 8 0 1.34s
✅ AppLaunchTrackerExtendedTests 16 16 0 446ms
✅ AppLaunchTrackerTests 10 10 0 332ms
✅ AppRouteTests 5 5 0 61ms
✅ AppTabHostMiniPlayerIntegrationTests 6 6 0 7.37s
✅ AppTabHostViewBadgeCountTests 10 10 0 52ms
✅ AppTabRouterCoverageTests 4 4 0 40ms
✅ AppTabRouterGapTests 3 3 0 733ms
✅ ArrayExtensionsTests 6 6 0 163ms
✅ AudioBookmarkGapTests 6 6 0 22ms
✅ AudioEngineWrapperTests 8 8 0 48ms
✅ AudioInterruptionLogicTests 6 6 0 33ms
✅ AudiobookAccessibilityTests 7 7 0 33ms
✅ AudiobookBackgroundAudioTests 2 2 0 45ms
✅ AudiobookBookmarkBusinessLogicPositionWriteTests 6 6 0 1.06s
✅ AudiobookBookmarkBusinessLogicTests 21 21 0 3.93s
✅ AudiobookChapterTOCNormalizationTests 6 6 0 24ms
✅ AudiobookCrossVendorSmokeTests 4 4 0 156ms
✅ AudiobookDataManagerEmptyQueueTests 1 1 0 6ms
✅ AudiobookDataManagerErrorHandlingTests 5 5 0 10.26s
✅ AudiobookDataManagerModelsTests 20 20 0 196ms
✅ AudiobookDataManagerNetworkSyncTests 5 5 0 5.17s
✅ AudiobookDataManagerSaveTests 4 4 0 46ms
✅ AudiobookDataManagerStoreRecoveryTests 5 5 0 2.08s
✅ AudiobookFileLoggerTests 14 14 0 560ms
✅ AudiobookFirstOpenHangTests 5 5 0 6.76s
✅ AudiobookFullPlayerCoverContainerTests 9 9 0 128ms
✅ AudiobookLoadFailureSAMLReauthTests 10 10 0 1.04s
✅ AudiobookLoaderDispatchTests 7 7 0 107ms
✅ AudiobookLoaderFinalizeBuildTests 9 9 0 667ms
✅ AudiobookLoaderOPDSShapeMatrixTests 5 5 0 146ms
✅ AudiobookLoaderPredicateTests 11 11 0 307ms
✅ AudiobookLoaderTests 2 2 0 114ms
✅ AudiobookMiniPlayerViewTests 13 13 0 130ms
✅ AudiobookNetworkValidationTests 3 3 0 15ms
✅ AudiobookOpenStateRaceTests 3 3 0 3.52s
✅ AudiobookPhoneAlertContentTests 3 3 0 46ms
✅ AudiobookPlaybackStateTests 3 3 0 69ms
✅ AudiobookPlaybackTests 26 26 0 481ms
✅ AudiobookPlaytimesLifecycleTests 6 6 0 1.05s
✅ AudiobookPositionAdapterContractTests 3 3 0 103ms
✅ AudiobookPositionPolicyValidatorTests 14 14 0 77ms
✅ AudiobookSAMLReauthTests 6 6 0 86ms
✅ AudiobookSessionErrorDescriptionTests 4 4 0 9ms
✅ AudiobookSessionErrorExtTests 4 4 0 35ms
✅ AudiobookSessionErrorTests 2 2 0 46ms
✅ AudiobookSessionManagerErrorMappingTests 6 6 0 21ms
✅ AudiobookSessionManagerFlagGatePresentationTests 4 4 0 49ms
✅ AudiobookSessionManagerPresenterMigrationTests 8 8 0 9.42s
✅ AudiobookSessionManagerShutdownTests 8 8 0 88ms
✅ AudiobookSessionPresenterTests 16 16 0 832ms
✅ AudiobookSessionStateTests 6 6 0 30ms
✅ AudiobookSessionStateTransitionTests 18 18 0 323ms
✅ AudiobookSleepTimerIntegrationTests 5 5 0 323ms
✅ AudiobookStorageLocationTests 3 3 0 17ms
✅ AudiobookTOCTests 18 18 0 347ms
✅ AudiobookTimeEntryTests 6 6 0 38ms
✅ AudiobookTimeTrackerEdgeTests 8 8 0 140ms
✅ AudiobookTimeTrackerLifecycleTests 5 5 0 1.15s
✅ AudiobookTimeTrackerTests 9 9 0 135ms
✅ AudiobookTrackCompletionTests 2 2 0 37ms
✅ AudiobookTypeRoutingTests 5 5 0 38ms
✅ AudiobookVendorAdapterTests 5 5 0 38ms
✅ AudiobookmarkTests 4 4 0 42ms
✅ AuthCoordinatorTelemetryTests 5 5 0 264ms
✅ AuthDecisionEventEmissionTests 7 7 0 31ms
✅ AuthDocumentContractTests 2 2 0 25ms
✅ AuthDocumentVariantsContractTests 5 5 0 37ms
✅ AuthErrorCategoryTests 12 12 0 79ms
✅ AuthErrorProblemDocSeamTests 6 6 0 51ms
✅ AuthFlowSecurityTests 3 0 0 44ms
✅ AuthReducerTests 21 21 0 994ms
✅ AuthTypeTests 7 7 0 26ms
✅ AuthenticationTests 16 16 0 374ms
✅ BackgroundDownloadHandlerTests 28 28 0 137ms
✅ BackgroundListenerTests 2 2 0 76ms
✅ BackupExclusionMigrationTests 3 3 0 89ms
✅ BadgeDefinitionTests 33 33 0 231ms
✅ BadgeServiceTests 16 16 0 176ms
✅ BadgesViewModelTests 14 14 0 466ms
✅ BasicAuthEmptyCredentialTests 4 4 0 17ms
✅ BearerTokenAdapterTests 5 4 0 77ms
✅ BearerTokenFulfillFlowTests 4 4 0 82ms
✅ BearerTokenRefreshTests 4 4 0 18ms
✅ BearerTokenResponseDetectionTests 7 7 0 19ms
✅ BeginningPositionPolicyTests 8 8 0 22ms
✅ BookAvailabilityFormatterTests 18 18 0 366ms
✅ BookButtonMapperHoldReadyTests 10 10 0 170ms
✅ BookButtonMapperTests 21 21 0 86ms
✅ BookButtonMapperViewModelTests 18 18 0 96ms
✅ BookButtonStateTests 8 8 0 260ms
✅ BookButtonTypeMetaTests 4 4 0 25ms
✅ BookButtonTypeTests 13 13 0 149ms
✅ BookCellModelActionTests 18 18 0 816ms
✅ BookCellModelCacheInvalidationTests 8 8 0 112ms
✅ BookCellModelCachePrefetchSafetyTests 9 9 0 307ms
✅ BookCellModelCacheTests 22 22 0 791ms
✅ BookCellModelComputedPropertyTests 19 19 0 497ms
✅ BookCellModelOfflineTests 9 9 0 545ms
✅ BookCellModelRegistryBindingTests 4 4 0 323ms
✅ BookCellModelStateTests 16 16 0 726ms
✅ BookCellModelStreamingHTMLTests 2 2 0 49ms
✅ BookCellStateComprehensiveTests 14 14 0 63ms
✅ BookContentResetServiceTests 2 2 0 14ms
✅ BookDetailMetadataHydrationTests 6 6 0 110ms
✅ BookDetailViewModelTests 87 87 0 1.87s
✅ BookFileManagerTests 8 8 0 51ms
✅ BookListViewAccessibilityTests 9 9 0 777ms
✅ BookPreviewTests 4 4 0 14ms
✅ BookRegistryStoreTests 26 26 0 1.10s
✅ BookRegistrySyncReadinessTests 3 2 0 427ms
✅ BookRegistrySyncTests 23 23 0 25.02s
✅ BookReturnCleverReauthTests 1 1 0 51ms
✅ BookReturnServiceAuthCoordinatorTests 3 3 0 415ms
✅ BookReturnServiceContractTests 5 5 0 277ms
✅ BookReturnServiceTests 12 12 0 16.77s
✅ BookSignInRedirectHandlerTests 8 8 0 2.13s
✅ BookStateIntegrationTests 8 8 0 71ms
✅ BookmarkBusinessLogicExtendedTests 6 6 0 727ms
✅ BookmarkDeletionLogTests 3 3 0 1.70s
✅ BookmarkDeviceIdMatchingTests 3 3 0 301ms
✅ BookmarkExistenceTests 4 4 0 498ms
✅ BookmarkManagerTests 24 24 0 347ms
✅ BookmarkSortingTests 1 1 0 106ms
✅ BookmarkSyncTests 3 3 0 369ms
✅ BorrowAndDownloadIntegrationTests 7 7 0 338ms
✅ BorrowErrorMessageTests 13 13 0 84ms
✅ BorrowErrorPresenterTests 6 6 0 565ms
✅ BorrowOperationAuthCoordinatorTests 6 6 0 5.39s
✅ BorrowOperationCleverReauthTests 2 2 0 382ms
✅ BorrowOperationContractTests 6 6 0 586ms
✅ BorrowOperationStreamingHTMLTests 3 3 0 390ms
✅ BorrowOperationTests 12 12 0 1.62s
✅ BorrowOperationTimeoutTests 3 3 0 176ms
✅ BorrowReducerContractTests 2 2 0 19ms
✅ BorrowReducerTests 21 21 0 98ms
✅ BundledRegistrySnapshotTests 5 5 0 714ms
✅ ButtonStateTests 16 16 0 82ms
✅ ButtonStyleTypeTests 2 2 0 9ms
✅ C64ConversionTests 6 6 0 32ms
✅ CarPlayAudiobookBridgePresenterMigrationTests 2 2 0 69ms
✅ CarPlayAuthHelperReadinessTests 3 3 0 451ms
✅ CarPlayChapterListTests 3 3 0 59ms
✅ CarPlayIntegrationTests 2 2 0 56ms
✅ CarPlayLibraryRefreshTests 3 3 0 24ms
✅ CarPlayNowPlayingTemplateTests 4 4 0 591ms
✅ CarPlayOpenAppAlertTests 4 4 0 18ms
✅ CarPlayPlaybackErrorTests 8 8 0 126ms
✅ CarPlayTests 12 12 0 85ms
✅ CarPlayTimeTrackingTests 3 3 0 98ms
✅ CatalogAPIDedupeTests 3 3 0 431ms
✅ CatalogAPIEntryPointTests 1 1 0 5ms
✅ CatalogAccessibilityTests 8 8 0 27ms
✅ CatalogCacheKeyAndIsolationTests 12 12 0 448ms
✅ CatalogCacheMetadataExactBoundaryTests 4 4 0 19ms
✅ CatalogCacheMetadataTests 21 21 0 114ms
✅ CatalogFeedModelTests 4 4 0 20ms
✅ CatalogFilterGroupModelTests 17 17 0 112ms
✅ CatalogFilterModelTests 17 17 0 184ms
✅ CatalogFilterServiceTests 29 29 0 156ms
✅ CatalogFilterTests 1 1 0 2ms
✅ CatalogLaneAssemblyTests 7 7 0 45ms
✅ CatalogLaneModelStructTests 18 18 0 496ms
✅ CatalogLaneModelTests 1 1 0 2ms
✅ CatalogLaneMoreFilterStateTests 8 8 0 89ms
✅ CatalogLaneMoreViewModelTests 42 42 0 42.91s
✅ CatalogLaneRowViewAccessibilityTests 11 11 0 70ms
✅ CatalogLaneSortingTests 4 4 0 198ms
✅ CatalogLoadIntegrationTests 6 6 0 70ms
✅ CatalogOPDS2NegotiationTests 12 12 0 115ms
✅ CatalogPreloaderTests 6 6 0 55ms
✅ CatalogProblemDocumentTests 6 6 0 33ms
✅ CatalogRepositoryCoreTests 9 9 0 2.20s
✅ CatalogRepositoryStaleWhileRevalidateTests 12 12 0 416ms
✅ CatalogRepositoryTests 19 19 0 209ms
✅ CatalogSearchViewModelRegistryUpdateTests 5 5 0 771ms
✅ CatalogSearchViewModelTests 67 67 0 7.46s
✅ CatalogSelectorsTests 2 2 0 15ms
✅ CatalogSortServiceTests 14 14 0 202ms
✅ CatalogStateTests 7 7 0 52ms
✅ CatalogViewContinueRowsIntegrationTests 3 3 0 49ms
✅ CatalogViewModelStateMachineTests 10 10 0 91ms
✅ ChaosFaultInjectionTests 5 5 0 163ms
✅ ChapterChangeDetectorTests 5 5 0 506ms
✅ ChapterTOCNormalizerTests 7 7 0 24ms
✅ CirculationAnalyticsTests 4 4 0 15ms
✅ ColdStartResumeIntegrationTests 10 10 0 1.23s
✅ ColorExtensionTests 5 5 0 21ms
✅ ConcurrentBookStateTests 3 3 0 45ms
✅ ConcurrentDownloadStateTests 3 3 0 59ms
✅ ConcurrentTokenRefreshTests 2 2 0 28ms
✅ ContinueRowSectionTests 6 6 0 43ms
✅ ContinuousPlaybackTrackingTests 3 3 0 407ms
✅ CookiePersistenceTests 10 10 0 1.66s
✅ CrawlStateTests 16 16 0 149ms
✅ CrawlableFeedAnalysisTests 17 17 0 284ms
✅ CrawlerFallbackTests 12 12 0 2.53s
✅ CredentialEdgeCaseTests 6 6 0 37ms
✅ CredentialPrivacyTests 4 4 0 25ms
✅ CredentialPromptCoordinatorTests 4 4 0 289ms
✅ CrossDeviceBookmarkSyncTests 12 12 0 102ms
✅ CrossDeviceSyncE2ETests 5 5 0 756ms
✅ CrossDomain401Tests 8 8 0 49ms
✅ CrossFormatMappingTests 14 14 0 146ms
✅ DPLAErrorTests 3 3 0 9ms
✅ DRMAdversarialTests 4 1 0 36ms
✅ DRMFulfilledPublicationTests 6 6 0 22ms
✅ DataBase64Tests 3 3 0 11ms
✅ DataReceptionComparisonTests 2 2 0 55ms
✅ DateExtensionTests 9 9 0 59ms
✅ DateFormattingTests 4 4 0 21ms
✅ Date_NYPLAdditionsTests 7 7 0 641ms
✅ DebugSettingsTests 27 27 0 273ms
✅ DefaultCatalogAPITests 31 31 0 205ms
✅ DefaultRecentlyReadingServiceTests 12 12 0 58ms
✅ DeriveInitialStateTests 4 4 0 22ms
✅ DeveloperSettingsTierTests 4 4 0 16ms
✅ DeviceLogCollectorGapTests 2 2 0 9.81s
✅ DeviceLogCollectorTests 9 9 0 27.16s
✅ DeviceOrientationTests 7 7 0 35ms
✅ DeviceSpecificErrorMonitorTests 11 11 0 508ms
✅ DictionaryExtensionsTests 5 5 0 43ms
✅ DiskBudgetManagerTests 7 7 0 85ms
✅ DiskBudgetTests 2 2 0 25ms
✅ DownloadAlertPresenterTests 8 8 0 272ms
✅ DownloadAnnouncementServiceTests 12 12 0 92ms
✅ DownloadAuthRetryHandlerAuthCoordinatorTests 6 6 0 4.02s
✅ DownloadAuthRetryHandlerTaskLifecycleTests 4 4 0 389ms
✅ DownloadAuthRetryHandlerTests 14 14 0 1.57s
✅ DownloadCancellationHandlerTests 5 5 0 358ms
✅ DownloadCompletionParserTests 9 9 0 627ms
✅ DownloadCoordinatorIntegrationTests 10 10 0 288ms
✅ DownloadCoordinatorTests 11 11 0 156ms
✅ DownloadDiskSpaceTests 2 2 0 10ms
✅ DownloadErrorInfoTests 3 3 0 82ms
✅ DownloadErrorRecoveryPolicyTests 11 11 0 131ms
✅ DownloadErrorRecoveryTests 3 3 0 17ms
✅ DownloadFreeSpaceExhaustionTests 11 11 0 162ms
✅ DownloadInfoTests 5 5 0 14ms
✅ DownloadIntegrityTests 10 10 0 124ms
✅ DownloadOnlyOnWiFiTests 10 10 0 65ms
✅ DownloadPersistenceStoreTests 5 5 0 272ms
✅ DownloadProgressPublisherCoreTests 19 19 0 807ms
✅ DownloadProgressPublisherTests 2 2 0 36ms
✅ DownloadQueueIntegrationTests 3 3 0 1.73s
✅ DownloadQueueOrchestratorTests 9 9 0 236ms
✅ DownloadRMSDKHandoffTests 1 1 0 6ms
✅ DownloadRedirectTests 7 7 0 26ms
✅ DownloadResumeAfterKillTests 7 7 0 127ms
✅ DownloadSlotManagementTests 5 5 0 31ms
✅ DownloadStartCoordinatorContractTests 5 5 0 227ms
✅ DownloadStartCoordinatorTests 9 9 0 246ms
✅ DownloadStartDispatcherTests 26 26 0 1.59s
✅ DownloadStateMachineIntegrationTests 15 15 0 104ms
✅ DownloadStateMachineTests 5 5 0 43ms
✅ DownloadStateManagerTests 16 16 0 208ms
✅ DownloadTaskLifecycleServiceTests 9 9 0 180ms
✅ DownloadThrottlingServiceTests 10 10 0 442ms
✅ DownloadWatchdogTests 3 3 0 18ms
✅ EPUBKeyCommandsPP4289Tests 4 4 0 29ms
✅ EPUBModuleTests 4 4 0 23ms
✅ EPUBPositionTests 10 10 0 67ms
✅ EPUBSearchViewModelTests 18 18 0 188ms
✅ EPUBToolbarToggleTests 11 11 0 96ms
✅ EmailAddressTests 16 16 0 113ms
✅ EpubSampleFactoryTests 5 5 0 2.76s
✅ ErrorActivityTrackerTests 12 12 0 362ms
✅ ErrorDetailTests 12 12 0 135ms
✅ ErrorDetailViewControllerGapTests 3 3 0 206ms
✅ ErrorDetailViewControllerTests 14 14 0 544ms
❌ ErrorLogExporterTests 5 4 1 2m 0s
✅ ExpiredLoanStringsTests 5 5 0 16ms
✅ FacetEnumTests 3 3 0 6ms
✅ FacetToolbarAccessibilityTests 5 5 0 17ms
✅ FacetViewModelLogoDelegateTests 4 4 0 4.20s
✅ FacetViewModelTests 18 18 0 284ms
✅ FetchManifestWithBearerTokenLCPSafetyTests 1 1 0 19ms
✅ FetchManifestWithBearerTokenTests 9 9 0 162ms
✅ FetchOpenAccessManifestLCPSafetyTests 4 4 0 35ms
✅ FileURLGenerationTests 3 3 0 33ms
✅ FindawayChapterStatusGuardTests 1 1 0 7ms
✅ FloatTPPAdditionsTests 5 5 0 26ms
✅ FocusIndicationTests 7 7 0 80ms
✅ FontManagerTests 17 17 0 1.04s
✅ ForceResetTests 6 6 0 95ms
✅ GeneralCacheTests 20 20 0 797ms
✅ GroupEnumTests 1 1 0 13ms
✅ HTMLTextViewTests 70 70 0 24.81s
✅ HoldNotificationClassificationTests 2 2 0 10ms
✅ HoldsBadgeCountTests 9 9 0 330ms
✅ HoldsBookViewModelTests 8 8 0 125ms
✅ HoldsReducerTests 11 11 0 57ms
✅ HoldsSyncFailureTests 12 12 0 199ms
✅ HoldsViewModelTests 23 23 0 25.88s
✅ ImageCacheContinuationTests 1 1 0 241ms
✅ ImageCacheTypeTests 1 1 0 4ms
✅ ImageLoaderTests 11 11 0 99ms
✅ IntExtensionsTests 4 4 0 31ms
✅ IsReaderActiveTrackingModifierTests 4 4 0 22ms
✅ KeyboardNavigationFKATests 11 11 0 194ms
✅ KeyboardNavigationHandlerTests 16 16 0 79ms
✅ KeyboardVoiceOverTests 5 5 0 60ms
✅ LCPAcquisitionPredicateTests 4 4 0 225ms
✅ LCPAdapterTests 8 8 0 62ms
✅ LCPAudiobookURLSchemeTests 4 4 0 30ms
✅ LCPAudiobooksTests 21 21 0 181ms
✅ LCPBotanCRLGuardTests 5 5 0 216ms
✅ LCPCharacterizationTests 31 31 0 2.96s
✅ LCPClientTests 8 8 0 146ms
✅ LCPFulfillmentHandlerTests 8 8 0 817ms
✅ LCPKeychainMigrationTests 3 3 0 258ms
✅ LCPLibraryServiceTests 20 20 0 144ms
✅ LCPLicenseDocumentDetectionTests 5 5 0 18ms
✅ LCPLicenseFilePathTests 3 3 0 10ms
✅ LCPOrphanedDownloadRegistryTests 4 4 0 46ms
✅ LCPPDFAcquisitionPredicateTests 5 5 0 44ms
✅ LCPPDFDiskExtractTests 5 5 0 87ms
✅ LCPPDFOpenProgressTests 13 13 0 482ms
✅ LCPPassphraseReadinessTests 2 2 0 21ms
✅ LCPSessionIdentifierTests 3 3 0 201ms
✅ LegacySAMLProblemDocumentPropagationTests 7 7 0 1.10s
✅ LibrariesSectionViewModelTests 11 11 0 43ms
✅ LibraryCatalogMergerTests 9 9 0 75ms
✅ LibraryRegistryCrawlerTests 14 14 0 540ms
✅ LicensesServiceTests 4 4 0 37ms
✅ LiveCrawlableParsingTest 4 0 0 37ms
✅ LocalBookContentServiceTests 7 7 0 104ms
✅ LocalFileAdapterTests 6 5 0 53ms
✅ LogTests 14 14 0 770ms
✅ LoginKeyboardTests 8 8 0 45ms
✅ MainActorHelpersTests 22 22 0 637ms
✅ MappedCatalogBridgeTests 3 3 0 12ms
✅ MappedCatalogModelTests 11 11 0 821ms
✅ MockBackendExpiredCredentialsTests 3 3 0 381ms
✅ MockBackendIntegrationTests 4 4 0 92ms
✅ MockBackendLoanLimitTests 2 2 0 54ms
✅ MockBackendRouteMatchingTests 4 4 0 22ms
✅ MockBackendServerDownTests 1 1 0 167ms
✅ MockIsolationLintTests 5 5 0 2.15s
✅ MultiLibraryTokenIsolationTests 14 14 0 263ms
✅ MyBooksDownloadCenterAccountIdThreadingTests 6 6 0 156ms
✅ MyBooksDownloadCenterAdeptGapTests 3 3 0 16ms
✅ MyBooksDownloadCenterConcurrencyTests 21 21 0 617ms
✅ MyBooksDownloadCenterEvictionTests 7 7 0 438ms
✅ MyBooksDownloadCenterOfflineTests 8 8 0 793ms
✅ MyBooksDownloadSessionInvalidationTests 3 3 0 27ms
✅ MyBooksSimplifiedBearerTokenTests 17 17 0 133ms
✅ MyBooksViewModelBooksPublisherTests 3 3 0 46ms
✅ MyBooksViewModelConcurrencyTests 4 4 0 83ms
✅ MyBooksViewModelDownloadStateTests 3 3 0 61ms
✅ MyBooksViewModelEmptyArrayTests 3 3 0 9ms
✅ MyBooksViewModelEmptyStateTests 4 4 0 146ms
✅ MyBooksViewModelExtendedTests 15 15 0 174ms
✅ MyBooksViewModelFacetIntegrationTests 4 4 0 51ms
✅ MyBooksViewModelFacetPublisherTests 3 3 0 95ms
✅ MyBooksViewModelFilterSortInteractionTests 2 2 0 23ms
✅ MyBooksViewModelFilterTests 9 9 0 133ms
✅ MyBooksViewModelGuardConditionsTests 2 2 0 33ms
✅ MyBooksViewModelLargeDatasetTests 2 2 0 602ms
✅ MyBooksViewModelLoadAccountTests 2 2 0 2.54s
✅ MyBooksViewModelLoginStateTests 4 4 0 357ms
✅ MyBooksViewModelMultipleAuthorSortingTests 3 3 0 38ms
✅ MyBooksViewModelNotificationTests 4 4 0 356ms
✅ MyBooksViewModelOfflineFilteringTests 3 3 0 171ms
✅ MyBooksViewModelPublisherTests 7 7 0 69ms
✅ MyBooksViewModelSearchEdgeCaseTests 6 6 0 70ms
✅ MyBooksViewModelSearchQueryTests 3 3 0 4.59s
✅ MyBooksViewModelSortPersistenceTests 3 3 0 45ms
✅ MyBooksViewModelSortingIntegrationTests 5 5 0 79ms
✅ MyBooksViewModelSortingTests 6 6 0 71ms
✅ MyBooksViewModelStateTransitionTests 3 3 0 356ms
✅ MyBooksViewModelUIBindingTests 3 3 0 3.11s
✅ NSErrorAdditionsTests 7 7 0 35ms
✅ NSNotificationTPPTests 3 3 0 29ms
✅ NavigationCoordinatorTests 17 17 0 105ms
✅ NavigationFreezePreventionTests 5 5 0 24ms
✅ NetworkExecutorCredentialGuardTests 8 8 0 169ms
✅ NetworkExecutorResponseRegressionTests 4 4 0 51ms
✅ NetworkExecutorTaskTypeTests 3 3 0 58ms
✅ NetworkOfflineDetectionTests 3 3 0 13ms
✅ NetworkQueueTests 11 11 0 152ms
✅ NetworkRequestQueueTests 2 2 0 10.09s
✅ NetworkRetryLogicTests 7 7 0 62ms
✅ NetworkTimeoutTests 2 2 0 9ms
✅ NotificationEventTypeContractTests 7 7 0 24ms
✅ NotificationPayloadContractTests 10 10 0 97ms
✅ NotificationServiceStateMachineTests 9 9 0 2.17s
✅ NotificationServiceTests 16 16 0 1.47s
✅ NotificationServiceTokenTests 13 13 0 121ms
✅ NotificationSyncThrottleTests 5 5 0 29ms
✅ NotificationTokenDataTests 4 4 0 30ms
✅ NotificationTokenRegistrationTests 10 10 0 45ms
✅ NowPlayingCoordinatorBackgroundTests 6 6 0 483ms
✅ NowPlayingCoordinatorTests 19 19 0 2.71s
✅ OAuthSAMLRedirectRegressionTests 4 4 0 441ms
✅ OIDCAuthDocumentParsingTests 4 4 0 452ms
✅ OIDCAuthTypeTests 5 5 0 23ms
✅ OIDCAuthenticationPropertyTests 8 8 0 817ms
✅ OIDCCallbackEdgeCaseTests 9 9 0 1.10s
✅ OIDCCallbackHandlingTests 5 5 0 1.25s
✅ OIDCCallbackSchemeTests 3 3 0 75ms
✅ OIDCIsolationRegressionTests 6 6 0 1.13s
✅ OIDCLoginRoutingTests 3 3 0 733ms
✅ OIDCMakeRequestTests 3 3 0 384ms
✅ OIDCNSCodingTests 1 1 0 91ms
✅ OIDCNetworkLayer401Tests 5 5 0 602ms
✅ OIDCReauthOnExpiredTokenTests 5 5 0 690ms
✅ OIDCRedirectURIConstructionTests 6 6 0 20.55s
✅ OIDCRegressionTests 9 9 0 1.04s
✅ OIDCSelectedAuthenticationTests 2 2 0 245ms
✅ OIDCSignOutRegressionTests 6 6 0 653ms
✅ OIDCTokenRefreshRegressionTests 6 6 0 1.98s
✅ OIDCUpdateUserAccountTests 5 5 0 650ms
✅ OIDCViewModelRegressionTests 1 1 0 110ms
✅ OIDCViewModelSignInTests 2 2 0 52ms
✅ OPDS1BorrowEntryContractTests 4 4 0 39ms
✅ OPDS1CatalogGroupedContractTests 3 3 0 26ms
✅ OPDS1HoldEntriesContractTests 4 4 0 244ms
✅ OPDS1LoansFeedContractTests 6 6 0 104ms
✅ OPDS1ParsingTests 34 34 0 269ms
✅ OPDS1RevokeResponseContractTests 2 2 0 17ms
✅ OPDS2AuthenticationDocumentTests 18 18 0 294ms
✅ OPDS2AvailabilityTests 4 4 0 42ms
✅ OPDS2BookBridgeTests 44 44 0 362ms
✅ OPDS2BorrowResponseContractTests 3 3 0 13ms
✅ OPDS2CatalogWiringTests 17 17 0 1.05s
✅ OPDS2CatalogsFeedTests 3 3 0 330ms
✅ OPDS2ContributorTests 2 2 0 5ms
✅ OPDS2EmptyFeedContractTests 1 1 0 6ms
✅ OPDS2FeedContractTests 4 4 0 61ms
✅ OPDS2FeedParsingTests 11 11 0 683ms
✅ OPDS2FeedTests 13 13 0 84ms
✅ OPDS2FullMetadataTests 4 4 0 33ms
✅ OPDS2FullPublicationTests 13 13 0 83ms
✅ OPDS2IntegrationTests 18 18 0 283ms
✅ OPDS2LinkArrayTests 5 5 0 19ms
✅ OPDS2LinkComputedPropertyTests 20 20 0 80ms
✅ OPDS2LinkRelTests 1 1 0 3ms
✅ OPDS2LinkTests 2 2 0 186ms
✅ OPDS2ParsingTests 38 38 0 302ms
✅ OPDS2PublicationExtendedTests 53 53 0 198ms
✅ OPDS2PublicationImageTests 6 6 0 15ms
✅ OPDS2PublicationNarratorTests 3 3 0 18ms
✅ OPDS2PublicationTests 2 2 0 202ms
✅ OPDS2SamlIDPTests 6 6 0 16ms
✅ OPDS2SearchResultsContractTests 3 3 0 20ms
✅ OPDS2SubjectTests 2 2 0 7ms
✅ OPDS2SupportingTypesTests 5 5 0 37ms
✅ OPDSAcquisitionPathExpandedTests 15 15 0 476ms
✅ OPDSFeedCacheTests 14 14 0 158ms
✅ OPDSFeedMigrationTests 11 11 0 48ms
✅ OPDSFeedParsingTests 2 2 0 244ms
✅ OPDSFeedServiceStateMachineTests 3 3 0 646ms
✅ OPDSFeedServiceTests 2 2 0 12ms
✅ OPDSFormatTests 13 13 0 56ms
✅ OPDSParserCoreTests 4 4 0 23ms
✅ OPDSParserTests 4 4 0 16ms
✅ OPDSParsingTests 57 57 0 8.12s
✅ OfflineActionTests 29 29 0 10.96s
✅ OfflineQueueServiceExtendedTests 13 13 0 5.30s
✅ OfflineQueueServiceTests 17 17 0 7.16s
✅ OpenAccessAdapterTests 6 6 0 82ms
✅ OverdriveDeferredFulfillmentTests 6 6 0 29ms
✅ OverdriveDownloadHandlerTests 9 9 0 233ms
✅ OverdriveFulfillmentTests 5 5 0 89ms
✅ PDFExtensionsTests 20 20 0 106ms
✅ PDFReaderTests 12 12 0 95ms
✅ PP3596RegressionTests 3 3 0 311ms
❌ Palace 2 1 1 <1ms
✅ PalaceCheckPropertyTests 8 8 0 270ms
✅ PalaceErrorCategoryTests 20 20 0 56ms
✅ PalaceErrorExtendedTests 23 23 0 117ms
✅ PalaceErrorTests 11 11 0 109ms
✅ PalacePDFViewTests 12 12 0 143ms
✅ PalaceTestSetupObservationTests 4 4 0 45ms
✅ PalaceWiringTestCaseTests 4 4 0 22ms
✅ ParserFuzzTests 4 4 0 46.46s
✅ PatronProfileContractTests 4 4 0 20ms
✅ PerformanceMonitorTests 14 14 0 134ms
✅ PerformanceReportTests 14 14 0 94ms
✅ PersistentLoggerTests 9 9 0 2.45s
✅ PlaybackBootstrapperTests 8 8 0 130ms
✅ PlaybackFailureRecordTests 5 5 0 28ms
✅ PlaybackOpenPolicyTests 7 7 0 31ms
✅ PlaybackRateTests 16 16 0 2.09s
✅ PlaybackTrackingRegressionTests 5 5 0 219ms
✅ PositionPersistenceLogicTests 6 6 0 45ms
✅ PositionPersistenceTests 2 2 0 13ms
✅ PositionSyncServiceTests 13 13 0 166ms
✅ PositionSyncTests 5 5 0 32ms
✅ PositionWriterContractTests 6 6 0 322ms
✅ PostUpdateMigrationTests 5 5 0 57ms
✅ ProblemDocumentContractTests 4 4 0 35ms
✅ ProblemDocumentLoanExpiryTests 5 5 0 12ms
✅ ProblemDocumentTests 12 12 0 57ms
✅ ProblemReportEmailTests 8 8 0 47ms
✅ ReachabilityTests 10 10 0 56ms
✅ Reader2BookmarkContractTests 3 3 0 73ms
✅ Reader2PositionAdapterContractTests 4 3 0 269ms
✅ Reader2PositionResumeContractTests 3 3 0 204ms
✅ ReaderAccessibilityTests 7 7 0 18ms
✅ ReaderEditingActionsTests 5 5 0 44ms
✅ ReaderErrorTests 5 5 0 68ms
✅ ReaderNavBarVoiceOverTests 2 2 0 9ms
✅ ReaderServiceSyncTests 3 3 0 34ms
✅ ReaderThemeTests 24 24 0 317ms
✅ ReadingPositionTests 22 22 0 404ms
✅ ReadingSessionTrackerTests 13 13 0 159ms
✅ ReadingStatsServiceTests 12 12 0 85ms
✅ ReadingStatsStoreTests 9 9 0 118ms
✅ RedirectHandlingIntegrationTests 4 4 0 13ms
✅ RedirectPolicyTests 9 9 0 59ms
✅ RemoteFeatureFlagsGapTests 4 4 0 29ms
✅ RemoteFeatureFlagsTests 9 9 0 400ms
✅ ResourcePropertiesLengthTests 3 3 0 11ms
✅ RetryClassificationTests 17 17 0 117ms
✅ ReturnFlowTests 1 1 0 2ms
✅ RightsManagementDetectionTests 5 5 0 337ms
✅ RightsManagementDispatcherTests 10 10 0 136ms
✅ SAMLCookieSyncTests 5 5 0 24ms
✅ SAMLLogoutCallbackDetectionTests 4 4 0 13ms
✅ SAMLLogoutLinkParsingTests 5 5 0 416ms
✅ SAMLLogoutURLTests 4 4 0 16ms
✅ SAMLPlusBiblioBoardExpirationTests 8 8 0 918ms
✅ SEMigrationsTests 6 6 0 131ms
✅ SafeDictionaryTests 21 21 0 134ms
✅ SamplePlayerErrorTests 5 5 0 34ms
✅ SampleTypeTests 8 8 0 26ms
✅ SceneDelegateTests 1 1 0 7ms
✅ ScopedResetTests 9 9 0 173ms
✅ SearchAccessibilityTests 6 6 0 71ms
✅ SearchFlowIntegrationTests 8 8 0 276ms
✅ SettingsViewModelComputedPropertyTests 6 6 0 62ms
✅ SettingsViewModelEdgeCaseTests 7 7 0 300ms
✅ SettingsViewModelGapTests 1 1 0 11ms
✅ SettingsViewModelSyncTests 14 14 0 150ms
✅ SettingsViewModelTests 33 33 0 389ms
✅ SignInModalLifecycleTests 9 9 0 75ms
✅ SignInModalPredicateTests 3 3 0 9ms
✅ SignInModalSAMLOIDCTests 6 6 0 52ms
✅ SignInOAuthErrorPropagationTests 8 8 0 1.73s
✅ SignInToReadFlowIntegrationTests 5 5 0 739ms
✅ SignInWebSheetIntegrationTests 3 3 0 4.73s
✅ SignInWebSheetViewModelTests 31 31 0 141ms
✅ SignOutCacheClearingTests 3 3 0 27ms
✅ SingletonResetRegistryTests 5 5 0 107ms
✅ StatsViewModelTests 10 10 0 696ms
✅ StatusAnnouncementTests 22 22 0 394ms
✅ StopPositionSaveTests 2 2 0 5ms
✅ StoreTests 5 5 0 41ms
✅ StreamingReaderPresentationContractTests 1 1 0 22ms
✅ StreamingReaderProgressStoreTests 7 7 0 94ms
✅ StreamingReaderViewControllerScrollRestoreTests 12 12 0 1.09s
✅ StreamingReaderViewModelTests 9 9 0 327ms
✅ StringExtensionTests 8 8 0 31ms
✅ StringExtensionsTests 3 3 0 513ms
✅ StringHTMLEntitiesTests 7 7 0 18ms
✅ StringNYPLAdditionsTests 4 4 0 56ms
✅ String_NYPLAdditionsTests 4 4 0 18ms
✅ SyncConflictResolutionTests 3 3 0 11ms
✅ SyncDeletionGuardTests 5 5 0 11ms
✅ SyncDeletionRatioTests 6 6 0 20ms
✅ SyncPermissionTests 5 5 0 2.46s
✅ TPPAccountAuthStateEnumTests 5 5 0 20ms
✅ TPPAccountListDataSourceTests 3 3 0 12ms
✅ TPPAdobeActivationSkipTests 6 6 0 654ms
✅ TPPAgeCheckCompletionTests 5 5 0 675ms
✅ TPPAgeCheckIsValidTests 5 5 0 21ms
✅ TPPAgeCheckStateMachineTests 4 4 0 688ms
✅ TPPAgeCheckTests 6 6 0 1.74s
✅ TPPAgeCheckVerifyDecisionTests 5 5 0 501ms
✅ TPPAlertUtilsTests 45 45 0 730ms
✅ TPPAnnotationsHermeticTests 15 15 0 179ms
✅ TPPAnnotationsOverrideTests 4 4 0 306ms
✅ TPPAnnotationsTests 29 29 0 3.81s
✅ TPPAnnouncementManagerTests 3 3 0 25ms
✅ TPPAuthDocumentContractTests 3 3 0 49ms
✅ TPPBackgroundExecutorTests 3 3 0 277ms
✅ TPPBadgeImageGapTests 2 2 0 13ms
✅ TPPBaseReaderViewControllerInitialLocationTests 5 5 0 38ms
✅ TPPBasicAuthTests 11 11 0 220ms
✅ TPPBookAccessibilityLabelTests 8 8 0 49ms
✅ TPPBookAuthorCoverageTests 3 3 0 10ms
✅ TPPBookAuthorTests 6 6 0 24ms
✅ TPPBookBearerTokenTests 9 8 0 106ms
✅ TPPBookButtonsStateTests 7 7 0 40ms
✅ TPPBookContentMetadataFilesHelperTests 9 9 0 51ms
✅ TPPBookContentTypeConverterStreamingHTMLTests 2 2 0 20ms
✅ TPPBookContentTypeConverterTests 4 4 0 28ms
✅ TPPBookContentTypeExtendedTests 4 4 0 20ms
✅ TPPBookContentTypeTests 14 14 0 126ms
✅ TPPBookCoverRegistryTests 14 14 0 490ms
✅ TPPBookCreationTests 7 7 0 172ms
✅ TPPBookExtensionsTests 21 21 0 176ms
✅ TPPBookIsDRMProtectedTests 9 9 0 41ms
✅ TPPBookLocationCoverageTests 7 7 0 34ms
✅ TPPBookLocationEdgeCaseTests 27 27 0 131ms
✅ TPPBookLocationKeyTests 3 3 0 9ms
✅ TPPBookLocationTests 11 11 0 179ms
✅ TPPBookModelGapTests 4 4 0 32ms
✅ TPPBookRegistryAsyncReadinessTests 3 3 0 465ms
✅ TPPBookRegistryAtomicWriteTests 7 7 0 1.92s
✅ TPPBookRegistryBookRetrievalTests 7 7 0 104ms
✅ TPPBookRegistryBookmarkTests 7 7 0 85ms
✅ TPPBookRegistryCorruptedDataTests 5 5 0 1.27s
✅ TPPBookRegistryDataTests 4 4 0 20ms
✅ TPPBookRegistryDependencyTests 4 4 0 44ms
✅ TPPBookRegistryFulfillmentIdTests 4 4 0 7.10s
✅ TPPBookRegistryLargeCorpusTests 5 5 0 2m 2s
✅ TPPBookRegistryLoadReentrancyTests 2 2 0 516ms
✅ TPPBookRegistryLocationTests 4 4 0 121ms
✅ TPPBookRegistryMigrationTests 16 16 0 2.70s
✅ TPPBookRegistryPersistenceTests 10 10 0 2.54s
✅ TPPBookRegistryProcessingTests 2 2 0 10ms
✅ TPPBookRegistryPublisherTests 6 6 0 331ms
✅ TPPBookRegistryRecordPersistenceTests 3 3 0 107ms
✅ TPPBookRegistryRecordTests 10 10 0 108ms
✅ TPPBookRegistryStateManagementTests 11 11 0 142ms
✅ TPPBookRegistryThreadSafetyTests 3 3 0 442ms
✅ TPPBookRegistryUpdateAndRemoveTests 1 1 0 8ms
✅ TPPBookRequiresAdobeDRMTests 6 6 0 34ms
✅ TPPBookSerializationTests 13 13 0 484ms
✅ TPPBookStateInitializationTests 4 4 0 17ms
✅ TPPBookStateTests 4 4 0 186ms
✅ TPPBookTests 93 93 0 733ms
✅ TPPBookmarkDeletionLogTests 11 11 0 691ms
✅ TPPBookmarkFactoryInitTests 2 2 0 11ms
✅ TPPBookmarkFactoryServerAnnotationEdgeCaseTests 5 5 0 56ms
✅ TPPBookmarkFactoryTests 15 15 0 156ms
✅ TPPBookmarkR3ConversionTests 5 5 0 22ms
✅ TPPBookmarkR3LocationTests 13 13 0 46ms
✅ TPPBookmarkSpecTests 1 1 0 20ms
✅ TPPCachingTests 3 3 0 8ms
✅ TPPCapturedCredentialsTests 5 5 0 833ms
✅ TPPConfigurationTests 22 22 0 102ms
✅ TPPContentTypeTests 9 9 0 50ms
✅ TPPCredentialConcurrencyTests 3 3 0 34ms
✅ TPPCredentialIsolationE2ETests 5 0 0 221ms
✅ TPPCredentialPersistenceTests 6 6 0 1.21s
✅ TPPCredentialSnapshotCoherenceTests 3 0 0 67ms
✅ TPPCredentialSnapshotTests 8 8 0 16ms
✅ TPPCredentialsCoverageTests 9 9 0 321ms
✅ TPPCredentialsTests 26 26 0 425ms
✅ TPPCrossLibrarySignOutTests 6 6 0 1.02s
✅ TPPDRMFailureCredentialPreservationTests 4 4 0 732ms
✅ TPPErrorLoggerTests 27 27 0 352ms
✅ TPPIdleSignOutRegressionTests 13 13 0 2.12s
✅ TPPJWKConversionTest 1 1 0 19ms
✅ TPPKeychainManagerTests 5 5 0 133ms
✅ TPPLastReadPositionPosterTests 13 13 0 378ms
✅ TPPLastReadPositionSynchronizerIntegrationTests 5 5 0 100ms
✅ TPPLastReadPositionSynchronizerTests 23 23 0 124ms
✅ TPPLastReadPositionSynchronizer_BehaviorDocumentationTests 5 5 0 28ms
✅ TPPLastReadPositionSynchronizer_BookLocationTests 9 9 0 43ms
✅ TPPLastReadPositionSynchronizer_ConcurrencyTests 3 3 0 21ms
✅ TPPLastReadPositionSynchronizer_ReadiumBookmarkTests 9 9 0 46ms
✅ TPPLastReadPositionSynchronizer_SyncLogicTests 10 10 0 31ms
✅ TPPLastReadPositionSynchronizer_WriterDelegationTests 4 4 0 220ms
✅ TPPLoginNoActivationTests 3 3 0 605ms
✅ TPPMainThreadCheckerTests 4 4 0 34ms
✅ TPPMigrationManagerTests 15 15 0 54ms
✅ TPPNetworkExecutorAPITests 14 14 0 145ms
✅ TPPNetworkExecutorStubbedTests 17 17 0 231ms
✅ TPPNetworkExecutorTests 3 3 0 17ms
✅ TPPNetworkResponderAuthCoordinatorTests 5 5 0 91ms
✅ TPPNetworkResponderTests 12 12 0 371ms
✅ TPPOPDSAcquisitionPathTests 5 5 0 107ms
✅ TPPOPDSEntryTests 5 5 0 32ms
✅ TPPOPDSFeedTests 3 3 0 331ms
✅ TPPOPDSGroupSwiftTests 3 3 0 11ms
✅ TPPOPDSLinkTests 7 7 0 45ms
✅ TPPOpenSearchDescriptionExpandedTests 10 10 0 53ms
✅ TPPOpenSearchDescriptionTests 1 1 0 2ms
✅ TPPPDFDocumentMetadataTests 15 15 0 132ms
✅ TPPPDFDocumentTests 8 8 0 97ms
✅ TPPPDFLocationCoverageTests 7 7 0 17ms
✅ TPPPDFLocationTests 10 10 0 449ms
✅ TPPPDFPageBookmarkTests 9 9 0 1.15s
✅ TPPPDFPageTests 5 5 0 21ms
✅ TPPPDFReaderModeTests 6 6 0 22ms
✅ TPPPerAccountIsolationTests 8 0 0 200ms
✅ TPPPreferredAuthSelectionTests 8 8 0 898ms
✅ TPPProblemDocumentCacheManagerTests 12 12 0 89ms
✅ TPPProblemDocumentTests 21 21 0 153ms
✅ TPPReaderAppearanceTests 4 4 0 14ms
✅ TPPReaderBookmarksBusinessLogicTests 12 12 0 1.31s
✅ TPPReaderBookmarksReadinessTests 2 2 0 235ms
✅ TPPReaderFontTests 4 4 0 14ms
✅ TPPReaderPreferencesLoadTests 3 3 0 20ms
✅ TPPReaderSettingsTests 28 28 0 167ms
✅ TPPReaderTOCBusinessLogicTests 15 15 0 3.13s
✅ TPPReaderTOCFlattenTests 2 2 0 1.06s
✅ TPPReadiumBookmarkLocationMatchingTests 5 5 0 481ms
✅ TPPReadiumBookmarkTests 21 21 0 290ms
✅ TPPReauthenticatorMockTests 2 2 0 4ms
✅ TPPReauthenticatorTests 4 4 0 31ms
✅ TPPReturnPromptHelperTests 5 5 0 50ms
✅ TPPSAMLCookieExpirationTests 7 7 0 49ms
✅ TPPSAMLFlowTests 10 10 0 58ms
✅ TPPSAMLReauthFlowTests 2 2 0 284ms
✅ TPPSAMLRegressionTests 4 4 0 439ms
✅ TPPSAMLSignInTests 26 26 0 3.49s
✅ TPPSAMLStateIsolationTests 4 4 0 190ms
✅ TPPSAMLStateMachineTests 6 6 0 1.28s
✅ TPPSettingsTests 6 6 0 2m 3s
✅ TPPSignInAdobeSkipTests 14 14 0 1.91s
✅ TPPSignInAuthStateTransitionTests 3 3 0 473ms
✅ TPPSignInBusinessLogicExtendedTests 58 58 0 10.99s
✅ TPPSignInBusinessLogicOAuthTests 11 11 0 1.69s
✅ TPPSignInBusinessLogicSignOutTests 11 11 0 2.05s
✅ TPPSignInBusinessLogicStateMachineTests 9 9 0 1.28s
✅ TPPSignInBusinessLogicTests 18 18 0 1.95s
✅ TPPSignInBusinessLogicTokenFlowTests 3 3 0 393ms
✅ TPPSignInBusinessLogicValidationCallbackOrderTests 2 2 0 301ms
✅ TPPSignInErrorHandlingTests 2 2 0 846ms
✅ TPPSignInProfileDocEdgeCaseTests 3 3 0 513ms
✅ TPPSignedInStateProviderTests 3 3 0 7ms
✅ TPPUserAccountAuthStateTests 6 6 0 25ms
✅ TPPUserAccountGapTests 4 4 0 36ms
✅ TPPUserAccountIsolationLintTests 3 3 0 1.41s
✅ TPPUserAccountTestFactoryTests 7 0 0 885ms
✅ TPPUserFriendlyErrorTests 11 11 0 56ms
✅ TPPUserNotificationsTests 10 10 0 120ms
✅ TPPXMLSwiftTests 16 16 0 93ms
✅ TPPXMLTests 3 3 0 23ms
✅ TearDownRequiredLintTests 5 5 0 2.02s
✅ TestAppContainerFactoryTests 5 5 0 35ms
✅ TimeEntryTests 3 3 0 11ms
❌ TokenRefreshAndRetryQueueTests 11 10 1 8.88s
✅ TokenRefreshIntegrationTests 2 2 0 115ms
✅ TokenRefreshInterceptorAuthCoordinatorTests 8 8 0 4.26s
✅ TokenRefreshInterceptorTests 22 22 0 5.79s
✅ TokenRefreshOnForegroundTests 10 10 0 2.93s
✅ TokenRefreshTests 25 25 0 555ms
✅ TokenRequestCredentialGuardTests 13 13 0 523ms
✅ TokenRequestTests 11 11 0 92ms
✅ TokenResponseTests 21 21 0 273ms
✅ TypographyPresetTests 21 21 0 647ms
✅ TypographyServiceTests 31 31 0 2.28s
✅ TypographySettingsViewModelTests 27 27 0 617ms
✅ UIAlertCACommitGuardTests 8 8 0 706ms
✅ UIColor_NYPLAdditionsTests 1 1 0 7ms
✅ URLBackupExclusionTests 3 3 0 22ms
✅ URLExtensionTests 16 16 0 63ms
✅ URLExtensionsTests 6 6 0 49ms
✅ URLRequestExtensionsCoverageTests 3 3 0 9ms
✅ URLRequestExtensionsTests 11 11 0 38ms
✅ URLRequestNYPLAdditionsTests 11 11 0 55ms
✅ URLRequest_NYPLTests 1 1 0 3ms
✅ URLResponseAuthenticationTests 10 10 0 100ms
✅ URLResponseNYPLTests 14 14 0 89ms
✅ URLSessionCredentialStorageTests 3 3 0 36ms
✅ URLSessionStubbingResetTests 2 2 0 32ms
✅ URLTypeTests 2 2 0 8ms
✅ URLValidationTests 5 5 0 30ms
✅ UnifiedOPDSServiceStateMachineTests 2 2 0 421ms
✅ UserAccountPublisherAuthStateTests 5 5 0 50ms
✅ UserAccountPublisherTests 14 14 0 451ms
✅ UserAccountValidationTests 11 11 0 1.87s
✅ UserDefaultsIsolationLintTests 2 2 0 949ms
✅ UserProfileDocumentTests 7 7 0 29ms
✅ UserRetryTrackerTests 10 10 0 55ms
✅ XCTestCase_testUserDefaultsTests 3 3 0 45ms
✅ iPadOnMacRMSDKGuardTests 1 1 0 3ms
Failed Tests (click to expand)
Palace.PalaceTests
ErrorLogExporterTests.testPP3651_collectLogsForPreview_containsPatronIDField
TokenRefreshAndRetryQueueTests.First Run

📊 Testing Coverage Breakdown

Unit Test Line Coverage (testable surfaces): 47.8%

Total coverage incl. UI/lifecycle: 46.0% (18 files excluded from testable denominator — see scripts/coverage-exclude.json)

Target Lines Covered
Palace.app 46.0%

Why two coverage numbers? Testable coverage subtracts files that can't be exercised from xcodebuild — SwiftUI views, UIKit VCs, lifecycle (see scripts/coverage-exclude.json) — so raising it means more testable logic is tested, not that we shipped less UI. Total coverage is kept for continuity. The excluded paths are covered by simdrive E2E journeys (see chaos-replay-on-pr.yml).


🔗 Interactive HTML Report | CI Run Details

📦 Downloadable Artifacts
Artifact Description
test-report 📄 Markdown + HTML reports
test-data 📊 JSON data for tooling
test-results 🔍 Full xcresult (open in Xcode)

@mauricecarrier7 mauricecarrier7 self-assigned this Jun 9, 2026
@mauricecarrier7 mauricecarrier7 changed the title fix(hooks): clear leaked git env before xcodebuild in pre-push-test-gate fix(ci): harden test runners — pre-push gate git-env + per-test timeouts Jun 9, 2026
@mauricecarrier7 mauricecarrier7 changed the title fix(ci): harden test runners — pre-push gate git-env + per-test timeouts fix(ci/build): CI reliability — pre-push git-env, per-test timeouts, TriageBotCore double-link Jun 9, 2026
mauricecarrier7 added a commit that referenced this pull request Jun 10, 2026
…between tests (#1056)

`AccountsManager.deferInitialLoadCatalogsForTesting` is a process-wide mutable
static flag gating whether `AccountsManager.init` spawns its background
`loadCatalogs` Task. The test-safe value is `true` (no background work);
`PalaceTestSetup.bootstrap()` pins it `true` at bundle load. Tests that need the
background load opt IN by setting it `false` in their own setUp.

Two sites left it `false` after running, leaking the unsafe value to the next
test class — which then constructs a real `AccountsManager`, spawning the
1100+-library registry crawl that outlives the test and pollutes whatever runs
next:
  - `AppContainer._resetForTesting()` — runs after EVERY test via the
    singleton-reset observer; its final line set the flag false.
  - `AppContainerResetTests.tearDown()` — explicitly set it false "for
    production semantics."

Both now leave the flag at the test-safe `true`. This is the root cause behind
recurring CI flakes that blocked PRs #1052/#1053/#1054 (none of whose own diffs
were at fault):
  - AccountsManagerCancellationTests.testCancelBackgroundWork_onOptOutInstance
    _isSafeNoOp — opt-out handle non-nil (failed all 3 iterations)
  - CatalogCacheKeyAndIsolationTests — layout-engine-off-main crash
  - BookReturnCleverReauthTests — crash → ** TEST FAILED ** with 0 reported
    failures
  - TokenRefreshOnForeground / TokenRefreshAndRetryQueue — token/network bleed

Regression: AppContainerResetTests.testResetForTesting_disablesBackgroundLoad
Catalogs now asserts the flag is `true` post-reset (was asserting false) — the
mutation that reintroduces the leak fails it.

No production runtime change: the flag is only ever non-default inside an XCTest
process (initializer keys off XCTestConfigurationFilePath); `_resetForTesting()`
already early-returns outside XCTest.

Verified: AppContainerResetTests + AccountsManagerCancellationTests +
CatalogCacheKeyAndIsolationTests + TokenRefreshOnForegroundTests +
TokenRefreshAndRetryQueueTests + BookReturnCleverReauthTests run together →
41 tests, 0 failures, ** TEST SUCCEEDED **.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
git invokes pre-push hooks with GIT_DIR/GIT_WORK_TREE/GIT_INDEX_FILE
exported. xcodebuild's SwiftPM resolution shells out to git internally, and
an inherited GIT_WORK_TREE makes local-package paths resolve to "/", failing
with: "the package manifest at '/Package.swift' doesn't exist". This blocked
EVERY push that touches a Palace/*.swift file from a linked git worktree (and
is latent on the main checkout under some git versions) — the same xcodebuild
command run from a plain shell succeeds.

Fix: wrap the gate's xcodebuild in `env -u GIT_DIR -u GIT_WORK_TREE
-u GIT_INDEX_FILE -u GIT_PREFIX -u GIT_EXEC_PATH`. Also scope a per-checkout
DerivedData/SourcePackages dir for linked-worktree pushes so they don't
collide with the main checkout's warm cache.

Reproduced: `-resolvePackageDependencies` succeeds with the git env cleared
and fails (/Package.swift) with GIT_DIR+GIT_WORK_TREE set. Verified end-to-end:
PR #1052's worktree push now passes the gate green (`PASS — 4 class(es) green`)
instead of the false /Package.swift failure.

**Scope:** single hook script. **Not done:** a scripts/tests/ fixture asserting
the env-clear (follow-up per green-board contract #4 — tooling under CI).
…est fails fast + retries

A single deadlocked test currently hangs the ENTIRE build-and-test job until
the 60-minute job timeout kills it — the `-retry-tests-on-failure
-test-iterations 3` net never engages because the process is stuck, not
failed. This is how the pre-existing CatalogPreloaderTests order/timing hang
(passes in isolation, in focused pairs, and in a full LOCAL suite run — i.e.
CI-runner-timing-specific) reddens every PR's board with a 1h+ job kill.

Fix: add `-test-timeouts-enabled YES -default-test-execution-time-allowance 120
-maximum-test-execution-time-allowance 300` (the unit runner never adopted the
pattern ui-testing.yml already uses). A hung test now fails at 120s and the
existing retry re-runs it — a timing-flaky hang passes on retry (board green);
a deterministic hang fails all 3 (board stays red, correctly). Caps worst-case
single-test cost at ~360s vs 60min.

This does NOT mask pollution (green-board contract #2): the underlying
CatalogPreloader/loadCatalogs polluter still needs a root fix and is tracked
separately. This change only ensures a hang fails-fast into the retry net
instead of killing the job before the net can act (contract #1).

**Scope:** single CI runner script. **Not done:** root-cause of the
loadCatalogs hang (not locally reproducible; tracked as a test-pollution item).
…cate ObjC class registration)

PalaceTests linked the TriageBotCore SPM product directly even though its
test-host app (Palace) already links it. At runtime both copies loaded into
the test host, registering TriageBotCore's ObjC classes twice:

  Class _TtC13TriageBotCore...BundleFinder is implemented in both
  PackageFrameworks/TriageBotCore_...PackageProduct.framework AND
  Palace.app/Palace.debug.dylib — "may cause spurious casting failures and
  mysterious crashes."

That duplicate registration is a prime suspect for the intermittent
CI-runner-timing test instability (hangs whose victim varies by run).
PalaceTests imports TriageBot in ZERO files — the link was pure redundancy;
the bundle resolves the symbols from its host app at load time.

Removed the TriageBotCore product dependency + framework build-file from the
PalaceTests target (via the xcodeproj gem; 8-line surgical pbxproj delete).
The `.dynamic` library-type fix is blocked by SPM's product-name==target-name
rule, so de-linking the test target is the correct fix.

Verified: TPPSettingsTests + CatalogPreloaderTests build, link (resolving
TriageBotCore from the host), and pass — and the "implemented in both" runtime
warning is GONE (0 occurrences, was 2 per launch). testUseBetaLibraries_-
publishesViaCombine (a local hang victim) passes in 0.68s.

**Scope:** PalaceTests build-config only; no production or test source change.
…spot check, not "green"

Codifies the rule whose violation caused a false "verified" claim during
PP-4542: a `-only-testing:PalaceTests` run (2359 tests) was reported as the
full local suite passing, when (a) CI runs the whole Palace scheme across all
test targets with `-test-iterations 3` (~7121 executions), and (b) that subset
run had actually hung + `** TEST FAILED **`.

Rule: validate via `scripts/xcode-test-optimized.sh` (CI parity) or
`scripts/verify-pr.sh --quick` (full scheme); treat `-only-testing` as a scoped
spot-check only; never report a subset (or a timeout/restart run) as green;
read the top-level rollup, not summed per-suite counts.

**Scope:** CLAUDE.md guidance only. Companion to the CI-runner fixes in this PR.
@mauricecarrier7 mauricecarrier7 force-pushed the fix/pre-push-gate-worktree-git-env branch from 09637e1 to a37ba9e Compare June 10, 2026 14:28
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.

1 participant