Skip to content

forward-port the 3.3.1 hotfix into develop - #1585

Merged
mauricecarrier7 merged 2 commits into
developfrom
forward-port/3.3.1-to-develop
Oct 5, 2026
Merged

mauricecarrier7 merged 2 commits into
developfrom
forward-port/3.3.1-to-develop

Conversation

@mauricecarrier7

Copy link
Copy Markdown
Contributor

Merge this with a merge commit — never squash. The two parents are the point.

What

Forward-ports origin/main (3.3.1, build 512) into develop. Develop had zero
occurrences of the PP-5299 audiobook token-refresh isolation fix, so 3.4.0 would
have reshipped the crash.

Why not squash

Squashing collapses the merge and discards main's original SHAs, so when the next
release branch merges into main git treats those commits as unrelated history —
the failure that produced 296 conflicts on release/3.1.0 → main. See "Release &
hotfix merge policy" in CLAUDE.md. Squash stays fine for ordinary feature PRs
into develop; this is the exception.

Conflict resolutions

  • project.pbxproj: build number takes 512, not develop's 510. These are one
    global sequence, so keeping 510 would let the next bump reuse a shipped number.
    MARKETING_VERSION stays 3.4.0.
  • AudiobookLoader.swift: took main's hunk — the non-private
    TokenReadyCompletionBox is part of the fix, since a test constructs it.
  • Release waiver: follows develop's rename to config/ci/release-waivers/,
    matching the sibling 3.3.1 waiver already there.

Also corrects the E3-Token-Expiry row, which told testers to advance the
Simulator clock — there is no such control.

How verified

AudiobookLoaderDispatchTests, TokenRefreshAndRetryQueueTests,
TokenRefreshTests: 45 executed, 0 failures, zero restarts. A scoped
spot-check, not the full suite — CI covers that.

mauricecarrier7 and others added 2 commits October 2, 2026 11:45
…in actor (#1580)

* deliver the audiobook token refresh outcome on the main actor (PP-5299)

AudiobookLoader is @mainactor, so resolveSource checks isolation on entry.
Since 3.3.0 TPPNetworkExecutor.refreshTokenAndResume delivers its callback
from its own Task, and refreshTokenIfNeeded continues from there into
resolveSource, which traps (Crashlytics 90c78a67e737857b30512e157c75a045).

All four exits now reach the main actor: the two direct callbacks hop through
a carrier holding the completion and outcome, neither being Sendable, and
TokenReadyCompletionBox.fire is @mainactor so no awaitTokenReady path can
deliver off-main. The matrix gains an E3-Token-Expiry row for the token-auth
and lapsed-token intersection no audiobook row covered.

Scope: the awaitTokenReady exits carry a test; the direct callbacks need a seam.
Not done: TPPNetworkExecutor's own delivery executor is unchanged.

* chore(release): bump to build 512 for the PP-5299 audiobook fix

3.3.1 was cut on 2026-09-25 for PP-5240 and never submitted, so this rebuilds
the same marketing version rather than burning a new one. Build 512 is the next
number in the single global sequence; 511 is the highest on main.

The waiver carries forward the nine fixes held for 3.4.0 on 2026-09-25, plus
three test-only commits that reached develop afterwards.

Not done: 9a4b48a (#1571, PP-5293/PP-5294) is left unwaived on purpose — it
touches production and is patron-facing, so holding it is a release decision.

* pin the audiobook token refresh delivery with real tests (PP-5299)

Correct the mechanism this branch recorded. The executor has delivered the
refresh callback from inside its own Task since at least 3.2.4; the delivery did
not move. What changed in 3.3.0 is the language mode (876f763: SWIFT_VERSION
5.0 to 6.0, SWIFT_STRICT_CONCURRENCY complete), which promotes the dynamic
isolation check from a warning to an assert, so a silent race became a trap.

RefreshOutcomeDelivery is internal so a test can construct it off-main and assert
both the thread and the outcome. awaitTokenReady's two branches are pinned by
keychain state rather than inherited from whatever a prior suite left, and each
asserts the delivered Bool. TokenRefreshAndRetryQueueTests characterizes the
off-main delivery the hop exists for, so moving it later goes red deliberately.

Scope: four of six hand-derived mutants now fail a named test, up from one;
palace_mutate derives no points on these lines, so those are illustration.
Not done: reverting either call site to a direct completion still survives, which
needs an injection seam on the loader.

* drop the token refresh tests that mutate the shared account (PP-5299)

Three of the four tests added here could only choose a branch by writing
credentials into the process-wide account, which left an expired token behind
for later suites and made a single-flight guard elsewhere count two
transitions instead of one.

The carrier test remains. It needs no singleton and still fails when
deliverOnMain's body is emptied or its hop removed.

Also waives 9a4b48a for 3.4.0: only the targeted fix ships on this line.

Not done: the fire(true)/fire(false) swap and the executor's off-main delivery
are unpinned, pending an injection seam on the loader.

* pin the poll carrier's hop, restore the delivery test (PP-5299)

Nothing pinned @mainactor on TokenReadyCompletionBox.fire once the earlier
tests were removed, and dropping that attribute leaves await as a warning, so
it compiles silently. The box is now internal with a test that constructs it
off-main and asserts both the thread and the value.

Restores the delivery characterization removed in 28c7290. That reason was
wrong: the suite builds its executor through the full-DI initializer against
account mocks whose token storage is in-memory, so it never touched the
process-wide account.

Not done: the two call sites and the fire(true)/fire(false) values stay
unpinned, pending an injection seam on the loader.

* join the delivery hop in tests instead of racing a deadline (PP-5299)

STARVE-001 flagged three new fixed-deadline waits. Two are now gone rather
than annotated: deliverOnMain returns its hop so a test can await it, and the
poll carrier's fire is already awaited, so neither test needs an expectation.
A small reference-type record proves the completion ran.

The third, on the executor refresh, is annotated: it waits on a stubbed HTTP
round trip that answers synchronously, which is the bounded case the rule's
own hatch is for, and it matches the sibling refresh tests in that file.

Scope: deliverOnMain gains @discardableResult and returns Task<Void, Never>;
production call sites are unchanged.

* name the carrier mutation precisely, and why the wait stays (PP-5299)

The doc comments pointed at emptying deliverOnMain's body, which no longer
compiles now that it returns the hop. The mutation they mean is emptying the
hop's closure.

The STARVE-001-OK reason claimed a synchronous stub bounds the wait. The rule
guards against starvation under parallel clones, so the real reason is that
refreshTokenAndResume exposes no join seam.

Comment and annotation text only.
3.3.1 (build 512) carried the audiobook token-refresh isolation fix, which
existed only on the release line; develop had none of it, so 3.4.0 would
have reshipped the crash.

Conflicts: the build number takes 512, since these are one sequence and
develop's 510 would let the next bump reuse a shipped number; the
token-ready carrier takes the release line's version, which is the fix; the
release waiver follows develop's rename of its directory. Marketing version
stays 3.4.0. Also corrects the token-expiry row, which told a tester to
advance the Simulator clock — there is no such control there.

Scope: the forward-port and that one doc row.
@mauricecarrier7 mauricecarrier7 added hold merge Not ready to merge merge commit only Merge with a merge commit, never squash — squashing discards SHAs main must reconcile labels Oct 2, 2026
@mauricecarrier7 mauricecarrier7 self-assigned this Oct 2, 2026
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

🏗️ Architecture and Accessibility

Nothing to act on. No major accessibility issues and no new architecture findings.

All figures below are whole-repo, measured at this PR's head commit — not a diff against the base. A number that looks alarming is usually the repo's standing baseline, not something this branch did.


♿ Accessibility

🟡 20 issues, none blocking. Worth fixing, safe to merge.

Severity Count What it means for a patron
🟡 Minor 19 Usable, but harder work than it should be
🔵 Info 1 Polish — no patron is blocked
Total 20

Top Issues:

  • 🟡 Touch target too small - AudiobookMorphingPlayerView.swift:1374
  • 🟡 Animation without reduce motion check - PalaceSeekSliderView.swift:111
  • 🟡 Animation without reduce motion check - PalaceSeekSliderView.swift:116
  • 🟡 Touch target too small - PlaybackSpeedSheet.swift:91
  • 🟡 Animation without reduce motion check - PlaybackSpeedSheet.swift:119
📋 View All Accessibility Issues
Severity Issue Location Rule
🟡 minor Touch target too small AudiobookMorphingPlayerView.swift:1374 -
🟡 minor Animation without reduce motion check PalaceSeekSliderView.swift:111 -
🟡 minor Animation without reduce motion check PalaceSeekSliderView.swift:116 -
🟡 minor Touch target too small PlaybackSpeedSheet.swift:91 -
🟡 minor Animation without reduce motion check PlaybackSpeedSheet.swift:119 -
🟡 minor Animation without reduce motion check PlaybackSpeedSheet.swift:141 -
🟡 minor Animation without reduce motion check PlaybackSpeedSheet.swift:146 -
🟡 minor ViewController missing title TPPProblemReportViewController.swift:10 -
🟡 minor ViewController missing title ErrorDetailViewController.swift:13 -
🟡 minor ViewController missing title LogPreviewViewController.swift:13 -
🟡 minor Animation without reduce motion check ReadiumPDFLoadingView.swift:75 -
🟡 minor Animation without reduce motion check PDFThumbnailStrip.swift:64 -
🟡 minor Animation without reduce motion check PDFThumbnailStrip.swift:96 -
🟡 minor Animation without reduce motion check AccessibilitySettingsView.swift:174 -
🟡 minor Touch target too small ThemePickerView.swift:56 -
🟡 minor ViewController missing title TPPBaseReaderViewController.swift:46 -
🟡 minor Touch target too small DeveloperSettingsRows.swift:235 -
🟡 minor Touch target too small DeveloperSettingsRows.swift:292 -
🟡 minor Navigation container missing title CriticalScreensVoiceOverAuditTests.swift:86 -
🔵 info Complex action may need hint OfflineQueueDetailView.swift:140 -

🏛️ Architecture

Largest dependency tangle: 14 components — 1 distinct cycle.

This is the number to watch during the modularisation: it should fall as packages come out. Extracting a leaf without cutting a cycle leaves it unchanged.

All architecture metrics
Metric Value What it means
Components 46 Modules and layers the analyser indexed
Dependency cycles 1 Distinct circular dependencies (A→B→C→A)
Largest cycle 14 components Components mutually tangled in the biggest one
Layer violations 1 Dependencies crossing an architectural boundary
Hotspots 15 Components with more than 5 dependents
Avg coupling 5.43 Dependency edges ÷ components

Two of these read the opposite way to how they sound:

  • Avg coupling rises when you extract a package. Edges that were invisible inside the monolith become counted edges between named components. Same code, same real coupling, higher number. It is not a decomposition scoreboard.
  • Hotspots counts dependents, not complexity. A widely-used package adds one the moment it is extracted.

ℹ️ These are whole-repo figures measured at this PR's head commit, not a diff against the base. Ledger has no per-PR delta: its --diff path is a stub and is not invoked. Compare against another PR's numbers to see movement.

⚠️ 1 layer violation(s) — see Architecture Findings below for the offending dependency edge(s).

🔄 Dependency Cycles (1)

1 distinct dependency cycle (largest spans 14 components).

The analyzer reports 27 entries — those are cycle paths through the cycle listed below, not 27 separate problems. Adding one edge inside a tangle multiplies the path count without changing the architecture, so track the cycle instead.

Cycle 1 — 14 components, 39 edges between them

Accounts, AppRating, Audiobooks, Book, CatalogUI, ErrorHandling, FeatureFlags, Keychain, Logging, Network, Notifications, OPDS2, Settings, SignInLogic

edges
Accounts → ErrorHandling
Accounts → Logging
Accounts → Network
Accounts → OPDS2
Accounts → SignInLogic
AppRating → Settings
Audiobooks → Accounts
Audiobooks → Book
Audiobooks → FeatureFlags
Audiobooks → Keychain
Audiobooks → Logging
Audiobooks → Settings
Audiobooks → SignInLogic
Book → Accounts
Book → Audiobooks
Book → CatalogUI
Book → Logging
Book → SignInLogic
CatalogUI → Accounts
CatalogUI → Book
CatalogUI → Settings
ErrorHandling → Logging
FeatureFlags → AppRating
Keychain → Accounts
Keychain → Logging
Logging → Accounts
Network → Accounts
Network → Logging
Notifications → Accounts
Notifications → Logging
OPDS2 → Accounts
Settings → Accounts
Settings → Audiobooks
Settings → Logging
Settings → SignInLogic
SignInLogic → Accounts
SignInLogic → Logging
SignInLogic → Notifications
SignInLogic → Settings

Discounted TriageBotUI → Palace — declared a known false positive in tools/ledger/ledger-config.json.

📋 Architecture Findings
  • hotspot: PalaceLogging is a coupling hotspot with 32 dependents
  • hotspot: Accounts is a coupling hotspot with 12 dependents
  • hotspot: PalacePreferences is a coupling hotspot with 15 dependents
  • hotspot: PalaceNetwork is a coupling hotspot with 14 dependents
  • hotspot: PalaceUtilities is a coupling hotspot with 18 dependents
  • hotspot: PalaceCatalog is a coupling hotspot with 22 dependents
  • hotspot: PalaceBookModel is a coupling hotspot with 21 dependents
  • hotspot: PalaceBookRegistry is a coupling hotspot with 18 dependents
  • hotspot: ErrorHandling is a coupling hotspot with 6 dependents
  • hotspot: Logging is a coupling hotspot with 10 dependents
  • hotspot: PalaceUIKit is a coupling hotspot with 7 dependents
  • hotspot: PalaceFeatureFlags is a coupling hotspot with 6 dependents
  • hotspot: TriageBotCore is a coupling hotspot with 7 dependents
  • hotspot: Network is a coupling hotspot with 7 dependents
  • hotspot: PalaceAuth is a coupling hotspot with 8 dependents
  • layer_violation: TriageBotUI (Presentation) depends on Palace (Application) - upward dependency
  • orphan_component: Catalog has no dependencies and no dependents - possible orphan

🔍 Reachability Analysis

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

ℹ️ Reachability not evaluated. Its analyzer reads a top-level Sources/ directory that this repo does not have, so it scans 0 files.


Scanned: whole repo at 02b883b13 · Accessibility: ran · Dead code: not evaluated · Test coverage: not evaluated (QAAtlas disabled)

Download the full report

Powered by CodeAtlas Ledger
• Accessibility: AccessLint

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

🧪 Unit Test Results

📊 View Full Interactive Report

✅ ALL TESTS PASSED

9543 tests | 9525 passed | 0 failed | 16 skipped | ⏱️ 15m 33s | 📊 99.8% | 📈 54.0% coverage

All 1048 classes (full matrix — click to expand)
Class Tests Passed Failed Skipped Duration
✅ AccessLintComplianceTests 11 11 0 0 476ms
✅ AccessibilityAnnouncementCenterTests 20 20 0 0 1.57s
✅ AccessibilityLabelTests 9 9 0 0 41ms
✅ AccessibilityPreferencesTests 26 26 0 0 637ms
✅ AccessibilityServiceTests 11 11 0 0 192ms
✅ AccessibilityTraversalAuditTests 18 18 0 0 9.47s
✅ AccountAuthDocCarryoverTests 5 5 0 0 174ms
✅ AccountAuthSurfaceHostsTests 7 7 0 0 95ms
✅ AccountAwareNetworkTests 10 10 0 0 554ms
✅ AccountCredentialResolverTests 6 6 0 0 37ms
✅ AccountDetailCredentialStateTests 7 7 0 0 933ms
✅ AccountDetailPINVisibilityTests 27 25 0 2 2.56s
✅ AccountDetailSignOutConfirmationTests 2 2 0 0 142ms
✅ AccountDetailViewModelGapTests 1 1 0 0 23ms
✅ AccountDetailViewModelLeakTests 1 1 0 0 24ms
✅ AccountDetailViewModelSignedInDerivationTests 5 5 0 0 1m 13s
✅ AccountDetailViewModelTests 19 19 0 0 669ms
✅ AccountDetailsAuthenticationIsBrowserBasedTests 10 10 0 0 21ms
✅ AccountDetailsNeedsAuthAggregateTests 10 10 0 0 218ms
✅ AccountDetailsURLTests 17 17 0 0 263ms
✅ AccountErrorReportingTests 1 1 0 0 1ms
✅ AccountModelGapTests 9 9 0 0 524ms
✅ AccountModelTests 20 20 0 0 886ms
✅ AccountNetworkingSeamTests 2 2 0 0 68ms
✅ AccountProfileDocumentTests 25 25 0 0 139ms
✅ AccountProfileGateLintTests 3 3 0 0 115ms
✅ AccountRegistryCacheSeamTests 3 3 0 0 71ms
✅ AccountRegistryLoaderSeamTests 3 3 0 0 7ms
✅ AccountRegistryStorePoolStarvationTests 3 2 0 1 175ms
✅ AccountRegistryStoreSeamTests 6 6 0 0 89ms
✅ AccountScopeAdapterTests 5 5 0 0 646ms
✅ AccountStateMachineTests 13 13 0 0 739ms
✅ AccountSwitchBorrowReauthCouplingContractTests 4 4 0 0 46ms
✅ AccountSwitchCleanupTests 8 8 0 0 44ms
✅ AccountSwitchIntegrationTests 8 8 0 0 103ms
✅ AccountSwitchLifecycleTests 9 9 0 0 1.35s
✅ AccountsManagerAccountIndexTests 7 7 0 0 246ms
✅ AccountsManagerAuthDocContractTests 1 1 0 0 114ms
✅ AccountsManagerCacheReadTests 4 4 0 0 591ms
✅ AccountsManagerCacheTests 16 16 0 0 1.25s
✅ AccountsManagerCancellationTests 6 6 0 0 1.78s
✅ AccountsManagerCatalogLoadJoinTests 3 3 0 0 285ms
✅ AccountsManagerCollaboratorInitRaceTests 7 7 0 0 153ms
✅ AccountsManagerCurrentAccountSwitchContractTests 5 5 0 0 608ms
✅ AccountsManagerFirstRunDecodeTests 3 3 0 0 444ms
✅ AccountsManagerGapTests 3 3 0 0 214ms
✅ AccountsManagerHelpersTests 12 12 0 0 31ms
✅ AccountsManagerIsolationLintTests 4 4 0 0 1.94s
✅ AccountsManagerLaunchSnapshotTests 13 13 0 0 2.08s
✅ AccountsManagerStateMachineWiringTests 18 18 0 0 10.81s
✅ AccountsManagerTests 51 48 0 3 4.23s
✅ AdobeActivationCoordinatorTests 4 4 0 0 19ms
✅ AdobeActivationDedupTests 8 8 0 0 3.36s
✅ AdobeActivationLicensorGraceTests 7 7 0 0 549ms
✅ AdobeActivationRefreshLicensorTests 16 16 0 0 476ms
✅ AdobeActivationTests 6 6 0 0 137ms
✅ AdobeCertificateGapTests 7 7 0 0 12ms
✅ AdobeClientTokenSplitTests 19 19 0 0 1.65s
✅ AdobeDRMCharacterizationTests 21 21 0 0 278ms
✅ AdobeDRMErrorGapTests 3 3 0 0 155ms
✅ AdobeDRMErrorMappingTests 9 9 0 0 1.42s
✅ AdobeDRMHandlerTests 12 12 0 0 364ms
✅ AdobeDRMServiceGapTests 2 2 0 0 6ms
✅ AdobeDeauthorizationTests 16 16 0 0 377ms
✅ AdobeLicensorRefreshTests 13 13 0 0 551ms
✅ AlertModelCoverageTests 6 6 0 0 6ms
✅ AlertModelRetryTests 7 7 0 0 208ms
✅ AlertModelTests 2 2 0 0 3ms
✅ AlertPresentationRawGuardLintTests 6 6 0 0 49ms
✅ AlertUtilsTests 20 20 0 0 268ms
✅ AnnotationContractTests 3 3 0 0 465ms
✅ AnnotationDeviceIDTests 5 5 0 0 2.75s
✅ AnnotationPostResponseContractTests 1 1 0 0 4ms
✅ AnnouncementChainTests 5 5 0 0 843ms
✅ AnnouncementTests 3 3 0 0 279ms
✅ AppContainerAudiobookFactoryTests 3 3 0 0 1.71s
✅ AppContainerAuthCoordinatorRegistrationTests 3 3 0 0 3ms
✅ AppContainerImageLoaderInjectionTests 4 4 0 0 52ms
✅ AppContainerIsolationLintTests 8 8 0 0 2.45s
✅ AppContainerResetTests 5 5 0 0 174ms
✅ AppContainerTests 5 5 0 0 582ms
✅ AppContainerWithSignInModalSheetPresenterTests 2 2 0 0 2ms
✅ AppHealthViewModelTests 8 8 0 0 214ms
✅ AppLaunchTrackerExtendedTests 16 16 0 0 643ms
✅ AppLaunchTrackerTests 10 10 0 0 336ms
✅ AppLaunchTrackerWiringTests 2 2 0 0 653ms
✅ AppRatingServiceOverrideTests 3 3 0 0 25ms
✅ AppRatingServiceTests 9 9 0 0 52ms
✅ AppRouteTests 5 5 0 0 8ms
✅ AppTabHostMiniPlayerIntegrationTests 6 6 0 0 188ms
✅ AppTabHostViewBadgeCountTests 10 10 0 0 124ms
✅ AppTabRouterCoverageTests 4 4 0 0 6ms
✅ AppTabRouterGapTests 3 3 0 0 15ms
✅ AppTabSelectionBindingLintTests 2 2 0 0 22ms
✅ AppTabStackMemoryTests 11 11 0 0 277ms
✅ AppTabSwitchPreservesStacksTests 3 3 0 0 180ms
✅ AudioBookmarkGapTests 6 6 0 0 12ms
✅ AudioEngineWrapperTests 8 8 0 0 194ms
✅ AudioInterruptionLogicTests 6 6 0 0 61ms
✅ AudioSessionActivatorTests 8 8 0 0 66ms
✅ AudiobookAccessibilityTests 7 7 0 0 7ms
✅ AudiobookBackgroundAudioTests 2 2 0 0 34ms
✅ AudiobookBearerTokenRecoveryTests 21 21 0 0 348ms
✅ AudiobookBookmarkBusinessLogicConcurrencyTests 3 3 0 0 51ms
✅ AudiobookBookmarkBusinessLogicPositionWriteTests 9 9 0 0 6.75s
✅ AudiobookBookmarkBusinessLogicTests 21 21 0 0 4.99s
✅ AudiobookChapterCompletionPauseTests 7 7 0 0 38ms
✅ AudiobookChapterTOCNormalizationTests 6 6 0 0 18ms
✅ AudiobookColdLoadRecoveryTests 4 4 0 0 19ms
✅ AudiobookContentGateTests 19 19 0 0 862ms
✅ AudiobookContentSourceTests 15 15 0 0 59ms
✅ AudiobookCrossVendorSmokeTests 4 4 0 0 216ms
✅ AudiobookDataManagerEmptyQueueTests 1 1 0 0 5ms
✅ AudiobookDataManagerErrorHandlingTests 5 5 0 0 699ms
✅ AudiobookDataManagerModelsTests 20 20 0 0 408ms
✅ AudiobookDataManagerNetworkSyncTests 5 5 0 0 417ms
✅ AudiobookDataManagerSaveTests 4 4 0 0 31ms
✅ AudiobookDataManagerStoreRecoveryTests 5 5 0 0 35ms
✅ AudiobookDownloadProgressPolicyTests 11 11 0 0 63ms
✅ AudiobookFileLoggerTests 15 15 0 0 212ms
✅ AudiobookFirstOpenHangTests 15 14 0 1 1.20s
✅ AudiobookLoadFailureSAMLReauthTests 10 10 0 0 280ms
✅ AudiobookLoaderDispatchTests 10 10 0 0 85ms
✅ AudiobookLoaderFinalizeBuildTests 11 11 0 0 457ms
✅ AudiobookLoaderOPDSShapeMatrixTests 8 8 0 0 819ms
✅ AudiobookLoaderPositionTraceWiringTests 4 4 0 0 2.43s
✅ AudiobookLoaderPredicateTests 11 11 0 0 39ms
✅ AudiobookLoaderTests 2 2 0 0 132ms
✅ AudiobookMorphingPlayerChapterTitleTests 5 5 0 0 35ms
✅ AudiobookMorphingPlayerViewTests 40 40 0 0 863ms
✅ AudiobookNetworkValidationTests 3 3 0 0 54ms
✅ AudiobookOpenFailureMetadataTests 8 8 0 0 175ms
✅ AudiobookOpenStateRaceTests 3 3 0 0 207ms
✅ AudiobookOverdriveRefulfillWiringTests 7 7 0 0 1.71s
✅ AudiobookPhoneAlertContentTests 3 3 0 0 377ms
✅ AudiobookPlaybackRecoveryDecisionTableTests 28 28 0 0 721ms
✅ AudiobookPlaybackStateTests 3 3 0 0 2.17s
✅ AudiobookPlaybackTests 26 26 0 0 793ms
✅ AudiobookPlaytimesLifecycleTests 6 6 0 0 741ms
✅ AudiobookPositionAdapterContractTests 6 6 0 0 176ms
✅ AudiobookPositionPolicyValidatorTests 14 14 0 0 640ms
✅ AudiobookPositionResolverDecisionTableTests 13 13 0 0 652ms
✅ AudiobookPositionRestoreTests 25 25 0 0 423ms
✅ AudiobookPositionTraceCallSiteTests 2 2 0 0 79ms
✅ AudiobookPositionTraceLifetimeTests 1 1 0 0 7ms
✅ AudiobookPositionTraceRecorderTests 29 29 0 0 554ms
✅ AudiobookPositionTraceReportTests 9 9 0 0 557ms
✅ AudiobookPositionTraceSeamTests 14 14 0 0 268ms
✅ AudiobookReadinessPlaybackContractTests 2 2 0 0 181ms
✅ AudiobookRecoveryAttemptsTests 16 16 0 0 265ms
✅ AudiobookSAMLReauthTests 6 6 0 0 19ms
✅ AudiobookSessionErrorDescriptionTests 4 4 0 0 66ms
✅ AudiobookSessionErrorExtTests 4 4 0 0 143ms
✅ AudiobookSessionErrorTests 3 3 0 0 7ms
✅ AudiobookSessionManagerErrorMappingTests 6 6 0 0 6ms
✅ AudiobookSessionManagerFlagGatePresentationTests 4 4 0 0 488ms
✅ AudiobookSessionManagerPresenterMigrationTests 10 10 0 0 1.45s
✅ AudiobookSessionManagerShutdownTests 12 12 0 0 144ms
✅ AudiobookSessionPresenterLifecycleContractTests 3 3 0 0 74ms
✅ AudiobookSessionPresenterTests 54 54 0 0 873ms
✅ AudiobookSessionStateTests 6 6 0 0 279ms
✅ AudiobookSessionStateTransitionTests 22 22 0 0 906ms
✅ AudiobookSleepTimerIntegrationTests 5 5 0 0 603ms
✅ AudiobookStorageLocationTests 3 3 0 0 3ms
✅ AudiobookTOCTests 18 18 0 0 178ms
✅ AudiobookTimeEntryTests 6 6 0 0 20ms
✅ AudiobookTimeTrackerEdgeTests 8 8 0 0 1.45s
✅ AudiobookTimeTrackerLifecycleTests 5 5 0 0 1.17s
✅ AudiobookTimeTrackerTests 9 9 0 0 1.31s
✅ AudiobookTrackCompletionTests 2 2 0 0 17ms
✅ AudiobookTypeRoutingTests 5 5 0 0 1.50s
✅ AudiobookVendorAdapterTests 5 5 0 0 48ms
✅ AudiobookVendorRecoveryContractTests 1 1 0 0 33ms
✅ AudiobookmarkTests 4 4 0 0 32ms
✅ AuthCoordinatorTelemetryTests 5 5 0 0 34ms
✅ AuthDecisionEventEmissionTests 7 7 0 0 247ms
✅ AuthDocumentContractTests 2 2 0 0 2ms
✅ AuthDocumentLoaderSeamTests 6 6 0 0 22ms
✅ AuthDocumentVariantsContractTests 5 5 0 0 527ms
✅ AuthErrorCategoryTests 12 12 0 0 410ms
✅ AuthErrorProblemDocSeamTests 6 6 0 0 56ms
✅ AuthFlowSecurityTests 3 3 0 0 46ms
✅ AuthReducerTests 21 21 0 0 854ms
✅ AuthTypeTests 7 7 0 0 14ms
✅ AuthenticationTests 16 16 0 0 133ms
✅ BackgroundDownloadHandlerTests 28 28 0 0 1.15s
✅ BackgroundDownloadTokenAccountTests 5 5 0 0 532ms
✅ BackgroundListenerTests 2 2 0 0 66ms
✅ BackgroundReconciliationContractTests 8 8 0 0 51ms
✅ BackgroundSessionRoutingTests 6 6 0 0 3.63s
✅ BackupExclusionMigrationTests 3 3 0 0 8ms
✅ BasicAuthEmptyCredentialTests 4 4 0 0 5ms
✅ BearerTokenAdapterTests 5 5 0 0 104ms
✅ BearerTokenFulfillFlowTests 4 4 0 0 45ms
✅ BearerTokenRefreshTests 4 4 0 0 8ms
✅ BearerTokenResponseDetectionTests 7 7 0 0 246ms
✅ BeginningPositionPolicyTests 8 8 0 0 17ms
✅ BookAvailabilityFormatterTests 18 18 0 0 215ms
✅ BookButtonMapperHoldReadyTests 10 10 0 0 75ms
✅ BookButtonMapperTests 21 21 0 0 206ms
✅ BookButtonMapperViewModelTests 18 18 0 0 423ms
✅ BookButtonStateTests 8 8 0 0 25ms
✅ BookButtonTypeMetaTests 4 4 0 0 1.51s
✅ BookButtonTypeTests 13 13 0 0 57ms
✅ BookCellModelActionTests 18 18 0 0 1.34s
✅ BookCellModelCacheInvalidationTests 9 9 0 0 316ms
✅ BookCellModelCachePrefetchSafetyTests 9 9 0 0 486ms
✅ BookCellModelCacheTests 22 22 0 0 4.75s
✅ BookCellModelComputedPropertyTests 22 22 0 0 184ms
✅ BookCellModelLCPProgressTests 7 7 0 0 1.31s
✅ BookCellModelOfflineTests 9 9 0 0 336ms
✅ BookCellModelProcessingStateTests 6 6 0 0 68ms
✅ BookCellModelRegistryBindingTests 4 4 0 0 65ms
✅ BookCellModelStateTests 16 16 0 0 156ms
✅ BookCellModelStreamingHTMLTests 2 2 0 0 238ms
✅ BookCellStateComprehensiveTests 14 14 0 0 66ms
✅ BookContentResetServiceTests 2 2 0 0 14ms
✅ BookDetailButtonRoutingTests 4 4 0 0 23ms
✅ BookDetailInfoValueLinkTests 5 5 0 0 9ms
✅ BookDetailLCPContentProgressTests 11 11 0 0 664ms
✅ BookDetailMetadataHydrationGuardTests 5 5 0 0 858ms
✅ BookDetailMetadataHydrationTests 6 6 0 0 5.11s
✅ BookDetailMetadataMergeContractTests 5 5 0 0 412ms
✅ BookDetailOpenRoutingDecisionTableTests 5 5 0 0 855ms
✅ BookDetailOpenRoutingTests 3 3 0 0 33ms
✅ BookDetailViewModelAudiobookDismissTests 1 1 0 0 39ms
✅ BookDetailViewModelTests 91 91 0 0 14.84s
✅ BookFileManagerAccountScopingTests 5 5 0 0 453ms
✅ BookFileManagerSideloadResolutionTests 4 4 0 0 330ms
✅ BookFileManagerTests 8 8 0 0 96ms
✅ BookListViewAccessibilityTests 9 9 0 0 254ms
✅ BookOpenRouterTests 3 3 0 0 124ms
✅ BookPreviewTests 4 4 0 0 6ms
✅ BookRegistryReconciliationTableTests 10 10 0 0 28ms
✅ BookRegistryStoreTests 26 26 0 0 1.17s
✅ BookRegistrySyncReadinessTests 4 3 0 1 509ms
✅ BookRegistrySyncReentrancyTests 6 6 0 0 2.34s
✅ BookRegistrySyncSideloadExemptionTests 2 2 0 0 82ms
✅ BookRegistrySyncTests 43 43 0 0 3.12s
✅ BookRegistrySyncTimeoutSeamTests 2 2 0 0 20ms
✅ BookReturnCleverReauthTests 1 1 0 0 9ms
✅ BookReturnServiceAuthCoordinatorTests 3 3 0 0 144ms
✅ BookReturnServiceContractTests 9 9 0 0 165ms
✅ BookReturnServiceTests 20 20 0 0 996ms
✅ BookServiceAudiobookOpenTests 2 2 0 0 38ms
✅ BookSignInRedirectHandlerTests 8 8 0 0 3.63s
✅ BookStateIntegrationTests 8 8 0 0 236ms
✅ BookmarkBusinessLogicExtendedTests 6 6 0 0 159ms
✅ BookmarkDeletionLogTests 3 3 0 0 273ms
✅ BookmarkDeviceIdMatchingTests 3 3 0 0 181ms
✅ BookmarkExistenceTests 4 4 0 0 322ms
✅ BookmarkManagerTests 27 27 0 0 1.37s
✅ BookmarkSortingTests 1 1 0 0 51ms
✅ BookmarkSpecConformanceTests 5 5 0 0 49ms
✅ BookmarkSyncTests 3 3 0 0 67ms
✅ BorrowAdobeActivationStepTests 6 6 0 0 124ms
✅ BorrowAndDownloadIntegrationTests 7 7 0 0 502ms
✅ BorrowErrorMessageTests 13 13 0 0 217ms
✅ BorrowErrorPresenterTests 6 6 0 0 48ms
✅ BorrowOperationAuthCoordinatorTests 6 6 0 0 618ms
✅ BorrowOperationCleverReauthTests 2 2 0 0 175ms
✅ BorrowOperationContractTests 8 8 0 0 601ms
✅ BorrowOperationStreamingHTMLTests 3 3 0 0 52ms
✅ BorrowOperationTests 13 13 0 0 559ms
✅ BorrowOperationTimeoutTests 3 3 0 0 150ms
✅ BorrowReauthResettingTests 4 4 0 0 210ms
✅ BorrowReducerContractTests 2 2 0 0 54ms
✅ BorrowReducerCoreContractTests 12 12 0 0 157ms
✅ BorrowReducerTests 21 21 0 0 759ms
✅ BoundContentSourceLookupTests 3 3 0 0 87ms
✅ BundledRegistrySnapshotTests 5 5 0 0 615ms
✅ ButtonStateMonotonicClampTests 10 10 0 0 1.66s
✅ ButtonStateTests 16 16 0 0 57ms
✅ ButtonStyleTypeTests 2 2 0 0 170ms
✅ ButtonTapDebounceTests 7 7 0 0 80ms
✅ C64ConversionTests 6 6 0 0 7ms
✅ CarPlayAudiobookBridgePresenterMigrationTests 2 2 0 0 27ms
✅ CarPlayAuthHelperReadinessTests 3 3 0 0 136ms
✅ CarPlayChapterListTests 3 3 0 0 6ms
✅ CarPlayIntegrationTests 2 2 0 0 11ms
✅ CarPlayLibraryRefreshTests 3 3 0 0 10ms
✅ CarPlayNowPlayingTemplateTests 4 4 0 0 531ms
✅ CarPlayOpenAppAlertTests 6 6 0 0 245ms
✅ CarPlayPlaybackErrorTests 8 8 0 0 154ms
✅ CarPlayTemplateCompletionLintTests 3 3 0 0 1.10s
✅ CarPlayTemplateNavigatorTests 24 24 0 0 112ms
✅ CarPlayTests 12 12 0 0 163ms
✅ CarPlayTimeTrackingTests 3 3 0 0 395ms
✅ CatalogAPIDedupeTests 3 3 0 0 453ms
✅ CatalogAPIEntryPointTests 1 1 0 0 237ms
✅ CatalogAccessibilityTests 8 8 0 0 49ms
✅ CatalogCacheKeyAndIsolationTests 12 12 0 0 819ms
✅ CatalogCacheMetadataExactBoundaryTests 4 4 0 0 8ms
✅ CatalogCacheMetadataTests 21 21 0 0 474ms
✅ CatalogCrawlSchedulerTests 9 9 0 0 260ms
✅ CatalogFeedModelTests 4 4 0 0 16ms
✅ CatalogFilterGroupModelTests 17 17 0 0 179ms
✅ CatalogFilterModelTests 17 17 0 0 127ms
✅ CatalogFilterServiceTests 29 29 0 0 852ms
✅ CatalogFilterTests 1 1 0 0 <1ms
✅ CatalogLaneAssemblyTests 7 7 0 0 10ms
✅ CatalogLaneFilterApplicationTests 4 4 0 0 309ms
✅ CatalogLaneModelStructTests 20 20 0 0 9.86s
✅ CatalogLaneModelTests 3 3 0 0 3ms
✅ CatalogLaneMoreFilterStateTests 8 8 0 0 214ms
✅ CatalogLaneMoreViewModelTests 43 43 0 0 2.34s
✅ CatalogLaneRowViewAccessibilityTests 11 11 0 0 33ms
✅ CatalogLaneSortingTests 5 5 0 0 195ms
✅ CatalogLoadIntegrationTests 6 6 0 0 76ms
✅ CatalogOPDS2NegotiationTests 12 12 0 0 133ms
✅ CatalogPreloaderTests 6 6 0 0 95ms
✅ CatalogProblemDocumentTests 6 6 0 0 14ms
✅ CatalogRepositoryCoreTests 9 9 0 0 256ms
✅ CatalogRepositoryStaleWhileRevalidateTests 12 12 0 0 9.72s
✅ CatalogRepositoryTests 19 19 0 0 645ms
✅ CatalogSearchViewModelRegistryUpdateTests 5 5 0 0 75ms
✅ CatalogSearchViewModelTests 67 67 0 0 4.97s
✅ CatalogSelectorsTests 2 2 0 0 31ms
✅ CatalogSortServiceTests 14 14 0 0 45ms
✅ CatalogStateTests 7 7 0 0 296ms
✅ CatalogViewLibraryIconTests 2 2 0 0 5ms
✅ CatalogViewModelStateMachineTests 19 19 0 0 1.93s
✅ ChaosFaultInjectionTests 5 5 0 0 32ms
✅ ChapterChangeDetectorTests 5 5 0 0 104ms
✅ ChapterNavigationHoldTests 13 13 0 0 1.15s
✅ ChapterNavigationPolicyTests 11 11 0 0 13ms
✅ ChapterScrubberChromeVisibilityTests 4 4 0 0 316ms
✅ ChapterScrubberModelTests 35 35 0 0 362ms
✅ ChapterScrubberReadoutTests 11 11 0 0 10ms
✅ ChapterScrubberTOCResolutionTests 5 5 0 0 4ms
✅ ChapterScrubberViewTests 31 31 0 0 2.62s
✅ ChapterTOCNormalizerTests 7 7 0 0 9.10s
✅ CirculationAnalyticsTests 4 4 0 0 18ms
✅ ColdStartResumeIntegrationTests 10 10 0 0 1.55s
✅ ColorExtensionTests 5 5 0 0 293ms
✅ ConcurrentBookStateTests 3 3 0 0 46ms
✅ ConcurrentDownloadStateTests 3 3 0 0 19ms
✅ ConcurrentTokenRefreshTests 2 2 0 0 80ms
✅ ContinuousPlaybackTrackingTests 3 3 0 0 569ms
✅ CookiePersistenceTests 10 10 0 0 880ms
✅ CoverSourceBadResponseCacheTests 9 9 0 0 494ms
✅ CrawlStateTests 16 16 0 0 2.47s
✅ CrawlableFeedAnalysisTests 17 17 0 0 11.57s
✅ CrawlerCompletenessTests 5 5 0 0 373ms
✅ CrawlerFallbackTests 12 12 0 0 181ms
✅ CredentialEdgeCaseTests 6 6 0 0 12ms
✅ CredentialPrivacyTests 4 4 0 0 2.16s
✅ CredentialPromptCoordinatorTests 4 4 0 0 75ms
✅ CredentialSnapshotInvalidationTests 5 5 0 0 829ms
✅ CredentialStoreCharacterizationTests 7 7 0 0 242ms
✅ CriticalScreensVoiceOverAuditTests 10 10 0 0 40.33s
✅ CrossDeviceBookmarkSyncTests 12 12 0 0 17ms
✅ CrossDeviceSyncE2ETests 10 10 0 0 1.47s
✅ CrossDomain401Tests 8 8 0 0 7ms
✅ CrossFormatMappingTests 14 14 0 0 34ms
✅ DPLAErrorTests 3 3 0 0 3ms
✅ DRMAdversarialTests 4 4 0 0 26ms
✅ DRMFulfilledPublicationTests 6 6 0 0 7ms
✅ DataReceptionComparisonTests 2 2 0 0 29ms
✅ DateExtensionTests 9 9 0 0 11ms
✅ DateFormattingTests 4 4 0 0 16ms
✅ Date_NYPLAdditionsTests 7 7 0 0 1.45s
✅ DebugSettingsForceSkeletonsTests 4 4 0 0 34ms
✅ DebugSettingsGapTests 4 4 0 0 2.23s
✅ DebugSettingsTests 33 33 0 0 2.06s
✅ DefaultCatalogAPITests 31 31 0 0 674ms
✅ DeriveInitialStateTests 4 4 0 0 12ms
✅ DeveloperSettingsEngineeringTierTests 4 4 0 0 3ms
✅ DeveloperSettingsViewModelOverrideTests 8 8 0 0 76ms
✅ DeviceLogCollectorGapTests 2 2 0 0 14ms
✅ DeviceLogCollectorTests 13 13 0 0 134ms
✅ DeviceOrientationTests 7 7 0 0 343ms
✅ DeviceSpecificErrorMonitorTests 11 11 0 0 59ms
✅ DirectionalNavigationAdapterOwnershipTests 2 2 0 0 13ms
✅ DiskBudgetManagerTests 7 7 0 0 170ms
✅ DiskBudgetTests 2 2 0 0 14ms
✅ DownloadAccountContextAdapterTests 11 11 0 0 231ms
✅ DownloadAlertPresenterTests 8 8 0 0 161ms
✅ DownloadAnnouncementServiceTests 12 12 0 0 416ms
✅ DownloadAuthChallengeWitnessTests 13 13 0 0 1.84s
✅ DownloadAuthRetryHandlerAuthCoordinatorTests 6 6 0 0 2.63s
✅ DownloadAuthRetryHandlerTaskLifecycleTests 4 4 0 0 443ms
✅ DownloadAuthRetryHandlerTests 17 17 0 0 1.85s
✅ DownloadCancellationHandlerTests 7 7 0 0 139ms
✅ DownloadCompleteMomentTests 6 6 0 0 9ms
✅ DownloadCompletionParserTests 9 9 0 0 139ms
✅ DownloadCoordinatorIntegrationTests 10 10 0 0 621ms
✅ DownloadCoordinatorTests 11 11 0 0 145ms
✅ DownloadDiskSpaceTests 2 2 0 0 1ms
✅ DownloadErrorInfoTests 3 3 0 0 250ms
✅ DownloadErrorRecoveryPolicyTests 11 11 0 0 110ms
✅ DownloadErrorRecoveryTests 3 3 0 0 66ms
✅ DownloadFreeSpaceExhaustionTests 11 11 0 0 82ms
✅ DownloadInfoTests 5 5 0 0 125ms
✅ DownloadIntegrityTests 10 10 0 0 281ms
✅ DownloadOnlyOnWiFiTests 10 10 0 0 114ms
✅ DownloadPersistenceStoreTests 5 5 0 0 665ms
✅ DownloadProgressPublisherCoreTests 29 29 0 0 1.00s
✅ DownloadQueueIntegrationTests 3 3 0 0 201ms
✅ DownloadQueueOrchestratorTests 9 9 0 0 537ms
✅ DownloadRMSDKHandoffTests 13 13 0 0 186ms
✅ DownloadReconciliationLaunchOrderContractTests 2 2 0 0 18ms
✅ DownloadReconciliationTests 29 29 0 0 510ms
✅ DownloadRedirectTests 7 7 0 0 1.58s
✅ DownloadReissuePersistenceTests 19 19 0 0 783ms
✅ DownloadResumeAfterKillTests 7 7 0 0 93ms
✅ DownloadSlotManagementTests 5 5 0 0 108ms
✅ DownloadStartCoordinatorContractTests 5 5 0 0 51ms
✅ DownloadStartCoordinatorTests 11 11 0 0 166ms
✅ DownloadStartDispatcherContractTests 12 12 0 0 34ms
✅ DownloadStartDispatcherTests 26 26 0 0 1.03s
✅ DownloadStartReducerContractTests 24 24 0 0 4.07s
✅ DownloadStateMachineIntegrationTests 15 15 0 0 100ms
✅ DownloadStateMachineTests 5 5 0 0 23ms
✅ DownloadStateManagerTests 16 16 0 0 1.19s
✅ DownloadTaskLifecycleServiceTests 9 9 0 0 130ms
✅ DownloadTaskPersistenceTests 14 14 0 0 634ms
✅ DownloadThrottlingContractTests 2 2 0 0 22ms
✅ DownloadThrottlingServiceTests 10 10 0 0 1.96s
✅ DownloadTransferRetryTests 6 6 0 0 4.81s
✅ DownloadWatchdogTests 3 3 0 0 6ms
✅ EPUBKeyCommandsPP4289Tests 4 4 0 0 28ms
✅ EPUBModuleTests 4 4 0 0 164ms
✅ EPUBPositionDialectTests 14 14 0 0 20ms
✅ EPUBPositionTests 10 10 0 0 93ms
✅ EPUBPositionWireFormatTests 8 8 0 0 187ms
✅ EPUBSearchViewModelTests 18 18 0 0 214ms
✅ EPUBToolbarToggleTests 11 11 0 0 26ms
✅ EffectBoundaryTests 6 6 0 0 102ms
✅ EpubSampleFactoryTests 5 5 0 0 34ms
✅ ErrorActivityTrackerTests 12 12 0 0 89ms
✅ ErrorDetailTests 14 14 0 0 2.41s
✅ ErrorDetailViewControllerGapTests 3 3 0 0 134ms
✅ ErrorDetailViewControllerTests 14 14 0 0 261ms
✅ ErrorLogExporterTests 5 5 0 0 264ms
✅ ExecutorNetworkHermeticityTests 1 1 0 0 34ms
✅ ExpiredLoanStringsTests 5 5 0 0 84ms
✅ FCMRegistrationReadinessLintTests 18 18 0 0 823ms
✅ FacetEnumTests 3 3 0 0 3ms
✅ FacetToolbarAccessibilityTests 5 5 0 0 1.31s
✅ FacetViewModelLogoDelegateTests 4 4 0 0 185ms
✅ FacetViewModelTests 18 18 0 0 47ms
✅ FetchManifestWithBearerTokenLCPSafetyTests 1 1 0 0 13ms
✅ FetchManifestWithBearerTokenTests 9 9 0 0 333ms
✅ FetchOpenAccessManifestLCPSafetyTests 4 4 0 0 76ms
✅ FileURLGenerationTests 3 3 0 0 206ms
✅ FindawayChapterStatusGuardTests 1 1 0 0 3ms
✅ FindawaySavedVsPlayedTests 1 1 0 0 55ms
✅ FirstRunFlowStepTests 11 11 0 0 777ms
✅ FloatTPPAdditionsTests 5 5 0 0 3ms
✅ FocusIndicationTests 7 7 0 0 268ms
✅ FontManagerTests 17 17 0 0 143ms
✅ ForceResetTests 6 6 0 0 54ms
✅ FulfillmentErrorMetadataTests 2 2 0 0 225ms
✅ GeneralCacheClearOnUpdateTests 3 3 0 0 105ms
✅ GeneralCacheTests 22 22 0 0 206ms
✅ GroupEnumTests 1 1 0 0 6ms
✅ HTMLTextViewTests 70 70 0 0 19.51s
✅ HalfSheetProgressCueTests 26 26 0 0 131ms
✅ HoldNotificationClassificationTests 2 2 0 0 6ms
✅ HoldsBadgeCountTests 9 9 0 0 797ms
✅ HoldsBookViewModelTests 8 8 0 0 59ms
✅ HoldsReducerTests 11 11 0 0 59ms
✅ HoldsSyncFailureTests 12 12 0 0 1.03s
✅ HoldsViewModelTests 23 23 0 0 1.89s
✅ HostFailureTrackerTests 2 2 0 0 8ms
✅ ImageCacheContinuationTests 1 1 0 0 20.36s
✅ ImageCacheOffMainIsolationTests 2 2 0 0 98ms
✅ ImageCacheTypeTests 1 1 0 0 3ms
✅ ImageCoverKeyUnificationTests 2 2 0 0 5.50s
✅ ImageLoaderTests 14 14 0 0 280ms
✅ InflightFeedFetchesTimeoutTests 4 4 0 0 10.25s
✅ IntExtensionsTests 4 4 0 0 48ms
✅ IsReaderActiveTrackingModifierTests 4 4 0 0 55ms
✅ KeyboardNavigationFKATests 11 11 0 0 906ms
✅ KeyboardNavigationHandlerTests 16 16 0 0 121ms
✅ KeyboardVoiceOverTests 5 5 0 0 52ms
✅ LCPAcquisitionPredicateTests 4 4 0 0 77ms
✅ LCPAdapterTests 8 8 0 0 451ms
✅ LCPAudiobookURLSchemeTests 4 4 0 0 436ms
✅ LCPAudiobooksTests 24 24 0 0 7.60s
✅ LCPBotanCRLGuardTests 5 5 0 0 82ms
✅ LCPCharacterizationTests 31 31 0 0 273ms
✅ LCPClientTests 9 9 0 0 444ms
✅ LCPFulfillmentHandlerTests 18 18 0 0 743ms
✅ LCPKeychainMigrationTests 5 5 0 0 69ms
✅ LCPLibraryServiceTests 20 20 0 0 649ms
✅ LCPLicenseDocumentDetectionTests 5 5 0 0 151ms
✅ LCPLicenseFilePathTests 3 3 0 0 3ms
✅ LCPOrphanedDownloadRegistryTests 4 4 0 0 21ms
✅ LCPPDFAcquisitionPredicateTests 5 5 0 0 248ms
✅ LCPPDFDiskExtractTests 5 5 0 0 95ms
✅ LCPPDFOpenProgressTests 13 13 0 0 572ms
✅ LCPPassphraseReadinessTests 2 2 0 0 17ms
✅ LCPSessionIdentifierTests 3 3 0 0 11ms
✅ LCPStreamedVersusLocalTests 3 3 0 0 11ms
✅ LCPStreamingTestPinTests 7 6 0 1 609ms
✅ LegacySAMLProblemDocumentPropagationTests 7 7 0 0 185ms
✅ LibrariesSectionViewModelTests 16 16 0 0 326ms
✅ LibraryCatalogMergerTests 9 9 0 0 132ms
✅ LibraryIconInertLintTests 1 1 0 0 726ms
✅ LibraryRegistryCrawlerTests 15 15 0 0 1.35s
✅ LibraryRowPresentationTests 10 10 0 0 33ms
✅ LicensesServiceTests 4 4 0 0 985ms
✅ LiveCrawlableParsingTest 4 0 0 4 15ms
✅ LiveDownloadTaskBoxTests 9 9 0 0 255ms
✅ LoanEvictionPolicyTests 13 13 0 0 562ms
✅ LoanRenewalServiceTests 9 9 0 0 333ms
✅ LocalBookContentServiceTests 42 42 0 0 1.04s
✅ LocalFileAdapterTests 6 6 0 0 104ms
✅ LocalizationTablesTests 4 4 0 0 251ms
✅ LogTests 13 13 0 0 871ms
✅ LoginKeyboardTests 8 8 0 0 11ms
✅ ManagedAppConfigurationTests 24 24 0 0 81ms
✅ ManagedLibraryConfigurationWatcherTests 14 14 0 0 485ms
✅ ManagedLibraryDebugOverrideTests 17 17 0 0 280ms
✅ ManagedLibraryDiagnosticReportingTests 10 10 0 0 95ms
✅ ManagedLibraryDiagnosticsTests 19 19 0 0 243ms
✅ ManagedLibraryFeatureFlagTests 7 7 0 0 213ms
✅ ManagedLibraryLaunchStepTests 8 8 0 0 13ms
✅ ManagedLibraryMultipleTests 32 32 0 0 282ms
✅ ManagedLibraryPreconfiguratorTests 21 21 0 0 286ms
✅ ManagedLibraryReviewFixesTests 11 11 0 0 2.69s
✅ ManagedLibraryTestingGuideTests 9 9 0 0 16ms
✅ ManifestFixtureTests 2 2 0 0 16ms
✅ MappedCatalogBridgeTests 3 3 0 0 61ms
✅ MappedCatalogModelTests 11 11 0 0 424ms
✅ MarqueeTextTests 5 5 0 0 9ms
✅ MediaServicesResetClassifierTests 8 8 0 0 34ms
✅ MediaServicesResetRecoveryCoordinatorTests 32 32 0 0 4.75s
✅ MediaServicesResetRecoveryTableTests 9 9 0 0 24ms
✅ MediaServicesResetSessionInputTests 9 9 0 0 94ms
✅ MissingRegistryRowAuthGateTests 5 5 0 0 205ms
✅ MockBackendExpiredCredentialsTests 3 3 0 0 43ms
✅ MockBackendHoldsTests 3 3 0 0 154ms
✅ MockBackendIntegrationTests 4 4 0 0 480ms
✅ MockBackendLoanLimitTests 2 2 0 0 80ms
✅ MockBackendRouteMatchingTests 4 4 0 0 16ms
✅ MockBackendServerDownTests 1 1 0 0 28ms
✅ MockIsolationLintTests 5 5 0 0 1.52s
✅ MultiLibraryTokenIsolationTests 17 17 0 0 956ms
✅ MyBooksDownloadCenterAccountIdThreadingTests 7 7 0 0 726ms
✅ MyBooksDownloadCenterAccountScopeSeamTests 7 7 0 0 54ms
✅ MyBooksDownloadCenterAdeptGapTests 3 3 0 0 36ms
✅ MyBooksDownloadCenterCachePurgeTests 4 4 0 0 1.08s
✅ MyBooksDownloadCenterConcurrencyTests 22 22 0 0 552ms
✅ MyBooksDownloadCenterEvictionTests 7 7 0 0 99ms
✅ MyBooksDownloadCenterOfflineTests 8 8 0 0 545ms
✅ MyBooksDownloadCenterProgressPublishingTests 2 2 0 0 23ms
✅ MyBooksDownloadSessionInvalidationTests 3 3 0 0 167ms
✅ MyBooksSimplifiedBearerTokenTests 17 17 0 0 915ms
✅ MyBooksViewModelBooksPublisherTests 3 3 0 0 85ms
✅ MyBooksViewModelConcurrencyTests 4 4 0 0 46ms
✅ MyBooksViewModelDownloadStateTests 3 3 0 0 1.94s
✅ MyBooksViewModelEmptyArrayTests 3 3 0 0 485ms
✅ MyBooksViewModelEmptyStateTests 4 4 0 0 147ms
✅ MyBooksViewModelExtendedTests 15 15 0 0 640ms
✅ MyBooksViewModelFacetIntegrationTests 4 4 0 0 25ms
✅ MyBooksViewModelFacetPublisherTests 5 5 0 0 34ms
✅ MyBooksViewModelFilterSortInteractionTests 2 2 0 0 25ms
✅ MyBooksViewModelFilterTests 9 9 0 0 937ms
✅ MyBooksViewModelGuardConditionsTests 2 2 0 0 35ms
✅ MyBooksViewModelLargeDatasetTests 2 2 0 0 143ms
✅ MyBooksViewModelLoadAccountTests 2 2 0 0 93ms
✅ MyBooksViewModelLoginStateTests 4 4 0 0 373ms
✅ MyBooksViewModelMultipleAuthorSortingTests 3 3 0 0 41ms
✅ MyBooksViewModelNotificationTests 4 4 0 0 317ms
✅ MyBooksViewModelOfflineFilteringTests 3 3 0 0 20ms
✅ MyBooksViewModelPublisherTests 7 7 0 0 1.21s
✅ MyBooksViewModelSearchEdgeCaseTests 6 6 0 0 498ms
✅ MyBooksViewModelSearchQueryTests 3 3 0 0 55ms
✅ MyBooksViewModelSortPersistenceTests 3 3 0 0 28.55s
✅ MyBooksViewModelSortingIntegrationTests 5 5 0 0 425ms
✅ MyBooksViewModelSortingTests 6 6 0 0 153ms
✅ MyBooksViewModelStateTransitionTests 3 3 0 0 323ms
✅ MyBooksViewModelUIBindingTests 3 3 0 0 14ms
✅ NSErrorAdditionsTests 7 7 0 0 8ms
✅ NSNotificationTPPTests 3 3 0 0 9ms
✅ NavigationCoordinatorHubTests 11 11 0 0 28ms
✅ NavigationCoordinatorTests 18 18 0 0 29ms
✅ NavigationFreezePreventionTests 5 5 0 0 35ms
✅ NetworkCacheClearRoutingTests 3 3 0 0 17ms
✅ NetworkExecutorCredentialGuardTests 8 8 0 0 556ms
✅ NetworkExecutorResponseRegressionTests 4 4 0 0 199ms
✅ NetworkExecutorTaskTypeTests 3 3 0 0 57ms
✅ NetworkOfflineDetectionTests 3 3 0 0 6ms
✅ NetworkQueueTests 22 22 0 0 3.99s
✅ NetworkRequestQueueTests 2 2 0 0 10.26s
✅ NetworkResponderAuthChallengeWitnessTests 13 13 0 0 200ms
✅ NetworkRetryLogicTests 7 7 0 0 146ms
✅ NetworkTimeoutTests 2 2 0 0 2ms
✅ NotificationEventTypeContractTests 7 7 0 0 258ms
✅ NotificationPayloadContractTests 10 10 0 0 567ms
✅ NotificationServiceReadinessGateTests 4 4 0 0 1.86s
✅ NotificationServiceStateMachineTests 9 9 0 0 508ms
✅ NotificationServiceTests 16 16 0 0 910ms
✅ NotificationServiceTokenTests 25 25 0 0 1.03s
✅ NotificationSyncThrottleTests 5 5 0 0 2.70s
✅ NotificationTokenDataTests 4 4 0 0 8ms
✅ NotificationTokenRegistrationTests 10 10 0 0 214ms
✅ NowPlayingCoordinatorBackgroundTests 6 6 0 0 345ms
✅ NowPlayingCoordinatorTests 19 19 0 0 3.85s
✅ OAuthSAMLRedirectRegressionTests 4 4 0 0 191ms
✅ OIDCAuthDocumentParsingTests 4 4 0 0 96ms
✅ OIDCAuthTypeTests 5 5 0 0 5ms
✅ OIDCAuthenticationPropertyTests 8 8 0 0 486ms
✅ OIDCCallbackEdgeCaseTests 9 9 0 0 789ms
✅ OIDCCallbackHandlingTests 5 5 0 0 298ms
✅ OIDCCallbackSchemeTests 3 3 0 0 3ms
✅ OIDCIsolationRegressionTests 6 6 0 0 147ms
✅ OIDCLoginRoutingTests 3 3 0 0 143ms
✅ OIDCMakeRequestTests 3 3 0 0 177ms
✅ OIDCNSCodingTests 1 1 0 0 29ms
✅ OIDCNetworkLayer401Tests 5 5 0 0 194ms
✅ OIDCReauthAttemptTests 9 9 0 0 112ms
✅ OIDCReauthOnExpiredTokenTests 5 5 0 0 161ms
✅ OIDCReauthRetryBehaviorTests 5 5 0 0 772ms
✅ OIDCReauthWiringLintTests 4 4 0 0 20ms
✅ OIDCRedirectURIConstructionTests 6 6 0 0 147ms
✅ OIDCRegressionTests 9 9 0 0 4.44s
✅ OIDCSelectedAuthenticationTests 2 2 0 0 49ms
✅ OIDCSignOutRegressionTests 6 6 0 0 599ms
✅ OIDCTokenRefreshRegressionTests 6 6 0 0 362ms
✅ OIDCUpdateUserAccountTests 5 5 0 0 562ms
✅ OIDCViewModelRegressionTests 1 1 0 0 45ms
✅ OIDCViewModelSignInTests 2 2 0 0 24ms
✅ OPDS1BorrowEntryContractTests 4 4 0 0 15ms
✅ OPDS1CatalogGroupedContractTests 3 3 0 0 13ms
✅ OPDS1HoldEntriesContractTests 4 4 0 0 20ms
✅ OPDS1LoansFeedContractTests 6 6 0 0 123ms
✅ OPDS1ParsingTests 34 34 0 0 986ms
✅ OPDS1RevokeResponseContractTests 2 2 0 0 10ms
✅ OPDS2AuthenticationDocumentTests 18 18 0 0 1.44s
✅ OPDS2AvailabilityTests 4 4 0 0 2.74s
✅ OPDS2BookBridgeTests 44 44 0 0 1.43s
✅ OPDS2BorrowResponseContractTests 3 3 0 0 16ms
✅ OPDS2CatalogWiringTests 21 21 0 0 651ms
✅ OPDS2CatalogsFeedTests 3 3 0 0 107ms
✅ OPDS2ContributorTests 2 2 0 0 434ms
✅ OPDS2EmptyFeedContractTests 1 1 0 0 4ms
✅ OPDS2FeedContractTests 4 4 0 0 62ms
✅ OPDS2FeedParsingTests 11 11 0 0 314ms
✅ OPDS2FeedTests 14 14 0 0 648ms
✅ OPDS2FullMetadataTests 4 4 0 0 15ms
✅ OPDS2FullPublicationTests 13 13 0 0 313ms
✅ OPDS2IntegrationTests 18 18 0 0 281ms
✅ OPDS2LinkArrayTests 5 5 0 0 10ms
✅ OPDS2LinkComputedPropertyTests 20 20 0 0 409ms
✅ OPDS2LinkRelTests 1 1 0 0 2ms
✅ OPDS2LinkTests 2 2 0 0 50ms
✅ OPDS2ParsingTests 38 38 0 0 5.62s
✅ OPDS2PublicationExtendedTests 53 53 0 0 107ms
✅ OPDS2PublicationImageTests 6 6 0 0 64ms
✅ OPDS2PublicationNarratorTests 3 3 0 0 11ms
✅ OPDS2PublicationTests 2 2 0 0 77ms
✅ OPDS2SamlIDPTests 6 6 0 0 281ms
✅ OPDS2SearchResultsContractTests 3 3 0 0 848ms
✅ OPDS2SubjectTests 2 2 0 0 26ms
✅ OPDS2SupportingTypesTests 5 5 0 0 90ms
✅ OPDSAcquisitionPathExpandedTests 15 15 0 0 712ms
✅ OPDSFeedCacheTests 14 14 0 0 134ms
✅ OPDSFeedMigrationTests 11 11 0 0 667ms
✅ OPDSFeedParsingTests 2 2 0 0 117ms
✅ OPDSFeedServiceStateMachineTests 3 3 0 0 266ms
✅ OPDSFeedServiceTests 2 2 0 0 13ms
✅ OPDSFormatTests 13 13 0 0 453ms
✅ OPDSParserCoreTests 4 4 0 0 15ms
✅ OPDSParserTests 4 4 0 0 8ms
✅ OPDSParsingTests 57 57 0 0 4.39s
✅ OfflineActionTests 29 29 0 0 416ms
✅ OfflineQueueCoordinatorTests 11 11 0 0 496ms
✅ OfflineQueueServiceExtendedTests 13 13 0 0 283ms
✅ OfflineQueueServiceTests 17 17 0 0 12.39s
✅ OpenAccessAdapterTests 13 13 0 0 1.45s
✅ OverdriveDeferredFulfillmentTests 6 6 0 0 102ms
✅ OverdriveDownloadHandlerTests 9 9 0 0 1.64s
✅ OverdriveFulfillmentTests 25 25 0 0 531ms
✅ PDFExtensionsTests 20 20 0 0 132ms
✅ PDFKitThumbnailProviderTests 5 5 0 0 672ms
✅ PDFReaderTests 12 12 0 0 21ms
✅ PDFSearchEmptyStateTests 4 4 0 0 8ms
✅ PP3596RegressionTests 3 3 0 0 77ms
✅ PalaceCheckPropertyTests 8 8 0 0 421ms
✅ PalaceErrorCategoryTests 20 20 0 0 503ms
✅ PalaceErrorExtendedTests 23 23 0 0 27ms
✅ PalaceErrorTests 11 11 0 0 29ms
✅ PalaceHapticTests 4 4 0 0 41ms
✅ PalaceMotionTests 11 11 0 0 372ms
✅ PalacePDFViewTests 12 12 0 0 287ms
✅ PalacePreferencesSettingsRoundTripTests 9 9 0 0 109ms
✅ PalacePressableButtonStyleTests 6 6 0 0 98ms
✅ PalaceSeekSliderAccessibilityTests 17 17 0 0 10.93s
✅ PalaceTestSetupObservationTests 6 6 0 0 106ms
✅ PalaceWiringTestCaseTests 4 4 0 0 256ms
✅ ParserFuzzTests 4 4 0 0 15.67s
✅ PatronProfileContractTests 4 4 0 0 349ms
✅ PerformanceMonitorTests 14 14 0 0 770ms
✅ PerformanceReportTests 14 14 0 0 208ms
✅ PersistentLoggerTests 9 9 0 0 2.69s
✅ PlaybackBootstrapperAudioSessionTests 2 2 0 0 15ms
✅ PlaybackBootstrapperTests 8 8 0 0 1.11s
✅ PlaybackFailureRecordCauseTests 14 14 0 0 776ms
✅ PlaybackFailureRecordDeduplicatorTests 29 29 0 0 6.47s
✅ PlaybackFailureRecordTests 5 5 0 0 4ms
✅ PlaybackOpenPolicyTests 7 7 0 0 217ms
✅ PlaybackRateTests 18 18 0 0 18ms
✅ PlaybackTrackingRegressionTests 5 5 0 0 879ms
⚠️ PoolResponsivenessProbeTests 5 4 0 0 2.77s
✅ PositionPersistenceLogicTests 6 6 0 0 188ms
✅ PositionPersistenceTests 2 2 0 0 493ms
✅ PositionRestoreGapPolicyTests 11 11 0 0 156ms
✅ PositionSaveDryPolicyTests 19 19 0 0 135ms
✅ PositionSyncServiceTests 13 13 0 0 2.74s
✅ PositionSyncTests 5 5 0 0 25ms
✅ PositionWriterContractTests 6 6 0 0 549ms
✅ PostUpdateMigrationTests 5 5 0 0 117ms
✅ ProblemDocumentContractTests 4 4 0 0 69ms
✅ ProblemDocumentLoanExpiryTests 5 5 0 0 22ms
✅ ProblemDocumentTests 23 23 0 0 474ms
✅ ProblemReportEmailTests 11 11 0 0 162ms
✅ RatingCardMotionGateTests 5 5 0 0 4ms
✅ RatingEligibilityPolicyTests 17 17 0 0 348ms
✅ RatingEngagementTrackerTests 9 9 0 0 113ms
✅ RatingFeedbackPresenterTests 3 3 0 0 3ms
✅ RatingPromptPresenterTests 21 21 0 0 1.10s
✅ ReachabilityTests 10 10 0 0 296ms
✅ Reader2BookmarkContractTests 3 3 0 0 31ms
✅ Reader2PositionAdapterContractTests 4 3 0 1 262ms
✅ Reader2PositionResumeContractTests 3 3 0 0 167ms
✅ ReaderAccessibilityTests 7 7 0 0 264ms
✅ ReaderChromeToggleFadeTests 3 3 0 0 214ms
✅ ReaderEditingActionsTests 5 5 0 0 78ms
✅ ReaderErrorTests 5 5 0 0 5ms
✅ ReaderNavBarStateSyncTests 15 15 0 0 305ms
✅ ReaderNavBarVoiceOverTests 3 3 0 0 6ms
✅ ReaderPageOfFormatTests 3 3 0 0 5ms
✅ ReaderServicePDFRouteTests 3 3 0 0 5ms
✅ ReaderServiceRouteOwnershipTests 8 8 0 0 15ms
✅ ReaderServiceSyncTests 3 3 0 0 46ms
✅ ReaderThemeTests 24 24 0 0 66ms
✅ ReadingPositionTests 22 22 0 0 42ms
✅ RedirectHandlingIntegrationTests 4 4 0 0 112ms
✅ RedirectPolicyTests 9 9 0 0 366ms
✅ RegistryCompletenessTests 19 19 0 0 951ms
✅ RegistryDownloadServicingSeamTests 3 3 0 0 19ms
✅ RegistryFileRecoveryTests 23 23 0 0 283ms
✅ RegistryPositionOnlySaveTests 6 6 0 0 514ms
✅ RegistryTruncationRegressionTests 4 4 0 0 1.06s
✅ RelatedBooksServiceTests 7 7 0 0 331ms
✅ RemoteFeatureFlagsGapTests 4 4 0 0 10.07s
✅ RemoteFeatureFlagsSideLoadingTests 5 5 0 0 86ms
✅ RemoteFeatureFlagsTests 28 28 0 0 11.41s
✅ ResourcePropertiesLengthTests 3 3 0 0 1.34s
✅ RetryClassificationTests 17 17 0 0 27ms
✅ ReturnFlowTests 1 1 0 0 2ms
✅ ReturnReducerContractTests 16 16 0 0 93ms
✅ RightsManagementDetectionTests 5 5 0 0 166ms
✅ RightsManagementDispatchContractTests 8 8 0 0 42ms
✅ RightsManagementDispatcherTests 10 10 0 0 235ms
✅ RuntimeQuiescenceGateTests 11 10 0 1 2.24s
✅ RuntimeQuiescenceLintTests 5 5 0 0 1.69s
✅ SAMLCookieSyncTests 5 5 0 0 73ms
✅ SAMLLogoutCallbackDetectionTests 4 4 0 0 20ms
✅ SAMLLogoutLinkParsingTests 5 5 0 0 354ms
✅ SAMLLogoutURLTests 4 4 0 0 20ms
✅ SAMLPlusBiblioBoardExpirationTests 8 8 0 0 335ms
✅ SEMigrationsTests 6 6 0 0 84ms
✅ SamplePlayerErrorTests 5 5 0 0 13ms
✅ SampleTypeTests 8 8 0 0 12ms
✅ SceneDelegateTests 1 1 0 0 <1ms
✅ ScopedResetTests 9 9 0 0 207ms
✅ SearchAccessibilityTests 11 11 0 0 7.00s
✅ SearchFlowIntegrationTests 8 8 0 0 596ms
✅ SeekSliderHoldTests 20 20 0 0 313ms
✅ SettingsViewModelComputedPropertyTests 6 6 0 0 486ms
✅ SettingsViewModelEdgeCaseTests 7 7 0 0 134ms
✅ SettingsViewModelGapTests 1 1 0 0 5ms
✅ SettingsViewModelSyncTests 14 14 0 0 103ms
✅ SettingsViewModelTests 33 33 0 0 946ms
✅ SideloadBoundaryTests 6 6 0 0 538ms
✅ SideloadImportContractTests 1 1 0 0 420ms
✅ SideloadedBookManagerTests 17 17 0 0 1.23s
✅ SideloadedBookRegistryTests 14 14 0 0 220ms
✅ SideloadedLaneBridgeTests 6 6 0 0 49ms
✅ SideloadedLaneViewModelTests 7 7 0 0 68ms
✅ SignInCredentialSideEffectCharacterizationTests 6 6 0 0 410ms
✅ SignInFormPresentationTests 3 3 0 0 3ms
✅ SignInModalLifecycleTests 9 9 0 0 694ms
✅ SignInModalPredicateTests 3 3 0 0 9ms
✅ SignInModalSAMLOIDCTests 6 6 0 0 36ms
✅ SignInOAuthErrorPropagationTests 8 8 0 0 248ms
✅ SignInReadinessRaceCharacterizationTests 8 8 0 0 772ms
✅ SignInRequestServiceCharacterizationTests 11 11 0 0 490ms
✅ SignInStatePrecedenceCharacterizationTests 10 10 0 0 2.33s
✅ SignInToReadFlowIntegrationTests 5 5 0 0 767ms
✅ SignInTokenErrorCharacterizationTests 12 12 0 0 2.88s
✅ SignInWebSheetIntegrationTests 3 3 0 0 3.92s
✅ SignInWebSheetViewModelTests 31 31 0 0 584ms
✅ SignOutCacheClearingTests 3 3 0 0 39ms
✅ SingletonResetRegistryTests 5 5 0 0 16ms
✅ SkeletonTests 22 22 0 0 46ms
✅ StatusAnnouncementTests 22 22 0 0 666ms
✅ StopPositionSaveTests 2 2 0 0 6ms
✅ StoreTests 5 5 0 0 76ms
✅ StreamingReaderPresentationContractTests 1 1 0 0 6ms
✅ StreamingReaderProgressStoreTests 7 7 0 0 40ms
✅ StreamingReaderViewControllerScrollRestoreTests 12 12 0 0 342ms
✅ StreamingReaderViewControllerTitleTests 3 3 0 0 240ms
✅ StreamingReaderViewModelTests 9 9 0 0 173ms
✅ StringHTMLEntitiesTests 7 7 0 0 408ms
✅ String_NYPLAdditionsTests 4 4 0 0 9ms
✅ SupportSectionDecisionTests 5 5 0 0 7ms
✅ SyncConflictResolutionTests 3 3 0 0 2ms
✅ SyncDeletionGuardTests 5 5 0 0 7ms
✅ SyncDeletionRatioTests 6 6 0 0 88ms
✅ SyncPermissionTests 5 5 0 0 80ms
✅ TPPAccountAuthStateEnumTests 5 5 0 0 8ms
✅ TPPAccountListDataSourceTests 3 3 0 0 8ms
✅ TPPAdobeActivationSkipTests 6 6 0 0 204ms
✅ TPPAgeCheckCompletionTests 5 5 0 0 494ms
✅ TPPAgeCheckIsValidTests 5 5 0 0 214ms
✅ TPPAgeCheckStateMachineTests 4 4 0 0 616ms
✅ TPPAgeCheckTests 6 6 0 0 1.34s
✅ TPPAgeCheckVerifyDecisionTests 5 5 0 0 181ms
✅ TPPAlertUtilsTests 45 45 0 0 6.73s
✅ TPPAnnotationsHermeticTests 28 28 0 0 1.24s
✅ TPPAnnotationsOverrideTests 4 4 0 0 113ms
✅ TPPAnnotationsTests 29 29 0 0 843ms
✅ TPPAnnouncementManagerTests 3 3 0 0 6ms
✅ TPPAuthDocumentContractTests 3 3 0 0 24ms
✅ TPPBackgroundExecutorTests 3 3 0 0 52ms
✅ TPPBadgeImageGapTests 2 2 0 0 36ms
✅ TPPBaseReaderViewControllerInitialLocationTests 10 10 0 0 423ms
✅ TPPBasicAuthTests 13 13 0 0 15ms
✅ TPPBookAccessibilityLabelTests 8 8 0 0 169ms
✅ TPPBookAuthorCoverageTests 3 3 0 0 2ms
✅ TPPBookAuthorTests 6 6 0 0 36ms
✅ TPPBookBearerTokenTests 9 9 0 0 1.29s
✅ TPPBookButtonsStateTests 7 7 0 0 500ms
✅ TPPBookContentMetadataFilesHelperTests 9 9 0 0 16ms
✅ TPPBookContentTypeConverterStreamingHTMLTests 2 2 0 0 2ms
✅ TPPBookContentTypeConverterTests 4 4 0 0 9ms
✅ TPPBookContentTypeExtendedTests 4 4 0 0 22ms
✅ TPPBookContentTypeTests 14 14 0 0 8.01s
✅ TPPBookCoverCacheLookupTests 8 8 0 0 357ms
✅ TPPBookCoverRegistryTests 17 17 0 0 1.56s
✅ TPPBookCreationTests 7 7 0 0 209ms
✅ TPPBookExtensionsTests 21 21 0 0 328ms
✅ TPPBookIsDRMProtectedTests 9 9 0 0 216ms
✅ TPPBookLocationCoverageTests 7 7 0 0 162ms
✅ TPPBookLocationEdgeCaseTests 27 27 0 0 190ms
✅ TPPBookLocationKeyTests 3 3 0 0 6ms
✅ TPPBookLocationTests 11 11 0 0 37ms
✅ TPPBookModelGapTests 4 4 0 0 196ms
✅ TPPBookRegistryAccountCaptureContractTests 4 4 0 0 437ms
✅ TPPBookRegistryAsyncReadinessTests 3 3 0 0 82ms
✅ TPPBookRegistryAtomicWriteTests 7 7 0 0 864ms
✅ TPPBookRegistryBookRetrievalTests 7 7 0 0 169ms
✅ TPPBookRegistryBookmarkTests 7 7 0 0 290ms
✅ TPPBookRegistryCorruptedDataTests 5 5 0 0 3.23s
✅ TPPBookRegistryDataTests 4 4 0 0 823ms
✅ TPPBookRegistryDependencyTests 4 4 0 0 524ms
✅ TPPBookRegistryFacadeContractTests 6 6 0 0 449ms
✅ TPPBookRegistryFulfillmentIdTests 4 4 0 0 223ms
✅ TPPBookRegistryLargeCorpusTests 5 5 0 0 13.25s
✅ TPPBookRegistryLoadReentrancyTests 3 3 0 0 80ms
✅ TPPBookRegistryLocationTests 4 4 0 0 34ms
✅ TPPBookRegistryMigrationTests 16 16 0 0 472ms
✅ TPPBookRegistryMutationContractTests 10 10 0 0 3.22s
✅ TPPBookRegistryPersistenceTests 10 10 0 0 560ms
✅ TPPBookRegistryProcessingTests 2 2 0 0 7ms
✅ TPPBookRegistryPublisherTests 6 6 0 0 1.91s
✅ TPPBookRegistryRebuildRefusalContractTests 1 1 0 0 32ms
✅ TPPBookRegistryRecordPersistenceTests 3 3 0 0 17ms
✅ TPPBookRegistryRecordTests 10 10 0 0 929ms
✅ TPPBookRegistryStateConcurrencyTests 2 2 0 0 96ms
✅ TPPBookRegistryStateManagementTests 11 11 0 0 132ms
✅ TPPBookRegistrySyncContractTests 4 4 0 0 306ms
✅ TPPBookRegistryThreadSafetyTests 3 3 0 0 161ms
✅ TPPBookRegistryUpdateAndRemoveTests 1 1 0 0 3ms
✅ TPPBookRequiresAdobeDRMTests 6 6 0 0 896ms
✅ TPPBookSerializationTests 13 13 0 0 86ms
✅ TPPBookStateInitializationTests 5 5 0 0 141ms
✅ TPPBookStateTests 4 4 0 0 3ms
✅ TPPBookTests 98 98 0 0 3.01s
✅ TPPBookmarkDeletionLogTests 13 13 0 0 103ms
✅ TPPBookmarkFactoryInitTests 2 2 0 0 58ms
✅ TPPBookmarkFactoryServerAnnotationEdgeCaseTests 5 5 0 0 30ms
✅ TPPBookmarkFactoryTests 15 15 0 0 772ms
✅ TPPBookmarkR3ConversionTests 5 5 0 0 954ms
✅ TPPBookmarkR3LocationTests 13 13 0 0 403ms
✅ TPPBookmarkSpecTests 1 1 0 0 6ms
✅ TPPCachingTests 3 3 0 0 10ms
✅ TPPCapturedCredentialsTests 5 5 0 0 285ms
✅ TPPCirculationAnalyticsRequestShapeContractTests 2 2 0 0 23ms
✅ TPPConfigurationCustomRegistryTests 16 16 0 0 180ms
✅ TPPConfigurationTests 22 22 0 0 541ms
✅ TPPContentTypeTests 9 9 0 0 237ms
✅ TPPCredentialConcurrencyTests 3 3 0 0 274ms
✅ TPPCredentialIsolationE2ETests 5 5 0 0 2.16s
✅ TPPCredentialPersistenceTests 6 6 0 0 328ms
✅ TPPCredentialSnapshotCoherenceTests 3 3 0 0 209ms
✅ TPPCredentialSnapshotTests 8 8 0 0 128ms
✅ TPPCredentialsCoverageTests 9 9 0 0 20ms
✅ TPPCredentialsTests 26 26 0 0 1.16s
✅ TPPCrossLibrarySignOutTests 6 6 0 0 391ms
✅ TPPDRMAuthorizingMockTimeoutTests 3 3 0 0 686ms
✅ TPPDRMFailureCredentialPreservationTests 4 4 0 0 102ms
✅ TPPErrorLoggerTests 27 27 0 0 825ms
✅ TPPIdleSignOutRegressionTests 13 13 0 0 1.17s
✅ TPPJWKConversionTest 1 1 0 0 26ms
✅ TPPKeychainManagerTests 9 9 0 0 130ms
✅ TPPLastReadPositionPosterTests 15 15 0 0 637ms
✅ TPPLastReadPositionSynchronizerIntegrationTests 5 5 0 0 41ms
✅ TPPLastReadPositionSynchronizerTests 23 23 0 0 311ms
✅ TPPLastReadPositionSynchronizer_BehaviorDocumentationTests 5 5 0 0 49ms
✅ TPPLastReadPositionSynchronizer_BookLocationTests 9 9 0 0 14ms
✅ TPPLastReadPositionSynchronizer_ConcurrencyTests 3 3 0 0 30ms
✅ TPPLastReadPositionSynchronizer_NonIdentifyingDeviceTests 7 7 0 0 11ms
✅ TPPLastReadPositionSynchronizer_ReadiumBookmarkTests 9 9 0 0 90ms
✅ TPPLastReadPositionSynchronizer_SyncLogicTests 10 10 0 0 20ms
✅ TPPLastReadPositionSynchronizer_WriterDelegationTests 4 4 0 0 174ms
✅ TPPLoginNoActivationTests 3 3 0 0 104ms
✅ TPPMigrationManagerTests 17 17 0 0 1.37s
✅ TPPNetworkExecutorAPITests 14 14 0 0 14.78s
✅ TPPNetworkExecutorCancellationTests 6 6 0 0 2.39s
✅ TPPNetworkExecutorConcurrencyTests 4 4 0 0 216ms
✅ TPPNetworkExecutorStubbedTests 17 17 0 0 196ms
✅ TPPNetworkExecutorTests 3 3 0 0 7ms
✅ TPPNetworkResponderAuthCoordinatorTests 5 5 0 0 664ms
✅ TPPNetworkResponderRetryBufferTests 5 5 0 0 18ms
✅ TPPNetworkResponderSizeLimitTests 5 5 0 0 209ms
✅ TPPNetworkResponderTests 12 12 0 0 37ms
✅ TPPOPDSAcquisitionPathTests 5 5 0 0 38ms
✅ TPPOPDSEntryTests 5 5 0 0 12ms
✅ TPPOPDSFeedTests 3 3 0 0 96ms
✅ TPPOPDSGroupSwiftTests 3 3 0 0 6ms
✅ TPPOPDSLinkTests 7 7 0 0 61ms
✅ TPPOpenSearchDescriptionExpandedTests 10 10 0 0 21ms
✅ TPPOpenSearchDescriptionTests 1 1 0 0 2ms
✅ TPPPDFDocumentMetadataTests 15 15 0 0 417ms
✅ TPPPDFDocumentTests 8 8 0 0 124ms
✅ TPPPDFLocationCoverageTests 7 7 0 0 19ms
✅ TPPPDFLocationTests 10 10 0 0 57ms
✅ TPPPDFPageBookmarkTests 9 9 0 0 188ms
✅ TPPPDFPageTests 5 5 0 0 428ms
✅ TPPPDFReaderModeTests 6 6 0 0 5ms
✅ TPPPDFReaderSearchBindingTests 3 3 0 0 5ms
✅ TPPPerAccountIsolationTests 8 8 0 0 603ms
✅ TPPPreferredAuthSelectionTests 9 9 0 0 478ms
✅ TPPProblemDocumentCacheManagerTests 12 12 0 0 470ms
✅ TPPProblemDocumentTests 21 21 0 0 430ms
✅ TPPReaderAppearanceTests 4 4 0 0 215ms
✅ TPPReaderBlockNavigationTests 12 12 0 0 7.70s
✅ TPPReaderBookmarksBusinessLogicTests 12 12 0 0 529ms
✅ TPPReaderBookmarksReadinessTests 2 2 0 0 85ms
✅ TPPReaderFontTests 4 4 0 0 12ms
✅ TPPReaderFootnoteAccessibilityDOMTests 10 9 0 1 46.83s
✅ TPPReaderFootnoteAccessibilityTests 16 16 0 0 1.65s
✅ TPPReaderPageBreakLocatorTests 30 30 0 0 897ms
✅ TPPReaderPageListBusinessLogicTests 27 27 0 0 491ms
✅ TPPReaderPositionReportTests 10 10 0 0 46ms
✅ TPPReaderPositionsVCTOCTests 5 5 0 0 435ms
✅ TPPReaderPreferencesLoadTests 3 3 0 0 14ms
✅ TPPReaderSectionResolverTests 10 10 0 0 803ms
✅ TPPReaderSettingsTests 28 28 0 0 52ms
✅ TPPReaderTOCBusinessLogicTests 15 15 0 0 206ms
✅ TPPReaderTOCFlattenTests 2 2 0 0 22ms
✅ TPPReadiumBookmarkLocationMatchingTests 5 5 0 0 133ms
✅ TPPReadiumBookmarkTests 23 23 0 0 1.13s
✅ TPPReauthenticatorMockTests 2 2 0 0 2ms
✅ TPPReauthenticatorTests 4 4 0 0 17ms
✅ TPPReturnPromptHelperTests 5 5 0 0 163ms
✅ TPPSAMLCookieExpirationTests 7 7 0 0 47ms
✅ TPPSAMLFlowTests 10 10 0 0 1.02s
✅ TPPSAMLReauthFlowTests 2 2 0 0 93ms
✅ TPPSAMLRegressionTests 4 4 0 0 155ms
✅ TPPSAMLSignInTests 26 26 0 0 875ms
✅ TPPSAMLStateIsolationTests 4 4 0 0 326ms
✅ TPPSAMLStateMachineTests 6 6 0 0 139ms
✅ TPPSaveDRMCredentialsTests 4 4 0 0 148ms
✅ TPPSettingsTests 6 6 0 0 220ms
✅ TPPSignInAdobeSkipTests 14 14 0 0 586ms
✅ TPPSignInAuthStateTransitionTests 3 3 0 0 373ms
✅ TPPSignInBusinessLogicExtendedTests 59 59 0 0 2.25s
✅ TPPSignInBusinessLogicOAuthTests 11 11 0 0 274ms
✅ TPPSignInBusinessLogicSignOutTests 12 12 0 0 476ms
✅ TPPSignInBusinessLogicStateMachineTests 10 10 0 0 438ms
✅ TPPSignInBusinessLogicTests 32 32 0 0 2.53s
✅ TPPSignInBusinessLogicTokenFlowTests 3 3 0 0 182ms
✅ TPPSignInBusinessLogicValidationCallbackOrderTests 2 2 0 0 60ms
✅ TPPSignInCapabilitiesCharacterizationTests 14 14 0 0 435ms
✅ TPPSignInErrorHandlingTests 2 2 0 0 84ms
✅ TPPSignInProfileDocEdgeCaseTests 3 3 0 0 1.70s
✅ TPPSignedInStateProviderTests 3 3 0 0 3ms
✅ TPPUserAccountAuthStateTests 6 6 0 0 6ms
✅ TPPUserAccountConcurrencyTests 4 4 0 0 473ms
✅ TPPUserAccountGapTests 4 4 0 0 182ms
✅ TPPUserAccountIsolationLintTests 3 3 0 0 710ms
✅ TPPUserAccountTestFactoryTests 7 7 0 0 54ms
✅ TPPUserFriendlyErrorTests 11 11 0 0 40ms
✅ TPPUserNotificationsTests 10 10 0 0 66ms
✅ TPPXMLSwiftTests 16 16 0 0 43ms
✅ TPPXMLTests 3 3 0 0 8ms
✅ TabBarModernizationTests 8 8 0 0 120ms
✅ TaskProvenanceTests 7 7 0 0 55ms
✅ TearDownRequiredLintTests 7 7 0 0 3.11s
✅ TestAppContainerFactoryTests 5 5 0 0 20ms
✅ TestTargetCompilationConditionsTests 2 2 0 0 2ms
⚠️ TestTargetHermeticityRegressionTests 4 3 0 0 356ms
✅ TimeEntryTests 3 3 0 0 4ms
✅ TokenRefreshAndRetryQueueTests 10 10 0 0 1.86s
✅ TokenRefreshIntegrationTests 2 2 0 0 112ms
✅ TokenRefreshInterceptorAuthCoordinatorTests 8 8 0 0 255ms
✅ TokenRefreshInterceptorTests 24 24 0 0 898ms
✅ TokenRefreshOnForegroundTests 10 10 0 0 2.26s
✅ TokenRefreshTests 25 25 0 0 40ms
✅ TokenRefreshWatchdogTests 5 5 0 0 291ms
✅ TokenRequestCredentialGuardTests 13 13 0 0 541ms
✅ TokenRequestTests 11 11 0 0 62ms
✅ TokenResponseTests 21 21 0 0 173ms
✅ TriageBotKeyAdminTests 4 4 0 0 28ms
✅ TypographyPresetTests 21 21 0 0 200ms
✅ TypographyServiceTests 31 31 0 0 710ms
✅ TypographySettingsViewModelTests 27 27 0 0 1.32s
✅ UIAlertCACommitGuardTests 9 9 0 0 372ms
✅ UIColor_NYPLAdditionsTests 1 1 0 0 1ms
✅ URLBackupExclusionTests 3 3 0 0 261ms
✅ URLRequestExtensionsCoverageTests 3 3 0 0 3ms
✅ URLRequestExtensionsTests 11 11 0 0 141ms
✅ URLRequestNYPLAdditionsTests 11 11 0 0 41ms
✅ URLRequest_NYPLTests 1 1 0 0 4ms
✅ URLResponseAuthenticationTests 10 10 0 0 144ms
✅ URLSessionCredentialStorageTests 3 3 0 0 4ms
✅ URLSessionStubbingResetTests 2 2 0 0 51ms
✅ URLTypeTests 2 2 0 0 9ms
✅ UnifiedOPDSServiceStateMachineTests 2 2 0 0 180ms
✅ UserAccountPublisherAuthStateTests 5 5 0 0 27ms
✅ UserAccountPublisherTests 14 14 0 0 4.17s
✅ UserAccountValidationTests 11 11 0 0 392ms
✅ UserDefaultsIsolationLintTests 2 2 0 0 1.34s
✅ UserDefaultsLastLivePositionMarkerStoreTests 12 12 0 0 75ms
✅ UserProfileDocumentTests 13 13 0 0 1.50s
✅ UserRetryTrackerTests 10 10 0 0 91ms
✅ VerbatimTextFieldTests 9 9 0 0 119ms
✅ WebAuthPresentationAnchorTests 5 5 0 0 267ms
✅ XCTestCase_testUserDefaultsTests 3 3 0 0 34ms
✅ iPadOnMacRMSDKGuardTests 7 7 0 0 5ms

📊 Full interactive matrix: report

📊 Testing Coverage Breakdown

Unit Test Line Coverage (testable surfaces): 54.0%

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

Target Lines Covered
Palace.app 53.4%

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 not covered by any CI job. They are exercised only if a maintainer opts in locally (scripts/verify-pr.sh --simdrive --chaos), which needs a booted simulator and a QA harness that is not in this repo — so on a contributor's clone, and on every CI run, nothing exercises them.


🔗 Interactive HTML Report | CI Run Details

Counts above were produced by this CI run's xcresult parse — reproduce via the run link.

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

@mauricecarrier7 mauricecarrier7 removed the hold merge Not ready to merge label Oct 5, 2026
@mauricecarrier7
mauricecarrier7 merged commit 22664d7 into develop Oct 5, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge commit only Merge with a merge commit, never squash — squashing discards SHAs main must reconcile

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant