myapp://cart, https://example.com/invite. mobster links lists the ones your project has and opens each on a simulator to see where it lands. A check’s steps can then say open cart instead of the address.
Where the list comes from
Mobster merges four sources and lists an exact address once. Names ignore case; URL paths and query strings keep their case. An ambiguous name refuses the run:myapp://) opens the app and no screen in it, so there is no title to compare. --json prints the same list, with screen: false for those.
Write your own in .mobster/links.yaml:
name: address also works for a link with no title. Mobster never opens javascript:, data:, file: and itms-services: links, and check never opens a link that acts as it opens (a call, a shortcut).
Mobster learns only custom schemes. It doesn’t keep web pages, and it keeps the newest 50. Learned links are plain facts about the project; when the memory store lands they move there.
Check that each link lands
mobster test’s: the reports, JUnit and the failure’s frame are in .mobster/test-results/, and results.json has the landing screen’s title in screen.title. The exit code is 0 when every link landed, 1 when one didn’t and 3 when Mobster couldn’t run.
- A link with no title opens in your app, and the run reports “needs review” with the landing screen’s title. Add that title to
links.yamlto make it a pass or fail. - Mobster reads the app’s bundle ID from the Expo config or the Xcode project. Pass
--bundle com.example.app, or--app PATHto install a built.app. --deviceruns it on an iPhone, as it does formobster test.
Open a link by name in a step
open <name>, open link <name> or open the deep link <name> for a link in the list becomes Open the link myapp://cart when the run starts. A name that isn’t in the list is left as written, so open Settings still opens the Settings app. Mobster reads links.yaml, the Xcode project, app.json and the learned links for this; it doesn’t run Node.
The API
The GET route reads static project files only. It does not evaluate
app.config.js or app.config.ts; mobster links list can evaluate those through the Expo CLI.
Updates use .mobster/.links.lock to keep concurrent writers from dropping links. Keep that empty lock file out of version control.
Saving rewrites links.yaml as the links: list, so a comment in the file is lost. No route opens a link on a simulator; mobster links check does.