On a simulator or a phone connected by cable, opening a deep link is one command:
# iOS Simulator
xcrun simctl openurl booted "myapp://orders/1234"
# Android device or emulator over adb
adb shell am start -W -a android.intent.action.VIEW -d "myapp://orders/1234"
On the phone in your hand, with no cable and no terminal, most of us do something worse. We paste the link into Notes, send it to ourselves in Slack, or email it to our own address, then tap it and hope it opens the right screen. When the order number changes, we do it again.
It gets harder when someone else reports the bug. The ticket says "open this link on a device and check the order screen", and someone has to get that link onto a phone, open it, and write down what happened.
What a phone needs for this
After doing this by hand for a while, I wanted four things on the test phone itself:
- Links kept per app, so one app's staging links don't mix with another's.
-
Values in the link. Save
myapp://orders/{{orderId}}once and changeorderIdwhen you open it, instead of editing the URL each time. - A record of each open, including whether the phone accepted the link, so you know what you already tried.
- A fast way in. Copying a link on a laptop and getting it onto the phone should be one step, not a message to yourself.
How I handle it now
I built TestDock, an iPhone and Android app, for this. Full disclosure: it's my app. Version 1.1 is about the fourth point, getting the link onto the phone:
- Paste and open. Copy a link anywhere and a Paste button appears. On iPhone it uses Apple's paste button, so there is no "Allow Paste" prompt. TestDock finds the link inside whatever text you copied.
- Quick open. Open any URL without saving it first. The last five stay in a list, each marked as opened or failed.
- Paste a whole list. Paste text that contains several links and save them all at once. Links you already saved are skipped.
- Share in. Share a link from Slack, Mail, Safari, or any app that shares text or links, and it lands in Quick open.
Putting the test in the ticket
The change I use most is test links. A test in TestDock is a list of steps: open a link, check the expected result, add a note. You can copy a link to a test and paste it into a bug ticket. The link can carry the values for the run, such as orderId=1234.
Whoever opens the ticket on a phone with TestDock taps the link, sees which test it is with the values filled in, and starts it. They mark each step Pass, Fail, or Skip, attach a screenshot, and share the result back as Markdown, PDF, JSON, or text. Tokens and passwords in links are masked in the shared result. After the fix, the same link runs the same test again.
Where the data lives
TestDock has no account and no server. Profiles, links, and results stay on the phone. It connects to the internet only when you open a link, send a push notification, or inspect an association file.
Free and Pro
TestDock is free for one app, with unlimited saved links, Quick open, Paste, sharing into TestDock, app-icon shortcuts, and one test of your own. Pro is a one-time purchase that adds unlimited apps and tests, push notification testing (Expo Push, Firebase Cloud Messaging, and APNs on iPhone), share-sheet testing, apple-app-site-association and assetlinks.json inspection, and profile import and export.
The full write-up with screenshots: https://martingruner.com/blog/testdock-1-1
How do you get links onto a physical test device today? I'm curious whether anyone has a better routine than messaging themselves.
Top comments (0)