Skip to content

fix(sentry): drop third-party CookieYes localStorage SecurityError #134

fix(sentry): drop third-party CookieYes localStorage SecurityError

fix(sentry): drop third-party CookieYes localStorage SecurityError #134

Triggered via push June 19, 2026 22:28
Status Failure
Total duration 8m 36s
Artifacts 1

deploy.yml

on: push
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 1 warning, and 1 notice
[firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:225:3 › Lightroom Catalog Analyzer — export bar › copies the Markdown report (or downloads it as fallback): src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L227
5) [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:225:3 › Lightroom Catalog Analyzer — export bar › copies the Markdown report (or downloads it as fallback) Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: browserContext.grantPermissions: Unknown permission: clipboard-read 225 | test('copies the Markdown report (or downloads it as fallback)', async ({ page, context }) => { 226 | // Grant clipboard permission so navigator.clipboard.writeText resolves in Chromium. > 227 | await context.grantPermissions(['clipboard-read', 'clipboard-write']) | ^ 228 | await page.goto(DEMO_PATH) 229 | await expect(page.locator(SEC('overview')).first()).toBeVisible({ timeout: DEMO_TIMEOUT }) 230 | at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:227:19
[firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:225:3 › Lightroom Catalog Analyzer — export bar › copies the Markdown report (or downloads it as fallback): src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L227
5) [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:225:3 › Lightroom Catalog Analyzer — export bar › copies the Markdown report (or downloads it as fallback) Error: browserContext.grantPermissions: Unknown permission: clipboard-read 225 | test('copies the Markdown report (or downloads it as fallback)', async ({ page, context }) => { 226 | // Grant clipboard permission so navigator.clipboard.writeText resolves in Chromium. > 227 | await context.grantPermissions(['clipboard-read', 'clipboard-write']) | ^ 228 | await page.goto(DEMO_PATH) 229 | await expect(page.locator(SEC('overview')).first()).toBeVisible({ timeout: DEMO_TIMEOUT }) 230 | at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:227:19
[firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button: src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L32
4) [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() 30 | await expect( 31 | page.getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first(), > 32 | ).toBeVisible() | ^ 33 | await expect(page.getByRole('button', { name: /Try the demo/i }).first()).toBeVisible() 34 | // FilePicker hidden file input lives inside the desktop empty state. 35 | await expect(page.locator('input[type="file"]')).toHaveCount(1) at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:32:7
[firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button: src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L32
4) [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() 30 | await expect( 31 | page.getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first(), > 32 | ).toBeVisible() | ^ 33 | await expect(page.getByRole('button', { name: /Try the demo/i }).first()).toBeVisible() 34 | // FilePicker hidden file input lives inside the desktop empty state. 35 | await expect(page.locator('input[type="file"]')).toHaveCount(1) at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:32:7
[firefox] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content: src/e2e/smoke/all-pages.spec.ts#L51
3) [firefox] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('footer') Expected: visible Error: strict mode violation: locator('footer') resolved to 2 elements: 1) <footer class="LightroomCatalogAnalyzer-module__PHRDzW__dashboardFooter">Computed in your browser from your local catalog …</footer> aka getByText('Computed in your browser from') 2) <footer class="Footer-module__3hUVsW__footer">…</footer> aka getByRole('contentinfo') Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('footer') 49 | // Every page should have the nav and footer 50 | await expect(p.locator('nav').first()).toBeVisible() > 51 | await expect(p.locator('footer')).toBeVisible() | ^ 52 | 53 | // Check for page-specific content 54 | if (page.url === '/en') { at /home/runner/work/phototools.io/phototools.io/src/e2e/smoke/all-pages.spec.ts:51:41
[firefox] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content: src/e2e/smoke/all-pages.spec.ts#L51
3) [firefox] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content Error: expect(locator).toBeVisible() failed Locator: locator('footer') Expected: visible Error: strict mode violation: locator('footer') resolved to 2 elements: 1) <footer class="LightroomCatalogAnalyzer-module__PHRDzW__dashboardFooter">Computed in your browser from your local catalog …</footer> aka getByText('Computed in your browser from') 2) <footer class="Footer-module__3hUVsW__footer">…</footer> aka getByRole('contentinfo') Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('footer') 49 | // Every page should have the nav and footer 50 | await expect(p.locator('nav').first()).toBeVisible() > 51 | await expect(p.locator('footer')).toBeVisible() | ^ 52 | 53 | // Check for page-specific content 54 | if (page.url === '/en') { at /home/runner/work/phototools.io/phototools.io/src/e2e/smoke/all-pages.spec.ts:51:41
[chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button: src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L32
2) [chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() 30 | await expect( 31 | page.getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first(), > 32 | ).toBeVisible() | ^ 33 | await expect(page.getByRole('button', { name: /Try the demo/i }).first()).toBeVisible() 34 | // FilePicker hidden file input lives inside the desktop empty state. 35 | await expect(page.locator('input[type="file"]')).toHaveCount(1) at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:32:7
[chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button: src/e2e/tools/lightroom-catalog-analyzer.spec.ts#L32
2) [chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button Error: expect(locator).toBeVisible() failed Locator: getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() Expected: visible Timeout: 5000ms Error: element(s) not found Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first() 30 | await expect( 31 | page.getByRole('heading', { name: /Analyze your Lightroom Classic catalog/i }).first(), > 32 | ).toBeVisible() | ^ 33 | await expect(page.getByRole('button', { name: /Try the demo/i }).first()).toBeVisible() 34 | // FilePicker hidden file input lives inside the desktop empty state. 35 | await expect(page.locator('input[type="file"]')).toHaveCount(1) at /home/runner/work/phototools.io/phototools.io/src/e2e/tools/lightroom-catalog-analyzer.spec.ts:32:7
[chromium] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content: src/e2e/smoke/all-pages.spec.ts#L51
1) [chromium] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── Error: expect(locator).toBeVisible() failed Locator: locator('footer') Expected: visible Error: strict mode violation: locator('footer') resolved to 2 elements: 1) <footer class="LightroomCatalogAnalyzer-module__PHRDzW__dashboardFooter">Computed in your browser from your local catalog …</footer> aka getByText('Computed in your browser from') 2) <footer class="Footer-module__3hUVsW__footer">…</footer> aka getByRole('contentinfo') Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for locator('footer') 49 | // Every page should have the nav and footer 50 | await expect(p.locator('nav').first()).toBeVisible() > 51 | await expect(p.locator('footer')).toBeVisible() | ^ 52 | 53 | // Check for page-specific content 54 | if (page.url === '/en') { at /home/runner/work/phototools.io/phototools.io/src/e2e/smoke/all-pages.spec.ts:51:41
[chromium] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content: src/e2e/smoke/all-pages.spec.ts#L61
1) [chromium] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content Error: expect(locator).toBeVisible() failed Locator: getByText('Lightroom Catalog Analyzer').first() Expected: visible Received: hidden Timeout: 5000ms Call log: - Expect "toBeVisible" with timeout 5000ms - waiting for getByText('Lightroom Catalog Analyzer').first() 9 × locator resolved to <p class="LightroomCatalogAnalyzer-module__PHRDzW__mobileBody">The Lightroom Catalog Analyzer needs your Lightro…</p> - unexpected value "hidden" 59 | } else { 60 | // Tool pages: tool name should appear somewhere on the page > 61 | await expect(p.getByText(page.name, { exact: false }).first()).toBeVisible() | ^ 62 | } 63 | }) 64 | at /home/runner/work/phototools.io/phototools.io/src/e2e/smoke/all-pages.spec.ts:61:72
build
Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: actions/upload-artifact@v4. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
5 failed [chromium] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content [chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button [firefox] › src/e2e/smoke/all-pages.spec.ts:48:5 › Lightroom Catalog Analyzer (/en/lightroom-catalog-analyzer) › renders key content [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:27:3 › Lightroom Catalog Analyzer — empty state › renders the desktop empty state with the FilePicker and demo button [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:225:3 › Lightroom Catalog Analyzer — export bar › copies the Markdown report (or downloads it as fallback) 2 flaky [chromium] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:71:3 › Lightroom Catalog Analyzer — demo flow › renders the concrete demo golden headline stats (m-9) [firefox] › src/e2e/tools/lightroom-catalog-analyzer.spec.ts:71:3 › Lightroom Catalog Analyzer — demo flow › renders the concrete demo golden headline stats (m-9) 4 skipped 467 passed (5.8m)

Artifacts

Produced during runtime
Name Size Digest
playwright-report Expired
8.5 MB
sha256:9df78142a4bdaee2d0caf0c67aca7c25e82fb49360e665fcc448d4757fbc0ffe