Skip to content

fix(support): problem reports arrived with a blank Library line (PP-5078) - #1454

Closed
mauricecarrier7 wants to merge 1 commit into
mainfrom
hotfix/3.2.3-blank-library-field
Closed

fix(support): problem reports arrived with a blank Library line (PP-5078)#1454
mauricecarrier7 wants to merge 1 commit into
mainfrom
hotfix/3.2.3-blank-library-field

Conversation

@mauricecarrier7

Copy link
Copy Markdown
Contributor

Fixes PP-5078. Cut from main (3.2.3, build 492).

⚠️ Merge with gh pr merge --merge (a real merge commit), NEVER --squash. Per CLAUDE.md's release policy: squashing a hotfix into main destroys the SHA relationship that the next release branch's forward-port depends on. That is what produced 296 conflicts on 3.1.0.

What

generateBody rendered Library: \(accountsManager.currentAccount?.name ?? ""). currentAccount resolves through the library registry and is nil until that registry has loaded the selected account — so a patron reporting a problem before it settles sends a report with an empty Library line, while the patron ID (a separate per-library lookup) resolves normally.

Real ticket 18864 (1 Sep 2026, app 3.2.3) reached support as:

Palace Version: 3.2.3
Library:
Patron ID: 21467001510417

The agent triaging it recorded the summary as "Sign in prompt - no library?" — the blank actively implied the patron had no library configured. The patron had written that they were a member of Park Ridge Public Library.

Fix

libraryFieldValue(name:uuid:) yields three outcomes a reader can tell apart:

a real name the common case, verbatim
(name unavailable — urn:uuid:…) the app knows which library but cannot name it; support can resolve a UUID, not a blank
(none selected) genuinely no library

A blank could equally have meant the line was lost in mail transit. None of these can. Whitespace-only names fall back too, since a space renders identically to nothing.

Intermittent, not universal — of the recent problem reports sampled in HelpSpot, most carried a name and a minority did not, which is why it has been easy to miss.

⚠️ Verification is incomplete, and the blocker is pre-existing

The XCTest suite could not be run on this branch. xcodebuild fails before compiling:

Could not resolve package dependencies:
  'swift-toolkit' depends on 'sqlite.swift' 0.16.0..<1.0.0
  and root depends on 'sqlite.swift' 0.15.0..<0.16.0

This is F-INFRA-006, already recorded as high-severity and verified during the 3.3.0 regression: the shipped 3.2.3 tag no longer builds from a clean checkout. main pins swift-toolkit at exactVersion 3.9.0, so the fork's dependencies appear to have changed under a fixed tag.

That is a blocker for shipping any 3.2.3 hotfix, this one included. It is not caused by this change and this change cannot fix it.

What was verified locally: the decision itself, executed standalone across all four cells — the old expression returns an empty string for a nil name (the shipped defect, reproduced), and each new cell returns what it should. That proves the logic, not its wiring into generateBody. Four XCTest cases are included and will run once the build is unblocked.

Also

  • No build-number bump. Deliberate — bumping presumes this ships alone, and un-bumping after a merge is worse. Bump CURRENT_PROJECT_VERSION (492 today) before cutting.
  • Forward-port needs adaptation, not a cherry-pick. develop has extracted this into AccountsManager+ProblemReportContext, where the name still comes from currentAccount?.name while the patron ID comes from the requested library — so develop additionally mislabels a report filed about library A while B is selected.

🤖 Generated with Claude Code

…078)

`generateBody` rendered `Library: \(accountsManager.currentAccount?.name ?? "")`.
`currentAccount` resolves through the library registry and is nil until that
registry has loaded the selected account, so a patron who reports a problem
before it settles sends a report whose Library line is empty — while the patron
ID, a separate per-library lookup, resolves normally.

Real ticket 18864 (1 Sep 2026, app 3.2.3) reached support as:

    Palace Version: 3.2.3
    Library:
    Patron ID: 21467001510417

The agent triaging it recorded the summary as "Sign in prompt - no library?" —
the blank actively implied the patron had no library configured. The patron had
written that they were a member of Park Ridge Public Library.

The line is now produced by `libraryFieldValue(name:uuid:)`, which yields three
outcomes a reader can tell apart:

  * a real name       — the common case, passed through verbatim
  * the identifier    — the app knows WHICH library but cannot name it yet;
                        support can resolve a UUID, and cannot resolve a blank
  * "(none selected)" — the app genuinely has no library

A blank could equally have meant the line was lost in mail transit. None of
these can. Whitespace-only names fall back too, since a space renders in the
email exactly like nothing at all.

Intermittent, not universal: of the recent problem reports sampled in HelpSpot,
most carried a library name and a minority did not, which is why this has been
easy to miss.

**Scope:** the Library line in the problem-report body, plus its tests. The
patron-ID resolution, the report's other fields, and registry loading are all
untouched.

**Not done — the XCTest suite was NOT run.** It could not be: on this branch
`xcodebuild` refuses with "an out-of-date resolved file was detected at
Package.resolved", a pre-existing condition of main's committed lockfile rather
than anything this change introduces, and forcing resolution instead pulls a
newer swift-toolkit that conflicts on sqlite.swift. CI runs on a clean
environment and is the verification of record here. What WAS verified locally is
the decision itself, executed standalone against all four cells: the old
expression returns an empty string for a nil name (the shipped defect,
reproduced), and each new cell returns what it should. That proves the logic,
not the wiring into `generateBody`.

**Not done:** no build-number bump. This is deliberate — bumping now would
presume this ships alone, and un-bumping after a merge is worse than adding it.
Bump `CURRENT_PROJECT_VERSION` (492 on main today) before cutting the build.

**Deferred:** develop has since extracted this into
`AccountsManager+ProblemReportContext`, where the name still comes from
`currentAccount?.name` while the patron ID comes from the requested library — so
develop additionally mislabels a report filed about library A while B is
selected. The forward-port needs to carry the fallback into that extraction
rather than apply this diff verbatim; the file's own header comment records the
current behaviour as an intentional replication of the pre-extraction code.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

🏗️ CodeAtlas Ledger Analysis

✅ All Checks Passed


♿ Accessibility (via AccessLint)

💡 Static analysis against WCAG 2.1 AA guidelines for iOS accessibility.

No accessibility issues detected


🧪 Test Coverage (via QAAtlas)

⚠️ No coverage data available - QAAtlas requires an OpenAI API key.
Set OPENAI_API_KEY in repository secrets to enable AI-powered test coverage analysis.


🏛️ Architecture Analysis

Metric Value ℹ️ What This Means
Components 22 Distinct modules/layers detected in your codebase
Dependency Cycles 0 Circular dependencies (A→B→C→A). Goal: 0
Layer Violations 1 Dependencies that break architectural boundaries
Hotspots 0 Files with high complexity + frequent changes
Avg Coupling 0.55 How interconnected modules are (lower is better, <1.0 is good)

🔍 Reachability Analysis

💡 Detects code that cannot be reached from entry points (dead code).

No dead code detected


📊 0 files analyzed | 📦 Download Full Report

Powered by CodeAtlas Ledger
• Accessibility: AccessLint

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown

🧪 Unit Test Results

📊 View Full Interactive Report

❌ 3 TESTS FAILED

7425 tests | 7308 passed | 3 failed | 114 skipped | ⏱️ 18m 35s | 📊 98.4% | 📈 49.1% coverage

Tests by Class — 838 classes, 3 with failures
Class Tests Passed Failed Duration
✅ AccessLintComplianceTests 11 11 0 49ms
✅ AccessibilityAnnouncementCenterTests 20 20 0 1.81s
✅ AccessibilityLabelTests 9 9 0 58ms
✅ AccessibilityPreferencesTests 26 26 0 373ms
✅ AccessibilityServiceTests 11 11 0 181ms
✅ AccountAuthDocCarryoverTests 5 5 0 1.14s
✅ AccountAuthSurfaceHostsTests 7 7 0 35ms
✅ AccountAwareNetworkTests 10 10 0 267ms
✅ AccountDetailCredentialStateTests 7 0 0 65ms
✅ AccountDetailPINVisibilityTests 25 0 0 355ms
✅ AccountDetailSignOutConfirmationTests 2 0 0 25ms
✅ AccountDetailViewModelGapTests 1 1 0 124ms
✅ AccountDetailViewModelTests 19 0 0 666ms
✅ AccountDetailsAuthenticationIsBrowserBasedTests 10 10 0 199ms
✅ AccountDetailsNeedsAuthAggregateTests 10 10 0 51ms
✅ AccountDetailsURLTests 17 17 0 273ms
✅ AccountModelGapTests 9 9 0 1.05s
✅ AccountModelTests 20 20 0 686ms
✅ AccountProfileDocumentTests 3 3 0 18ms
✅ AccountStateMachineTests 13 13 0 545ms
✅ AccountSwitchCleanupTests 8 8 0 7.34s
✅ AccountSwitchIntegrationTests 8 8 0 186ms
✅ AccountSwitchLifecycleTests 9 0 0 987ms
✅ AccountsManagerCacheTests 16 16 0 462ms
✅ AccountsManagerCancellationTests 5 5 0 614ms
✅ AccountsManagerGapTests 3 3 0 43ms
✅ AccountsManagerHelpersTests 12 12 0 101ms
✅ AccountsManagerIsolationLintTests 2 2 0 1.48s
✅ AccountsManagerStateMachineWiringTests 15 15 0 7.12s
❌ AccountsManagerTests 51 47 1 2m 7s
✅ ActiveSessionsViewModelTests 12 12 0 1.82s
✅ AdobeActivationTests 6 6 0 41ms
✅ AdobeCertificateGapTests 7 7 0 35ms
✅ AdobeDRMCharacterizationTests 21 21 0 277ms
✅ AdobeDRMErrorGapTests 3 3 0 60ms
✅ AdobeDRMHandlerTests 12 12 0 206ms
✅ AdobeDRMServiceGapTests 2 2 0 5ms
✅ AlertModelCoverageTests 6 6 0 30ms
✅ AlertModelRetryTests 7 7 0 25ms
✅ AlertModelTests 2 2 0 25ms
✅ AlertUtilsTests 20 20 0 1.02s
✅ AnnotationContractTests 3 3 0 29ms
✅ AnnotationDeviceIDTests 2 2 0 8ms
✅ AnnotationPostResponseContractTests 1 1 0 5ms
✅ AnnouncementChainTests 5 5 0 15ms
✅ AnnouncementTests 3 3 0 15ms
✅ AnonymousBorrowBaselineFixtureTests 13 13 0 77ms
✅ AnonymousBorrowCandidateFixtureTests 6 6 0 41ms
✅ AnonymousBorrowDeltaTests 2 2 0 31ms
✅ AppContainerAudiobookFactoryTests 3 3 0 7ms
✅ AppContainerAuthCoordinatorRegistrationTests 3 3 0 13ms
✅ AppContainerImageLoaderInjectionTests 4 4 0 60ms
✅ AppContainerIsolationLintTests 5 5 0 1.80s
✅ AppContainerResetTests 5 5 0 131ms
✅ AppContainerTests 4 4 0 11ms
✅ AppContainerWithSignInModalSheetPresenterTests 2 2 0 7ms
✅ AppHealthViewModelTests 8 8 0 1.36s
✅ AppLaunchTrackerExtendedTests 16 16 0 450ms
✅ AppLaunchTrackerTests 10 10 0 536ms
✅ AppRouteTests 5 5 0 32ms
✅ AppTabHostMiniPlayerIntegrationTests 6 6 0 582ms
✅ AppTabHostViewBadgeCountTests 10 10 0 120ms
✅ AppTabRouterCoverageTests 4 4 0 11ms
✅ AppTabRouterGapTests 3 3 0 19ms
✅ ArrayExtensionsTests 6 6 0 20ms
✅ AudioBookmarkGapTests 6 6 0 53ms
✅ AudioEngineWrapperTests 8 8 0 202ms
✅ AudioInterruptionLogicTests 6 6 0 91ms
✅ AudioSessionActivatorTests 8 8 0 66ms
✅ AudiobookAccessibilityTests 7 7 0 22ms
✅ AudiobookBackgroundAudioTests 2 2 0 45ms
✅ AudiobookBearerTokenRecoveryTests 21 21 0 218ms
✅ AudiobookBookmarkBusinessLogicConcurrencyTests 3 3 0 432ms
✅ AudiobookBookmarkBusinessLogicPositionWriteTests 8 8 0 860ms
✅ AudiobookBookmarkBusinessLogicTests 21 21 0 4.10s
✅ AudiobookChapterTOCNormalizationTests 6 6 0 78ms
✅ AudiobookColdLoadRecoveryTests 4 4 0 210ms
✅ AudiobookContentGateTests 11 11 0 785ms
✅ AudiobookCrossVendorSmokeTests 4 4 0 84ms
✅ AudiobookDataManagerEmptyQueueTests 1 1 0 8ms
✅ AudiobookDataManagerErrorHandlingTests 5 5 0 10.32s
✅ AudiobookDataManagerModelsTests 20 20 0 321ms
✅ AudiobookDataManagerNetworkSyncTests 5 5 0 5.13s
✅ AudiobookDataManagerSaveTests 4 4 0 32ms
✅ AudiobookDataManagerStoreRecoveryTests 5 5 0 2.06s
✅ AudiobookFileLoggerTests 14 14 0 410ms
✅ AudiobookFirstOpenHangTests 9 9 0 12.36s
✅ AudiobookFullPlayerCoverContainerTests 9 9 0 53ms
✅ AudiobookLoadFailureSAMLReauthTests 10 10 0 1.71s
✅ AudiobookLoaderDispatchTests 7 7 0 340ms
✅ AudiobookLoaderFinalizeBuildTests 9 9 0 367ms
✅ AudiobookLoaderOPDSShapeMatrixTests 8 0 0 583ms
✅ AudiobookLoaderPredicateTests 11 11 0 46ms
✅ AudiobookLoaderTests 2 2 0 405ms
✅ AudiobookMiniPlayerViewTests 13 13 0 663ms
✅ AudiobookNetworkValidationTests 3 3 0 19ms
✅ AudiobookOpenStateRaceTests 3 3 0 1.16s
✅ AudiobookPhoneAlertContentTests 3 3 0 21ms
✅ AudiobookPlaybackStateTests 3 3 0 71ms
✅ AudiobookPlaybackTests 26 26 0 467ms
✅ AudiobookPlaytimesLifecycleTests 6 6 0 1.12s
✅ AudiobookPositionAdapterContractTests 3 3 0 295ms
✅ AudiobookPositionPolicyValidatorTests 14 14 0 184ms
✅ AudiobookPositionRestoreTests 20 20 0 1.45s
✅ AudiobookSAMLReauthTests 6 6 0 298ms
✅ AudiobookSessionErrorDescriptionTests 4 4 0 35ms
✅ AudiobookSessionErrorExtTests 4 4 0 19ms
✅ AudiobookSessionErrorTests 2 2 0 33ms
✅ AudiobookSessionManagerErrorMappingTests 6 6 0 57ms
✅ AudiobookSessionManagerFlagGatePresentationTests 4 4 0 130ms
✅ AudiobookSessionManagerPresenterMigrationTests 8 8 0 166ms
✅ AudiobookSessionManagerShutdownTests 8 8 0 1.12s
✅ AudiobookSessionPresenterTests 16 16 0 817ms
✅ AudiobookSessionStateTests 6 6 0 21ms
✅ AudiobookSessionStateTransitionTests 18 18 0 967ms
✅ AudiobookSleepTimerIntegrationTests 5 5 0 1.01s
✅ AudiobookStorageLocationTests 3 3 0 64ms
✅ AudiobookTOCTests 18 18 0 365ms
✅ AudiobookTimeEntryTests 6 6 0 40ms
✅ AudiobookTimeTrackerEdgeTests 8 8 0 2.77s
✅ AudiobookTimeTrackerLifecycleTests 5 5 0 1.13s
✅ AudiobookTimeTrackerTests 9 9 0 325ms
✅ AudiobookTrackCompletionTests 2 2 0 44ms
✅ AudiobookTypeRoutingTests 5 5 0 36ms
✅ AudiobookVendorAdapterTests 5 5 0 45ms
✅ AudiobookVendorRecoveryContractTests 1 1 0 136ms
✅ AudiobookmarkTests 4 4 0 56ms
✅ AuthCoordinatorTelemetryTests 5 5 0 41ms
✅ AuthDecisionEventEmissionTests 7 7 0 50ms
✅ AuthDocumentContractTests 2 2 0 8ms
✅ AuthDocumentVariantsContractTests 5 5 0 29ms
✅ AuthErrorCategoryTests 12 12 0 66ms
✅ AuthErrorProblemDocSeamTests 6 6 0 60ms
✅ AuthFlowSecurityTests 3 0 0 43ms
✅ AuthReducerTests 21 21 0 329ms
✅ AuthTypeTests 7 7 0 60ms
✅ AuthenticationTests 16 16 0 126ms
✅ BackgroundDownloadHandlerTests 28 28 0 287ms
✅ BackgroundListenerTests 2 2 0 19ms
✅ BackupExclusionMigrationTests 3 3 0 22ms
✅ BadgeDefinitionTests 33 33 0 124ms
✅ BadgeServiceTests 16 16 0 488ms
✅ BadgesViewModelTests 14 14 0 166ms
✅ BasicAuthEmptyCredentialTests 4 4 0 158ms
✅ BearerTokenAdapterTests 5 4 0 74ms
✅ BearerTokenFulfillFlowTests 4 4 0 45ms
✅ BearerTokenRefreshTests 4 4 0 19ms
✅ BearerTokenResponseDetectionTests 7 7 0 57ms
✅ BeginningPositionPolicyTests 8 8 0 30ms
✅ BookAvailabilityFormatterTests 18 18 0 301ms
✅ BookButtonMapperHoldReadyTests 10 10 0 95ms
✅ BookButtonMapperTests 21 21 0 231ms
✅ BookButtonMapperViewModelTests 18 18 0 70ms
✅ BookButtonStateTests 8 8 0 35ms
✅ BookButtonTypeMetaTests 4 4 0 24ms
✅ BookButtonTypeTests 13 13 0 131ms
✅ BookCellModelActionTests 18 18 0 737ms
✅ BookCellModelCacheInvalidationTests 8 8 0 170ms
✅ BookCellModelCachePrefetchSafetyTests 9 9 0 11.67s
✅ BookCellModelCacheTests 22 22 0 28.85s
✅ BookCellModelComputedPropertyTests 19 19 0 519ms
✅ BookCellModelLCPProgressTests 7 7 0 486ms
✅ BookCellModelOfflineTests 9 9 0 1.10s
✅ BookCellModelRegistryBindingTests 4 4 0 364ms
✅ BookCellModelStateTests 16 16 0 18.48s
✅ BookCellModelStreamingHTMLTests 2 2 0 119ms
✅ BookCellStateComprehensiveTests 14 14 0 238ms
✅ BookContentResetServiceTests 2 2 0 20ms
✅ BookDetailLCPContentProgressTests 7 7 0 417ms
✅ BookDetailMetadataHydrationTests 6 6 0 179ms
✅ BookDetailViewModelTests 87 87 0 3.01s
✅ BookFileManagerTests 8 8 0 174ms
✅ BookListViewAccessibilityTests 9 9 0 60ms
✅ BookPreviewTests 4 4 0 139ms
✅ BookRegistryReconciliationTableTests 10 10 0 126ms
✅ BookRegistryStoreTests 26 26 0 752ms
✅ BookRegistrySyncReadinessTests 4 3 0 8.17s
✅ BookRegistrySyncReentrancyTests 4 4 0 260ms
✅ BookRegistrySyncTests 42 40 0 3.03s
✅ BookReturnCleverReauthTests 1 1 0 77ms
✅ BookReturnServiceAuthCoordinatorTests 3 3 0 3.05s
✅ BookReturnServiceContractTests 5 5 0 390ms
✅ BookReturnServiceTests 20 20 0 2.12s
✅ BookSignInRedirectHandlerTests 8 8 0 581ms
✅ BookStateIntegrationTests 8 8 0 65ms
✅ BookmarkBusinessLogicExtendedTests 6 6 0 834ms
✅ BookmarkDeletionLogTests 3 3 0 375ms
✅ BookmarkDeviceIdMatchingTests 3 3 0 415ms
✅ BookmarkExistenceTests 4 4 0 510ms
✅ BookmarkManagerTests 24 24 0 894ms
✅ BookmarkSortingTests 1 1 0 131ms
✅ BookmarkSyncTests 3 3 0 503ms
✅ BorrowAndDownloadIntegrationTests 7 7 0 436ms
✅ BorrowErrorMessageTests 13 13 0 91ms
✅ BorrowErrorPresenterTests 6 6 0 578ms
✅ BorrowOperationAuthCoordinatorTests 6 6 0 4.39s
✅ BorrowOperationCleverReauthTests 2 2 0 375ms
✅ BorrowOperationContractTests 6 6 0 863ms
✅ BorrowOperationStreamingHTMLTests 3 3 0 420ms
✅ BorrowOperationTests 13 13 0 1.88s
✅ BorrowOperationTimeoutTests 3 3 0 140ms
✅ BorrowReducerContractTests 2 2 0 40ms
✅ BorrowReducerTests 21 21 0 82ms
✅ BundledRegistrySnapshotTests 5 5 0 975ms
✅ ButtonStateTests 16 16 0 1.27s
✅ ButtonStyleTypeTests 2 2 0 10ms
✅ C64ConversionTests 6 6 0 23ms
✅ CarPlayAudiobookBridgePresenterMigrationTests 2 2 0 97ms
✅ CarPlayAuthHelperReadinessTests 3 3 0 397ms
✅ CarPlayChapterListTests 3 3 0 14ms
✅ CarPlayIntegrationTests 2 2 0 273ms
✅ CarPlayLibraryRefreshTests 3 3 0 16ms
✅ CarPlayNowPlayingTemplateTests 4 4 0 821ms
✅ CarPlayOpenAppAlertTests 6 6 0 171ms
✅ CarPlayPlaybackErrorTests 8 8 0 44ms
✅ CarPlayTests 12 12 0 112ms
✅ CarPlayTimeTrackingTests 3 3 0 304ms
✅ CatalogAPIDedupeTests 3 3 0 2.24s
✅ CatalogAPIEntryPointTests 1 1 0 4ms
✅ CatalogAccessibilityTests 8 8 0 37ms
✅ CatalogCacheKeyAndIsolationTests 12 12 0 461ms
✅ CatalogCacheMetadataExactBoundaryTests 4 4 0 12ms
✅ CatalogCacheMetadataTests 21 21 0 202ms
✅ CatalogFeedModelTests 4 4 0 46ms
✅ CatalogFilterGroupModelTests 17 17 0 363ms
✅ CatalogFilterModelTests 17 17 0 463ms
✅ CatalogFilterServiceTests 29 29 0 2.24s
✅ CatalogFilterTests 1 1 0 2ms
✅ CatalogLaneAssemblyTests 7 7 0 28ms
✅ CatalogLaneModelStructTests 18 18 0 514ms
✅ CatalogLaneModelTests 1 1 0 3ms
✅ CatalogLaneMoreFilterStateTests 8 8 0 856ms
✅ CatalogLaneMoreViewModelTests 43 43 0 54.39s
✅ CatalogLaneRowViewAccessibilityTests 11 11 0 80ms
✅ CatalogLaneSortingTests 5 5 0 146ms
✅ CatalogLoadIntegrationTests 6 6 0 123ms
✅ CatalogOPDS2NegotiationTests 12 12 0 263ms
✅ CatalogPreloaderTests 6 6 0 62ms
✅ CatalogProblemDocumentTests 6 6 0 1.12s
✅ CatalogRepositoryCoreTests 9 9 0 293ms
✅ CatalogRepositoryStaleWhileRevalidateTests 12 12 0 604ms
✅ CatalogRepositoryTests 19 19 0 859ms
✅ CatalogSearchViewModelRegistryUpdateTests 5 5 0 6.47s
✅ CatalogSearchViewModelTests 67 67 0 7.66s
✅ CatalogSelectorsTests 2 2 0 18ms
✅ CatalogSortServiceTests 14 14 0 132ms
✅ CatalogStateTests 7 7 0 50ms
✅ CatalogViewContinueRowsIntegrationTests 3 3 0 298ms
✅ CatalogViewModelStateMachineTests 10 10 0 186ms
✅ ChaosFaultInjectionTests 5 5 0 394ms
✅ ChapterChangeDetectorTests 5 5 0 24ms
✅ ChapterTOCNormalizerTests 7 7 0 44ms
✅ CirculationAnalyticsTests 4 4 0 33ms
✅ ColdStartResumeIntegrationTests 10 10 0 1.70s
✅ ColorExtensionTests 5 5 0 17ms
✅ ConcurrentBookStateTests 3 3 0 66ms
✅ ConcurrentDownloadStateTests 3 3 0 33ms
✅ ConcurrentTokenRefreshTests 2 2 0 235ms
✅ ContinueRowSectionTests 6 6 0 54ms
✅ ContinuousPlaybackTrackingTests 3 3 0 488ms
✅ CookiePersistenceTests 10 10 0 1.24s
✅ CrawlStateTests 16 16 0 97ms
✅ CrawlableFeedAnalysisTests 17 17 0 319ms
✅ CrawlerFallbackTests 12 12 0 216ms
✅ CredentialEdgeCaseTests 6 6 0 27ms
✅ CredentialPrivacyTests 4 4 0 66ms
✅ CredentialPromptCoordinatorTests 4 4 0 423ms
✅ CrossDeviceBookmarkSyncTests 12 12 0 55ms
✅ CrossDeviceSyncE2ETests 8 8 0 12.41s
✅ CrossDomain401Tests 8 8 0 30ms
✅ CrossFormatMappingTests 14 14 0 112ms
✅ DPLAErrorTests 3 3 0 9ms
✅ DRMAdversarialTests 4 1 0 63ms
✅ DRMFulfilledPublicationTests 6 6 0 314ms
✅ DataBase64Tests 3 3 0 65ms
✅ DataReceptionComparisonTests 2 2 0 49ms
✅ DateExtensionTests 9 9 0 61ms
✅ DateFormattingTests 4 4 0 33ms
✅ Date_NYPLAdditionsTests 7 7 0 676ms
✅ DebugSettingsTests 27 27 0 212ms
✅ DefaultCatalogAPITests 31 31 0 743ms
✅ DefaultRecentlyReadingServiceTests 12 12 0 96ms
✅ DeriveInitialStateTests 4 4 0 64ms
✅ DeveloperSettingsTierTests 4 4 0 23ms
✅ DeviceLogCollectorGapTests 2 2 0 27.94s
✅ DeviceLogCollectorTests 9 9 0 32.70s
✅ DeviceOrientationTests 7 7 0 42ms
✅ DeviceSpecificErrorMonitorTests 11 11 0 63ms
✅ DictionaryExtensionsTests 5 5 0 20ms
✅ DiskBudgetManagerTests 7 7 0 39ms
✅ DiskBudgetTests 2 2 0 1.40s
✅ DownloadAlertPresenterTests 8 8 0 285ms
✅ DownloadAnnouncementServiceTests 12 12 0 169ms
✅ DownloadAuthRetryHandlerAuthCoordinatorTests 6 6 0 3.53s
✅ DownloadAuthRetryHandlerTaskLifecycleTests 4 4 0 558ms
✅ DownloadAuthRetryHandlerTests 17 17 0 2.17s
✅ DownloadCancellationHandlerTests 7 7 0 374ms
✅ DownloadCompletionParserTests 9 9 0 340ms
✅ DownloadCoordinatorIntegrationTests 10 10 0 132ms
✅ DownloadCoordinatorTests 11 11 0 152ms
✅ DownloadDiskSpaceTests 2 2 0 9ms
✅ DownloadErrorInfoTests 3 3 0 12ms
✅ DownloadErrorRecoveryPolicyTests 11 11 0 164ms
✅ DownloadErrorRecoveryTests 3 3 0 26ms
✅ DownloadFreeSpaceExhaustionTests 11 11 0 235ms
✅ DownloadInfoTests 5 5 0 17ms
✅ DownloadIntegrityTests 10 10 0 467ms
✅ DownloadOnlyOnWiFiTests 10 10 0 139ms
✅ DownloadPersistenceStoreTests 5 5 0 76ms
✅ DownloadProgressPublisherTests 29 29 0 834ms
✅ DownloadQueueIntegrationTests 3 3 0 68ms
✅ DownloadQueueOrchestratorTests 9 9 0 892ms
✅ DownloadRMSDKHandoffTests 1 1 0 4ms
✅ DownloadRedirectTests 7 7 0 61ms
✅ DownloadResumeAfterKillTests 7 7 0 232ms
✅ DownloadSlotManagementTests 5 5 0 47ms
✅ DownloadStartCoordinatorContractTests 5 5 0 218ms
✅ DownloadStartCoordinatorTests 11 11 0 396ms
✅ DownloadStartDispatcherTests 26 26 0 576ms
✅ DownloadStateMachineIntegrationTests 15 15 0 555ms
✅ DownloadStateMachineTests 5 5 0 38ms
✅ DownloadStateManagerTests 16 16 0 412ms
✅ DownloadTaskLifecycleServiceTests 9 9 0 335ms
✅ DownloadThrottlingServiceTests 10 10 0 654ms
✅ DownloadWatchdogTests 3 3 0 16ms
✅ EPUBKeyCommandsPP4289Tests 4 4 0 36ms
✅ EPUBModuleTests 4 4 0 38ms
✅ EPUBPositionTests 10 10 0 174ms
✅ EPUBSearchViewModelTests 18 18 0 305ms
✅ EPUBToolbarToggleTests 11 11 0 271ms
✅ EmailAddressTests 16 16 0 92ms
✅ EpubSampleFactoryTests 5 5 0 40ms
✅ ErrorActivityTrackerTests 12 12 0 156ms
✅ ErrorDetailTests 12 12 0 183ms
✅ ErrorDetailViewControllerGapTests 3 3 0 584ms
✅ ErrorDetailViewControllerTests 14 14 0 282ms
✅ ErrorLogExporterTests 5 5 0 43ms
✅ ExpiredLoanStringsTests 5 5 0 15ms
✅ FacetEnumTests 3 3 0 1.15s
✅ FacetToolbarAccessibilityTests 5 5 0 208ms
✅ FacetViewModelLogoDelegateTests 4 4 0 166ms
✅ FacetViewModelTests 18 18 0 567ms
✅ FetchManifestWithBearerTokenLCPSafetyTests 1 1 0 25ms
✅ FetchManifestWithBearerTokenTests 9 9 0 343ms
✅ FetchOpenAccessManifestLCPSafetyTests 4 4 0 25ms
✅ FileURLGenerationTests 3 3 0 148ms
✅ FindawayChapterStatusGuardTests 1 1 0 4ms
✅ FindawaySavedVsPlayedTests 1 1 0 11ms
✅ FloatTPPAdditionsTests 5 5 0 25ms
✅ FocusIndicationTests 7 7 0 35ms
✅ FontManagerTests 17 17 0 203ms
✅ ForceResetTests 6 6 0 76ms
✅ GeneralCacheTests 20 20 0 3.31s
✅ GroupEnumTests 1 1 0 1.62s
✅ HTMLTextViewTests 70 70 0 29.75s
✅ HalfSheetProgressCueTests 11 11 0 49ms
✅ HoldNotificationClassificationTests 2 2 0 13ms
✅ HoldsBadgeCountTests 9 9 0 130ms
✅ HoldsBookViewModelTests 8 8 0 64ms
✅ HoldsReducerTests 11 11 0 96ms
✅ HoldsSyncFailureTests 12 12 0 276ms
✅ HoldsViewModelTests 23 23 0 1.30s
✅ ImageCacheContinuationTests 1 1 0 219ms
✅ ImageCacheTypeTests 1 1 0 8ms
✅ ImageLoaderTests 11 11 0 139ms
✅ IntExtensionsTests 4 4 0 803ms
✅ IsReaderActiveTrackingModifierTests 4 4 0 87ms
✅ KeyboardNavigationFKATests 11 11 0 385ms
✅ KeyboardNavigationHandlerTests 16 16 0 145ms
✅ KeyboardVoiceOverTests 5 5 0 89ms
✅ LCPAcquisitionPredicateTests 4 4 0 17ms
✅ LCPAdapterTests 8 8 0 282ms
✅ LCPAudiobookURLSchemeTests 4 4 0 16ms
✅ LCPAudiobooksTests 21 21 0 700ms
✅ LCPBotanCRLGuardTests 5 5 0 26ms
✅ LCPCharacterizationTests 31 31 0 627ms
✅ LCPClientTests 8 8 0 65ms
✅ LCPFulfillmentHandlerTests 15 15 0 980ms
✅ LCPKeychainMigrationTests 3 3 0 33ms
✅ LCPLibraryServiceTests 20 20 0 332ms
✅ LCPLicenseDocumentDetectionTests 5 5 0 270ms
✅ LCPLicenseFilePathTests 3 3 0 15ms
✅ LCPOrphanedDownloadRegistryTests 4 4 0 355ms
✅ LCPPDFAcquisitionPredicateTests 5 5 0 30ms
✅ LCPPDFDiskExtractTests 5 5 0 97ms
✅ LCPPDFOpenProgressTests 13 13 0 143ms
✅ LCPPassphraseReadinessTests 2 2 0 31ms
✅ LCPSessionIdentifierTests 3 3 0 29ms
✅ LegacySAMLProblemDocumentPropagationTests 7 7 0 947ms
✅ LibrariesSectionViewModelTests 11 11 0 553ms
✅ LibraryCatalogMergerTests 9 9 0 37ms
✅ LibraryRegistryCrawlerTests 14 14 0 383ms
✅ LicensesServiceTests 4 4 0 29ms
✅ LiveCrawlableParsingTest 4 0 0 30ms
✅ LocalBookContentServiceTests 23 23 0 471ms
✅ LocalFileAdapterTests 6 5 0 73ms
✅ LogTests 14 14 0 364ms
✅ LoginKeyboardTests 8 8 0 55ms
✅ MainActorHelpersTests 22 22 0 1.36s
✅ MappedCatalogBridgeTests 3 3 0 38ms
✅ MappedCatalogModelTests 11 11 0 1.05s
✅ MockBackendExpiredCredentialsTests 3 3 0 38ms
✅ MockBackendIntegrationTests 4 4 0 143ms
✅ MockBackendLoanLimitTests 2 2 0 74ms
✅ MockBackendRouteMatchingTests 4 4 0 53ms
✅ MockBackendServerDownTests 1 1 0 17ms
✅ MockIsolationLintTests 5 5 0 1.80s
✅ MultiLibraryTokenIsolationTests 14 14 0 981ms
✅ MyBooksDownloadCenterAccountIdThreadingTests 6 6 0 240ms
✅ MyBooksDownloadCenterAdeptGapTests 3 3 0 201ms
✅ MyBooksDownloadCenterConcurrencyTests 21 21 0 835ms
✅ MyBooksDownloadCenterEvictionTests 7 7 0 269ms
✅ MyBooksDownloadCenterOfflineTests 8 8 0 3.86s
✅ MyBooksDownloadCenterProgressPublishingTests 2 2 0 22ms
✅ MyBooksDownloadSessionInvalidationTests 3 3 0 29ms
✅ MyBooksSimplifiedBearerTokenTests 17 17 0 156ms
✅ MyBooksViewModelBooksPublisherTests 3 3 0 4.11s
✅ MyBooksViewModelConcurrencyTests 4 4 0 109ms
✅ MyBooksViewModelDownloadStateTests 3 3 0 49ms
✅ MyBooksViewModelEmptyArrayTests 3 3 0 12ms
✅ MyBooksViewModelEmptyStateTests 4 4 0 140ms
✅ MyBooksViewModelExtendedTests 15 15 0 18.64s
✅ MyBooksViewModelFacetIntegrationTests 4 4 0 37ms
✅ MyBooksViewModelFacetPublisherTests 3 3 0 24ms
✅ MyBooksViewModelFilterSortInteractionTests 2 2 0 30ms
✅ MyBooksViewModelFilterTests 9 9 0 796ms
✅ MyBooksViewModelGuardConditionsTests 2 2 0 175ms
✅ MyBooksViewModelLargeDatasetTests 2 2 0 514ms
✅ MyBooksViewModelLoadAccountTests 2 2 0 318ms
✅ MyBooksViewModelLoginStateTests 4 4 0 365ms
✅ MyBooksViewModelMultipleAuthorSortingTests 3 3 0 239ms
✅ MyBooksViewModelNotificationTests 4 4 0 379ms
✅ MyBooksViewModelOfflineFilteringTests 3 3 0 47ms
✅ MyBooksViewModelPublisherTests 7 7 0 5.01s
✅ MyBooksViewModelSearchEdgeCaseTests 6 6 0 73ms
✅ MyBooksViewModelSearchQueryTests 3 3 0 4.01s
✅ MyBooksViewModelSortPersistenceTests 3 3 0 3.70s
✅ MyBooksViewModelSortingIntegrationTests 5 5 0 144ms
✅ MyBooksViewModelSortingTests 6 6 0 67ms
✅ MyBooksViewModelStateTransitionTests 3 3 0 346ms
✅ MyBooksViewModelUIBindingTests 3 3 0 38ms
✅ NSErrorAdditionsTests 7 7 0 179ms
✅ NSNotificationTPPTests 3 3 0 21ms
✅ NavigationCoordinatorTests 17 17 0 75ms
✅ NavigationFreezePreventionTests 5 5 0 19ms
✅ NetworkExecutorCredentialGuardTests 8 8 0 677ms
✅ NetworkExecutorResponseRegressionTests 4 4 0 148ms
✅ NetworkExecutorTaskTypeTests 3 3 0 256ms
✅ NetworkOfflineDetectionTests 3 3 0 19ms
✅ NetworkQueueTests 11 11 0 17.81s
✅ NetworkRequestQueueTests 2 2 0 10.13s
✅ NetworkRetryLogicTests 7 7 0 69ms
✅ NetworkTimeoutTests 2 2 0 6ms
✅ NotificationEventTypeContractTests 7 7 0 31ms
✅ NotificationPayloadContractTests 10 10 0 51ms
✅ NotificationServiceStateMachineTests 9 9 0 2.19s
✅ NotificationServiceTests 16 16 0 607ms
✅ NotificationServiceTokenTests 13 13 0 70ms
✅ NotificationSyncThrottleTests 5 5 0 17ms
✅ NotificationTokenDataTests 4 4 0 30ms
✅ NotificationTokenRegistrationTests 10 10 0 29ms
✅ NowPlayingCoordinatorBackgroundTests 6 6 0 1.08s
✅ NowPlayingCoordinatorTests 19 19 0 977ms
✅ OAuthSAMLRedirectRegressionTests 4 4 0 642ms
✅ OIDCAuthDocumentParsingTests 4 4 0 394ms
✅ OIDCAuthTypeTests 5 5 0 24ms
✅ OIDCAuthenticationPropertyTests 8 8 0 1.07s
✅ OIDCCallbackEdgeCaseTests 9 9 0 1.29s
✅ OIDCCallbackHandlingTests 5 5 0 2.30s
✅ OIDCCallbackSchemeTests 3 3 0 67ms
✅ OIDCIsolationRegressionTests 6 6 0 863ms
✅ OIDCLoginRoutingTests 3 3 0 746ms
✅ OIDCMakeRequestTests 3 3 0 554ms
✅ OIDCNSCodingTests 1 1 0 319ms
✅ OIDCNetworkLayer401Tests 5 5 0 1.08s
✅ OIDCReauthOnExpiredTokenTests 5 5 0 879ms
✅ OIDCRedirectURIConstructionTests 6 6 0 760ms
✅ OIDCRegressionTests 9 9 0 1.33s
✅ OIDCSelectedAuthenticationTests 2 2 0 336ms
✅ OIDCSignOutRegressionTests 6 6 0 1.41s
✅ OIDCTokenRefreshRegressionTests 6 6 0 857ms
✅ OIDCUpdateUserAccountTests 5 5 0 610ms
✅ OIDCViewModelRegressionTests 1 1 0 125ms
✅ OIDCViewModelSignInTests 2 2 0 2.61s
✅ OPDS1BorrowEntryContractTests 4 4 0 33ms
✅ OPDS1CatalogGroupedContractTests 3 3 0 26ms
✅ OPDS1HoldEntriesContractTests 4 4 0 78ms
✅ OPDS1LoansFeedContractTests 6 6 0 109ms
✅ OPDS1ParsingTests 34 34 0 345ms
✅ OPDS1RevokeResponseContractTests 2 2 0 24ms
✅ OPDS2AuthenticationDocumentTests 18 18 0 423ms
✅ OPDS2AvailabilityTests 4 4 0 11ms
✅ OPDS2BookBridgeTests 44 44 0 223ms
✅ OPDS2BorrowResponseContractTests 3 3 0 13ms
✅ OPDS2CatalogWiringTests 21 21 0 15.11s
✅ OPDS2CatalogsFeedTests 3 3 0 539ms
✅ OPDS2ContributorTests 2 2 0 14ms
✅ OPDS2EmptyFeedContractTests 1 1 0 6ms
✅ OPDS2FeedContractTests 4 4 0 50ms
✅ OPDS2FeedParsingTests 11 11 0 619ms
✅ OPDS2FeedTests 13 13 0 295ms
✅ OPDS2FullMetadataTests 4 4 0 1.98s
✅ OPDS2FullPublicationTests 13 13 0 63ms
✅ OPDS2IntegrationTests 18 18 0 3.45s
✅ OPDS2LinkArrayTests 5 5 0 41ms
✅ OPDS2LinkComputedPropertyTests 20 20 0 220ms
✅ OPDS2LinkRelTests 1 1 0 2ms
✅ OPDS2LinkTests 2 2 0 271ms
✅ OPDS2ParsingTests 38 38 0 260ms
✅ OPDS2PublicationExtendedTests 53 53 0 3.92s
✅ OPDS2PublicationImageTests 6 6 0 23ms
✅ OPDS2PublicationNarratorTests 3 3 0 81ms
✅ OPDS2PublicationTests 2 2 0 309ms
✅ OPDS2SamlIDPTests 6 6 0 260ms
✅ OPDS2SearchResultsContractTests 3 3 0 28ms
✅ OPDS2SubjectTests 2 2 0 35ms
✅ OPDS2SupportingTypesTests 5 5 0 37ms
✅ OPDSAcquisitionPathExpandedTests 15 15 0 564ms
✅ OPDSFeedCacheTests 14 14 0 143ms
✅ OPDSFeedMigrationTests 11 11 0 37ms
✅ OPDSFeedParsingTests 2 2 0 239ms
✅ OPDSFeedServiceStateMachineTests 3 3 0 510ms
✅ OPDSFeedServiceTests 2 2 0 30ms
✅ OPDSFormatTests 13 13 0 887ms
✅ OPDSParserCoreTests 4 4 0 46ms
✅ OPDSParserTests 4 4 0 194ms
✅ OPDSParsingTests 57 57 0 2.93s
✅ OfflineActionTests 29 29 0 568ms
✅ OfflineQueueServiceExtendedTests 13 13 0 5.29s
✅ OfflineQueueServiceTests 17 17 0 7.01s
✅ OpenAccessAdapterTests 13 13 0 300ms
✅ OverdriveDeferredFulfillmentTests 6 6 0 44ms
✅ OverdriveDownloadHandlerTests 9 9 0 456ms
✅ OverdriveFulfillmentTests 14 13 0 278ms
✅ PDFExtensionsTests 20 20 0 106ms
✅ PDFReaderTests 12 12 0 67ms
✅ PP3596RegressionTests 3 3 0 94ms
❌ Palace 2 1 1 <1ms
✅ PalaceCheckPropertyTests 8 8 0 287ms
✅ PalaceErrorCategoryTests 20 20 0 188ms
✅ PalaceErrorExtendedTests 23 23 0 382ms
✅ PalaceErrorTests 11 11 0 397ms
✅ PalacePDFViewTests 12 12 0 161ms
✅ PalaceTestSetupObservationTests 4 4 0 56ms
✅ PalaceWiringTestCaseTests 4 4 0 25ms
✅ ParserFuzzTests 4 4 0 48.44s
✅ PatronProfileContractTests 4 4 0 21ms
✅ PerformanceMonitorTests 14 14 0 337ms
✅ PerformanceReportTests 14 14 0 121ms
✅ PersistentLoggerTests 9 9 0 3.14s
✅ PlaybackBootstrapperTests 8 8 0 199ms
✅ PlaybackFailureRecordTests 5 5 0 16ms
✅ PlaybackOpenPolicyTests 7 7 0 47ms
✅ PlaybackRateTests 16 16 0 508ms
✅ PlaybackTrackingRegressionTests 5 5 0 145ms
✅ PositionPersistenceLogicTests 6 6 0 35ms
✅ PositionPersistenceTests 2 2 0 15ms
✅ PositionSyncServiceTests 13 13 0 220ms
✅ PositionSyncTests 5 5 0 39ms
✅ PositionWriterContractTests 6 6 0 492ms
✅ PostUpdateMigrationTests 5 5 0 203ms
✅ ProblemDocumentContractTests 4 4 0 27ms
✅ ProblemDocumentLoanExpiryTests 5 5 0 19ms
✅ ProblemDocumentTests 12 12 0 99ms
✅ ProblemReportEmailTests 12 12 0 67ms
✅ ReachabilityTests 10 10 0 33ms
✅ Reader2BookmarkContractTests 3 3 0 37ms
✅ Reader2PositionAdapterContractTests 4 3 0 241ms
✅ Reader2PositionResumeContractTests 3 3 0 150ms
✅ ReaderAccessibilityTests 7 7 0 47ms
✅ ReaderEditingActionsTests 5 5 0 21ms
✅ ReaderErrorTests 5 5 0 53ms
✅ ReaderNavBarVoiceOverTests 2 2 0 15ms
✅ ReaderServiceSyncTests 3 3 0 20ms
✅ ReaderThemeTests 24 24 0 2.65s
✅ ReadingPositionTests 22 22 0 3.69s
✅ ReadingSessionTrackerTests 13 13 0 227ms
✅ ReadingStatsServiceTests 12 12 0 169ms
✅ ReadingStatsStoreTests 9 9 0 177ms
✅ RedirectHandlingIntegrationTests 4 4 0 26ms
✅ RedirectPolicyTests 9 9 0 203ms
✅ RegistryFileRecoveryTests 30 30 0 438ms
✅ RemoteFeatureFlagsGapTests 4 4 0 100ms
✅ RemoteFeatureFlagsTests 11 11 0 290ms
✅ ResourcePropertiesLengthTests 3 3 0 10ms
✅ RetryClassificationTests 17 17 0 192ms
✅ ReturnFlowTests 1 1 0 15ms
✅ RightsManagementDetectionTests 5 5 0 23ms
✅ RightsManagementDispatcherTests 10 10 0 169ms
✅ RuntimeQuiescenceGateTests 8 8 0 4.09s
✅ RuntimeQuiescenceLintTests 5 5 0 1.60s
✅ SAMLCookieSyncTests 5 5 0 30ms
✅ SAMLLogoutCallbackDetectionTests 4 4 0 15ms
✅ SAMLLogoutLinkParsingTests 5 5 0 514ms
✅ SAMLLogoutURLTests 4 4 0 37ms
✅ SAMLPlusBiblioBoardExpirationTests 8 8 0 935ms
✅ SEMigrationsTests 6 6 0 211ms
✅ SafeDictionaryTests 21 21 0 213ms
✅ SamplePlayerErrorTests 5 5 0 17ms
✅ SampleTypeTests 8 8 0 83ms
✅ SceneDelegateTests 1 1 0 5ms
✅ ScopedResetTests 9 9 0 157ms
✅ SearchAccessibilityTests 6 6 0 17ms
✅ SearchFlowIntegrationTests 8 8 0 165ms
✅ SettingsViewModelComputedPropertyTests 6 6 0 39ms
✅ SettingsViewModelEdgeCaseTests 7 7 0 141ms
✅ SettingsViewModelGapTests 1 1 0 6ms
✅ SettingsViewModelSyncTests 14 14 0 275ms
✅ SettingsViewModelTests 33 33 0 1.81s
✅ SignInModalLifecycleTests 9 9 0 122ms
✅ SignInModalPredicateTests 3 3 0 50ms
✅ SignInModalSAMLOIDCTests 6 6 0 31ms
✅ SignInOAuthErrorPropagationTests 8 8 0 1.43s
✅ SignInToReadFlowIntegrationTests 5 5 0 865ms
✅ SignInWebSheetIntegrationTests 3 3 0 5.25s
✅ SignInWebSheetViewModelTests 31 31 0 248ms
✅ SignOutCacheClearingTests 3 3 0 51ms
✅ SingletonResetRegistryTests 5 5 0 128ms
✅ StatsViewModelTests 10 10 0 545ms
✅ StatusAnnouncementTests 22 22 0 738ms
✅ StopPositionSaveTests 2 2 0 8ms
✅ StoreTests 5 5 0 95ms
✅ StreamingReaderPresentationContractTests 1 1 0 99ms
✅ StreamingReaderProgressStoreTests 7 7 0 198ms
✅ StreamingReaderViewControllerScrollRestoreTests 12 12 0 1.61s
✅ StreamingReaderViewModelTests 9 9 0 771ms
✅ StringExtensionTests 8 8 0 43ms
✅ StringExtensionsTests 3 3 0 85ms
✅ StringHTMLEntitiesTests 7 7 0 81ms
✅ StringNYPLAdditionsTests 4 4 0 20ms
✅ String_NYPLAdditionsTests 4 4 0 10ms
✅ SupportSectionDecisionTests 5 5 0 23ms
✅ SyncConflictResolutionTests 3 3 0 9ms
✅ SyncDeletionGuardTests 5 5 0 35ms
✅ SyncDeletionRatioTests 6 6 0 63ms
✅ SyncPermissionTests 5 5 0 275ms
✅ TPPAccountAuthStateEnumTests 5 5 0 66ms
✅ TPPAccountListDataSourceTests 3 3 0 38ms
✅ TPPAdobeActivationSkipTests 6 6 0 749ms
✅ TPPAgeCheckCompletionTests 5 5 0 777ms
✅ TPPAgeCheckIsValidTests 5 5 0 30ms
✅ TPPAgeCheckStateMachineTests 4 4 0 751ms
✅ TPPAgeCheckTests 6 6 0 1.72s
✅ TPPAgeCheckVerifyDecisionTests 5 5 0 539ms
✅ TPPAlertUtilsTests 45 45 0 1.42s
✅ TPPAnnotationsHermeticTests 15 15 0 185ms
✅ TPPAnnotationsOverrideTests 4 4 0 350ms
✅ TPPAnnotationsTests 29 29 0 4.06s
✅ TPPAnnouncementManagerTests 3 3 0 30ms
✅ TPPAuthDocumentContractTests 3 3 0 35ms
✅ TPPBackgroundExecutorTests 3 3 0 71ms
✅ TPPBadgeImageGapTests 2 2 0 71ms
✅ TPPBaseReaderViewControllerInitialLocationTests 10 10 0 1.48s
✅ TPPBasicAuthTests 11 11 0 106ms
✅ TPPBookAccessibilityLabelTests 8 8 0 107ms
✅ TPPBookAuthorCoverageTests 3 3 0 12ms
✅ TPPBookAuthorTests 6 6 0 63ms
✅ TPPBookBearerTokenTests 9 8 0 165ms
✅ TPPBookButtonsStateTests 7 7 0 36ms
✅ TPPBookContentMetadataFilesHelperTests 9 9 0 249ms
✅ TPPBookContentTypeConverterStreamingHTMLTests 2 2 0 18ms
✅ TPPBookContentTypeConverterTests 4 4 0 41ms
✅ TPPBookContentTypeExtendedTests 4 4 0 20ms
✅ TPPBookContentTypeTests 14 14 0 278ms
✅ TPPBookCoverRegistryTests 14 14 0 728ms
✅ TPPBookCreationTests 7 7 0 99ms
✅ TPPBookExtensionsTests 21 21 0 615ms
✅ TPPBookIsDRMProtectedTests 9 9 0 71ms
✅ TPPBookLocationCoverageTests 7 7 0 25ms
✅ TPPBookLocationEdgeCaseTests 27 27 0 157ms
✅ TPPBookLocationKeyTests 3 3 0 12ms
✅ TPPBookLocationTests 11 11 0 56ms
✅ TPPBookModelGapTests 4 4 0 150ms
✅ TPPBookRegistryAsyncReadinessTests 3 3 0 534ms
✅ TPPBookRegistryAtomicWriteTests 7 7 0 1.01s
✅ TPPBookRegistryBookRetrievalTests 7 7 0 500ms
✅ TPPBookRegistryBookmarkTests 7 7 0 135ms
✅ TPPBookRegistryCorruptedDataTests 5 5 0 43ms
✅ TPPBookRegistryDataTests 4 4 0 12ms
✅ TPPBookRegistryDependencyTests 4 4 0 33ms
✅ TPPBookRegistryFulfillmentIdTests 4 4 0 41ms
✅ TPPBookRegistryLargeCorpusTests 5 5 0 2m 21s
✅ TPPBookRegistryLoadReentrancyTests 2 2 0 138ms
✅ TPPBookRegistryLocationTests 4 4 0 128ms
✅ TPPBookRegistryMigrationTests 16 16 0 1.87s
✅ TPPBookRegistryPersistenceTests 10 10 0 2.62s
✅ TPPBookRegistryProcessingTests 2 2 0 35ms
✅ TPPBookRegistryPublisherTests 6 6 0 7.25s
✅ TPPBookRegistryRecordPersistenceTests 3 3 0 60ms
✅ TPPBookRegistryRecordTests 10 10 0 57ms
✅ TPPBookRegistryStateManagementTests 11 11 0 323ms
✅ TPPBookRegistryThreadSafetyTests 3 3 0 4.13s
✅ TPPBookRegistryUpdateAndRemoveTests 1 1 0 1.16s
✅ TPPBookRequiresAdobeDRMTests 6 6 0 306ms
✅ TPPBookSerializationTests 13 13 0 91ms
✅ TPPBookStateInitializationTests 4 4 0 173ms
✅ TPPBookStateTests 4 4 0 18ms
✅ TPPBookTests 98 98 0 552ms
✅ TPPBookmarkDeletionLogTests 11 11 0 148ms
✅ TPPBookmarkFactoryInitTests 2 2 0 11ms
✅ TPPBookmarkFactoryServerAnnotationEdgeCaseTests 5 5 0 38ms
✅ TPPBookmarkFactoryTests 15 15 0 104ms
✅ TPPBookmarkR3ConversionTests 5 5 0 26ms
✅ TPPBookmarkR3LocationTests 13 13 0 250ms
✅ TPPBookmarkSpecTests 1 1 0 10ms
✅ TPPCachingTests 3 3 0 19ms
✅ TPPCapturedCredentialsTests 5 5 0 1.41s
✅ TPPConfigurationTests 22 22 0 108ms
✅ TPPContentTypeTests 9 9 0 39ms
✅ TPPCredentialConcurrencyTests 3 3 0 21ms
✅ TPPCredentialIsolationE2ETests 5 0 0 169ms
✅ TPPCredentialPersistenceTests 6 6 0 837ms
✅ TPPCredentialSnapshotCoherenceTests 3 0 0 113ms
✅ TPPCredentialSnapshotTests 8 8 0 32ms
✅ TPPCredentialsCoverageTests 9 9 0 112ms
✅ TPPCredentialsTests 26 26 0 296ms
✅ TPPCrossLibrarySignOutTests 6 6 0 909ms
✅ TPPDRMFailureCredentialPreservationTests 4 4 0 659ms
✅ TPPErrorLoggerTests 27 27 0 426ms
✅ TPPIdleSignOutRegressionTests 13 13 0 4.07s
✅ TPPJWKConversionTest 1 1 0 37ms
✅ TPPKeychainManagerTests 5 5 0 219ms
✅ TPPLastReadPositionPosterTests 13 13 0 437ms
✅ TPPLastReadPositionSynchronizerIntegrationTests 5 5 0 46ms
✅ TPPLastReadPositionSynchronizerTests 23 23 0 242ms
✅ TPPLastReadPositionSynchronizer_BehaviorDocumentationTests 5 5 0 17ms
✅ TPPLastReadPositionSynchronizer_BookLocationTests 9 9 0 84ms
✅ TPPLastReadPositionSynchronizer_ConcurrencyTests 3 3 0 22ms
✅ TPPLastReadPositionSynchronizer_ReadiumBookmarkTests 9 9 0 40ms
✅ TPPLastReadPositionSynchronizer_SyncLogicTests 10 10 0 43ms
✅ TPPLastReadPositionSynchronizer_WriterDelegationTests 4 4 0 46ms
✅ TPPLoginNoActivationTests 3 3 0 576ms
✅ TPPMainThreadCheckerTests 4 4 0 71ms
✅ TPPMigrationManagerTests 15 15 0 345ms
✅ TPPNetworkExecutorAPITests 14 14 0 845ms
✅ TPPNetworkExecutorStubbedTests 17 17 0 391ms
✅ TPPNetworkExecutorTests 3 3 0 51ms
✅ TPPNetworkResponderAuthCoordinatorTests 5 5 0 2.81s
✅ TPPNetworkResponderTests 12 12 0 61ms
✅ TPPOPDSAcquisitionPathTests 5 5 0 74ms
✅ TPPOPDSEntryTests 5 5 0 27ms
✅ TPPOPDSFeedTests 3 3 0 335ms
✅ TPPOPDSGroupSwiftTests 3 3 0 10ms
✅ TPPOPDSLinkTests 7 7 0 303ms
✅ TPPOpenSearchDescriptionExpandedTests 10 10 0 524ms
✅ TPPOpenSearchDescriptionTests 1 1 0 36ms
✅ TPPPDFDocumentMetadataTests 15 15 0 206ms
✅ TPPPDFDocumentTests 8 8 0 37ms
✅ TPPPDFLocationCoverageTests 7 7 0 22ms
✅ TPPPDFLocationTests 10 10 0 734ms
✅ TPPPDFPageBookmarkTests 9 9 0 42ms
✅ TPPPDFPageTests 5 5 0 27ms
✅ TPPPDFReaderModeTests 6 6 0 25ms
✅ TPPPerAccountIsolationTests 8 0 0 197ms
✅ TPPPreferredAuthSelectionTests 8 8 0 1.43s
✅ TPPProblemDocumentCacheManagerTests 12 12 0 55ms
✅ TPPProblemDocumentTests 21 21 0 662ms
✅ TPPReaderAppearanceTests 4 4 0 32ms
✅ TPPReaderBookmarksBusinessLogicTests 12 12 0 1.49s
✅ TPPReaderBookmarksReadinessTests 2 2 0 419ms
✅ TPPReaderFontTests 4 4 0 35ms
✅ TPPReaderPreferencesLoadTests 3 3 0 26ms
✅ TPPReaderSettingsTests 28 28 0 160ms
✅ TPPReaderTOCBusinessLogicTests 15 15 0 3.13s
✅ TPPReaderTOCFlattenTests 2 2 0 1.21s
✅ TPPReadiumBookmarkLocationMatchingTests 5 5 0 157ms
✅ TPPReadiumBookmarkTests 21 21 0 233ms
✅ TPPReauthenticatorMockTests 2 2 0 24ms
✅ TPPReauthenticatorTests 4 4 0 18ms
✅ TPPReturnPromptHelperTests 5 5 0 85ms
✅ TPPSAMLCookieExpirationTests 7 7 0 43ms
✅ TPPSAMLFlowTests 10 10 0 189ms
✅ TPPSAMLReauthFlowTests 2 2 0 292ms
✅ TPPSAMLRegressionTests 4 4 0 401ms
✅ TPPSAMLSignInTests 26 26 0 3.94s
✅ TPPSAMLStateIsolationTests 4 4 0 306ms
✅ TPPSAMLStateMachineTests 6 6 0 743ms
✅ TPPSettingsTests 6 6 0 7.40s
✅ TPPSignInAdobeSkipTests 14 14 0 1.96s
✅ TPPSignInAuthStateTransitionTests 3 3 0 572ms
✅ TPPSignInBusinessLogicExtendedTests 58 58 0 9.96s
✅ TPPSignInBusinessLogicOAuthTests 11 11 0 1.46s
✅ TPPSignInBusinessLogicSignOutTests 11 11 0 2.78s
✅ TPPSignInBusinessLogicStateMachineTests 10 10 0 1.95s
✅ TPPSignInBusinessLogicTests 21 21 0 3.86s
✅ TPPSignInBusinessLogicTokenFlowTests 3 3 0 416ms
✅ TPPSignInBusinessLogicValidationCallbackOrderTests 2 2 0 641ms
✅ TPPSignInErrorHandlingTests 2 2 0 314ms
✅ TPPSignInProfileDocEdgeCaseTests 3 3 0 485ms
✅ TPPSignedInStateProviderTests 3 3 0 95ms
✅ TPPUserAccountAuthStateTests 6 6 0 81ms
✅ TPPUserAccountGapTests 4 4 0 24ms
✅ TPPUserAccountIsolationLintTests 3 3 0 1.55s
✅ TPPUserAccountTestFactoryTests 7 0 0 89ms
✅ TPPUserFriendlyErrorTests 11 11 0 198ms
✅ TPPUserNotificationsTests 10 10 0 306ms
✅ TPPXMLSwiftTests 16 16 0 397ms
✅ TPPXMLTests 3 3 0 12ms
✅ TearDownRequiredLintTests 5 5 0 2.36s
✅ TestAppContainerFactoryTests 5 5 0 107ms
✅ TimeEntryTests 3 3 0 9ms
✅ TokenRefreshAndRetryQueueTests 9 9 0 5.47s
✅ TokenRefreshIntegrationTests 2 2 0 130ms
✅ TokenRefreshInterceptorAuthCoordinatorTests 8 8 0 4.34s
✅ TokenRefreshInterceptorTests 24 24 0 6.72s
❌ TokenRefreshOnForegroundTests 12 11 1 48.98s
✅ TokenRefreshTests 25 25 0 885ms
✅ TokenRequestCredentialGuardTests 13 13 0 141ms
✅ TokenRequestTests 11 11 0 177ms
✅ TokenResponseTests 21 21 0 92ms
✅ TriageBotKeyAdminTests 4 4 0 18ms
✅ TypographyPresetTests 21 21 0 228ms
✅ TypographyServiceTests 31 31 0 1.56s
✅ TypographySettingsViewModelTests 27 27 0 696ms
✅ UIAlertCACommitGuardTests 8 8 0 261ms
✅ UIColor_NYPLAdditionsTests 1 1 0 6ms
✅ URLBackupExclusionTests 3 3 0 44ms
✅ URLExtensionTests 16 16 0 151ms
✅ URLExtensionsTests 6 6 0 20ms
✅ URLRequestExtensionsCoverageTests 3 3 0 8ms
✅ URLRequestExtensionsTests 11 11 0 178ms
✅ URLRequestNYPLAdditionsTests 11 11 0 203ms
✅ URLRequest_NYPLTests 1 1 0 7ms
✅ URLResponseAuthenticationTests 10 10 0 41ms
✅ URLResponseNYPLTests 14 14 0 145ms
✅ URLSessionCredentialStorageTests 3 3 0 15ms
✅ URLSessionStubbingResetTests 2 2 0 36ms
✅ URLTypeTests 2 2 0 9ms
✅ URLValidationTests 5 5 0 36ms
✅ UnifiedOPDSServiceStateMachineTests 2 2 0 405ms
✅ UserAccountPublisherAuthStateTests 5 5 0 38ms
✅ UserAccountPublisherTests 14 14 0 504ms
✅ UserAccountValidationTests 11 11 0 1.83s
✅ UserDefaultsIsolationLintTests 2 2 0 806ms
✅ UserProfileDocumentTests 7 7 0 38ms
✅ UserRetryTrackerTests 10 10 0 57ms
✅ XCTestCase_testUserDefaultsTests 3 3 0 46ms
✅ iPadOnMacRMSDKGuardTests 7 7 0 37ms
Failed Tests (click to expand)
Palace.PalaceTests
TokenRefreshOnForegroundTests.First Run
AccountsManagerTests.testUseBetaDidChange_PostsNotificationWhenSettingChanges

📊 Testing Coverage Breakdown

Unit Test Line Coverage (testable surfaces): 49.1%

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

Target Lines Covered
Palace.app 47.2%

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

Copy link
Copy Markdown
Contributor Author

Superseded by #1455, which carries this exact commit — 8044e27a8, the same SHA, not a re-implementation — plus the PP-4957 LCP audiobook streaming back-port.

Retargeted from 3.2.3 to 3.2.4 because the hotfix grew to two fixes, and build 493 turned out not to be free (Palace-3.3.0.493.zip had already shipped); #1455 is build 500.

Nothing is lost by closing this: the PP-5078 fix, its producer test, and the mutation verification all live in #1455 unchanged. This branch's build-and-test failure is also moot — it predates the toolkit narrowing that fixed six real suite failures.

Closing to keep one hotfix in flight rather than two against main.

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