Release Process
Guide to versioning, releasing, and publishing @esimplicity/stack-tests packages.
Overview
Versioning
We follow Semantic Versioning:
| Version | When to Bump | Example Changes |
|---|---|---|
| MAJOR (X.0.0) | Breaking changes | Remove/rename port methods, change fixture API |
| MINOR (0.X.0) | New features | Add new port, add adapter, add steps |
| PATCH (0.0.X) | Bug fixes | Fix adapter bug, improve error messages |
Pre-release Versions
0.1.0-alpha.1 # Alpha release
0.1.0-beta.1 # Beta release
0.1.0-rc.1 # Release candidate
Packages
| Package | Registry |
|---|---|
| @esimplicity/stack-tests | npm |
| @esimplicity/create-stack-tests | npm |
Release Workflow
1. Prepare Release Branch
# Ensure main is up to date
git checkout main
git pull origin main
# Create release branch
git checkout -b release/v0.2.0
2. Update Version Numbers
Update package.json in each package:
# Update stack-tests
cd stack-tests
npm version 0.2.0 --no-git-tag-version
# Update create-stack-tests
cd ../create-stack-tests
npm version 0.2.0 --no-git-tag-version
3. Update Changelog
Add entry to CHANGELOG.md:
## [0.2.0] - 2024-01-20
### Added
- TUI testing support with TuiPort and TuiTesterAdapter
- New step definitions for terminal UI testing
- `@tui` tag for TUI-only scenarios
### Changed
- Updated Playwright peer dependency to ^1.49.0
### Fixed
- API adapter timeout handling (#123)
### Contributors
- @username1 - TUI adapter implementation
- @username2 - Bug fixes
4. Build and Test
# Build all packages
npm run build --workspaces
# Run full test suite
npm test --workspaces
# Run linter
npm run lint --workspaces
5. Create Pull Request
git add .
git commit -m "chore: prepare release v0.2.0"
git push origin release/v0.2.0
Create PR titled: Release v0.2.0
6. Merge and Tag
After PR approval and merge:
git checkout main
git pull origin main
# Create annotated tag
git tag -a v0.2.0 -m "Release v0.2.0"
git push origin v0.2.0
7. Automated Publishing
The CI pipeline automatically:
- Detects the new tag
- Builds packages
- Publishes to GitHub Packages
- Creates GitHub Release