GitHub Issues, Labels, Milestones and Projects for Planning Work

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.

Advertisement

📖 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:

ToolUsed for
IssuesIndividual bugs, tasks, questions and feature requests
LabelsCategorising issues and PRs (bug, enhancement, priority)
MilestonesGrouping issues for a release or sprint, with progress and a due date
ProjectsBoards, 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):

FieldTips
TitleSpecific: “Checkout total ignores discount code on mobile Safari”
DescriptionSteps, expected vs actual result, environment, logs or screenshots
AssigneesWho will work on it
Labelsbug, test, priority: high…
Milestonee.g. v2.4.0 or Sprint 18
ProjectsThe 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

FeatureHow
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 codePaste a permalink to a line from GitHub’s file view; it renders as a code snippet
Close from a PRCloses #123, Fixes #123 or Resolves #123 in a PR merged into the default branch
Close from a commitThe same keywords in a commit message pushed to the default branch
Pin important issuesPin 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:

LabelColour ideaPurpose
type: testPurpleTest automation work
priority: highRedMust be fixed this sprint
area: checkoutBlueFeature area
status: needs-reproYellowBug 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.

  1. Open your profile or organization, Projects, New project.
  2. Choose a template: Board (Kanban), Table or Roadmap.
  3. Add items: paste issue links, or press # in the bottom row and search.
  4. Add custom fields: Status, Priority, Iteration (sprints), Estimate, Test status.
  5. 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 columnContains
Ready for testPRs merged to the test environment
In testItems a tester is verifying
Bugs foundLinked bug issues
VerifiedTested and passed
DoneReleased

📝 Assignment

  1. In git-practice, create three issues: a bug (using the template above), a feature request and a test task with a task list.
  2. Create custom labels type: test and priority: high and apply them.
  3. Create milestone v0.2.0 and add two issues to it.
  4. Open a PR with Closes #<number>, merge it and confirm the issue closed and the milestone progress changed.
  5. 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

🎬 Learn Git and GitHub step by step: watch the series on YouTube!

Subscribe to SqaToolsByDY • Practice on sqatools.in

Leave a Comment