Automated Version Updates
Overview
Section titled “Overview”ExTester automatically maintains support for the latest 3 stable VS Code releases through an automated workflow. This reduces maintenance burden while ensuring the testing framework stays current with VS Code updates.
How It Works
Section titled “How It Works”Version Window
Section titled “Version Window”ExTester supports a floating window of the 3 most recent VS Code minor versions, always using the latest patch release for each:
Example:┌─────────────────────────────────────────────────┐│ Min: 1.128.1 (latest patch of 1.128.x) ││ Middle: 1.129.0 (latest patch of 1.129.x) ││ Max: 1.130.0 (latest patch of 1.130.x) │└─────────────────────────────────────────────────┘When a new minor version is released (e.g., 1.131.0), the window shifts:
New minor version: 1.131.x┌─────────────────────────────────────────────────┐│ Min: 1.129.0 (latest patch of 1.129.x) ││ Middle: 1.130.0 (latest patch of 1.130.x) ││ Max: 1.131.0 (latest patch of 1.131.x) │└─────────────────────────────────────────────────┘When a new patch is released (e.g., 1.130.1), only that version updates:
New patch: 1.130.1┌─────────────────────────────────────────────────┐│ Min: 1.128.1 (unchanged) ││ Middle: 1.129.0 (unchanged) ││ Max: 1.130.1 (updated patch) │└─────────────────────────────────────────────────┘Automation Workflow
Section titled “Automation Workflow”The .github/workflows/update-vscode-versions.yml workflow:
- Runs weekly (every Monday at 9 AM UTC)
- Fetches all stable VS Code versions from the official API
- Identifies the latest stable versions needed for the support window
- Selects the latest patch release for each version slot
- Compares with current versions in the repository
- Updates if changes are detected:
packages/extester/package.json-vscode-minandvscode-max
- Creates a Pull Request with all changes
- Triggers CI tests against the configured supported versions automatically
File Updated
Section titled “File Updated”packages/extester/package.json
Section titled “packages/extester/package.json”// example values"supportedVersions": { "vscode-min": "1.133.0", // ← Updated to oldest supported version "vscode-max": "1.135.0" // ← Updated to newest supported version}These values are used when users run tests with:
--code_version=min- Uses the oldest supported version--code_version=max- Uses the newest supported version
The CI workflows use the min/max placeholders directly, so they pick up the new values automatically and need no updating.
For Maintainers
Section titled “For Maintainers”Reviewing Auto-Generated PRs
Section titled “Reviewing Auto-Generated PRs”When the workflow creates a PR, you should:
- Check the PR description for version changes
- Wait for CI tests to complete for the configured supported versions
- Review test results for any failures or warnings
- Look for breaking changes in page objects
- Merge if all tests pass ✅
Manual Trigger
Section titled “Manual Trigger”You can manually trigger the workflow:
- Go to Actions → 🔄 Sync VS Code version support
- Click “Run workflow”
- Select the branch (usually
main) - Click “Run workflow”
When Tests Fail
Section titled “When Tests Fail”If the automated PR shows test failures:
- Review the failure - Is it a breaking change in VS Code?
- Update page objects if needed to fix compatibility
- Push fixes to the auto-generated PR branch
- Re-run tests to verify fixes
- Merge once tests pass
Skipping a Version
Section titled “Skipping a Version”If a VS Code version has known issues:
- Close the auto-generated PR without merging
- Wait for the next release - the workflow will create a new PR
- Document the skip in an issue for tracking
For Users
Section titled “For Users”Using Version Placeholders
Section titled “Using Version Placeholders”Users can specify VS Code versions when running tests:
# Use the oldest supported versionextest setup-tests --code_version=min
# Use a specific versionextest setup-tests --code_version=1.130.0
# Use the newest supported versionextest setup-tests --code_version=max
# Use the absolute latest (may be untested)extest setup-tests --code_version=latestChecking Supported Versions
Section titled “Checking Supported Versions”To see which versions are currently supported:
# View package.jsoncat packages/extester/package.json | grep -A 3 "supportedVersions"Or check the package.json file directly.
Troubleshooting
Section titled “Troubleshooting”Workflow Fails
Section titled “Workflow Fails”If the automated workflow fails, it will:
- Create an issue with details
- Notify maintainers
- Require manual intervention
Manual fallback:
- Check latest VS Code versions at https://code.visualstudio.com/updates
- Update
packages/extester/package.jsonmanually - Run tests and create a release
Version Mismatch
Section titled “Version Mismatch”If you notice the supported versions have fallen behind the current VS Code releases:
- Run the workflow manually to sync versions
- Or update
packages/extester/package.jsonmanually
API Rate Limits
Section titled “API Rate Limits”The workflow includes retry logic and runs weekly to avoid rate limits. If you encounter issues:
- Wait a few hours and try again
- Check GitHub Actions status
- Use manual update process as fallback
Benefits
Section titled “Benefits”For Maintainers
Section titled “For Maintainers”- ✅ 80% less manual work - No more checking for new versions
- ✅ No version mismatches - Version support is updated consistently
- ✅ Automatic testing - CI validates the configured supported versions
- ✅ Clear audit trail - All changes via PRs
For Users
Section titled “For Users”- ✅ Always current - Support for latest VS Code versions
- ✅ Predictable - Published support versions are easy to inspect and use
- ✅ Flexible - Can use min/max/latest as needed
- ✅ Reliable - Tested before release
Related Documentation
Section titled “Related Documentation”- Test Setup - How to set up tests
- Mocha Configuration - Configuring test runner
- Contributing - How to contribute
