Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XCRSControlKit

XCRSControlKit is the shared Swift package contract for black-box automation of Apple platforms. It provides stable target, capability, and request models that can be used by native test runners and external automation clients.

The package is intentionally transport-neutral. Platform runners remain separate Xcode projects because XCTest and UI testing require platform-specific schemes, host applications, simulator destinations, signing, and entitlements.

Supported platforms

  • iOS and iPadOS
  • tvOS
  • watchOS
  • visionOS
  • macOS

Installation

Add the package URL to an Xcode project or Swift package:

dependencies: [
    .package(url: "https://github.com/ondeinference/xcrs-controlkit.git", from: "1.0.0")
]

Then import the library:

import XCRSControlKit

let capabilities = XCRSControlKitCapabilities.standard(for: .tvOS)
if capabilities.supports(.remoteButtons) {
    // Connect a tvOS runner and send remote-button requests.
}

Runner projects

Runner implementations belong outside the Swift package target. All platforms share one Xcode project generated with XcodeGen:

Runners/
├── project.yml                     # XcodeGen spec
├── XCRSControlKitRunner.xcodeproj  # one project, per-platform targets/schemes
├── Shared/                         # transport + RPC server
├── iOS/                            # iOS / iPadOS host app
├── tvOS/                           # tvOS host app
├── visionOS/                       # visionOS host app
├── macOS/                          # macOS host app
└── watchOS/                        # watchOS host app

Each platform gets its own application and UI-test targets and a matching scheme (ControlKit-iOS, ControlKit-tvOS, ControlKit-visionOS, ControlKit-macOS, ControlKit-watchOS) while importing XCRSControlKit and sharing the transport. See Runners/README.md.

Status

The package provides the public cross-platform contract. Native ControlKit runners currently support iOS, iPadOS, tvOS, visionOS, macOS, and watchOS.

License

XCRSControlKit is available under the Apache License, Version 2.0.