Skip to content

iOS tests: registry/deep-link guard suite + parity-manifest.yml + register orphaned SketchfabAssetResolver+Tests.swift #2801

Description

@ThomasGorisse

Part of #2798.

Objective

Three deliverables in one lot, all closing the same gap (0 iOS registry/deep-link guard tests today, vs. Android's guard suite inside its 284 @Test):

(a) Register the orphaned test file. samples/ios-demo/SceneViewDemo/Services/SketchfabAssetResolver+Tests.swift is confirmed orphaned from samples/ios-demo/SceneViewDemo.xcodeproj/project.pbxprojgrep -c "SketchfabAssetResolver+Tests" project.pbxproj returns 0 (vs. 4 for the properly-wired SketchfabService+Tests.swift and AppStoreUpdaterTests.swift). It carries 17 test methods across 2 XCTestCase classes (SampleAssetsTests: 11 methods, SketchfabAssetResolverTests: 6 methods) that have never compiled or run. Add it to the test target's PBXSourcesBuildPhase (and PBXFileReference/PBXBuildFile entries) in the pbxproj.

(b) Guard-test suite. Mirror the intent of Android's registry-guard tests (DemoRegistryIntegrityTest, samples/android-demo/src/testDebug/java/io/github/sceneview/demo/DemoHostRoutableTest.kt) in XCTest: id uniqueness, kebab-case format, every id in allowedIds is actually routable, every alias resolves to a real target. Use the repo's existing #if DEBUG in-target test pattern.

(c) parity-manifest.yml + CI check. A committed manifest (id → expected iOS status: working / stub / android-only + one-line reason) and a new check-demo-id-parity.sh, wired into ci.ymlrepo-hygiene (ubuntu runner, blocking, zero macOS cost) — diffs Android's 52 canonical ids against iOS's registry + the manifest and fails if either drifts out of sync.

Files

  • samples/ios-demo/SceneViewDemo.xcodeproj/project.pbxproj — register the orphaned test file
  • samples/ios-demo/SceneViewDemo/Services/SketchfabAssetResolver+Tests.swift (17 tests, currently dead)
  • New: samples/ios-demo/SceneViewDemoTests/DemoRegistryGuardTests.swift (or similar — mirrors Android's guard-test intent)
  • New: parity-manifest.yml (repo root or samples/ios-demo/ — implementer's call, document the choice)
  • New: .claude/scripts/check-demo-id-parity.sh
  • .github/workflows/ci.yml — wire the new script into the repo-hygiene job

Dependencies

  • Depends on L0.2 — the guard suite tests the generated allowedIds/destination(for:) surface; writing it against the old hand-maintained registry would mean rewriting it again next PR.
  • Blocks nothing directly, but is a prerequisite in spirit for every subsequent porting PR (Phase 2+) — it's what makes the #2769 drift class structurally impossible going forward.

Done criteria (measurable)

  • SketchfabAssetResolver+Tests.swift's 17 test methods run and pass in xcodebuild test
  • iOS test count increases from the current baseline to ≥70 total, including the new guard suite
  • check-demo-id-parity.sh exits non-zero when a demo is added to Android's GeneratedDemos.all without a corresponding iOS registry entry or manifest line (verify with a throwaway local repro, not just code review)
  • parity-manifest.yml has one entry per Android canonical id (52 rows) with a status + reason for every non-working entry
  • ci.ymlrepo-hygiene is red on a deliberately-introduced drift, green otherwise — confirm both directions

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ios-parityiOS demo catalog parity with Android (2026-07 initiative)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions