Skip to content

test(apple): share snapshot classification conformance cases across producers #4052

Closed

Description

@thymikee

Parent: #4045

Purpose

Bridge trait-based tab/text-input/focused/selected classification is repeatedly aligned to XCTest. Existing bridge tests alone do not independently establish cross-producer semantic parity; collapsed-tab geometry already demonstrates shared-fixture use.

Owner and scope

Shared fixture owner plus packages/platform-apple/src/snapshot-source/tree tests and provider-limrun trait classification/adaptation tests. Swift runner participates only if an existing pure function already consumes equivalent fixture semantics.

Required behavior

Add bounded independent expected classification/state cases for the AX bridge and Limrun, which classify from traits. Identify supported producer inputs and mark unsupported/non-applicable rows. XCTest gets element types from XCUIElement; mark trait-classification rows runner:not-applicable and retain live conformance as the authority for XCTest semantics. Only reuse or extend an existing pure Swift fixture consumer where its semantics actually apply. No test-only production exports, synthetic XCTest parity or new conformance framework.

API or evidence example

Corpus rows may have producer-specific raw inputs plus independent normalized expected role/state; they must not compute expected results with the tested implementation.

Observable completion

  • Shared independent expected cases cover recent tab/text-entry semantics plus nearest negatives at actual trait-based producer seams.
  • Every row names its applicable backends; XCTest trait classification is not claimed as pure fixture parity.
  • No public behavior change, fabricated raw-input equivalence or production test-only seam.
  • If a pure Swift function changes, its discovery/build requirements are met; otherwise this task requires no new native build or device lane.

Dependencies and sequencing

Blocked by: none.

Validation

Focused bridge and Limrun TypeScript suites and existing fixture integrity. Native selection/build only if native pure code is touched. Live XCTest semantics stay with existing live conformance; do not substitute fixture results for live evidence.

Base audit SHA: 144bd59890277fd4717995588ad817597c9d6552. Re-read the issue and all Decision: comments before work. Read applicable AGENTS.md routes. Keep one owner boundary per PR. Independent review and serialized exact-head validation are coordinated by the umbrella orchestrator.

Activity

  1. thymikee commented on Oct 29, 2026

    @thymikee
    MemberAuthor

    Decision: accept the three fixture review findings at 3b8a3bc13b. Corrected at 0cee693486f2b5e59e69dec2b2d05c622c5a86a8: each producer input identifies captured versus rule basis; description says expected fields pin producer rules and captured words do not establish live XCTest parity. Limrun has its own fact labels, including TabButton collapsed-bar candidacy rather than bridge type override. Bridge semantics now run per row, separate from applicability metadata. Added cheap nearest negatives for search/secure bits without text entry. No production or Swift edits. Parent focused4files /103tests pass, plus lint/typecheck/full format. This shared named corpus is the value; existing detailed tests were retained and applicability metadata is not counted as semantic evidence. Exact validation and any selected native-lane status remain pending.

  2. thymikee commented on Oct 29, 2026

    @thymikee
    MemberAuthor

    Current state: PR #4073 is published at 0cee693486f2b5e59e69dec2b2d05c622c5a86a8. All three review corrections are committed. Four focused suites passed 103 tests. Exact-head affected validation passed all runnable stages: format, lint, typecheck, layering, Fallow, related tests and full unit; receipt .tmp/validation/run-v6NGvL/receipt.json, exactCommit: true, merge base 144bd59890. Native lanes are selected by the fixture prefix and skipped locally as GitHub-authoritative. Coverage and other skipped lanes remain CI obligations. No production or Swift changes, no live XCTest parity or mutation proof is claimed.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions