From ae88140f79aea0c69533e930fa27652be23b07d1 Mon Sep 17 00:00:00 2001 From: Vincent van der Wal Date: Sat, 1 Aug 2026 16:07:32 +0200 Subject: [PATCH] minor adjustments --- badge.mjs | 20 ++++++++++ gaps.mjs | 25 ------------- rowcheck.mjs | 20 ++++++++++ scroll.mjs | 15 ++++++++ src/lib/components/navigation/header.svelte | 6 +-- .../navigation/settings-menu.svelte | 31 +++------------- src/lib/paywall/PaywallGate.svelte | 13 +------ src/lib/paywall/SupporterBadge.svelte | 26 ++----------- src/lib/paywall/SupporterIcon.svelte | 37 +++++++++++++++++++ src/routes/+layout.svelte | 12 +++++- .../week/[location]/DailyStripSticky.svelte | 4 +- .../week/[location]/HourlyTable.svelte | 14 +++++-- tiles.mjs | 28 -------------- 13 files changed, 129 insertions(+), 122 deletions(-) create mode 100644 badge.mjs delete mode 100644 gaps.mjs create mode 100644 rowcheck.mjs create mode 100644 scroll.mjs create mode 100644 src/lib/paywall/SupporterIcon.svelte delete mode 100644 tiles.mjs diff --git a/badge.mjs b/badge.mjs new file mode 100644 index 0000000..2777c55 --- /dev/null +++ b/badge.mjs @@ -0,0 +1,20 @@ +import { chromium } from 'playwright'; +const browser = await chromium.launch(); +for (const [label, supporter] of [['plain', false], ['supporter', true]]) { + const ctx = await browser.newContext({ viewport: { width: 1280, height: 950 } }); + if (supporter) await ctx.addInitScript(() => localStorage.setItem('supporter_cache_v1', JSON.stringify({ valid: true, expires: null, checkedAt: 1785578719118 }))); + const page = await ctx.newPage(); + await page.goto('http://localhost:5186/en/weather/week/berlin/', { waitUntil: 'load', timeout: 120000 }); + await page.waitForTimeout(9000); + const btn = page.getByRole('button', { name: /Support Drizz|Supporter extras/ }).first(); + await btn.screenshot({ path: `/tmp/badge-${label}.png` }); + await ctx.close(); +} +// locked panel +const ctx = await browser.newContext({ viewport: { width: 1280, height: 950 } }); +const page = await ctx.newPage(); +await page.goto('http://localhost:5186/en/weather/seasonal/berlin/', { waitUntil: 'load', timeout: 120000 }); +await page.waitForTimeout(6000); +await page.locator('h2').first().locator('xpath=..').screenshot({ path: '/tmp/badge-panel.png' }).catch(() => {}); +console.log('ok'); +await browser.close(); diff --git a/gaps.mjs b/gaps.mjs deleted file mode 100644 index 2240484..0000000 --- a/gaps.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { chromium } from 'playwright'; -const browser = await chromium.launch(); -const out = {}; -for (const [label, vp, mobile] of [['mobile', { width: 390, height: 844 }, true], ['desktop', { width: 1280, height: 950 }, false]]) { - const ctx = await browser.newContext({ viewport: vp, isMobile: mobile, hasTouch: mobile }); - const page = await ctx.newPage(); - await page.goto('http://localhost:5185/en/weather/week/berlin/', { waitUntil: 'load', timeout: 120000 }); - await page.waitForTimeout(14000); - await page.locator('canvas').first().scrollIntoViewIfNeeded(); - await page.waitForTimeout(1500); - out[label] = await page.evaluate(() => { - const c = document.querySelector('.strip-cell').getBoundingClientRect(); - const icon = document.querySelector('.strip-cell .day-icon').getBoundingClientRect(); - const temps = document.querySelector('.strip-cell .temp-max').getBoundingClientRect(); - return { - cell: { w: Math.round(c.width), h: Math.round(c.height) }, - iconOffCentre: +(icon.top + icon.height / 2 - (c.top + c.height / 2)).toFixed(1), - gapBelowTemps: +(c.bottom - temps.bottom).toFixed(1) - }; - }); - await page.screenshot({ path: `/tmp/gap-${label}.png`, clip: { x: 0, y: 0, width: vp.width, height: 200 } }); - await ctx.close(); -} -console.log(JSON.stringify(out, null, 1)); -await browser.close(); diff --git a/rowcheck.mjs b/rowcheck.mjs new file mode 100644 index 0000000..160b77d --- /dev/null +++ b/rowcheck.mjs @@ -0,0 +1,20 @@ +import { chromium } from 'playwright'; +const browser = await chromium.launch(); +const out = {}; +for (const [label, vp, mobile] of [['mobile', { width: 390, height: 844 }, true], ['desktop', { width: 1280, height: 950 }, false]]) { + const ctx = await browser.newContext({ viewport: vp, isMobile: mobile, hasTouch: mobile }); + const page = await ctx.newPage(); + await page.goto('http://localhost:5186/en/weather/week/berlin/', { waitUntil: 'load', timeout: 120000 }); + await page.waitForTimeout(14000); + out[label] = await page.evaluate(() => ({ + rows: [...document.querySelectorAll('tr')].map((r) => ({ + label: r.querySelector('.hdr')?.textContent?.trim().replace(/\s+/g, ' ').slice(0, 10) || '-', + h: Math.round(r.getBoundingClientRect().height) + })), + tableHeight: Math.round(document.querySelector('table').getBoundingClientRect().height) + })); + await page.screenshot({ path: `/tmp/rows-${label}.png`, clip: { x: 0, y: 0, width: vp.width, height: Math.min(820, vp.height) } }); + await ctx.close(); +} +console.log(JSON.stringify(out, null, 1)); +await browser.close(); diff --git a/scroll.mjs b/scroll.mjs new file mode 100644 index 0000000..6c90a9c --- /dev/null +++ b/scroll.mjs @@ -0,0 +1,15 @@ +import { chromium } from 'playwright'; +const browser = await chromium.launch(); +const page = await browser.newPage({ viewport: { width: 1280, height: 950 } }); +await page.goto('http://localhost:5186/en/weather/week/berlin/', { waitUntil: 'load', timeout: 120000 }); +await page.waitForTimeout(14000); + +// scroll right down to the footer and click a link there +await page.evaluate(() => { const m = document.querySelector('main'); m.scrollTop = m.scrollHeight; }); +await page.waitForTimeout(700); +const before = await page.evaluate(() => document.querySelector('main').scrollTop); +await page.locator('footer a[href*="/weather/14-day"]').first().click(); +await page.waitForTimeout(7000); +const after = await page.evaluate(() => document.querySelector('main').scrollTop); +console.log(JSON.stringify({ scrollBeforeClick: Math.round(before), scrollAfterNav: Math.round(after), url: page.url() })); +await browser.close(); diff --git a/src/lib/components/navigation/header.svelte b/src/lib/components/navigation/header.svelte index eb8162b..758d310 100644 --- a/src/lib/components/navigation/header.svelte +++ b/src/lib/components/navigation/header.svelte @@ -144,15 +144,15 @@