Repository navigation
Integrations
Connecting an AI provider (Claude/OpenAI) and a GitHub token unlocks the AI Agent — investigate a failing report and open a pull request with a fix. Both live in Settings → Integrations, alongside Discord/Slack below.
Settings → Integrations (owner, or an admin on the project) holds a webhook URL for each. Leave a field blank to disable that channel.
- Discord Webhook URL — from a Discord channel's Integrations → Webhooks.
- Slack Webhook URL — from a Slack Incoming Webhook app.
Each run can opt in to Discord and/or Slack from the run bar. The notification carries the project name, the pass/fail summary, the browser and the tag filter, and links back to the report when a public URL is set.
Scheduled in the top nav. A schedule is a cron job:
- Task name, cron expression (a set of presets, or a custom expression), tag filter, browser, workers, and which runners to use.
- The cron fires on the project's timezone (Settings → Project).
- Toggle a job on/off, edit it, or Run now.
- Scheduled runs land as normal reports, tagged with the task name as their trigger.
Every run is also a plain REST call. Mint a key in Settings → API & MCP (or set PLUM_MCP_KEY on the server for an owner-scoped CI key) and POST:
curl -X POST https://api.plum.example.com/trigger \
-H "Authorization: ApiKey $PLUM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tag": "@smoke",
"browser": "chromium",
"workers": 2,
"baseUrl": "https://your-pr-preview.example.com"
}'-
tag— the same tag expression you'd type into--grep/--tags. Omit to run everything. -
baseUrl— overrides the app URL for this run only. Point each pull request at its own preview deployment. If your app is onlocalhost, usehost.docker.internalso the Plum container can reach it. -
testRunId— link results to a Test Repository run; its automated cases are marked pass/fail automatically.
The response returns a jobId; GET /trigger/:jobId polls status. A GitHub Actions step:
- name: Run Plum tests
run: |
curl -X POST ${{ vars.PLUM_URL }}/trigger \
-H "Authorization: ApiKey ${{ secrets.PLUM_API_KEY }}" \
-H "Content-Type: application/json" \
-d '{"tag": "@smoke", "baseUrl": "${{ steps.deploy.outputs.url }}"}'For a richer, conversational integration — an agent that authors cases, runs them and reads the report back — use MCP Integration.
Getting started
Tests
Platform
- Roles and Access
- Google Sign-In
- Test Repository
- Reports and Session Replay
- Retrying Flaky Tests
- Integrations
- AI Agent
- API & MCP
- Activity Logs
- Backup