Skip to content
cccskills
FreePublished on GitHub

mobile-manual-testing

Use when the task touches a mobile app - the device flow with the mobile_* tools, confirming the installed build is the task's, and what to report when no device is attached

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md4.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Mobile Manual Testing

Overview

A mobile task is verified from the outside like any other: you run something and observe what it does. The mobile_* tools are registered only when a device is actually attached. With them, the device flow below is mandatory. Without them, use the build+API ceiling further down — and be exact in your report about what sits above that ceiling.

Never approve a criterion because the code looks right. An untestable criterion is reported, not passed.

1. Is a device here?

Check your tool list for mobile_launch_app. If it's there, a real device is attached and the device flow is not optional.

2. Confirm the build is the task's

mobile_launch_app installs the deploy target's registered app_url (default env=stage) — not automatically this task's branch. Before launching, check list_deployments / get_pipeline_status shows the stage build was produced from this task's PR head (the stage deploy triggers asynchronously when the task enters ready_for_qa). If it doesn't match yet, wait for it rather than testing the previous build; if it never arrives, report that instead of guessing.

3. Device flow

mobile_launch_app (installs the confirmed build and takes the device) → mobile_wait_for → mobile_tap/mobile_type_text/mobile_swipe → mobile_read_ui for state a picture cannot show → mobile_screenshot per criterion. For every UI criterion, capture the device matrix: mobile_screenshot portrait plus mobile_rotate then mobile_screenshot landscape at minimum, and font-scale/dark variants too where the host exposes them — the same standard as the web four-width check, adapted to what a device can actually set. Evidence is one line per screen (bug-report-writing's format): what it shows, no invented file path.

mobile_release_device is your last mobile step, always — a task left holding the device blocks whoever's next in the queue.

If a mobile_* call reports the device is in use: stop. Your task is parked and resumes by itself when the phone frees up; do not retry and do not fall back to guessing.

4. Without a device

  1. Build the app from the task branch — flutter build apk --debug, ./gradlew assembleDebug, or on macOS xcodebuild -scheme … -sdk iphonesimulator build when the Xcode CLT preflight found it. A build failure is a need_revision finding on its own, with the compiler output quoted.
  2. Run the repo's own checks: flutter analyze, ./gradlew lint, swiftlint, flutter test, ./gradlew testDebugUnitTest — only what the repo already defines; this is running the developer's suite, not authoring a new one.
  3. The API side of every flow. Most mobile criteria are "the app shows X after calling Y": call Y yourself with curl against the task branch's backend or the stage target, and verify the payload the app would render.
  4. A Flutter-web render where the repo supports it (flutter build web / flutter run -d web-server) driven with the browser tools, labelled explicitly "web-rendered, not native proof" — useful for layout/copy, never for touch, permissions, or platform look and feel.

5. Reporting

Criteria you could not run on a device are rejected via review_criterion with "not verified: no device attached; needs: …" — never approved silently. A device-unavailability blocker is a human blocker, not the developer's defect: route it through the blocker triage (qa-verify-before-verdict) with ask_user, not a need_revision the developer cannot act on.

Red Flags

  • Approving a touch/permission/push criterion from the API side alone.
  • Testing an APK/build whose commit you never checked against the PR head.
  • Forgetting mobile_release_device and leaving the next task in the queue parked.
  • A web-rendered screenshot presented as proof of native behaviour.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Use when writing acceptance criteria for a task - express each as an observable Given/When/Then that QA can execute, including negative cases

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

Use when the diff adds or changes an endpoint, resolver, RPC, job or query that takes an object id, a role check, a request binding or a tenant filter - BOLA/IDOR, function-level authorization, mass assignment and tenant scoping

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

Use on every UI change - semantic HTML, labels for controls, keyboard-navigable dialogs/menus, visible focus, and never color as the only signal

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

Use when a task changes any screen, form, dialog, menu or control - Lighthouse/axe scan of the changed screens, a keyboard walk, and the thresholds that fail a task

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

How to work a task returned with review, QA or UAT findings. Use when a task is in need_revision or PR review comments are in your context.

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

Use when the repository keeps its alerting in code, or a person asks for alerts outside TaskTrooper - PrometheusRule YAML, a Cloud Monitoring alert policy in Terraform, a Datadog monitor, each routed to TaskTrooper's alert ingest URL so it opens an incident here

The English summary is being prepared. Showing the original description.

makifbaysal/tasktrooper118Updated Oct 21, 2026

See all skills by makifbaysal

Report a problem with this skill