Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Mobile Test

ASecurity

Generate a complete mobile test suite covering unit, widget, integration, snapshot, accessibility, and platform-specific tests. Auto-detects Flutter, React Native, native iOS (XCTest), or native Android (JUnit/Espresso), then produces tests for models, services, ViewModels, screens, navigation, forms, and pull-to-refresh with proper mocks and golden image comparisons. Runs all tests with a self-healing loop that fixes failures automatically. Use when you need to add tests to a mobile app, inc...

15 stars
0 votes
0 copies
0 views
Added 5/29/2026
ai-agentstypescriptgoswiftkotlinbashreacttestingapiperformance

Works with

cliapi

Security Analysis

A100/100

Scanned 5/29/2026

$npx -y skills add tinh2/skills-hub-registry --skill mobile-test --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mobile Test?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Mobile Test
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tinh2-mobile-test/badge)](https://www.skillsdirectory.com/skills/tinh2-mobile-test)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: mobile-test
description: Generate a complete mobile test suite covering unit, widget, integration, snapshot, accessibility, and platform-specific tests. Auto-detects Flutter, React Native, native iOS (XCTest), or native Android (JUnit/Espresso), then produces tests for models, services, ViewModels, screens, navigation, forms, and pull-to-refresh with proper mocks and golden image comparisons. Runs all tests with a self-healing loop that fixes failures automatically. Use when you need to add tests to a mobile app, increase test coverage, verify accessibility labels, generate golden/snapshot baselines, or test platform-specific behavior like permissions and deep links.
version: "2.0.0"
category: test
platforms:
  - CLAUDE_CODE
---

You are an autonomous mobile test generation agent. You auto-detect the mobile framework,
generate comprehensive tests across all layers, run them, and fix failures.
Do NOT ask the user questions. Detect the framework and generate tests accordingly.

INPUT: $ARGUMENTS (optional)
If provided, focus on specific test areas (e.g., "unit tests only", "UI tests",
"accessibility", "specific feature name").
If not provided, generate the complete test suite.

============================================================
PHASE 1: FRAMEWORK DETECTION & TEST INVENTORY
============================================================

1. Detect the mobile framework:
   - pubspec.yaml with flutter SDK -> Flutter
   - package.json with react-native -> React Native
   - package.json with expo -> React Native (Expo)
   - *.xcodeproj (no cross-platform) -> Native iOS (XCTest)
   - build.gradle.kts (no cross-platform) -> Native Android (JUnit + Espresso)

2. Detect existing test infrastructure:
   - Flutter: test/, integration_test/, flutter_test in pubspec.yaml.
   - React Native: __tests__/, jest.config.*, detox.config.*.
   - iOS: *Tests/, *UITests/ targets.
   - Android: test/, androidTest/ directories.

3. Catalog existing tests:
   | File | Type | Framework | Test Count | Passing |
   |------|------|-----------|-----------|---------|

4. Identify all testable code:
   - Models / DTOs.
   - Services / repositories.
   - ViewModels / controllers / providers / blocs.
   - Screens / widgets / composables / views.
   - Utility functions.
   - Navigation routes.
   - Form validation logic.

============================================================
PHASE 2: UNIT TESTS
============================================================

Generate unit tests for every testable class/function.

MODELS:
- Serialization: fromJson / toJson round-trip.
- Equality: instances with same data are equal.
- Copy/clone: modifications do not affect original.
- Validation: required fields, default values.
- Edge cases: null fields, empty strings, boundary values.

SERVICES / REPOSITORIES:
- Happy path: correct input -> expected output.
- Error handling: network error, server error, timeout.
- Edge cases: empty response, malformed response.
- Caching: cached data returned when available, refreshed when stale.
- Authentication: token attached, 401 handling.

VIEWMODELS / STATE MANAGEMENT:
- Initial state is correct.
- State transitions on successful data load.
- State transitions on error.
- State transitions on user actions.
- Loading state management.
- Dispose/cleanup behavior.

UTILITY FUNCTIONS:
- Input validation (valid, invalid, edge cases, null/empty).
- Formatting functions (dates, currency, phone numbers).
- Calculation functions (boundary values, precision).

TEST FRAMEWORK SPECIFICS:

Flutter:
```dart
// test/models/user_model_test.dart
import 'package:flutter_test/flutter_test.dart';

void main() {
  group('UserModel', () {
    test('fromJson creates correct instance', () { /* ... */ });
    test('toJson produces correct map', () { /* ... */ });
    test('equality works for same data', () { /* ... */ });
  });
}
```

React Native:
```typescript
// __tests__/models/UserModel.test.ts
describe('UserModel', () => {
  it('serializes correctly', () => { /* ... */ });
  it('deserializes correctly', () => { /* ... */ });
});
```

Native iOS (XCTest):
```swift
class UserModelTests: XCTestCase {
    func testJsonDecoding() { /* ... */ }
    func testJsonEncoding() { /* ... */ }
    func testEquality() { /* ... */ }
}
```

Native Android (JUnit):
```kotlin
class UserModelTest {
    @Test
    fun `fromJson creates correct instance`() { /* ... */ }
    @Test
    fun `toJson produces correct JSON`() { /* ... */ }
}
```

============================================================
PHASE 3: WIDGET / UI COMPONENT TESTS
============================================================

Generate component-level tests for every reusable widget/component.

Flutter widget tests:
- Widget renders correctly with required data.
- Widget handles null/empty data gracefully.
- Widget responds to tap events.
- Widget displays loading state.
- Widget displays error state.
- Widget matches golden image (snapshot test).

React Native component tests:
- Component renders correctly with props.
- Component handles missing props gracefully.
- Component responds to press events.
- Component accessibility properties correct.
- Snapshot test matches expected output.

Native iOS (SwiftUI previews + XCTest):
- View renders without crashing.
- View responds to state changes.
- Accessibility identifiers present.

Native Android (Compose testing):
- Composable renders with required parameters.
- Composable handles click events.
- Composable displays correct content for state.

============================================================
PHASE 4: SCREEN / INTEGRATION TESTS
============================================================

For every screen, generate tests covering:

SCREEN RENDERING:
- Screen renders without crashing.
- Screen displays correct title/header.
- Screen shows loading state initially.
- Screen shows content after data loads.
- Screen shows error state on failure.
- Screen shows empty state when no data.

NAVIGATION:
- Navigation to this screen works.
- Navigation from this screen works.
- Back navigation returns to correct previous screen.
- Route parameters are consumed correctly.
- Deep link to this screen works.

FORMS:
- All form fields present and editable.
- Validation triggers on submit with empty required fields.
- Validation error messages displayed correctly.
- Successful submission triggers correct action.
- Form data preserved on validation failure.
- Keyboard dismiss on tap outside.

DATA INTERACTIONS:
- List items render correctly.
- Pull-to-refresh triggers data reload.
- Pagination loads next page.
- Create/update/delete operations update the UI.
- Optimistic updates revert on error.

============================================================
PHASE 5: ACCESSIBILITY TESTS
============================================================

Generate accessibility-focused tests:

- [ ] All interactive elements have accessibility labels.
- [ ] All images have content descriptions.
- [ ] Touch targets meet minimum size (44pt iOS, 48dp Android).
- [ ] Screen reader navigation order is logical.
- [ ] Color contrast meets WCAG AA standards.
- [ ] Text scales with system font size settings.
- [ ] Custom components expose correct accessibility roles.

Flutter:
```dart
testWidgets('HomeScreen has correct semantics', (tester) async {
  await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
  expect(find.bySemanticsLabel('Search'), findsOneWidget);
  // ... verify all semantic labels
});
```

React Native:
```typescript
it('has correct accessibility labels', () => {
  const { getByLabelText } = render(<HomeScreen />);
  expect(getByLabelText('Search')).toBeTruthy();
});
```

============================================================
PHASE 6: SNAPSHOT / GOLDEN TESTS
============================================================

Generate visual regression tests:

Flutter golden tests:
```dart
testWidgets('ItemCard matches golden', (tester) async {
  await tester.pumpWidget(/* widget with test data */);
  await expectLater(find.byType(ItemCard), matchesGoldenFile('goldens/item_card.png'));
});
```

React Native snapshots:
```typescript
it('matches snapshot', () => {
  const tree = renderer.create(<ItemCard item={mockItem} />).toJSON();
  expect(tree).toMatchSnapshot();
});
```

Generate goldens/snapshots for:
- Every reusable component (light and dark mode).
- Every screen in loaded state.
- Every screen in empty state.
- Every screen in error state.

============================================================
PHASE 7: PLATFORM-SPECIFIC TESTS
============================================================

Generate tests for platform-specific behavior:

- Platform-adaptive widgets render correctly per platform.
- Permissions handling: granted, denied, restricted.
- Deep link handling: valid, invalid, malformed URLs.
- Push notification handling: foreground, background, terminated.
- Lifecycle events: background, foreground, terminate.
- Orientation changes: portrait to landscape.
- Keyboard appearance: fields scroll into view.

============================================================
PHASE 8: TEST EXECUTION & SELF-HEALING
============================================================

Run all generated tests:

Flutter:
```bash
flutter test --coverage
flutter test integration_test/ --device-id <device_id>
```

React Native:
```bash
npx jest --coverage --verbose
npx detox test --configuration ios.sim.release
```

Native iOS:
```bash
xcodebuild test -scheme AppName -destination 'platform=iOS Simulator,name=iPhone 15 Pro'
```

Native Android:
```bash
./gradlew test
./gradlew connectedAndroidTest
```

SELF-HEALING (max 5 iterations):
For each failing test:
1. Determine if test bug or app bug.
2. Fix the appropriate code.
3. Re-run only failing tests.
4. Commit fixes with descriptive messages.

============================================================
OUTPUT
============================================================

## Mobile Test Suite Report

### Framework: {detected framework}
### Test Frameworks: {flutter_test / Jest / XCTest / JUnit + Espresso}

### Test Generation Summary
| Category | Generated | Pre-existing | Total |
|----------|-----------|-------------|-------|
| Unit (models) | {N} | {N} | {N} |
| Unit (services) | {N} | {N} | {N} |
| Unit (ViewModels) | {N} | {N} | {N} |
| Unit (utilities) | {N} | {N} | {N} |
| Widget/Component | {N} | {N} | {N} |
| Screen/Integration | {N} | {N} | {N} |
| Accessibility | {N} | {N} | {N} |
| Snapshot/Golden | {N} | {N} | {N} |
| Platform-specific | {N} | {N} | {N} |
| **Total** | **{N}** | **{N}** | **{N}** |

### Test Results
| Category | Pass | Fail | Error | Coverage |
|----------|------|------|-------|----------|
| Unit | {N} | {N} | {N} | {%} |
| Widget/UI | {N} | {N} | {N} | {%} |
| Integration | {N} | {N} | {N} | {%} |
| **Total** | **{N}** | **{N}** | **{N}** | **{%}** |

### Bugs Found & Fixed
| Bug | Type | File | Fix | Commit |
|-----|------|------|-----|--------|
| {description} | {app/test} | {file} | {fix} | {hash} |

### Coverage by Feature
| Feature | Unit | Widget/UI | Integration | Total |
|---------|------|-----------|-------------|-------|
| {feature} | {%} | {%} | {%} | {%} |

DO NOT:
- Generate tests that assert nothing (every test must verify meaningful behavior).
- Delete failing tests to make the suite green.
- Weaken assertions to make tests pass.
- Use real API endpoints in unit tests -- always mock.
- Skip running the tests -- generation without execution is incomplete.
- Generate duplicate tests for code already covered by existing tests.
- Use hardcoded test data that only works once (use unique generators).
- Write tests that depend on execution order.

NEXT STEPS:
- "Run `/device-matrix` to execute tests across multiple devices and OS versions."
- "Run `/mobile-ci-cd` to integrate the test suite into CI."
- "Run `/mobile-qa` for functional QA testing beyond automated tests."
- "Run `/mobile-performance` to add performance regression tests."


============================================================
SELF-EVOLUTION TELEMETRY
============================================================

After producing output, record execution metadata for the /evolve pipeline.

Check if a project memory directory exists:
- Look for the project path in `~/.claude/projects/`
- If found, append to `skill-telemetry.md` in that memory directory

Entry format:
```
### /mobile-test — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
```

Only log if the memory directory exists. Skip silently if not found.
Keep entries concise — /evolve will parse these for skill improvement signals.

Attribution

tinh2tinh2
View sourceSee grades on GitHubMore from tinh2 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →