Skip to content

fix(record): validate macOS runner stop and finalized video #1249

Description

@thymikee

Problem

The macOS recording backend uses the same runner recordStop flow as physical iOS, but currently ignores the stop outcome and proceeds without validating the finalized local video.

PR #1238 makes the physical-iOS backend fail when either:

  • the runner reports recordStop did not succeed, or
  • the copied MP4 is not stable/playable.

The macOS backend still calls stopRunnerRecordingBestEffort without consuming its boolean result and does not run waitForStableFile / isPlayableVideo before overlay processing and artifact publication. This can report success for a failed runner stop or an invalid MP4.

Scope

Bring the macOS runner recording backend to behavioral parity while preserving the existing RecordingBackend.stop seam. Avoid forcing a universal cross-platform finalization abstraction: simulator, Android, physical iOS, and macOS materialize recordings differently.

Acceptance criteria

  • A macOS runner recordStop failure returns COMMAND_FAILED.
  • A stable, playable local MP4 is required before overlay processing or artifact publication.
  • Failure clears recording session state and publishes no artifact.
  • Successful macOS recordings retain current overlay and artifact behavior.
  • Provider-level coverage exercises success, runner-stop failure, and invalid-video outcomes through the production route.
  • Live macOS verification confirms the finalized artifact is playable.

Context

Follow-up discovered while reviewing and tightening #1238. The physical-iOS implementation is intentionally backend-specific; this issue closes the remaining consistency gap for the other Apple runner recording backend.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions