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 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.17.0
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.17.0
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@2d93a5499daf6e0273ed11da69b364d33dc8d4d2 # v0.17.0
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@2d93a5499daf6e0273ed11da69b364d33dc8d4d2 # v0.17.0
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.17.0
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.17.0
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.17.0` with `mode: baseline` | `ranacseruet/snapdrift/actions/baseline@v0.17.0` |
90
- | `ranacseruet/snapdrift@v0.17.0` with `mode: pr-diff` | `ranacseruet/snapdrift/actions/pr-diff@v0.17.0` |
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-latest
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.17.0
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-latest
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.17.0
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-latest
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.17.0
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.17.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.7.2",
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.59.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
  }