Installation
Get TrueStory up and running in your Jira instance in just a few minutes.
Step 1: Install from Marketplace
- Go to the Atlassian Marketplace
- Click "Get it now" and select your Jira instance
- Review and accept the permissions
- Wait for the installation to complete
Step 2: Access TrueStory
Once installed, TrueStory appears in three places:
- Project Page - Access via Apps menu in your Jira project
- Issue Panel - View test cases on any issue
- Project Settings - Configure TrueStory for your project
Quick Start
Learn the basics of TrueStory and create your first test session.
Creating Test Cases
- Open any Jira issue
- Find the TrueStory panel on the right side
- Click "Add Test" to create a new test case
- Fill in the title, description, and severity
- Click Save to link the test to the ticket
Using AI to Generate Tests
- Configure your AI provider in Project Settings (Anthropic, OpenAI, DeepSeek, or Gemini)
- Optionally create instruction templates in Coverage Settings. You can save up to 5, each for a different testing purpose
- Open a ticket and click "Generate with AI" (if you have multiple templates, you'll pick which one to use)
- Review the suggested test cases
- Select the ones you want to keep and click Save
Running a Test Session
- Go to the TrueStory project page (Apps > TrueStory)
- Click "Create Session"
- Select the tickets to test
- Optionally assign a tester
- Click "Start Testing" when ready
- Mark each test as Pass, Warning, Fail, Skip, or Blocked
- Click "Complete Session" when finished
Configuration
Configure TrueStory to match your team's workflow.
AI Provider Setup
TrueStory supports multiple AI providers for test generation:
- Anthropic (Claude) - Recommended for detailed test cases
- OpenAI (GPT-4) - Fast and reliable
- DeepSeek - Cost-effective alternative
- Gemini - Google's AI model
Enter your API key in Project Settings. Your key is stored securely in Forge storage and never leaves Atlassian's infrastructure.
Confluence Integration
- Go to Project Settings > Confluence
- Select an existing space or create a new one
- Enable "Auto-sync reports" if you want automatic updates
- Reports will be generated in the selected space
Webhook Configuration
For CI/CD integration, copy the webhook URL and API key from Project Settings:
TRUESTORY_WEBHOOK_URL=https://api.true-story.tech/jira/webhooks/{cloudId}/githubTRUESTORY_API_KEY=your-api-key-hereCI/CD Integration
Integrate TrueStory into your CI/CD pipeline to block merges until QA approves.
GitHub Actions (Push-based)
The TrueStory GitHub App is connected. It automatically creates Check Runs when PRs are opened and updates them when QA completes. Your workflow just needs to deploy the preview.
GitHub Actions Workflow
name: Deploy Preview
on:
pull_request:
types: [opened, synchronize, reopened]
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to Preview Environment
# Your deployment step here (Firebase, Vercel, Netlify, etc.)
# Example for Firebase:
# uses: FirebaseExtended/action-hosting-deploy@v0
# with:
# repoToken: ${{ secrets.GITHUB_TOKEN }}
# firebaseServiceAccount: ${{ secrets.FIREBASE_SERVICE_ACCOUNT }}
# projectId: your-project
# channelId: pr-${{ github.event.pull_request.number }}
# That's it! The TrueStory GitHub App automatically:
# 1. Detects PR events via webhook
# 2. Extracts ticket keys from PR title/branch (e.g., BUI-123)
# 3. Creates a "TrueStory QA Gate" Check Run
# 4. Creates a QA session with linked test cases
# 5. Updates the Check Run when QA completes
#
# Configure branch protection rules to require the
# "TrueStory QA Gate" check before merging.GitLab CI/CD
stages:
- deploy
- qa
deploy-preview:
stage: deploy
script:
- echo "Deploy your preview environment here"
# Your deployment commands
environment:
name: preview/$CI_MERGE_REQUEST_IID
url: https://preview-$CI_MERGE_REQUEST_IID.example.com
only:
- merge_requests
notify-truestory:
stage: qa
script:
- |
curl -s -X POST "$TRUESTORY_WEBHOOK_URL/gitlab" \
-H "X-API-Key: $TRUESTORY_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"event\": \"merge_request\",
\"mr_iid\": $CI_MERGE_REQUEST_IID,
\"mr_title\": \"$CI_MERGE_REQUEST_TITLE\",
\"mr_url\": \"$CI_MERGE_REQUEST_PROJECT_URL/-/merge_requests/$CI_MERGE_REQUEST_IID\",
\"source_branch\": \"$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME\",
\"target_branch\": \"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME\",
\"commit_sha\": \"$CI_COMMIT_SHA\",
\"project_path\": \"$CI_PROJECT_PATH\"
}"
only:
- merge_requests
# Required CI/CD Variables (Settings > CI/CD > Variables):
# - TRUESTORY_WEBHOOK_URL: Your TrueStory webhook URL
# - TRUESTORY_API_KEY: Your TrueStory API keyBitbucket Pipelines
image: node:18
pipelines:
pull-requests:
'**':
- step:
name: Deploy Preview
script:
- echo "Deploy your preview environment here"
# Your deployment commands
- step:
name: Notify TrueStory
script:
- |
curl -s -X POST "$TRUESTORY_WEBHOOK_URL/bitbucket" \
-H "X-API-Key: $TRUESTORY_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"event\": \"pullrequest:created\",
\"pr_id\": $BITBUCKET_PR_ID,
\"pr_title\": \"$BITBUCKET_PR_DESTINATION_BRANCH\",
\"source_branch\": \"$BITBUCKET_BRANCH\",
\"destination_branch\": \"$BITBUCKET_PR_DESTINATION_BRANCH\",
\"commit_sha\": \"$BITBUCKET_COMMIT\",
\"repo_slug\": \"$BITBUCKET_REPO_SLUG\",
\"workspace\": \"$BITBUCKET_WORKSPACE\"
}"
# Required Repository Variables (Repository Settings > Pipelines > Repository variables):
# - TRUESTORY_WEBHOOK_URL: Your TrueStory webhook URL
# - TRUESTORY_API_KEY: Your TrueStory API keyBranch Protection (GitHub)
To block merges until QA approves:
- Go to your GitHub repo → Settings → Branches
- Add a branch protection rule for
main - Enable "Require status checks to pass before merging"
- Search for and add "TrueStory QA Gate" as a required check
How It Works
- PR/MR is opened → GitHub App detects and creates a Check Run
- TrueStory creates a QA session with linked test cases
- QA team tests the preview in Jira and completes the session
- TrueStory updates the Check Run to success/failure
- Git provider unblocks merge when the Check passes
Confluence Reports
Automatically generate detailed test reports in Confluence.
Setting Up Reports
- Go to Project Settings > Confluence
- Select or create a Confluence space
- Enable "Auto-sync reports" for automatic updates
Report Contents
Each session report includes:
- Session summary (pass/warning/fail counts)
- Test results with status and messages
- Links to Jira tickets
- Tester attribution
- Embedded screenshots and attachments
- Timestamps and duration
Overview Page
TrueStory also generates an overview page showing:
- Project coverage metrics
- Total test cases
- Session history
- Links to individual session reports
REST API
TrueStory provides a REST API for integrating with external tools and automating workflows.
Authentication
All API requests require authentication via Bearer token. Get your API key from TrueStory Settings in Jira.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.true-story.tech/jira/{cloudId}/{projectKey}/sessionsBase URL
https://api.true-story.tech/jiraSessions
List Sessions
/{cloudId}/{projectKey}/sessionsReturns all sessions for a project. Filter with ?status=PENDING or ?status=COMPLETED.
Get Session
/{cloudId}/{projectKey}/sessions/{sessionId}Returns session details including test cases and results.
Create Session
/{cloudId}/{projectKey}/sessions{
"title": "Sprint 5 Regression",
"description": "Optional description",
"ticketKeys": ["PROJ-123", "PROJ-124"],
"assignedToAccountId": "optional-jira-account-id"
}Start Session
/{cloudId}/{projectKey}/sessions/{sessionId}/startTransitions session from PENDING to IN_PROGRESS.
Submit Test Result
/{cloudId}/{projectKey}/sessions/{sessionId}/results{
"sessionTestCaseId": "stc-uuid",
"status": "PASS", // PASS, WARNING, FAIL, SKIPPED, BLOCKED
"message": "Optional comment"
}Complete Session
/{cloudId}/{projectKey}/sessions/{sessionId}/completeFinalizes session and calculates verdict (PASS, WARNING, or FAIL).
Test Cases
List Test Cases
/{cloudId}/{projectKey}/test-casesReturns all test cases for a project.
Create Test Case
/{cloudId}/{projectKey}/test-cases{
"title": "User can login with valid credentials",
"description": "Verify login flow works correctly",
"severity": "HIGH", // CRITICAL, HIGH, MEDIUM, LOW
"steps": [
{ "step": 1, "action": "Navigate to /login", "expected": "Login form is displayed" },
{ "step": 2, "action": "Enter valid credentials", "expected": "Fields accept input" },
{ "step": 3, "action": "Click Submit", "expected": "User is redirected to dashboard" }
]
}Get Tests for Ticket
/{cloudId}/{projectKey}/tickets/{ticketKey}/testsReturns all test cases linked to a specific Jira ticket.
Link Test to Ticket
/{cloudId}/{projectKey}/tickets/{ticketKey}/link-test{
"testCaseId": "tc-uuid"
}Coverage
Get Coverage Stats
/{cloudId}/{projectKey}/coverageReturns test coverage distribution for the project.
Webhooks
GitHub PR Webhook
/webhooks/{cloudId}/githubReceives GitHub PR events and creates QA sessions automatically. See CI/CD Integration for setup.
Check Session Status (for CI/CD)
/webhooks/{cloudId}/sessions/{sessionId}Returns session status for CI/CD polling. Response includes status and verdict.
Response Codes
| Code | Description |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request - invalid parameters |
| 401 | Unauthorized - invalid or missing API key |
| 404 | Not Found - resource doesn't exist |
| 500 | Server Error |
Frequently Asked Questions
How much does TrueStory cost?
Check the Atlassian Marketplace for current pricing. TrueStory offers a free tier for small teams.
Is my data secure?
Yes. TrueStory is built on Atlassian Forge, which means your data stays within Atlassian's secure infrastructure. AI API keys are stored in encrypted Forge storage.
Can I use my own AI API key?
Yes. TrueStory supports bring-your-own-key for Anthropic, OpenAI, DeepSeek, and Gemini. Your API key is never shared with us.
Does TrueStory work with team-managed projects?
Yes. TrueStory supports both company-managed and team-managed Jira projects.
Can I integrate with GitLab or Bitbucket?
Yes. TrueStory supports GitHub, GitLab, and Bitbucket. Connect via OAuth in Project Settings and webhooks are created automatically.
How do I get support?
Contact us at hello@true-story.tech for any questions or issues.
Need Help?
Can't find what you're looking for?