API Integration
Connect TestKase to GitHub Issues for real-time requirement sync, defect push, and full traceability between your test management and development workflows.
Looking for a lighter-weight option? The Chrome Extension lets you push defects and link requirements without leaving your browser.
Overview
The GitHub API integration connects TestKase with GitHub Issues to sync requirements and defects between your test management platform and your development workflow. When connected, GitHub issues are automatically imported as requirements, changes are reflected in real time, defects can be pushed to GitHub as new issues, and linked test cases appear as comments on the GitHub issue -- creating end-to-end traceability from your backlog through test execution to defects.
Auto-sync requirements
GitHub issues are automatically imported and kept in sync as requirements
Push defects
Create GitHub issues directly from TestKase defects with one click
Bidirectional sync
Status, labels, and comments stay synchronized across both platforms
Full traceability
Link test cases to requirements with automatic GitHub comments
Priority mapping
GitHub labels map to TestKase priorities automatically
Developer visibility
Linked test cases and defect references appear on GitHub issues
Prerequisites
Before setting up the GitHub integration, make sure you have the following ready:
- A GitHub Personal Access Token with
reposcope (for private repos) orpublic_reposcope (for public repos). - The repository URL you want to connect (e.g.,
https://github.com/your-org/your-repo). - Project Admin or Owner role in the TestKase project. See User Permissions for details.
Generate a GitHub PAT at https://github.com/settings/tokens. Select the repo scope for
full access to private repositories. For fine-grained tokens, ensure the token has read/write
access to Issues for the target repository.
Setup
Follow these steps to connect your TestKase project to GitHub Issues:
- Navigate to Settings -> Jira Integration (the integration page supports all platforms).
- Select GitHub as your platform.
- Enter your GitHub repository URL (e.g.,
https://github.com/your-org/your-repo). - Paste your Personal Access Token with
reposcope. - Click Connect. TestKase validates the token and fetches repository details.
- Click Save to complete the connection.
Each TestKase project can be connected to one external project at a time. If you need to sync with multiple GitHub repositories, create separate TestKase projects for each.
Requirements Sync
Once connected, TestKase automatically syncs GitHub issues as requirements in real time.
How Auto-Sync Works
- Automatic import -- GitHub issues from the connected repository are automatically imported as requirements in TestKase. The issue title becomes the requirement title, and the issue body becomes the requirement description.
- Real-time updates -- When a GitHub issue is updated (title, body, labels, or state changes), those changes are reflected in TestKase automatically.
- Test case comments -- When test cases are linked to a synced requirement in TestKase, the linked test cases appear as comments on the corresponding GitHub issue. This gives your developers visibility into test coverage directly from GitHub.
- Bidirectional defect sync -- Defect updates sync between TestKase and GitHub Issues.
Field Mapping
GitHub issue fields are automatically mapped to TestKase requirement fields:
| GitHub Field | TestKase Field | Notes |
|---|---|---|
| Title | Title | Mapped directly |
| Body | Description | Markdown converted to rich text |
| Labels | Priority | Mapped based on label naming conventions |
| State (open/closed) | Status | Open maps to Active, closed maps to Deprecated |
| Issue Number | External Link | Stored as clickable reference link |
Priority Mapping via Labels
| GitHub Label | TestKase Priority |
|---|---|
priority:critical | P0 (Critical) |
priority:high | P1 (High) |
priority:medium | P2 (Medium) |
priority:low | P3 (Low) |
If your GitHub issues do not use priority labels, imported requirements will default to P2 (Medium). You can manually adjust the priority in TestKase after import.
Traceability
From the test case detail view, you can link test cases to GitHub-synced requirements. When a test case is linked, TestKase automatically posts a comment on the corresponding GitHub issue showing the linked test case details. This creates end-to-end traceability from your GitHub backlog through test cases to defects.
Defect Push
Push defects from TestKase to GitHub Issues, creating new issues automatically with all relevant information.
Push a Defect to GitHub
When you discover a defect and want to create a corresponding GitHub issue:
- Open the defect in TestKase from the defects list.
- Click the Push to GitHub button in the defect detail view.
- TestKase creates a new issue in your connected GitHub repository with the defect details.
- A bidirectional link is established -- the TestKase defect shows a clickable link to the GitHub issue, and the GitHub issue body includes a reference back to TestKase.
Push During Test Execution
The most efficient workflow is to push defects during test execution:
- Execute a test case in a test cycle.
- When a test fails, create a defect directly from the execution view.
- The defect is automatically linked to the failed test case.
- Click Push to GitHub to immediately create the GitHub issue.
Bidirectional Sync
Once a defect is pushed to GitHub, changes are synchronized between both systems:
- Status updates -- When the GitHub issue is closed or reopened, the defect status in TestKase updates automatically. Similarly, status changes in TestKase are reflected in GitHub.
- Labels -- Priority labels are applied to the GitHub issue and kept in sync.
- Comments -- Comments added on the GitHub issue appear on the TestKase defect, and vice versa.
Field Mapping for Defects
TestKase automatically maps defect fields to GitHub issue fields when pushing:
| TestKase Defect Field | GitHub Issue Field | Notes |
|---|---|---|
| Title | Title | Mapped directly |
| Description | Body | Includes a link back to the TestKase defect |
| Priority | Labels | Mapped to priority labels (see table below) |
| Status | State | Open/In-Progress maps to open, Closed/Achieved maps to closed |
Priority Mapping for Defects
| TestKase Defect Priority | GitHub Label |
|---|---|
| Blocker | priority:critical |
| Critical | priority:high |
| Major | priority:medium |
| Minor | priority:low |
| Trivial | priority:low |
If the priority labels do not exist in your GitHub repository, TestKase will create them automatically when the first defect is pushed.
Viewing Pushed Defects
After a defect is pushed to GitHub, the defect detail view in TestKase displays:
- A GitHub badge with the issue number (e.g., #123). Clicking the badge opens the GitHub issue in a new tab.
- The current sync status.
From the GitHub side, the created issue includes:
- The defect title as the issue title.
- The defect description with a link back to TestKase.
- Priority labels applied automatically.
Management
Disconnecting the Integration
To disconnect the GitHub integration, go to Settings -> Jira Integration and remove the connection. When you disconnect:
- Synced requirements remain in TestKase as regular, fully editable requirements. No data is lost and no further sync operations occur.
- Pushed defects remain as issues in GitHub. The issues are not deleted or modified.
- Bidirectional links stop functioning -- the GitHub badge on defects and the TestKase reference on GitHub issues will still be visible, but live sync stops.
You can reconnect at any time by following the Setup steps again.
Troubleshooting
▶I see an 'Authentication failed' error
This usually means your Personal Access Token is invalid, expired, or lacks the required scope.
Verify the token at https://github.com/settings/tokens and ensure it has the repo scope.
Generate a new token if needed.
▶Synced requirements are missing description
If a GitHub issue has an empty body, the requirement description will also be empty. Custom fields and metadata beyond title, body, labels, and state are not synced automatically.
▶Pushed defect is not appearing in GitHub
Ensure the token user has write access to the repository. If the repository requires issue
templates, the push may fail if required fields are not met. Verify your token has the repo
scope.
▶Priority labels are not being applied
TestKase creates priority labels automatically. If your repository has branch protection rules or restrictions on label creation, the labels may not be created. Create the labels manually in your repository settings.
▶What happens to synced requirements if I disconnect?
Synced requirements remain in TestKase as regular requirements. They become fully editable and no further sync operations occur. No data is lost during disconnection.
▶Does disconnecting delete pushed defects from GitHub?
No. Disconnecting only removes the integration link in TestKase. Issues created in GitHub via defect push remain in the repository regardless of the TestKase integration status.
