Skip to content

Commit ed5ab97

Browse files
pftgqwencoder
andcommitted
chore: prepare v1.12.0 release
Add CHANGELOG.md with 71 commits since v1.11.0. Add docs/UPGRADING.md migration guide. Add docs/RELEASE_PREP.md release checklist. Update .github/workflows/release.yml for one-click release. Bump version to 1.12.0. Fix outdated repository URLs in all docs. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
1 parent 2a7ca5b commit ed5ab97

7 files changed

Lines changed: 590 additions & 12 deletions

File tree

.github/workflows/release.yml

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,62 @@
11
---
2+
name: Release
3+
24
on:
35
workflow_dispatch:
6+
inputs:
7+
version:
8+
description: "Release version (e.g., 1.12.0)"
9+
required: true
10+
type: string
411

512
jobs:
6-
push:
7-
name: Push gem to RubyGems.org
13+
release:
14+
name: Release v${{ github.event.inputs.version }}
815
runs-on: ubuntu-latest
916

1017
permissions:
11-
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
12-
contents: write # IMPORTANT: this permission is required for `rake release` to push the release tag
18+
id-token: write
19+
contents: write
1320

1421
steps:
15-
# Set up
1622
- uses: actions/checkout@v6
17-
- name: Set up Ruby
18-
uses: ruby/setup-ruby@v1
23+
- uses: ruby/setup-ruby@v1
1924
with:
2025
bundler-cache: true
2126
ruby-version: ruby
2227

23-
# Release
24-
- uses: rubygems/release-gem@v1
28+
- name: Verify version
29+
run: |
30+
GEM_VERSION="${{ github.event.inputs.version }}"
31+
CODE_VERSION=$(ruby -rlib/capybara/screenshot/diff/version -e "puts Capybara::Screenshot::Diff::VERSION")
32+
if [ "$GEM_VERSION" != "$CODE_VERSION" ]; then
33+
echo "Version mismatch: input=$GEM_VERSION code=$CODE_VERSION"
34+
exit 1
35+
fi
36+
37+
- name: Test
38+
run: bundle exec rake test
39+
40+
- name: Create tag
41+
run: |
42+
git config user.name "github-actions[bot]"
43+
git config user.email "github-actions[bot]@users.noreply.github.com"
44+
git tag -a "v${{ github.event.inputs.version }}" -m "v${{ github.event.inputs.version }}"
45+
git push origin "v${{ github.event.inputs.version }}"
46+
47+
- name: Publish to RubyGems
48+
uses: rubygems/release-gem@v1
49+
50+
- name: Create GitHub Release
51+
uses: softprops/action-gh-release@v2
52+
with:
53+
tag_name: "v${{ github.event.inputs.version }}"
54+
name: "v${{ github.event.inputs.version }}"
55+
body: |
56+
## What's Changed
57+
58+
See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md#v${{ github.event.inputs.version }}) for full details.
59+
60+
**Upgrade Guide:** [docs/UPGRADING.md](https://github.com/${{ github.repository }}/blob/main/docs/UPGRADING.md)
61+
env:
62+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [v1.12.0] - 2026-04-12
9+
10+
### Added
11+
- HTML reporter for visual diff dashboard with premium UI, side-by-side comparison, and search ([#861183f](https://github.com/snap-diff/snap_diff-capybara/commit/861183f), [#993bcb9](https://github.com/snap-diff/snap_diff-capybara/commit/993bcb9))
12+
- `Diff.compare` for standalone image comparison without Capybara or browser ([#1364048](https://github.com/snap-diff/snap_diff-capybara/commit/1364048))
13+
- Perceptual color distance (dE00) support to VipsDriver for anti-aliasing tolerance ([#ce01d98](https://github.com/snap-diff/snap_diff-capybara/commit/ce01d98))
14+
- `assert_no_screenshot_changes` to DSL for asserting no visual regressions ([#6d7e1a6](https://github.com/snap-diff/snap_diff-capybara/commit/6d7e1a6))
15+
- `Diff.configure` block helper for simplified one-place configuration ([#5ffec5d](https://github.com/snap-diff/snap_diff-capybara/commit/5ffec5d))
16+
- Ruby 3.5 support in CI ([#359b4e4](https://github.com/snap-diff/snap_diff-capybara/commit/359b4e4))
17+
- Lightpanda browser as experimental CDP alternative to Chrome ([#ed59add](https://github.com/snap-diff/snap_diff-capybara/commit/ed59add))
18+
19+
### Changed
20+
- `blur_active_element` now defaults to `true` to prevent cursor blinking artifacts ([#d60c30f](https://github.com/snap-diff/snap_diff-capybara/commit/d60c30f))
21+
- `hide_caret` now defaults to `true` for stable screenshots ([#d60c30f](https://github.com/snap-diff/snap_diff-capybara/commit/d60c30f))
22+
- `fail_if_new` now defaults to `true` in CI environments (when `ENV['CI']` is set) ([#715fa1b](https://github.com/snap-diff/snap_diff-capybara/commit/715fa1b))
23+
- HTML report redesigned with premium UI and visual testing capabilities ([#993bcb9](https://github.com/snap-diff/snap_diff-capybara/commit/993bcb9))
24+
25+
### Deprecated
26+
- SVN support removed — use Git for version control ([#2fe2792](https://github.com/snap-diff/snap_diff-capybara/commit/2fe2792))
27+
28+
### Removed
29+
- SVN support completely removed ([#2fe2792](https://github.com/snap-diff/snap_diff-capybara/commit/2fe2792))
30+
- `CaptureStrategy` layer inlined into `ScreenshotCoordinator` (internal refactoring) ([#7c3dcf7](https://github.com/snap-diff/snap_diff-capybara/commit/7c3dcf7))
31+
- `ComparisonLoader` inlined into `ImageCompare` (internal refactoring) ([#2906681](https://github.com/snap-diff/snap_diff-capybara/commit/2906681))
32+
- `ImagePreprocessor#call` method removed (was dead code) ([#c2023c5](https://github.com/snap-diff/snap_diff-capybara/commit/c2023c5))
33+
34+
### Fixed
35+
- Remove ActiveSupport runtime dependency (`.presence` → plain Ruby) for lighter installations ([#e3b1a2e](https://github.com/snap-diff/snap_diff-capybara/commit/e3b1a2e))
36+
- Remove ActiveSupport dependency from `fail_if_new` default ([#a960612](https://github.com/snap-diff/snap_diff-capybara/commit/a960612))
37+
- Add `failure_message` and description to RSpec matcher for better error output ([#9550153](https://github.com/snap-diff/snap_diff-capybara/commit/9550153))
38+
- Add recording instructions to missing baseline error ([#1b73136](https://github.com/snap-diff/snap_diff-capybara/commit/1b73136))
39+
- Handle extensionless files in reporter filename generation ([#50191f6](https://github.com/snap-diff/snap_diff-capybara/commit/50191f6))
40+
- Prevent nil crash in tempfile cleanup ([#444ac30](https://github.com/snap-diff/snap_diff-capybara/commit/444ac30))
41+
- Reset `fail_if_new` in test setup for CI compatibility ([#5e4f8b1](https://github.com/snap-diff/snap_diff-capybara/commit/5e4f8b1))
42+
- Remove misleading `filter_image_with_median` from ChunkyPNGDriver ([#567df71](https://github.com/snap-diff/snap_diff-capybara/commit/567df71))
43+
- Freeze options hash and widen rescue in `files_identical?` ([#3331012](https://github.com/snap-diff/snap_diff-capybara/commit/3331012))
44+
- Use `FileUtils.compare_file` for byte content comparison ([#16a776e](https://github.com/snap-diff/snap_diff-capybara/commit/16a776e))
45+
- Resolve setup ordering issue with DSLStub in Ruby 4.0 ([#be53abb](https://github.com/snap-diff/snap_diff-capybara/commit/be53abb))
46+
- Resolve Ruby 4.0 compatibility issues in CI ([#18d5564](https://github.com/snap-diff/snap_diff-capybara/commit/18d5564))
47+
- Prevent skipping big changes in tolerance calculation ([#1d57a61](https://github.com/snap-diff/snap_diff-capybara/commit/1d57a61))
48+
- Docker build — restore `.git` and fix bundle permissions ([#785ff82](https://github.com/snap-diff/snap_diff-capybara/commit/785ff82))
49+
50+
### Performance
51+
- Eliminate array allocations in ChunkyPNG shift-detection ([#835f45b](https://github.com/snap-diff/snap_diff-capybara/commit/835f45b))
52+
- Cache `without_tolerable_options?` at construction ([#b689ef5](https://github.com/snap-diff/snap_diff-capybara/commit/b689ef5))
53+
- Memoize `Difference#region_area_size` ([#a3359dc](https://github.com/snap-diff/snap_diff-capybara/commit/a3359dc))
54+
- Replace `method(:region_for)` with block in BrowserHelpers ([#324aafa](https://github.com/snap-diff/snap_diff-capybara/commit/324aafa))
55+
56+
### Documentation
57+
- Add 60-second Quick Start to README top ([#61c7301](https://github.com/snap-diff/snap_diff-capybara/commit/61c7301))
58+
- Add configuration tiers (zero-config / flaky / advanced) ([#50eb197](https://github.com/snap-diff/snap_diff-capybara/commit/50eb197))
59+
- Add Troubleshooting section with 5 common problems ([#ac6d4e0](https://github.com/snap-diff/snap_diff-capybara/commit/ac6d4e0))
60+
- Add Non-Rails setup, GitHub Actions integration, animation tip ([#b97f576](https://github.com/snap-diff/snap_diff-capybara/commit/b97f576))
61+
- Add Quick Setup guide, tolerance table, and CI defaults note ([#786a0c1](https://github.com/snap-diff/snap_diff-capybara/commit/786a0c1))
62+
- Add development guide for Docker testing and screenshot recording ([#8a7c981](https://github.com/snap-diff/snap_diff-capybara/commit/8a7c981))
63+
- Add DeepWiki badge to README ([#0929cfa](https://github.com/snap-diff/snap_diff-capybara/commit/0929cfa))
64+
- Document DEBUG in README ([#c1a53c3](https://github.com/snap-diff/snap_diff-capybara/commit/c1a53c3))
65+
66+
### Build/CI
67+
- Upgrade dependencies for modern environment compatibility ([#d387627](https://github.com/snap-diff/snap_diff-capybara/commit/d387627))
68+
- Improve dockerignore, gitignore, and fix bin/setup for Ruby 4.0 ([#674e854](https://github.com/snap-diff/snap_diff-capybara/commit/674e854))
69+
- Bump actions/checkout from 4 to 5 ([#c5ad669](https://github.com/snap-diff/snap_diff-capybara/commit/c5ad669), [#eadc2aa](https://github.com/snap-diff/snap_diff-capybara/commit/eadc2aa))
70+
- Bump actions/upload-artifact from 4 to 6 ([#3dbf8e9](https://github.com/snap-diff/snap_diff-capybara/commit/3dbf8e9), [#ab4fa48](https://github.com/snap-diff/snap_diff-capybara/commit/ab4fa48))
71+
- Bump actions/cache from 4 to 5 ([#62419f7](https://github.com/snap-diff/snap_diff-capybara/commit/62419f7))
72+
- Bump nick-fields/retry from 3 to 4 ([#b49f86a](https://github.com/snap-diff/snap_diff-capybara/commit/b49f86a))
73+
- Pin minitest to < 6 to fix missing minitest/mock ([#4a65fd8](https://github.com/snap-diff/snap_diff-capybara/commit/4a65fd8))
74+
- Re-record screenshot baselines for upgraded Chrome ([#de6e231](https://github.com/snap-diff/snap_diff-capybara/commit/de6e231))
75+
76+
### Internal Refactoring
77+
- Inline `restore_git_revision` into `checkout_vcs` ([#9a4309c](https://github.com/snap-diff/snap_diff-capybara/commit/9a4309c))
78+
- Replace implicit tuple protocol in ScreenshotAssertion ([#c078dec](https://github.com/snap-diff/snap_diff-capybara/commit/c078dec))
79+
- Unify Screenshoter constructor to accept comparison_options ([#7845f88](https://github.com/snap-diff/snap_diff-capybara/commit/7845f88))
80+
- Merge `build_null_comparison` into `build_null_difference` ([#676aa94](https://github.com/snap-diff/snap_diff-capybara/commit/676aa94))
81+
- Flatten VipsUtil into VipsDriver class methods ([#9478f7f](https://github.com/snap-diff/snap_diff-capybara/commit/9478f7f))
82+
- Inline ScreenshotNamerDSL into DSL module ([#1ffc36b](https://github.com/snap-diff/snap_diff-capybara/commit/1ffc36b))
83+
- Inline `build_null_difference` in DifferenceFinder ([#2512ded](https://github.com/snap-diff/snap_diff-capybara/commit/2512ded))
84+
- Consolidate skip_area accessor to Comparison ([#41f053a](https://github.com/snap-diff/snap_diff-capybara/commit/41f053a))
85+
- Add bang to destructive Snap#cleanup_attempts! ([#2271126](https://github.com/snap-diff/snap_diff-capybara/commit/2271126))
86+
- Remove duplicate `ensure_files_exist!` and unnecessary `options.dup` ([#b90509b](https://github.com/snap-diff/snap_diff-capybara/commit/b90509b))
87+
- Remove redundant VipsDriver#dimension override ([#e670b58](https://github.com/snap-diff/snap_diff-capybara/commit/e670b58))
88+
- Consolidate duplicate color constants and improve naming ([#2052d5f](https://github.com/snap-diff/snap_diff-capybara/commit/2052d5f))
89+
- Replace `0.step` with loop in StableScreenshoter ([#b427499](https://github.com/snap-diff/snap_diff-capybara/commit/b427499))
90+
- Remove duplicate require_relative in screenshot_matcher ([#b28f2eb](https://github.com/snap-diff/snap_diff-capybara/commit/b28f2eb))
91+
92+
---
93+
94+
## [v1.11.0] - Previous Release
95+
96+
[Unreleased]: https://github.com/snap-diff/snap_diff-capybara/compare/v1.12.0...HEAD
97+
[v1.12.0]: https://github.com/snap-diff/snap_diff-capybara/releases/tag/v1.12.0
98+
[v1.11.0]: https://github.com/snap-diff/snap_diff-capybara/releases/tag/v1.11.0
99+
100+
**Upgrade Guide:** See [docs/UPGRADING.md](docs/UPGRADING.md) for detailed migration instructions.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Test](https://github.com/donv/capybara-screenshot-diff/actions/workflows/test.yml/badge.svg)](https://github.com/donv/capybara-screenshot-diff/actions/workflows/test.yml)
1+
[![Test](https://github.com/snap-diff/snap_diff-capybara/actions/workflows/test.yml/badge.svg)](https://github.com/snap-diff/snap_diff-capybara/actions/workflows/test.yml)
22
[![DeepWiki](https://img.shields.io/badge/DeepWiki-snap--diff%2Fsnap__diff--capybara-blue.svg?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDJhMTAgMTAgMCAxIDAgMCAyMCAxMCAxMCAwIDAgMCAwLTIweiIvPjxwYXRoIGQ9Ik0xMiA2djEyIi8+PHBhdGggZD0iTTYgMTJoMTIiLz48L3N2Zz4=)](https://deepwiki.com/snap-diff/snap_diff-capybara)
33

44
# Capybara::Screenshot::Diff

capybara-screenshot-diff.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
1111
spec.email = ["uwe@kubosch.no"]
1212
spec.summary = "Track your GUI changes with diff assertions"
1313
spec.description = "Save screen shots and track changes with graphical diff"
14-
spec.homepage = "https://github.com/donv/capybara-screenshot-diff"
14+
spec.homepage = "https://github.com/snap-diff/snap_diff-capybara"
1515
spec.required_ruby_version = ">= 3.2"
1616
spec.license = "MIT"
1717
spec.metadata["allowed_push_host"] = "https://rubygems.org/"

docs/RELEASE_PREP.md

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Release Preparation — v1.12.0
2+
3+
## Summary
4+
5+
71 commits since v1.11.0 with new features, performance improvements, and default behavior changes.
6+
7+
## Release Checklist
8+
9+
### Pre-Release
10+
11+
- [x] Update version to `1.12.0`
12+
- [x] Run tests: `bundle exec rake test` (210 runs, 0 failures)
13+
- [x] Add CHANGELOG.md
14+
- [x] Add docs/UPGRADING.md
15+
16+
### Release (One Click)
17+
18+
1. Push to GitHub
19+
2. Go to [Actions → Release](https://github.com/snap-diff/snap_diff-capybara/actions/workflows/release.yml)
20+
3. Click **Run workflow**, enter `1.12.0`
21+
4. Workflow will: test → tag → publish to RubyGems → create GitHub Release
22+
23+
### Post-Release
24+
25+
- [ ] Verify on [RubyGems](https://rubygems.org/gems/capybara-screenshot-diff)
26+
- [ ] Verify GitHub Release created
27+
28+
## What Changed
29+
30+
### New Features
31+
- HTML reporter with interactive dashboard
32+
- `Diff.compare` for standalone image comparison
33+
- Perceptual color distance (dE00) for anti-aliasing
34+
- `assert_no_screenshot_changes` DSL method
35+
- `Diff.configure` block helper
36+
- Ruby 3.5 & 4.0 support
37+
38+
### Behavior Changes
39+
- `blur_active_element` defaults to `true`
40+
- `hide_caret` defaults to `true`
41+
- `fail_if_new` defaults to `true` in CI
42+
- SVN support removed
43+
- ActiveSupport no longer required
44+
45+
### Performance
46+
- Faster ChunkyPNG shift-detection (eliminated allocations)
47+
- Cached computations in VIPS driver
48+
- Memoized region area size
49+
50+
See [CHANGELOG.md](../CHANGELOG.md) for full details.

0 commit comments

Comments
 (0)