Repository navigation
Issue Tracker Management
Issue Tracker Management permite integrarea TestLink cu sisteme externe de urmarire a problemelor (bug-uri), legand testele direct de tichetele din aceste sisteme.
Path: System > Issue Tracker Management
URL: gui/templates/issuetracker/issuetrackerView.html
Prerequisite: issuetracker_view OR issuetracker_management right (legacy checkRights parity)
The screen mirrors legacy lib/issuetrackers/issueTrackerView.php. The read
gate (#959) allows either right to browse the list; the write gate (#960)
mirrors legacy $gui->canManage = hasRight('issuetracker_management') — create,
edit, delete and the GitHub tracker-create/link route all require
issuetracker_management (HTTP 403 + audit event otherwise, matching
issueTrackerView.tpl + issueTrackerEdit.php).
| Right | List/read | Create/Edit/Delete | GitHub OAuth |
|---|---|---|---|
| neither | ❌ 403 + denied screen | ❌ | ❌ |
issuetracker_view only |
✅ | ❌ 403 (UI hides all write controls) | ❌ (UI hides entry) |
issuetracker_management |
✅ | ✅ | ✅ |
On the client, gui/templates/issuetracker/issuetrackerView.html showDenied()
hides the toolbar and table and renders the localized message it.msg.noPermission
("You do not have permission to view issue trackers…") in red:

- Ce Este Issue Tracker Management?
- De Ce Este Important?
- Sisteme Suportate
- Cum Se Configureaza
- Exemplu Practic — GitHub
- Legarea cu Test Cases
- BFF API
- Environment Column (Refs #961)
Fiecare proiect de testare genereaza bug-uri. Aceste bug-uri trebuie urmarite undeva — JIRA, GitHub Issues, GitLab Issues, Bugzilla, Mantis, etc.
Issue Tracker Management din TestLink permite:
- Definirea conexiunilor catre aceste sisteme
- Configurarea credentialelor (API key, URL, username)
- Legarea automata a bug-urilor gasite in timpul executiei de testelor corespunzatoare
Fluxul:
Testare → Gasit bug → Creare tichet in GitHub Issues → Link in TestLink
↓
Raport: "TC-001 are 2 bug-uri"
GitHub devine critic pentru proiectele open source pentru ca:
- Issues sunt gratuite — orice contributor poate raporta bug-uri
- Integrare naturala — developerii deja folosesc GitHub pentru cod
- Transbilitate completa — de la test case la commit la fix la retest
- CI/CD integration — GitHub Actions poate notifica TestLink automat
Exemplu real:
Un tester ruleaza testele de regresie in TestLink
→ TC-047 "Payment flow with expired card" esueaza
→ Creeaza bug in GitHub Issues: "Payment validation allows expired cards"
→ Link in TestLink: TC-047 ↔ GitHub #234
→ Developerul vede bug-ul, face fix, inchide issue #234
→ TestLink marcheaza automat: "Linked issue closed"
→ Testerul retesteaza TC-047 → PASSED
→ Ciclul se inchide complet
In mediul corporate, JIRA este standardul:
- Integrare cu LDAP/SSO
- Workflowuri custom (To Do → In Progress → Code Review → Done)
- Reporting avansat (velocity, burndown)
- Legare directa la epicuri si sprinturi
- Redmine: open source, usor de instalat, suporta wiki
- Mantis: lightweight, popular in Romania, usor de folosit
| ID | Sistem | API | Status | Utilizare |
|---|---|---|---|---|
| 1 | GitHub | REST | ✅ Activ | Open source, private repos |
| 22 | GitLab | REST | ✅ Activ | Open source, self-hosted |
| 5-7 | JIRA | REST/Soap/DB | ✅ Activ | Enterprise |
| 15 | Redmine | REST | ✅ Activ | Open source, project management |
| 1-2 | Bugzilla | XMLRPC/DB | ✅ Activ | Mozilla, legacy |
| 3-4,24 | Mantis | SOAP/DB/REST | ✅ Activ | Open source, usor |
| 19 | Trac | XMLRPC | ✅ Activ | Legacy, Python projects |
| 8 | FogBugz | REST | ✅ Activ | Microsoft ecosystem |
| 23 | Kaiten | REST | ✅ Activ | Agile boards |
| 10-11 | GForge | SOAP/DB | ❌ Inactiv | Legacy |
Ordine in interfata: GitHub → GitLab → JIRA → Redmine → Bugzilla → Mantis → Trac → ...
- Navigheaza la System > Issue Tracker Management
- Click "+ Create Issue Tracker"
- Completeaza:
| Camp | Descriere | Exemplu |
|---|---|---|
| Name | Nume identificativ | "GitHub - TestLink Project" |
| Type | Tipul de sistem | GitHub REST API |
| Configuration | XML cu detaliile de conectare | Vezi mai jos |
<issuetracker>
<issuetracker管理系统>GitHub</issuetracker管理系统>
<uribase>https://github.com/</uribase>
<github>
<project>sebiboga/testlink-upgraded</project>
<apikey>ghp_xxxxxxxxxxxx</apikey>
</github>
</issuetracker><issuetracker>
<issuetracker管理系统>JIRA</issuetracker管理系统>
<uribase>https://jira.company.com/</uribase>
<jira>
<project>QA</project>
<apikey>NTIxMTI3...base64</apikey>
</jira>
</issuetracker><issuetracker>
<issuetracker管理系统>Redmine</issuetracker管理系统>
<uribase>https://redmine.company.com/</uribase>
<redmine>
<project>my-project</project>
<apikey>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</apikey>
</redmine>
</issuetracker>Pentru proiectele open source (ca TestLink 2.0.1), GitHub Issues este alegerea naturala:
| Avantaj | Detaliu |
|---|---|
| Gratuit | Nu necesita licenta |
| Markdown | Bug reports cu cod, screenshots, link-uri |
| Labels | bug, enhancement, critical — filtare usoara |
| Milestones | Legare la release-uri |
| Actions | CI/CD notifica TestLink automat |
| PR linking | "Fixes #123" inchide automat bug-ul |
-
Creeaza GitHub Personal Access Token:
- GitHub → Settings → Developer settings → Personal access tokens
- Scope:
repo(full control) - Copiaza token-ul
-
Creeaza Issue Tracker in TestLink:
Name: GitHub - TLU Project Type: GitHub REST API Config XML: <issuetracker> <issuetracker管理系统>GitHub</issuetracker管理系统> <uribase>https://github.com/</uribase> <github> <project>sebiboga/testlink-upgraded</project> <apikey>ghp_TU_TOKEN_AICI</apikey> </github> </issuetracker> `` -
In timpul executiei de test:
- TC-012 esueaza
- Click "Create Issue" in TestLink
- Se deschide GitHub Issues cu pre-fill: titlu, descriere, labels
- Completezi si submit
- TestLink salveaza link-ul: TC-012 ↔ GitHub #45
- Ruleaza un test case
- Daca testul esueaza, click "Create Issue"
- Se deschide formularul pentru issue tracker
- Completeaza detaliile bug-ului
- Submit — issue se creaza in sistemul extern
- TestLink salveaza ID-ul issue-ului
In rapoarte si in detalii test case:
TC-012: Payment flow
Status: FAILED
Linked Issues:
- GitHub #45: "Payment validation allows expired cards" [OPEN]
- GitHub #47: "Race condition in payment queue" [CLOSED]
Cand un issue linked este inchis in GitHub/JIRA, TestLink poate marca automat testul ca "retest needed".
Endpoint: /api/issuetracker/index.php
| Method | Endpoint | Descriere |
|---|---|---|
GET |
/ |
Lista toate issue trackerele |
GET |
/{id} |
Detalii un issue tracker |
POST |
/ |
Creaza issue tracker nou |
PUT |
/{id} |
Actualizeaza issue tracker |
DELETE |
/{id} |
Sterge issue tracker |
GET |
/meta/types |
Tipuri disponibile |
curl -b cookies.txt http://localhost:8082/api/issuetracker/index.php{
"status": "ok",
"items": [
{
"id": 1,
"name": "GitHub - TLU Project",
"type": 26,
"typeLabel": "github (Interface: rest)",
"cfg": "<issuetracker>...</issuetracker>"
}
],
"total": 1
}Every tracker row shows its per-tracker environment state in the Environment
column — legacy checkEnv() parity (see
Task-Issue-961-issuetracker-Env-Column):
- green OK badge when the tracker interface's environment is ready;
- red badge with the failure message (e.g. "You need to enable SOAP extension") when not.
The Server URL cell matches the cfg tag written by each tracker template —
<uribase> (bugzilla/fogbugz/jira/mantis/…) or <url> (redmine/gitlab and
the GitHub-OAuth-created trackers) — so the cell is never blank.