GitHub is not only for code. In this lesson you will track bugs and tasks with Issues, organise them with labels and milestones, and plan sprints and releases with GitHub Projects boards, including a QA-friendly board and bug report template.
📖 What You’ll Learn: Issues, labels, milestones and Projects, creating issues, writing tester-friendly bug reports, mentions, references and task lists, closing issues from PRs, custom labels, milestones for releases, Projects views and fields, built-in automation, and a QA board.
🗂️ Planning Work on GitHub
Code is only part of a project. Teams also need to track bugs, tasks, ideas and plans. GitHub has built-in tools for that:
| Tool | Used for |
|---|---|
| Issues | Individual bugs, tasks, questions and feature requests |
| Labels | Categorising issues and PRs (bug, enhancement, priority) |
| Milestones | Grouping issues for a release or sprint, with progress and a due date |
| Projects | Boards, tables and roadmaps that plan work across issues and PRs |
For testers, Issues are often where bug reports live, so writing good ones is a core skill.
🐞 Create an Issue
On the repository, open Issues, New issue (choose a template if the project has them):
| Field | Tips |
|---|---|
| Title | Specific: “Checkout total ignores discount code on mobile Safari” |
| Description | Steps, expected vs actual result, environment, logs or screenshots |
| Assignees | Who will work on it |
| Labels | bug, test, priority: high… |
| Milestone | e.g. v2.4.0 or Sprint 18 |
| Projects | The board or roadmap that tracks it |
A tester-friendly bug report
### Steps to reproduce
1. Log in as standard_user
2. Add "Sauce Labs Backpack" to the cart
3. Apply discount code SAVE10 and go to checkout
### Expected
Total shows $26.99 + tax
### Actual
Total shows $29.99 + tax (discount ignored)
### Environment
- Browser: Safari on iPhone 15 (iOS 18)
- Build: staging, commit a1b2c3d
### Evidence
Screenshot and Playwright trace attached.
Projects make this structure the default with issue templates (CODEOWNERS and templates).
✍️ Issue Superpowers
| Feature | How |
|---|---|
| Mention a person | @username (they get notified) |
| Reference another issue or PR | #123 (creates a link both ways) |
| Task list | - [ ] Write API test and - [x] Write UI test: clickable checkboxes with progress |
| Link to code | Paste a permalink to a line from GitHub’s file view; it renders as a code snippet |
| Close from a PR | Closes #123, Fixes #123 or Resolves #123 in a PR merged into the default branch |
| Close from a commit | The same keywords in a commit message pushed to the default branch |
| Pin important issues | Pin issue on the right sidebar |
🏷️ Labels
Every repository starts with default labels: bug, documentation, duplicate, enhancement, good first issue, help wanted, invalid, question, wontfix. Create your own under Issues, Labels, New label, for example:
| Label | Colour idea | Purpose |
|---|---|---|
type: test | Purple | Test automation work |
priority: high | Red | Must be fixed this sprint |
area: checkout | Blue | Feature area |
status: needs-repro | Yellow | Bug could not be reproduced yet |
🎯 Milestones
Under Issues, Milestones, New milestone, create e.g. v2.4.0 with a due date. Each milestone shows the percentage of closed issues, a quick release-readiness signal for QA.
📊 GitHub Projects
Projects are flexible planning boards that pull in issues and pull requests from one or many repositories.
- Open your profile or organization, Projects, New project.
- Choose a template: Board (Kanban), Table or Roadmap.
- Add items: paste issue links, or press
#in the bottom row and search. - Add custom fields: Status, Priority, Iteration (sprints), Estimate, Test status.
- Create views: a board by Status for daily stand-ups, a table grouped by assignee, a roadmap by iteration.
Built-in automation
In the project’s Workflows settings you can enable rules such as:
- When an item is added, set Status to “Todo”.
- When an issue is closed or a PR is merged, set Status to “Done”.
- Auto-add new issues with a certain label from a repository.
A QA board example
| Status column | Contains |
|---|---|
| Ready for test | PRs merged to the test environment |
| In test | Items a tester is verifying |
| Bugs found | Linked bug issues |
| Verified | Tested and passed |
| Done | Released |
📝 Assignment
- In
git-practice, create three issues: a bug (using the template above), a feature request and a test task with a task list. - Create custom labels
type: testandpriority: highand apply them. - Create milestone
v0.2.0and add two issues to it. - Open a PR with
Closes #<number>, merge it and confirm the issue closed and the milestone progress changed. - Create a Project board with columns Todo, In progress, In test and Done, add your issues, and enable the “Item closed → Done” workflow.
❓ FAQ
🤔 What are GitHub Issues used for?
Tracking bugs, tasks, feature requests and questions, with discussion, labels, assignees and links to pull requests.
🤔 How do I close an issue automatically with a pull request?
Include Closes #<number> (or Fixes, Resolves) in the PR description; the issue closes when the PR is merged into the default branch.
🤔 What is the difference between labels and milestones?
Labels categorise issues (type, priority, area). Milestones group issues for a target such as a release, with a due date and progress.
🤔 What are GitHub Projects?
Planning tools that show issues and pull requests as boards, tables or roadmaps, with custom fields and automation.
🤔 How do I write a good bug report on GitHub?
Use a clear title, numbered steps to reproduce, expected vs actual result, environment details and evidence such as screenshots, logs or traces.
🎯 Next Steps
- 📝 Markdown and Writing a Great README
- 🌳 Branching Strategies: Git Flow, GitHub Flow and Trunk-Based
- 📘 Git and GitHub Tutorial: full course
🎬 Learn Git and GitHub step by step: watch the series on YouTube!
Subscribe to SqaToolsByDY • Practice on sqatools.in