Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pproenca avatar

Ios Testing

  • 217 installs
  • 191 repo stars
  • Updated July 24, 2026
  • pproenca/dot-skills

ios-testing: A skill for development. This provides functionality for development workflows.

Key points

  • ios-testing

Ios Testing by the numbers

  • 217 all-time installs (skills.sh)
  • +6 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,808 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pproenca/dot-skills --skill ios-testing

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs217
repo stars191
Last updatedJuly 24, 2026
Repositorypproenca/dot-skills

How do I use ios-testing for development tasks?

Use ios-testing for development tasks

Who is it for?

Best when you're working on backend & apis and need structured help with ios-testing.

Skip if: Teams with no backend & apis needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to use ios-testing for development tasks, or when ios-testing: a skill for development. this provides functionality for development workflows.

What you get

Structured output aligned to ios-testing: ios-testing.

Files

SKILL.mdMarkdownGitHub ↗

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

PriorityCategoryImpactPrefix
1Test Architecture & TestabilityCRITICALarch-
2Unit Testing FundamentalsCRITICALunit-
3Test Doubles & IsolationHIGHmock-
4Async & Concurrency TestingHIGHasync-
5SwiftUI TestingMEDIUM-HIGHswiftui-
6UI & Acceptance TestingMEDIUMui-
7Snapshot & Visual TestingMEDIUMsnap-
8Test Reliability & CILOW-MEDIUMci-

Quick Reference

1. Test Architecture & Testability (CRITICAL)

  • `arch-protocol-dependencies` - Depend on protocols, not concrete types
  • `arch-constructor-injection` - Use constructor injection over service locators
  • `arch-test-target-separation` - Separate unit and UI test targets
  • `arch-testable-import` - Use @testable import sparingly
  • `arch-single-responsibility-tests` - One assertion concept per test
  • `arch-arrange-act-assert` - Structure tests as Arrange-Act-Assert

2. Unit Testing Fundamentals (CRITICAL)

  • `unit-swift-testing-framework` - Use Swift Testing over XCTest for new tests
  • `unit-parameterized-tests` - Use parameterized tests for input variations
  • `unit-descriptive-test-names` - Name tests after the behavior they verify
  • `unit-expect-over-assert` - Use #expect and #require over XCTAssert
  • `unit-require-preconditions` - Use #require for test preconditions
  • `unit-test-suites` - Organize related tests into suites
  • `unit-test-tags` - Use tags to categorize cross-cutting tests

3. Test Doubles & Isolation (HIGH)

  • `mock-protocol-based-mocks` - Create mocks from protocols, not subclasses
  • `mock-spy-for-verification` - Use spies to verify interactions
  • `mock-stub-return-values` - Use stubs for deterministic return values
  • `mock-avoid-over-mocking` - Avoid mocking value types and simple logic
  • `mock-fake-for-integration` - Use in-memory fakes for integration tests
  • `mock-dependency-container` - Use a dependency container for test configuration

4. Async & Concurrency Testing (HIGH)

  • `async-await-directly` - Await async functions directly in tests
  • `async-confirmation` - Use confirmation() for callback-based APIs
  • `async-mainactor-isolation` - Test MainActor-isolated code on MainActor
  • `async-actor-testing` - Test actor state through async interface
  • `async-task-cancellation` - Test task cancellation paths explicitly

5. SwiftUI Testing (MEDIUM-HIGH)

  • `swiftui-test-observable-models` - Test @Observable models as plain objects
  • `swiftui-environment-injection` - Inject environment dependencies for tests
  • `swiftui-preview-as-test` - Use previews as visual smoke tests
  • `swiftui-view-model-extraction` - Extract logic from views into testable models
  • `swiftui-binding-testing` - Test binding behavior with @Bindable

6. UI & Acceptance Testing (MEDIUM)

  • `ui-accessibility-identifiers` - Use accessibility identifiers for element queries
  • `ui-page-object-pattern` - Encapsulate screens in page objects
  • `ui-launch-arguments` - Configure test state via launch arguments
  • `ui-wait-for-elements` - Wait for elements instead of using sleep()
  • `ui-test-user-journeys` - Test complete user journeys, not individual screens
  • `ui-reset-state-between-tests` - Reset app state between UI tests

7. Snapshot & Visual Testing (MEDIUM)

  • `snap-swift-snapshot-testing` - Use swift-snapshot-testing for visual regression
  • `snap-device-matrix` - Snapshot across device sizes and traits
  • `snap-named-references` - Use named snapshot references for clarity
  • `snap-inline-snapshots` - Use inline snapshots for non-image assertions

8. Test Reliability & CI (LOW-MEDIUM)

  • `ci-test-plans` - Use Xcode Test Plans for environment configurations
  • `ci-parallel-execution` - Enable parallel test execution
  • `ci-flaky-test-quarantine` - Quarantine flaky tests instead of disabling them
  • `ci-deterministic-test-data` - Use deterministic test data over random generation
  • `ci-coverage-thresholds` - Set coverage thresholds for critical paths

How to Use

Read individual reference files for detailed explanations and code examples:

  • Section definitions - Category structure and impact levels
  • Rule template - Template for adding new rules

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Related skills

FAQ

What does ios-testing do?

ios-testing: A skill for development. This provides functionality for development workflows.

When should I use ios-testing?

When you need to use ios-testing for development tasks, or when ios-testing: a skill for development. this provides functionality for development workflows.

What are the main capabilities?

ios-testing.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.