The shape of it
A qarunbook workspace connects to one Slack workspace, and every app in it shares the connection. On any message, choose Raise as bug from its More actions menu, or type /qarunbook bug what went wrong anywhere. A form opens with the message's words already in it: pick the app, the check it breaks when the app is being tested, the platforms it affects, and a priority when the app is live.
The issue is raised exactly as one raised in the runbook is — so if the app is connected to Linear or GitHub, it is filed there too. Screenshots, recordings and other files on the message are copied onto it. The bot then replies in the message's thread: Logged as QA-41, with a link.
When the issue is marked fixed — in qarunbook, by a merged pull request, from Linear or through the API — the bot says so in the same thread and asks whoever raised it to check it again. The check reads retest here as usual.
Connect Slack
- In qarunbook, open any app, choose Configure, then the Integrations tab, and find Slack. You need to be an admin of the workspace, since every app shares the connection.
- Choose Add to Slack, check the Slack workspace in the top corner of Slack's screen, and allow it.
- Back in qarunbook, choose Change to pick a channel for this app's notices. Each app picks its own, or none.
The bot's token is stored encrypted and never shown. It can read public channel names, post messages, read the files on a message someone raises, and look up people's names and email addresses — nothing else.
Who raises it
People are matched by the email address on their Slack profile. Someone whose address belongs to a member of the workspace raises as themselves, on the apps they can test, and is told in qarunbook as well as in Slack when it is fixed.
Anyone else in the Slack workspace raises as their name via Slack, on any app in the workspace, and hears back only in Slack. To allow members alone, choose Only qarunbook members in the Slack settings. Guests in Slack can never raise bugs unless their address belongs to a member.
Channel notices
Each app can send any of these to its channel, one line each with a link:
- New issues — raised from anywhere, not only Slack.
- Fixed — ready to retest — whoever fixed it, and where.
- Fix verified — someone confirmed the fix holds on a live app.
Only public channels are offered. The bot can post in them without being invited; it cannot post in a private channel at all.
Every request from Slack is checked against the app's signing secret (the X-Slack-Signature header) and must be under five minutes old. Anything else is refused before it is read.
Good to know
- Raised from a private channel or a direct message the bot is not in, the replies go to the person directly from the bot instead, and so does “fixed”.
/qarunbook bughas no message to reply to, so the bot posts the new issue in the channel and replies under that.- Up to ten files come across from a message, each up to 50 MB, counted against the plan's storage. Anything left behind is named in the thread.
- Issues raised from Slack count against a Free workspace's monthly allowance like any other.
- Fixing twice says nothing twice, and reopening an issue says nothing in Slack.
- Disconnecting removes the bot from Slack for every app. Issues raised from Slack keep their place here. Removing the app from Slack's side disconnects it too.