Principle:MarketSquare Robotframework browser Release Preparation
Overview
Preparing a release of the robotframework-browser library involves coordinating version bumps, documentation generation, and release notes creation across a multi-package project. The version string must be synchronized across six files spanning Python, Node.js, and Docker configurations. Keyword documentation is auto-generated from the library's source code, and release notes are compiled from GitHub issues.
Core Concept
Release preparation is the set of tasks that must be completed before a release can be published. These tasks are distinct from the actual publishing step and produce the artifacts needed for a release:
- Version synchronization -- Updating the version string consistently across all configuration files
- Keyword documentation -- Generating HTML documentation for all Robot Framework keywords
- Release notes -- Compiling a human-readable summary of changes from GitHub issues
Version Synchronization
The version string appears in six files that must all be updated in lockstep:
| File | Format | Example |
|---|---|---|
Browser/version.py |
__version__ = "X.Y.Z" |
__version__ = "19.13.0"
|
package.json |
"version": "X.Y.Z" |
"version": "19.13.0"
|
package-lock.json |
Two locations: top-level "version" and packages[""]["version"] |
"version": "19.13.0"
|
pyproject.toml (Browser) |
version = "X.Y.Z" |
version = "19.13.0"
|
browser_batteries/pyproject.toml |
version = "X.Y.Z" and dependencies = ["robotframework-browser==X.Y.Z"] |
Both synchronized |
docker/Dockerfile.latest_release |
robotframework-browser==X.Y.Z |
robotframework-browser==19.13.0
|
The version task uses regex-based text replacement to update each file, ensuring the version string is consistent everywhere.
Keyword Documentation
The Browser library's keyword documentation is generated using Robot Framework's built-in libdoc tool:
- Libdoc introspects the Browser library class and produces an HTML file
- The generated HTML is post-processed to add Google Analytics tracking scripts
- If a version is specified, the documentation is saved to a versioned file in
docs/versions/ - The latest documentation is always available as
docs/Browser.html
This documentation is published to GitHub Pages as part of the release workflow.
Release Notes
Release notes are auto-generated from GitHub issues using the rellu library:
- The
ReleaseNotesGeneratorclass queries the GitHub issue tracker for issues associated with the release milestone - Issues are categorized and formatted into a markdown document
- The notes include:
- Version number and release date
- Links to the issue tracker
- Installation instructions (pip, rfbrowser)
- Playwright version compatibility
- Notes can be written to a file (
docs/releasenotes/Browser-{version}.md) or printed to stdout for review
Release Preparation Workflow
A typical release preparation follows this sequence:
inv version X.Y.Z-- Update version across all 6 filesinv docs-- Generate keyword documentationinv release-notes --version X.Y.Z --write-- Generate release notes file- Review and edit the release notes
- Commit all changes
- Create a GitHub release (which triggers the publication workflow)
Domains
- Release_Management -- Coordinating multi-file version bumps and release artifacts
- Documentation -- Auto-generating keyword documentation and release notes
Implemented By
Related Topics
- MarketSquare_Robotframework_browser_Inv_Version_Docs -- Implementation details of the version, docs, and release notes tasks
- MarketSquare_Robotframework_browser_Release_Publication -- The automated publication workflow that follows release preparation
- MarketSquare_Robotframework_browser_Project_Build_Pipeline -- Building is a prerequisite for documentation generation