Agent Skills: iOS Testing Best Practices

Testing practices for iOS 26 / Swift 6.2 clinic modular MVVM-C applications. Covers unit/UI/snapshot testing, protocol-based mocks, async actor isolation, and dependency-injected test architecture aligned with Domain protocols, App-target composition, and Data-owned I/O boundaries. Use when writing, reviewing, or refactoring tests for ios-* and swift-* clinic modules.

UncategorizedID: pproenca/dot-skills/ios-testing

Install this agent skill to your local

pnpm dlx add-skill https://github.com/pproenca/dot-skills/tree/HEAD/skills/.experimental/ios-testing

Skill Files

Browse the full folder contents for ios-testing.

Download Skill

Loading file tree…

skills/.experimental/ios-testing/SKILL.md

Skill Metadata

Name
ios-testing
Description
Testing practices for iOS 26 / Swift 6.2 clinic modular MVVM-C applications. Covers unit/UI/snapshot testing, protocol-based mocks, async actor isolation, and dependency-injected test architecture aligned with Domain protocols, App-target composition, and Data-owned I/O boundaries. Use when writing, reviewing, or refactoring tests for ios-* and swift-* clinic modules.

iOS Testing Best Practices

Comprehensive testing guide for iOS and Swift applications, written at principal engineer level. Contains 44 rules across 8 categories, prioritized by impact to guide test architecture decisions, test authoring patterns, and CI infrastructure.

Clinic Architecture Contract (iOS 26 / Swift 6.2)

All guidance in this skill assumes the clinic modular MVVM-C architecture:

  • Feature modules import Domain + DesignSystem only (never Data, never sibling features)
  • App target is the convergence point and owns DependencyContainer, concrete coordinators, and Route Shell wiring
  • Domain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contracts
  • Data owns SwiftData/network/sync/retry/background I/O and implements Domain protocols
  • Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes
  • ViewModels call repository protocols directly (no default use-case/interactor layer)

When to Apply

Reference these guidelines when:

  • Writing new unit tests or UI tests for iOS apps
  • Designing testable architecture with dependency injection
  • Testing async/await, actors, and Combine publishers
  • Setting up snapshot testing or visual regression suites
  • Configuring CI pipelines, test plans, and parallel execution

Rule Categories by Priority

| Priority | Category | Impact | Prefix | |----------|----------|--------|--------| | 1 | Test Architecture & Testability | CRITICAL | arch- | | 2 | Unit Testing Fundamentals | CRITICAL | unit- | | 3 | Test Doubles & Isolation | HIGH | mock- | | 4 | Async & Concurrency Testing | HIGH | async- | | 5 | SwiftUI Testing | MEDIUM-HIGH | swiftui- | | 6 | UI & Acceptance Testing | MEDIUM | ui- | | 7 | Snapshot & Visual Testing | MEDIUM | snap- | | 8 | Test Reliability & CI | LOW-MEDIUM | ci- |

Quick Reference

1. Test Architecture & Testability (CRITICAL)

2. Unit Testing Fundamentals (CRITICAL)

3. Test Doubles & Isolation (HIGH)

4. Async & Concurrency Testing (HIGH)

5. SwiftUI Testing (MEDIUM-HIGH)

6. UI & Acceptance Testing (MEDIUM)

7. Snapshot & Visual Testing (MEDIUM)

8. Test Reliability & CI (LOW-MEDIUM)

How to Use

Read individual reference files for detailed explanations and code examples:

Reference Files

| File | Description | |------|-------------| | references/_sections.md | Category definitions and ordering | | assets/templates/_template.md | Template for new rules | | metadata.json | Version and reference information |