Before creating a PR, ensure you’ve discussed your changes in an issue (except for minor/trivial changes). See the contributing guide for details.
The Pull Request Template
When you create a PR, GitHub provides a template with sections to fill out. This template helps reviewers understand your changes and ensures nothing is overlooked.Title
Good examples:- “Fix speech output for emoji in Chrome”
- “Add support for XYZ braille display”
- “Improve performance of text navigation”
- “Fix for #1234”
- “Update file.py”
- “Changes”
Template Sections
Link to Issue Number
Include the issue number and how the PR relates to it:Summary of the Issue
Provide a quick summary of the problem you’re solving:Description of User-Facing Changes
Explain how the user experience has changed:Description of Developer-Facing Changes
Describe how the developer experience has changed:- API changes
- New interfaces or extension points
- Breaking changes
- Call signature modifications
Description of Development Approach
Include:-
Technical implementation details
- What modules/classes were modified
- New files or functions added
- How the solution works
-
External resources
- Links to documentation you referenced
- Relevant specifications or standards
- Similar implementations in other projects
-
Alternative approaches considered
- Why you chose this approach over others
- Trade-offs made
- Why rejected alternatives wouldn’t work
-
History of changes
- How the approach evolved during development
- What you learned along the way
Testing Strategy
This section allows you to convince reviewers (and yourself) that your change works correctly and should be merged.
- How did you test to ensure the change works as intended?
- Have you tested across all supported operating systems?
- Have you considered possible regressions?
Configure NVDA settings
In NVDA settings ensure that:
- Keyboard category:
- “speak typed characters” is unchecked
- “speak typed words” is checked
Known Issues with Pull Request
Be transparent about limitations or downsides:Code Review Checklist
The PR template includes a checklist of considerations. Go through each item and check it off after you’ve considered it. Not all items apply to all PRs.Testing
Consider and document:- Unit tests
- Coverage of automated unit tests
- Can the changed code be covered by unit tests?
- System tests
- Coverage of automated system tests
- Can the changed code be covered by system tests?
- Manual tests
- Have you followed relevant manual test plans?
- Clear steps for replicating your testing
- For commonly tested features, add steps to manual test documentation
API Compatibility
- If this is not a
.1breaking release, ensure all API changes are backwards compatible - Ensure proposed API changes are in the change log under “Changes for Developers”
- See deprecations documentation
Documentation
- Change log entries - Ensure there’s an entry if required
- User Documentation - Does the user guide need updating?
- Context sensitive help - New GUI options require context sensitive help
- Developer Documentation - Does technical documentation need updating?
UX of All Users Considered
Users rely on different parts of NVDA. Ensure the change caters to users of:- Speech
- Braille
- Low Vision
- Different web browsers (Firefox, Chrome, Edge)
- Localization in languages other than English
Security Precautions
When handling NVDAObjects, check if an object should be available while the lock screen is activated:Submission Process
Draft vs. Ready for Review
- Draft PR
- Ready for Review
Use draft PRs when:
- Publishing unfinished work to seek early feedback
- Demonstrating an approach
- Work is in progress
Important Settings
For organisation forks, you must invite NV Access developers to collaborate directly.Target Branch
Consider if the PR should target:master- For new features and most bug fixes (default)beta- For bugs introduced in the current beta cyclerc- For critical bugs in release candidates
CI/CD Testing
Every time you push a commit to your PR:pre-commit.ci
- Applies linting fixes automatically
- Re-run: Comment
pre-commit.ci run - Skip: Use
[skip ci],[ci skip],[skip pre-commit.ci], or[pre-commit.ci skip]in commit message
GitHub Actions
- Builds NVDA
- Creates build artifact for testing
- Runs system tests and other automated tests
Sometimes system tests fail unexpectedly. If you believe the failure is unrelated, feel free to ignore it unless raised by a reviewer.
Security Checks
Automated security checks verify code safety.Code Review Process
Participate actively in the review process:Core developers review
Core NVDA developers will:
- Understand the intent of the change
- Read the code changes
- Ask questions or suggest changes
Respond to feedback
- Answer questions promptly
- Discuss suggested changes
- Update code based on feedback
- Be proactive to speed up the process
Address review comments
If issues are raised:
- PR may be marked as draft
- Fix the issues
- Mark as ready for review again
CoPilot AI review
CoPilot may review your code automatically or on request:
- Participate in the AI review process
- Respond to helpful comments
- Indicate comments you’ll ignore and why
- Some AI comments may not be useful - that’s okay
After Merging
You may need to follow up to:- Address bugs discovered in testing
- Handle missed use-cases
- Clarify documentation
- Fix regressions
Best Practices
Be thorough
Fill out all sections of the template completely. Reviewers need context.
Be responsive
Respond to review comments promptly. This speeds up the review process.
Be patient
Reviews take time. Reviewers are volunteers with limited time.
Be collaborative
Work with reviewers to improve your PR. Their feedback helps you grow.
Getting Help
If you need help with your PR:- Ask questions in the PR comments
- Join the NVDA Developers Mailing List
- Start a GitHub discussion
