snapdrift 0.17.0 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +2 -2
- package/action.yml +2 -2
- package/docs/integration-guide.md +9 -9
- package/docs/local-cli.md +7 -0
- package/docs/workflow-templates/refresh-baseline-on-merge.yml +2 -2
- package/package.json +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.18.0 - 2026-11-02
|
|
6
|
+
|
|
7
|
+
Workspace releases this version:
|
|
8
|
+
|
|
9
|
+
- `@snapdrift/adapter-fs` 1.8.0 — local capture now requires Playwright `^1.64.1`, which installs Chromium `156.0.8078.4` (revision `1248`) instead of Chromium `153.0.8010.12` (revision `1243`). Existing local baselines captured with Playwright 1.63.x persist a different `captureProfile.browserRevision` / `playwrightVersion`, so comparison reports `incompatible_capture` and does not compare pixels until the baseline is refreshed in the upgraded environment. Pixel rendering may still be byte-identical; the capture-profile contract has no version tolerance.
|
|
10
|
+
|
|
11
|
+
`@snapdrift/manifest` stays 1.8.0, `@snapdrift/compare-core` stays 1.8.0, and `@snapdrift/adapter-report-md` stays 1.4.0. Root floors move to `@snapdrift/adapter-fs ^1.8.0` and `playwright ^1.64.1`; the previous `adapter-fs` 1.7.2 and the Playwright 1.63 floor do not satisfy them. The dispatcher pins `3831623`, the #216 merge commit on `main`, which includes the newest commit touching `actions/` (`1cbf629`, the shell-only Playwright install).
|
|
12
|
+
|
|
13
|
+
### Changes
|
|
14
|
+
|
|
15
|
+
- Local capture raises the Playwright floor to `^1.64.1`; installs now provision Chromium `156.0.8078.4` (revision `1248`). GitHub Actions keep the shell-only Chromium install (`playwright install --with-deps --only-shell chromium`).
|
|
16
|
+
- **Baseline refresh required:** local baselines captured under the previous Playwright floor (`1.63.x`, Chromium `153.0.8010.12`, revision `1243`) are incompatible until recaptured. A real local-capture verification on a deterministic page produced byte-identical desktop (1440×900) and mobile (1170×2955) PNGs across both versions, but diffing the old baseline against a 1.64.1 current capture returned `incomplete` with two `incompatible_capture` errors (reason: `captureProfile.browserRevision differs between baseline and current capture`); recapturing on 1.64.1 then diffing returned `clean` with `captureCompatibility: verified`.
|
|
17
|
+
|
|
18
|
+
### Documentation
|
|
19
|
+
|
|
20
|
+
- `docs/local-cli.md` now states the upgrade path explicitly: refresh every local baseline in the upgraded Playwright/Chromium environment before expecting PR diffs to compare pixels, even when rendering is byte-identical.
|
|
21
|
+
- Existing guidance on refreshing or acknowledging local baselines remains unchanged; `report-only` keeps incompatibility visible and never forces pixel comparison.
|
|
22
|
+
|
|
5
23
|
## 0.17.0 - 2026-10-28
|
|
6
24
|
|
|
7
25
|
Workspace releases this version:
|
package/README.md
CHANGED
|
@@ -48,7 +48,7 @@ You keep ownership of checkout, build, startup, readiness, and teardown. SnapDri
|
|
|
48
48
|
|
|
49
49
|
```yaml
|
|
50
50
|
- name: SnapDrift Baseline
|
|
51
|
-
uses: ranacseruet/snapdrift@v0.
|
|
51
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
52
52
|
with:
|
|
53
53
|
mode: baseline
|
|
54
54
|
repo-config-path: .github/snapdrift.json
|
|
@@ -60,7 +60,7 @@ With `provider: "snap"`, baseline publication is a complete, fail-closed snapsho
|
|
|
60
60
|
|
|
61
61
|
```yaml
|
|
62
62
|
- name: SnapDrift Report
|
|
63
|
-
uses: ranacseruet/snapdrift@v0.
|
|
63
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
64
64
|
with:
|
|
65
65
|
mode: pr-diff
|
|
66
66
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
package/action.yml
CHANGED
|
@@ -155,7 +155,7 @@ runs:
|
|
|
155
155
|
- name: SnapDrift baseline
|
|
156
156
|
id: baseline
|
|
157
157
|
if: inputs.mode == 'baseline'
|
|
158
|
-
uses: ranacseruet/snapdrift/actions/baseline@
|
|
158
|
+
uses: ranacseruet/snapdrift/actions/baseline@38316233186ebbbe40f803bf576e7e13986e7e35 # v0.18.0
|
|
159
159
|
with:
|
|
160
160
|
repo-config-path: ${{ inputs.repo-config-path }}
|
|
161
161
|
route-ids: ${{ inputs.route-ids }}
|
|
@@ -165,7 +165,7 @@ runs:
|
|
|
165
165
|
- name: SnapDrift pull request diff
|
|
166
166
|
id: pr-diff
|
|
167
167
|
if: inputs.mode == 'pr-diff'
|
|
168
|
-
uses: ranacseruet/snapdrift/actions/pr-diff@
|
|
168
|
+
uses: ranacseruet/snapdrift/actions/pr-diff@38316233186ebbbe40f803bf576e7e13986e7e35 # v0.18.0
|
|
169
169
|
with:
|
|
170
170
|
github-token: ${{ inputs.github-token }}
|
|
171
171
|
repo-config-path: ${{ inputs.repo-config-path }}
|
|
@@ -8,7 +8,7 @@ Examples use the public release tag for readability. If your organization requir
|
|
|
8
8
|
|
|
9
9
|
- SnapDrift provisions Node 22 internally.
|
|
10
10
|
- The consumer app can use any stack as long as it can be started and reached at `baseUrl`.
|
|
11
|
-
- The runner must be Ubuntu-compatible because Playwright Chromium is installed with system dependencies.
|
|
11
|
+
- The runner must be pinned to a stable Ubuntu-compatible image (for example `ubuntu-24.04`) because Playwright Chromium is installed with system dependencies and local capture profiles fingerprint the OS. Avoid a moving `ubuntu-latest` label between baseline and PR captures.
|
|
12
12
|
- The runner must have outbound network access to fetch Playwright Chromium.
|
|
13
13
|
|
|
14
14
|
Your repository still owns:
|
|
@@ -46,7 +46,7 @@ SnapDrift owns route selection, capture, comparison, skipped-report generation,
|
|
|
46
46
|
|
|
47
47
|
```yaml
|
|
48
48
|
- name: SnapDrift Baseline
|
|
49
|
-
uses: ranacseruet/snapdrift@v0.
|
|
49
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
50
50
|
with:
|
|
51
51
|
mode: baseline
|
|
52
52
|
repo-config-path: .github/snapdrift.json
|
|
@@ -71,7 +71,7 @@ Then add SnapDrift after the app is running:
|
|
|
71
71
|
|
|
72
72
|
```yaml
|
|
73
73
|
- name: SnapDrift Report
|
|
74
|
-
uses: ranacseruet/snapdrift@v0.
|
|
74
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
75
75
|
with:
|
|
76
76
|
mode: pr-diff
|
|
77
77
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -86,8 +86,8 @@ The wrappers remain published in their own right, and are equivalent to the disp
|
|
|
86
86
|
|
|
87
87
|
| Entry point | Equivalent to |
|
|
88
88
|
|-------------|---------------|
|
|
89
|
-
| `ranacseruet/snapdrift@v0.
|
|
90
|
-
| `ranacseruet/snapdrift@v0.
|
|
89
|
+
| `ranacseruet/snapdrift@v0.18.0` with `mode: baseline` | `ranacseruet/snapdrift/actions/baseline@v0.18.0` |
|
|
90
|
+
| `ranacseruet/snapdrift@v0.18.0` with `mode: pr-diff` | `ranacseruet/snapdrift/actions/pr-diff@v0.18.0` |
|
|
91
91
|
|
|
92
92
|
Use the wrappers directly when you want to skip the dispatcher's input indirection, and the lower-level `capture`, `compare`, `scope`, `resolve-baseline`, `stage`, `comment`, and `enforce` actions when you need to orchestrate the stages yourself.
|
|
93
93
|
|
|
@@ -112,7 +112,7 @@ permissions:
|
|
|
112
112
|
|
|
113
113
|
jobs:
|
|
114
114
|
snapdrift:
|
|
115
|
-
runs-on: ubuntu-
|
|
115
|
+
runs-on: ubuntu-24.04
|
|
116
116
|
steps:
|
|
117
117
|
- uses: actions/checkout@v4
|
|
118
118
|
- uses: actions/setup-node@v4
|
|
@@ -130,7 +130,7 @@ jobs:
|
|
|
130
130
|
done
|
|
131
131
|
|
|
132
132
|
- name: SnapDrift Report
|
|
133
|
-
uses: ranacseruet/snapdrift@v0.
|
|
133
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
134
134
|
with:
|
|
135
135
|
mode: pr-diff
|
|
136
136
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -154,7 +154,7 @@ permissions:
|
|
|
154
154
|
|
|
155
155
|
jobs:
|
|
156
156
|
snapdrift:
|
|
157
|
-
runs-on: ubuntu-
|
|
157
|
+
runs-on: ubuntu-24.04
|
|
158
158
|
steps:
|
|
159
159
|
- uses: actions/checkout@v4
|
|
160
160
|
- uses: actions/setup-python@v5
|
|
@@ -170,7 +170,7 @@ jobs:
|
|
|
170
170
|
done
|
|
171
171
|
|
|
172
172
|
- name: SnapDrift Report
|
|
173
|
-
uses: ranacseruet/snapdrift@v0.
|
|
173
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
174
174
|
with:
|
|
175
175
|
mode: pr-diff
|
|
176
176
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
package/docs/local-cli.md
CHANGED
|
@@ -214,6 +214,13 @@ normalized viewport. A mismatch produces an
|
|
|
214
214
|
signal. Matching profiles can still have route-identity errors:
|
|
215
215
|
`summary.captureCompatibility.status` describes profiles only.
|
|
216
216
|
|
|
217
|
+
SnapDrift 0.18.0 raises the Playwright floor to 1.64.1, which installs Chromium
|
|
218
|
+
156 (`156.0.8078.4`, revision 1248) instead of Chromium 153 (`153.0.8010.12`,
|
|
219
|
+
revision 1243). Every local baseline captured with Playwright 1.63.x is
|
|
220
|
+
incompatible until refreshed, even when the rendered pixels are byte-identical;
|
|
221
|
+
the profile check has no version tolerance. Refresh on the upgraded environment
|
|
222
|
+
before expecting PR diffs to compare pixels.
|
|
223
|
+
|
|
217
224
|
To refresh, serve the intended accepted application state using the same capture
|
|
218
225
|
environment and route config as future diffs. With `provider: "local"`, run:
|
|
219
226
|
|
|
@@ -35,7 +35,7 @@ jobs:
|
|
|
35
35
|
concurrency:
|
|
36
36
|
group: snapdrift-baseline-${{ github.repository }}-${{ github.ref }}
|
|
37
37
|
cancel-in-progress: false
|
|
38
|
-
runs-on: ubuntu-
|
|
38
|
+
runs-on: ubuntu-24.04
|
|
39
39
|
|
|
40
40
|
steps:
|
|
41
41
|
- uses: actions/checkout@v4
|
|
@@ -82,7 +82,7 @@ jobs:
|
|
|
82
82
|
|
|
83
83
|
- name: Publish SnapDrift baseline
|
|
84
84
|
if: steps.baseline_candidate.outputs.current == 'true'
|
|
85
|
-
uses: ranacseruet/snapdrift@v0.
|
|
85
|
+
uses: ranacseruet/snapdrift@v0.18.0
|
|
86
86
|
with:
|
|
87
87
|
mode: baseline
|
|
88
88
|
repo-config-path: .github/snapdrift.json
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "snapdrift",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "SnapDrift captures, compares, and reports UI drift for Playwright-based app checks.",
|
|
@@ -103,12 +103,15 @@
|
|
|
103
103
|
"registry": "https://registry.npmjs.org"
|
|
104
104
|
},
|
|
105
105
|
"dependencies": {
|
|
106
|
-
"@snapdrift/adapter-fs": "^1.
|
|
106
|
+
"@snapdrift/adapter-fs": "^1.8.0",
|
|
107
107
|
"@snapdrift/adapter-report-md": "^1.4.0",
|
|
108
108
|
"@snapdrift/compare-core": "^1.8.0",
|
|
109
109
|
"@snapdrift/manifest": "^1.8.0",
|
|
110
110
|
"js-yaml": "^5.4.0",
|
|
111
|
-
"playwright": "^1.
|
|
111
|
+
"playwright": "^1.64.1",
|
|
112
112
|
"pngjs": "^7.0.0"
|
|
113
|
+
},
|
|
114
|
+
"overrides": {
|
|
115
|
+
"brace-expansion@5": "^5.0.12"
|
|
113
116
|
}
|
|
114
117
|
}
|