Important Resources
- NVDA User Guide
- Changes in the latest release
- Manual test plans
- NVDA Wiki - Additional guides and documentation
- NVDA development snapshots - Automatically generated builds
Types of Builds
Alpha Builds
- Bleeding edge builds created directly from the
masterbranch - Created each time a pull request is merged
- Includes code being tested for possible inclusion in upcoming releases
- May not be tested much and may contain major bugs
- Automated tests pass, but likely had no user testing
Beta Releases
- Beta quality builds
- Include all features for the upcoming release that have proved stable in alpha
- More stable than alpha builds
Release Candidates (RC)
- Usually identical to the final release
- The latest final release will be identical to the final RC of the release cycle
Manual Testing
User and community testing is particularly important for languages other than English.
Testing Approaches
NVDA includes manual test plans to guide testers in smoke testing features. You can take several approaches:- Unfocused Usage
- Recent Change Testing
- Regression Testing
- Pull Request Testing
- Bug Confirmation
Just use NVDA as you normally would and try to complete everyday tasks. This helps catch issues in real-world scenarios.
Automated Testing
NVDA performs automated testing as part of CI/CD, including linting checks, unit tests, and system tests.Pre-commit Hooks
Pre-commit hooks automatically run linting, translatable string checks, and unit tests on files staged for commit. This will automatically apply lint fixes where possible and cancel commits on lint issues and test failures. Set up pre-commit for your NVDA environment:Manually Running Pre-commit Hooks
Run pre-commit hooks manually with filters:Translatable String Checks
Check that all translatable strings have translator comments:Linting Your Changes
Our linting process uses: Run the linter:Unit Tests
Unit tests use the xmlrunner wrapper around Python’s unittest framework. Run all unit tests:-k option:
-k option can be provided multiple times to match against multiple patterns.
Refer to unittest’s documentation for more information on filtering tests.
System Tests
System tests use the Robot test framework. Run standard tests for developers:runsystemtests.bat are forwarded to Robot. For more details including filtering and exclusion of tests, see tests/system/readme.md.
License Checks
NVDA uses GPLv2 which is incompatible with certain licenses like Apache. Check that you don’t introduce incompatible dependencies:pyproject.toml using the licensecheck pip package.
Testing Checklist for Pull Requests
When submitting a pull request, ensure you’ve completed:Manual testing
- Test the change thoroughly in real-world scenarios
- Test on all supported operating systems if applicable
- Consider possible regressions in related features
- Follow relevant manual test plans
Community Communication Channels
Join the testing community:- NVDA Users Mailing List
- NVDA Developers Mailing List
- Other sources including social media and language-specific communities
Contributing as a Tester
You don’t need to be a developer to contribute to NVDA through testing! Testing alpha and beta releases, confirming bugs, and testing pull requests are all valuable contributions.For more information on contributing through testing, see the contributing guide.
