iOS app testing

Every iOS ticket testedbefore TestFlight.

Smoketest reads the ticket and the pull request, then works through the change on iOS simulators. You get the result, the recording, and what it did not test on the ticket, with no device lab to run.

Book a callTalk to our founder. Test a real ticket the same day.
Acme › ACM-574In Progress
Support larger text on the checkout screen
At the largest text size, every line on checkout stays readable and Pay stays on the screen.
Activity
SKSara K assigned this to Smoketest
Smoketest  Read the ticket, 3 comments, and PR #1388. The change touches the checkout layout.
Ticket3 commentsPR #1388Playbook, 3 rules
Test plan3m 26s
1Sign in and open checkoutMemberPassed
2Checkout fits at the default sizeDefaultPassed
3Every line stays readableLargestPassed
4Pay stays on the screenLargestFailed

Failed · 3 of 4 checks passed · 3m 26s

At the largest text size, Pay sits below the screen and checkout does not scroll. Step 8 in the recording.

Not tested: iPad, because the ticket only covers iPhone.

RecordingStepsReasoning

Smoketest moved this to In Progress and assigned Kevin
Pay is off the screen

You get the result and the recording on the ticket.

It tests the settings your users really have on.

Most iOS bugs hide in a state nobody opens at their desk, so it goes and looks.

Aa
Default
Aa
Dark
Aa
Largest

Text size and dark mode

It repeats a screen at the settings your users really have turned on.

“Acme” Would Like to Send You NotificationsGet a message when an invoice is ready.

Permission prompts

It answers Allow and Don't Allow, then checks what the app does with each.

acme.app/invoices/2041
AInvoice 2041Acme

Universal links

It opens the link from outside the app, then checks which screen appears.

Mail
Acme
Draft kept
Safari

Leaving and coming back

It leaves the app halfway through a task, then checks that nothing was lost.

iOS 26Passed
iOS 18Passed
iOS 17Failed

The iOS versions you support

Pick the versions that matter, and each ticket runs on the ones it touches.

Acme
4.18 (812)Testing
4.18 (809)From CI
4.17 (796)Uploaded

Builds by upload or CI

Upload a simulator build, or send each one from CI, and it tests the latest.

Every ticket comes back Passed, Failed, or No Result.

If a person moves a ticket while it is testing, it stops and never moves it back.

Acme › ACM-574In Progress
Support larger text on the checkout screen
At the largest text size, every line stays readable and Pay stays on the screen.
Smoketest3 min ago
Failed 3 of 4 checks passed on PR #1388, 3m 26s
  • Signed in and opened checkout
  • Checkout fits at the default size
  • Every line stays readable at the largest size
  • Pay stays on the screenPay sits below the screen and checkout does not scroll. Step 8 in the recording.
  • Not tested: iPadThe ticket only covers iPhone.

RecordingStepsReasoning

Smoketest moved this issue to In Progress and assigned Kevin

Keep a passed ticket as a regression test.

Your coverage grows with every sprint, and nobody writes it by hand.

  1. Ticket test

    Written from the ticket and its acceptance criteria. Lives for the sprint.

    When a ticket reaches QA
  2. Regression

    Save it to your library and run it on every build from your CI.

    On every build
  3. Release check

    Run the saved set on the build you are about to send to App Review.

    Before you submit

One team member for everything you ship.

When a ticket touches more than your iOS app, the same ticket runs on the other surfaces too.

SurfaceSandboxWhat it checksProof you get
Web appsSandboxCloud browser at any widthWhat it checksFlows, forms, logins, downloadsProof you getVideo, steps, transcript→
Mobile appsSandboxiOS simulator, Android emulatorWhat it checksScreens, gestures, deep linksProof you getVideo, steps, device log→
APIsSandboxAPI runner against stagingWhat it checksStatus, contracts, auth, side effectsProof you getRequest and response log→
MCP serversSandboxMCP client with a real modelWhat it checksSchemas, auth, real tool callsProof you getTool-call transcript→
AI agentsSandboxYour agent's real interfaceWhat it checksReplies, tool calls, side effectsProof you getConversation transcript→

Building something else? One team asked us to test their voice agent, so we are adding it. Propose your surface

Testing an iOS app comes down to five checks.

Whether a person or an agent does it, a good pass covers the same ground. Smoketest works out which of these a ticket needs, then runs them.

  1. 1

    The main flow

    Follow the path the ticket describes, from a cold start.

  2. 2

    Sign-in and roles

    Repeat it as each kind of user, including one who should not have access.

  3. 3

    Ways into the app

    Open it from a universal link, a push notification, and the home screen.

  4. 4

    Settings your users change

    Check dark mode, larger text, and the permissions they refused.

  5. 5

    Interruptions

    Lose the connection, leave the app, and come back to the same place.

Questions about testing iOS apps

It runs on iOS simulators, and builds arrive by upload or from CI. If your release depends on a physical device, such as for camera or Bluetooth work, tell us on the call and we will say how far this gets you.

Upload a simulator build, or send each new one from CI. It tests the latest build for that board unless a ticket says otherwise.

Yes. TestFlight puts a build in people's hands. Smoketest checks the ticket first, so your testers get a build that has already been through it.

Keep it. It guards the flows you have already scripted. Smoketest takes the first pass on each new ticket, so nobody has to write a test before it can be checked.

No. It writes the test from the ticket, or from a sentence you give it. It did not write the code, so it checks the change the way a teammate would.

Yes. Save a sign-in for each test account, or give a test account its own inbox for email codes and magic links.

It starts at $399 a month for 1,000 runs. Each run is up to 10 minutes, and a longer test counts as two runs or more, one for every 10 minutes. If your team needs more, we design a Scale plan with you, so you stop buying extra runs.

Every result links to the recording, the steps, and the reasoning, and says what it did not test, so you can check its work the way you would check a teammate's.

Your next iOS ticket comes back tested.

Book a call and we will run one ticket on your latest build with you. You get the result and the recording the same day.

Ready for QA
Done
ACM-574
Support larger text on the checkout screen
Passed, recording