Skip to content

NeilMuss/openplayt-ios

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

openplayt-ios

Fast Core Tests (No Simulator)

For pure playback domain/use-case tests, run:

swift test --package-path PlaytrCore

Use simulator/Xcode tests only for iOS integration coverage.

Now Playing QA Checklist

  • Tap Play in album view and confirm the full-screen Now Playing sheet appears.
  • Verify Play/Pause toggles playback from the sheet.
  • Verify Next and Previous switch tracks.
  • Confirm progress/time updates while playback is active.
  • Dismiss with X and confirm playback continues.

Fast Test Loop (Unit + Simulator)

Use this loop for quick iteration on one test or one test class. It avoids rebuilding on every run and skips UI tests by default.

1) Boot one simulator and keep only one running

xcrun simctl shutdown all
xcrun simctl boot "iPhone 16"
xcrun simctl bootstatus "iPhone 16" -b

2) Build for testing once

xcodebuild \
  -project Playtr/Playtr.xcodeproj \
  -scheme Playtr \
  -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' \
  -derivedDataPath /tmp/PlaytrDD-Fast \
  build-for-testing

3) Re-run one test quickly (no rebuild)

xcodebuild \
  -project Playtr/Playtr.xcodeproj \
  -scheme Playtr \
  -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' \
  -derivedDataPath /tmp/PlaytrDD-Fast \
  test-without-building \
  -only-testing:PlaytrTests/PlaytrTests/testAlbumPlaybackStateReducerTransitions

4) Re-run one test class quickly

xcodebuild \
  -project Playtr/Playtr.xcodeproj \
  -scheme Playtr \
  -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' \
  -derivedDataPath /tmp/PlaytrDD-Fast \
  test-without-building \
  -only-testing:PlaytrTests/PlaytrTests

5) Full suite (only when needed)

xcodebuild \
  -project Playtr/Playtr.xcodeproj \
  -scheme Playtr \
  -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.5' \
  -derivedDataPath /tmp/PlaytrDD-Fast \
  test

Tight-loop speed note

For local iteration, disable expensive diagnostics in the active scheme's Test action:

  • Address Sanitizer
  • Thread Sanitizer
  • Undefined Behavior Sanitizer
  • Main Thread Checker (if not needed for your current change)

Re-enable them before broader QA or release validation.

CI TestFlight Upload (GitHub Actions + Fastlane)

This repo includes a minimal CI pipeline that builds Playtr and uploads to TestFlight from GitHub-hosted macOS runners. It does not depend on local Xcode provisioning access.

What was added

  • Workflow: .github/workflows/testflight.yml
  • Fastlane lane: fastlane/Fastfile (beta)
  • Signing config: fastlane/Matchfile
  • Ruby deps: Gemfile

Required GitHub Secrets

Add these in GitHub: Settings > Secrets and variables > Actions > New repository secret

  • ASC_ISSUER_ID: App Store Connect API key issuer ID
  • ASC_KEY_ID: App Store Connect API key ID
  • ASC_PRIVATE_KEY: full contents of the .p8 key file
  • MATCH_PASSWORD: encryption password for the match signing repo
  • MATCH_GIT_URL: private Git URL for match cert/profile storage (for example, a private GitHub repo URL)
  • MATCH_GIT_BASIC_AUTHORIZATION: base64 of username:token for access to the private match repo

Create MATCH_GIT_BASIC_AUTHORIZATION with:

echo -n 'USERNAME:TOKEN' | base64

Match defaults to branch main. If you need a different branch, set MATCH_GIT_BRANCH in the workflow environment.

Create App Store Connect API Key

  1. In App Store Connect, open Users and Access > Integrations > App Store Connect API.
  2. Create a key with access that allows TestFlight uploads and cert/profile management.
  3. Save:
  • Issuer ID
  • Key ID
  • downloaded .p8 private key content (store as ASC_PRIVATE_KEY secret).

Signing strategy (CI-managed via match)

This pipeline uses fastlane match with a private Git repo as the source of truth for certificates and provisioning profiles.

One-time bootstrap:

  1. Create a private repo for match storage.
  2. Add all required secrets above.
  3. Run the workflow manually (Actions > TestFlight Upload > Run workflow) with:
  • match_readonly = false This allows CI to create/import signing assets into the match repo if missing.
  1. After bootstrap succeeds, run with match_readonly = true (default) for normal operation.

Manual upload trigger

  1. Open GitHub Actions tab.
  2. Select TestFlight Upload.
  3. Click Run workflow.
  4. Optionally set changelog.

Automatic uploads on push

The workflow also triggers on push to main.

How to verify

  1. Confirm workflow run is green in GitHub Actions.
  2. In App Store Connect, open Apps > Playtr > TestFlight.
  3. Confirm a new build appears (processing may take a few minutes).

About

iOS player for Playt albums

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published