Skip to main content
A suite’s reports stay on your Mac. --share hosts one for your team, .mobster/notifications.yaml posts each verdict to Slack and files failed checks as issues, and a destination in Settings › Connectors hears about every suite.

Share a report with your team

When the Team plan opens, use --share to upload the suite’s folder to your team’s hosted reports. The command prints the report’s link:
  • Mobster seals every file on this Mac with a new key before it uploads it. The key is only in the link, after the #, which a browser never sends to a server. Our servers store the sealed files under opaque names: no file’s path, words or frames reach them.
  • A member of the team, Viewers included, opens the link and signs in to the console with their Mobster account. Someone with the link who isn’t in the team can’t open it, and a member without the link can’t read it. An API key with the read_reports scope can download the sealed files too, and only someone with the link has the key that opens them.
  • The console opens the sealed files in your browser with the key from the link. It shows the suite’s index.html, and its links open a check’s report, a frame, a GIF or a video in the same page. The report runs no script and loads nothing from the network.
  • --share-days 7, 30 or 90 sets how long the team keeps it (default 30). After that, the link opens nothing. An Owner or Admin can delete it sooner with DELETE /api/orgs/$ORG/reports/$REPORT, where $REPORT is the id in the link.
  • It uploads from one of your team’s Macs, or from CI with MOBSTER_TEAM_KEY (CI). On any other Mac, without the Team plan, or with the CLI on its own, it says so, and the report stays in .mobster/test-results/<suite-id>/.
  • In CI, --share uploads only when the CI host says the repository is private (next release), because the link, with the report’s key, shows in the job’s log and the pull request’s comment. To share anyway, set MOBSTER_SHARE_LINK_IN_CI=1 in the job’s environment.
  • A report holds 500 MB at most.
  • mobster test pr --share also links each frame, GIF and video in pr-comment.md to its file in the hosted report.
The test’s result and exit code don’t depend on the upload. If it fails, mobster test says why and the local report is unchanged.

Tell Slack how a suite ended

A project can post each suite’s verdict to a Slack channel. You pick the channel once, in Mobster, and the project file picks when to post.
  1. Connect Slack in Settings › Connectors under Send results to, and save a destination such as Team channel. It posts as you, with the same Slack sign-in as the Slack connector.
  2. Write .mobster/notifications.yaml in the project:
on is fail (the default), always or fix, or a list of them:
  • fail: a check failed, needs review or couldn’t run, or a step healed and waits for your review.
  • always: every suite.
  • fix: the suite passed and the one before it, in this project on this Mac, didn’t.
mobster test and mobster test pr post after the reports are written, and print one line to stderr:
The message names the verdict, each check that didn’t pass with its device and what it found, a “Needs review” line when steps healed, and the report: the --share link when there is one, else the suite folder on your Mac. Mobster masks secrets in it, and text from a screen can’t mention @channel or a person.
  • The file names a destination, never a channel or a token. Mobster posts only to a Slack destination saved on this Mac, through the running Mobster. Without it, without a Slack sign-in, or when the destination is gone, Mobster posts nothing, and the line says what to do.
  • Mobster tries a post once. If it can’t tell whether it arrived, it writes slack-notify.json in the suite folder and doesn’t post that suite again. Check the channel before you run the suite again.
  • The test’s result and exit code don’t depend on the post.

Send every suite to a webhook, Slack or Discord

You get this in the next release, not in Mobster for Mac 0.4.0 or Mobster CLI 0.4.3.
To hear about every suite on this Mac, with no file in the project, turn on A test suite ends on a destination in Settings › Connectors. Each suite then posts its verdict, its counts, and up to 40 results that didn’t pass (a check on one device each), each with what it expected and found and the mobster test line that runs it again. An XCTest case has only what it found. With --share, the post links the hosted report and each failure’s page in it. A webhook gets it as signed JSON, with a published JSON Schema. A test suite’s verdict shows the body.

File a failed check as an issue

You get this in the next release, not in Mobster for Mac 0.4.0 or Mobster CLI 0.4.3.
Set MOBSTER_EXPERIMENTAL_ISSUES=1 where you run mobster test. A project can file each check that fails as one issue in GitHub, Linear or Jira, keep it to one while the check keeps failing, and add each later failure to it as a comment.
  1. Connect the tracker in Settings › Connectors. On its page, set the tool that creates issues to Allow: GitHub’s issue_write, Linear’s save_issue or Jira’s createJiraIssue. Nobody is there to ask when a suite ends, so Mobster files nothing while that tool asks first. For comments, set the tool that comments to Allow too: GitHub’s add_issue_comment, Linear’s save_comment (or create_comment) or Jira’s addCommentToJiraIssue (or addOrEditJiraIssueComment).
  2. Add issues: to .mobster/notifications.yaml:
tracker is the connector’s name. Leave it out when one tracker is connected. target is where issues go: owner and repo for GitHub, team for Linear (its key, such as RAD, for comments), and cloudId and projectKey for Jira. mobster test and mobster test pr file after the reports are written, and print a line to stderr for each issue filed or commented on: “filed an issue for”, the check, the tracker and the issue’s address. The issue names the check and, for each device it failed on, the device, the app’s build, what it expected and what it found, the frame, the steps, the command that runs it again and a Mobster run <id> line. It ends with the report: the --share link when there is one, else the suite folder inside the project. With --share, the frame line links that result’s page in the report, and otherwise it names the frame’s file. What the check expected, what the screen showed and the steps are in code spans, so no tracker reads a mention, an issue reference or a link in them.
  • One issue for a failing check. Mobster for Mac remembers which check has an issue, for each project and tracker on this Mac. While it does, a later failure of that check files no new issue. It adds that failure to the issue as a comment. Mobster comments only on the address the tracker gave for the issue it filed, and only when that address is inside target. Without such an address, or without a comment tool set to Allow, the output says the check is already tracked and nothing is sent. A comment is sent once: if the tracker doesn’t answer, the output says the comment may be there.
  • When the check passes again, Mobster forgets the issue and prints its address so you can close it. Mobster doesn’t close an issue. The next failure files a new one.
  • Only checks that failed. A check that needs review, couldn’t run, is quarantined or is a draft files nothing. A suite files at most 10 issues.
  • Never twice. Mobster notes each issue before it asks the tracker. If the tracker doesn’t answer, the issue may exist, so Mobster doesn’t file that check again and says to look in the tracker. It writes issues-notify.json in the suite folder and never files the same suite twice.
  • The test’s result and exit code don’t depend on the issue.