From 055c3ae5c74d859e166f65faa615e02e3fa579e9 Mon Sep 17 00:00:00 2001 From: Maurice Date: Tue, 22 Sep 2026 19:02:51 +0200 Subject: [PATCH] feat(help): readable rings, real documents and imagery in the pictures The pictures picked up five faults that the run could not see, because a passing step only proves the click landed. The ring vanished on the lightbox: the accent is nearly black and so is the overlay. It now measures the surface behind it and puts a white hairline outside itself and the number only where the contrast is too low, so every other picture keeps the single line it had. The number fell outside the picture whenever the target was wider than the frame, which is every full-width row: the frame is known before the ring is drawn, so the number moves inside far enough to clear the edge. The satellite imagery was a grey rectangle although every tile came back 200. Leaflet fades a tile in over 200 ms and takes the progress from `+new Date()`, and the browser's clock is pinned to the picture day, so the opacity it writes on every frame is always 0. A stylesheet on Leaflet's own `leaflet-tile-loaded` outranks that inline style. The satellite guide also waits for decoded tiles now instead of for a tile element to exist. The uploaded files looked like nothing anyone would upload. A PDF is drawn with an issuer band, a reference, a table of fields and a footer, and the two photographs are gone: a drawn photograph reads as clip art at any size, so the trip carries a map screenshot with a pin and a booking confirmation in a browser window, which are graphics in reality too. In the panel, a step picture was covered into a 16:10 box and lost its sides; contained everywhere now, the hero and the result in 16:9. Beside that: the place guide gained the drag-and-drop route to a day as its fourth step, in all 23 languages, and `e2e/help/README.md` now holds the whole visual contract, the traps that cost this round (the pinned clock, prettier against the client sources, a killed run holding its ports) and how to find out which pictures a change forces to be retaken. --- client/e2e/auth.setup.ts | 3 +- client/e2e/help/README.md | 90 +++- client/e2e/help/external.ts | 42 +- client/e2e/help/fixtures.ts | 395 +++++++++++++++--- client/e2e/help/guide.ts | 115 ++++- client/e2e/help/trip-map.guide.ts | 32 +- client/e2e/help/trip-places.guide.ts | 18 + client/e2e/screenshots/seed.setup.ts | 7 +- client/e2e/server-launch.mjs | 5 +- client/playwright.config.ts | 15 +- .../public/help-media/audit-log/step-1.webp | Bin 59550 -> 55594 bytes .../public/help-media/audit-log/step-2.webp | Bin 19216 -> 17458 bytes .../help-media/create-place/result.webp | Bin 156506 -> 152750 bytes .../help-media/create-place/step-1.webp | Bin 69634 -> 69844 bytes .../help-media/create-place/step-2.webp | Bin 38054 -> 33800 bytes .../help-media/create-place/step-3.webp | Bin 59786 -> 49478 bytes .../help-media/create-place/step-4.webp | Bin 59852 -> 48994 bytes .../help-media/create-place/step-5.webp | Bin 29754 -> 11882 bytes client/public/help-media/ctx/trip-files.webp | Bin 44104 -> 43912 bytes client/public/help-media/ctx/trip-places.webp | Bin 228478 -> 229026 bytes .../help-media/delete-place/step-1.webp | Bin 75240 -> 74684 bytes .../help-media/delete-place/step-2.webp | Bin 49638 -> 50038 bytes .../public/help-media/edit-place/step-1.webp | Bin 62444 -> 71418 bytes .../public/help-media/edit-place/step-2.webp | Bin 62956 -> 53664 bytes .../public/help-media/edit-place/step-3.webp | Bin 30194 -> 11616 bytes .../help-media/files-filter/step-1.webp | Bin 26630 -> 26304 bytes .../help-media/files-filter/step-2.webp | Bin 24752 -> 24918 bytes .../help-media/files-filter/step-3.webp | Bin 24252 -> 24284 bytes .../help-media/files-filter/step-4.webp | Bin 18782 -> 18640 bytes .../public/help-media/files-link/result.webp | Bin 46502 -> 46786 bytes .../public/help-media/files-link/step-2.webp | Bin 33296 -> 32754 bytes .../public/help-media/files-link/step-3.webp | Bin 39036 -> 36954 bytes .../public/help-media/files-link/step-4.webp | Bin 38148 -> 33544 bytes .../public/help-media/files-link/step-5.webp | Bin 27208 -> 23402 bytes .../help-media/files-preview/step-1.webp | Bin 25426 -> 25402 bytes .../help-media/files-preview/step-2.webp | Bin 8582 -> 25456 bytes .../help-media/files-preview/step-3.webp | Bin 10002 -> 15194 bytes .../help-media/files-preview/step-4.webp | Bin 18748 -> 27150 bytes .../public/help-media/files-star/result.webp | Bin 23194 -> 23228 bytes .../public/help-media/files-star/step-2.webp | Bin 25466 -> 25180 bytes .../public/help-media/files-star/step-3.webp | Bin 25118 -> 25140 bytes .../public/help-media/files-sync/result.webp | Bin 46170 -> 46092 bytes .../public/help-media/files-sync/step-2.webp | Bin 13742 -> 13520 bytes .../public/help-media/files-sync/step-3.webp | Bin 26372 -> 26808 bytes .../public/help-media/files-trash/result.webp | Bin 44104 -> 43912 bytes .../public/help-media/files-trash/step-3.webp | Bin 11498 -> 10520 bytes .../public/help-media/files-trash/step-4.webp | Bin 12474 -> 12036 bytes .../public/help-media/files-trash/step-5.webp | Bin 11898 -> 11522 bytes .../help-media/files-upload/result.webp | Bin 45898 -> 45874 bytes .../help-media/files-upload/step-2.webp | Bin 25364 -> 26292 bytes .../help-media/files-upload/step-3.webp | Bin 33982 -> 34884 bytes .../help-media/files-upload/step-4.webp | Bin 26540 -> 26556 bytes .../help-media/filter-bookings/step-5.webp | Bin 36300 -> 36474 bytes .../help-media/filter-places/step-1.webp | Bin 69888 -> 69774 bytes .../help-media/filter-places/step-2.webp | Bin 64698 -> 64546 bytes .../help-media/filter-places/step-3.webp | Bin 70822 -> 70676 bytes .../help-media/filter-places/step-4.webp | Bin 74298 -> 74230 bytes .../public/help-media/gallery-map/step-1.webp | Bin 24636 -> 24554 bytes .../public/help-media/gallery-map/step-2.webp | Bin 133624 -> 138202 bytes .../import-booking-file/step-5.webp | Bin 25064 -> 25258 bytes .../help-media/import-places-file/result.webp | Bin 175440 -> 171610 bytes .../help-media/import-places-file/step-1.webp | Bin 69498 -> 69672 bytes .../help-media/import-places-file/step-2.webp | Bin 53076 -> 52798 bytes .../help-media/import-places-file/step-3.webp | Bin 51104 -> 50978 bytes .../help-media/import-places-file/step-4.webp | Bin 33828 -> 33928 bytes .../help-media/import-places-list/step-1.webp | Bin 69480 -> 69662 bytes .../help-media/import-places-list/step-2.webp | Bin 57836 -> 57594 bytes .../help-media/import-places-list/step-3.webp | Bin 44292 -> 44140 bytes .../help-media/install-plugin/step-1.webp | Bin 89432 -> 89474 bytes .../help-media/map-add-place/result.webp | Bin 270752 -> 272132 bytes .../help-media/map-add-place/step-1.webp | Bin 192912 -> 194870 bytes .../help-media/map-add-place/step-2.webp | Bin 45618 -> 29386 bytes .../help-media/map-add-place/step-3.webp | Bin 43100 -> 32016 bytes .../help-media/map-add-place/step-4.webp | Bin 31760 -> 13076 bytes .../help-media/map-dawarich-trail/result.webp | Bin 153726 -> 157086 bytes .../help-media/map-dawarich-trail/step-1.webp | Bin 96642 -> 94838 bytes .../help-media/map-dawarich-trail/step-2.webp | Bin 201200 -> 202332 bytes .../help-media/map-dawarich-trail/step-3.webp | Bin 96810 -> 94944 bytes .../public/help-media/map-markers/step-1.webp | Bin 80682 -> 64374 bytes .../public/help-media/map-markers/step-2.webp | Bin 138562 -> 93018 bytes .../public/help-media/map-markers/step-3.webp | Bin 82942 -> 67114 bytes .../public/help-media/map-markers/step-4.webp | Bin 118990 -> 119204 bytes .../public/help-media/map-markers/step-5.webp | Bin 132898 -> 124790 bytes .../help-media/map-satellite/step-1.webp | Bin 107342 -> 104434 bytes .../help-media/map-satellite/step-2.webp | Bin 6476 -> 213942 bytes .../help-media/map-satellite/step-3.webp | Bin 26662 -> 182788 bytes .../help-media/map-whole-trip/result.webp | Bin 158690 -> 151760 bytes .../help-media/map-whole-trip/step-1.webp | Bin 56380 -> 48578 bytes .../help-media/map-whole-trip/step-2.webp | Bin 61642 -> 54974 bytes .../help-media/map-whole-trip/step-3.webp | Bin 60534 -> 54288 bytes .../help-media/map-whole-trip/step-4.webp | Bin 61096 -> 52890 bytes .../help-media/packing-categories/step-1.webp | Bin 26634 -> 26758 bytes .../help-media/place-onto-day/result.webp | Bin 221354 -> 210216 bytes .../help-media/place-onto-day/step-1.webp | Bin 138686 -> 132902 bytes .../help-media/place-onto-day/step-2.webp | Bin 104648 -> 95028 bytes .../help-media/place-onto-day/step-3.webp | Bin 92240 -> 89274 bytes .../help-media/place-onto-day/step-4.webp | Bin 101550 -> 88186 bytes .../help-media/place-to-open-day/step-1.webp | Bin 71310 -> 71844 bytes .../help-media/place-to-open-day/step-2.webp | Bin 94896 -> 64826 bytes .../help-media/place-to-open-day/step-3.webp | Bin 99546 -> 73548 bytes .../help-media/place-to-open-day/step-4.webp | Bin 0 -> 114844 bytes .../help-media/select-places/result.webp | Bin 156090 -> 150612 bytes .../help-media/select-places/step-1.webp | Bin 72616 -> 72488 bytes .../help-media/select-places/step-2.webp | Bin 78240 -> 78824 bytes .../help-media/select-places/step-3.webp | Bin 78390 -> 78824 bytes .../help-media/select-places/step-4.webp | Bin 73706 -> 73878 bytes .../help-media/studio-elements/step-1.webp | Bin 19732 -> 16310 bytes .../help-media/studio-elements/step-2.webp | Bin 30366 -> 28040 bytes .../help-media/studio-export/step-1.webp | Bin 15140 -> 14242 bytes .../help-media/studio-export/step-2.webp | Bin 22414 -> 21884 bytes .../help-media/studio-export/step-3.webp | Bin 22080 -> 21402 bytes .../help-media/studio-properties/step-1.webp | Bin 23272 -> 20934 bytes .../help-media/studio-properties/step-2.webp | Bin 29524 -> 35116 bytes .../help-media/studio-properties/step-3.webp | Bin 28076 -> 26834 bytes .../help-media/studio-travel/step-1.webp | Bin 19474 -> 15402 bytes .../help-media/studio-travel/step-2.webp | Bin 32724 -> 30032 bytes .../help-media/transports-list/step-3.webp | Bin 26518 -> 26774 bytes .../help-media/transports-list/step-4.webp | Bin 28106 -> 29700 bytes .../help-media/transports-list/step-5.webp | Bin 14256 -> 14630 bytes client/src/components/Help/HelpGuideView.tsx | 13 +- client/src/components/Help/HelpHome.tsx | 2 +- client/src/help/contexts/tripPlaces.ts | 2 +- shared/src/i18n/ar/help.ts | 5 +- shared/src/i18n/br/help.ts | 4 +- shared/src/i18n/ca/help.ts | 4 +- shared/src/i18n/cs/help.ts | 4 +- shared/src/i18n/de/help.ts | 4 +- shared/src/i18n/en/help.ts | 4 +- shared/src/i18n/es/help.ts | 4 +- shared/src/i18n/fr/help.ts | 4 +- shared/src/i18n/gr/help.ts | 4 +- shared/src/i18n/hu/help.ts | 5 +- shared/src/i18n/id/help.ts | 4 +- shared/src/i18n/it/help.ts | 4 +- shared/src/i18n/ja/help.ts | 4 +- shared/src/i18n/ko/help.ts | 4 +- shared/src/i18n/nl/help.ts | 4 +- shared/src/i18n/pl/help.ts | 4 +- shared/src/i18n/ru/help.ts | 4 +- shared/src/i18n/sv/help.ts | 4 +- shared/src/i18n/tr/help.ts | 4 +- shared/src/i18n/uk/help.ts | 4 +- shared/src/i18n/vi/help.ts | 4 +- shared/src/i18n/zh-TW/help.ts | 5 +- shared/src/i18n/zh/help.ts | 5 +- 145 files changed, 724 insertions(+), 111 deletions(-) create mode 100644 client/public/help-media/place-to-open-day/step-4.webp diff --git a/client/e2e/auth.setup.ts b/client/e2e/auth.setup.ts index bd97a4444..2a14bdfd2 100644 --- a/client/e2e/auth.setup.ts +++ b/client/e2e/auth.setup.ts @@ -1,9 +1,10 @@ import { test as setup, expect } from '@playwright/test' import { dismissSystemNotices } from './helpers' +import { E2E_STATE_FILE } from '../playwright.config' // Relative to the config dir (client/), matching `storageState` in // playwright.config.ts. Playwright runs from the client workspace root. -const stateFile = 'e2e/.tmp/state.json' +const stateFile = E2E_STATE_FILE // Credentials match e2e/server-launch.mjs (ADMIN_EMAIL/ADMIN_PASSWORD). The // seeded admin is created with must_change_password=1, so the first login goes diff --git a/client/e2e/help/README.md b/client/e2e/help/README.md index 633bf1790..5716b2c69 100644 --- a/client/e2e/help/README.md +++ b/client/e2e/help/README.md @@ -12,9 +12,11 @@ in a script. | What | Where | Value | |---|---|---| | Viewport | `guide.ts` `VIEWPORT` | 1920 × 1080, device scale 2 (`playwright.config.ts`, project `help-media`) | -| Step picture frame | `guide.ts` `frameFor` | 16:10, at least 960 px wide, 64 px padding around the target, centred on it; a target taller than the frame is shown from its top | -| Ring around the target | `guide.ts` `ring` | 3 px in the app's `--accent`, 12 px radius, 6 px outside the element, the rest dimmed 30 %; a numbered badge (step number) at the top-left corner | -| Drag & drop | `guide.ts` `ringDrag` (a step with `dropTo`) | source ringed and numbered, destination ringed dashed, a bowed arrow from the one to the other, both undimmed | +| Step picture frame | `guide.ts` `frameFor` | 16:10, at least 960 px wide, 64 px padding around the target, centred on it, never larger than the largest 16:10 frame the viewport holds (1728 × 1080). A target wider than that, a full-width row for instance, is therefore cut at the sides, and that is accepted: the narrow frame is the format of the whole library, and a picture that widens to fit one row is at a different magnification from the one beside it. A target taller than the frame is anchored at its top, so a long section shows its heading | +| Ring around the target | `guide.ts` `ring` | 3 px in the app's `--accent`, 12 px radius, 6 px outside the element, the rest dimmed 30 %. A white hairline goes outside the ring and the badge only where the surface measured behind them has too little contrast against the accent, which is the lightbox and the other near-black overlays | +| The step's number | `guide.ts` `ring` | a 28 px disc in the accent on the ring's top-left corner, outside it. Where that spot is not inside the frame, which is every target wider than the frame, it moves inside far enough to clear the frame's edge. The number is part of the picture; the panel numbers the step again beside it and puts nothing on top of the picture | +| Raster tiles | `guide.ts` `settle` → `showLoadedTiles` | loaded tiles are forced visible before every shot. Leaflet fades a tile in over 200 ms and takes the progress from `+new Date()`, and the clock is pinned, so without this the satellite imagery and every raster basemap are a grey rectangle although each tile came back 200 | +| Drag & drop | `guide.ts` `ringDrag` (a step with `dropTo`) | source ringed, destination ringed dashed, a bowed arrow from the one to the other, both undimmed | | Hover | `captureGuide` | the target is hovered before the shot (tooltips, hover-only buttons show); `hover` overrides where the centre is wrong | | Result picture | `guide.media.result` | the full frame after the last step, pointer parked in the corner | | Hero (screen overview) | `captureHero` | the full frame of the screen as the reader finds it | @@ -43,8 +45,67 @@ change the theme, the language or the zoom for a picture. 5. Translate the block into all 22 locales (`i18n:parity:strict` is the gate) and run `src/help/registry.test.ts`, which checks every promised picture is on disk. +## What the fixtures may look like + +The documents and pictures the guides upload are drawn in `fixtures.ts`, because +no real person's paperwork and no photograph may live in this repository. They +still have to look like something a traveller would really put into a trip, or +the picture teaches the reader that the feature is a toy. + +- **A document is a document.** `drawPdf` takes an issuer band, a title, a + reference line, a table of labelled fields and a footer, which is the shape of + every confirmation, ticket and voucher. Four lines of Helvetica on white is not + a document; it was the first attempt and it was thrown out. +- **A picture is a graphic, not a painting of a photograph.** A hand-drawn + market or landscape reads as clip art at any size, however it is shaded, and it + was tried three times. What works is the kind of image people actually upload: + a map screenshot with a pin and a search field, a booking confirmation in a + browser window, a printed network map. Those are drawings in reality too, so a + drawing of them is honest. +- **Every date comes from `e2e/dates.ts`**, never from a calendar typed into a + fixture. A confirmation whose check-in is two days before the trip's last day + keeps making sense next month. +- The names of the files are part of the seed: guides find their row by name, so + renaming a fixture means renaming it in the guide too. + +## Changing the style + +`guide.ts` is shared by every picture, so anything changed there is a property of +the whole library, not of the guide in front of you. Before changing it, work out +which pictures actually come out different and re-render exactly those, one +`--grep` away: + +```bash +npm run help:media -- --grep "pictures: (files-trash|files-preview)$|hero: trip-files" +``` + +The staging directory answers most of those questions without a browser, because +the frame is in the file: + +```bash +# which pictures were taken at the frame's maximum, i.e. cut at the sides +python -c "import struct,os;[print(r,f,struct.unpack('>II',open(os.path.join(r,f),'rb').read(24)[16:24])) for r,_,fs in os.walk('e2e/.tmp/help-media') for f in fs if f.endswith('.png')]" +``` + +A change that alters every picture (the frame, the ring's geometry, the viewport) +is a full run of about four hours on one worker. It is not a thing to do twice, +so look at three or four pictures from a subset run before starting it. + ## Rules learned the hard way +- Never run `npx prettier` over `client/` sources: `client/.prettierrc` says + `semi: true` and the sources are written without semicolons, so it rewrites + whole files. Nothing in CI formats the client. +- A killed run leaves its server holding 3011 and 5183, and the next run dies + with "port is already used". Free them first: + `Get-NetTCPConnection -LocalPort 3011 -State Listen | %{ Stop-Process -Id $_.OwningProcess -Force }`. +- The browser's clock is pinned to the picture day (`PICTURE_DAY`). Anything in + the app or a library that animates from the wall clock therefore never + finishes: Leaflet's tile fade is the one that bit, and the fix is in `settle`. + A new picture that comes out empty or grey is worth suspecting of the same. +- `promote.mjs` converts the whole staging directory, so a guide that was not + re-run keeps the picture it had; staging is the source of truth for what gets + published, not the last run. - Never edit `shared/` while a media run is going: the watcher rebuilds `dist` mid-run and the pictures show raw i18n keys. - Never `npm run build --workspace=shared` while `npm run dev` is running; restart @@ -60,6 +121,29 @@ change the theme, the language or the zoom for a picture. A guide that has to find a date by its label builds it with the same helpers (`short`, `long`, `pickerLabel`, `dotted`) instead of writing a calendar date. +## How the panel shows them + +`src/components/Help/HelpGuideView.tsx` and `HelpHome.tsx` hold the other half of +the style, and the two have to agree: + +- A step picture goes into a 16:10 box, a hero and a result picture into a 16:9 + one, and all three with `object-contain`. Never `object-cover`: the pictures + are already framed, and covering crops them a second time, which took the + sides off every wide one. +- Nothing is drawn over a picture in the panel. The step is numbered beside the + text and the number is in the picture itself. +- A click opens the lightbox, which shows the picture at its own size. + +## Before you promote + +Look at three or four of the new pictures, not the list of passing tests: + +- The ring is in the picture and visible against what is behind it. +- The number is in the picture. +- What the step's text names is in the frame. +- A map shows a map, not a grey rectangle. +- An uploaded document looks like a document someone would upload. + ## The guides that show another service A few guides picture TREK talking to something outside it: AirTrail (flights diff --git a/client/e2e/help/external.ts b/client/e2e/help/external.ts index 34db7e2dc..1af591813 100644 --- a/client/e2e/help/external.ts +++ b/client/e2e/help/external.ts @@ -181,6 +181,15 @@ export const NEXTCLOUD_BASE_PATH = '/Reisen' export const NEXTCLOUD_FOLDER = 'Autumn in Japan' export const NEXTCLOUD_DOCUMENTS = ['ryokan-invoice.pdf', 'shinkansen-eticket.pdf'] +/** What `drawPdf` in fixtures.ts takes; repeated here so this file needs nothing from it. */ +export interface StoreDocument { + issuer: string + title: string + reference: string + fields: readonly (readonly [string, string])[] + footer: string +} + function davRoot(): { url: string; auth: string } { const url = `${env('HELP_MEDIA_NEXTCLOUD_URL')}/remote.php/dav/files/${env('HELP_MEDIA_NEXTCLOUD_USER')}` const auth = 'Basic ' + Buffer.from(`${env('HELP_MEDIA_NEXTCLOUD_USER')}:${env('HELP_MEDIA_NEXTCLOUD_PASSWORD')}`).toString('base64') @@ -198,7 +207,7 @@ async function dav(method: string, path: string, body?: BodyInit, extra: Record< * folder holding two documents and nothing else, however the last run left it. * `pdf` draws the documents, so this file stays free of binary fixtures. */ -export async function ensureNextcloudFolder(pdf: (title: string, lines: string[]) => Buffer): Promise { +export async function ensureNextcloudFolder(pdf: (doc: StoreDocument) => Buffer): Promise { const folder = `${NEXTCLOUD_BASE_PATH}/${NEXTCLOUD_FOLDER}` for (const dir of [NEXTCLOUD_BASE_PATH, folder]) { const made = await dav('MKCOL', `${dir}/`) @@ -214,13 +223,36 @@ export async function ensureNextcloudFolder(pdf: (title: string, lines: string[] const gone = await dav('DELETE', `${folder}/${name}`) if (![204, 404].includes(gone.status)) throw new Error(`Nextcloud DELETE ${name}: HTTP ${gone.status}`) } - const documents: Record = { - 'ryokan-invoice.pdf': ['Hakone Ginyu, invoice 2026-0918', 'Two nights, two guests, half board', 'JPY 96,000, paid by card'], - 'shinkansen-eticket.pdf': ['Nozomi 21, Tokyo to Kyoto', 'Car 7, seats 12A and 12B', 'Reserved, non-smoking'], + const documents: Record = { + 'ryokan-invoice.pdf': { + issuer: 'Hakone Ginyu', + title: 'Invoice', + reference: 'Invoice 2026-0918, confirmation RY-4471', + fields: [ + ['Guests', '2 adults, one room'], + ['Nights', 'Two nights, half board'], + ['Room and board', 'JPY 84,000'], + ['Onsen tax', 'JPY 12,000'], + ['Total, paid by card', 'JPY 96,000'], + ], + footer: 'Paid in full. Thank you for staying with us.', + }, + 'shinkansen-eticket.pdf': { + issuer: 'JR Central', + title: 'Reserved seat ticket', + reference: 'Nozomi 21, Tokyo to Kyoto', + fields: [ + ['Date', 'Day 6 of the trip'], + ['Departure / arrival', 'Tokyo 08:30, Kyoto 10:45'], + ['Car and seats', 'Car 7, seats 12A and 12B'], + ['Class', 'Ordinary, reserved, non-smoking'], + ], + footer: 'Keep the ticket until you leave the station; the gate reads it twice.', + }, } for (const name of NEXTCLOUD_DOCUMENTS) { if (names.includes(name)) continue - const bytes = pdf(name.replace(/\.pdf$/, ''), documents[name]) + const bytes = pdf(documents[name]) const body = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer const put = await dav('PUT', `${folder}/${name}`, body, { 'Content-Type': 'application/pdf' }) if (![201, 204].includes(put.status)) throw new Error(`Nextcloud PUT ${name}: HTTP ${put.status} ${await put.text()}`) diff --git a/client/e2e/help/fixtures.ts b/client/e2e/help/fixtures.ts index 8fc38970c..17972e882 100644 --- a/client/e2e/help/fixtures.ts +++ b/client/e2e/help/fixtures.ts @@ -3,7 +3,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs' import path from 'node:path' import { gzipSync } from 'node:zlib' import { request as apiRequest, type APIRequestContext, type Page } from '@playwright/test' -import { E2E_BASE_URL } from '../../playwright.config' +import { E2E_BASE_URL, E2E_SEED_FILE } from '../../playwright.config' import { OUT_DIR, PICTURE_DAY } from './guide' import { at, day, emlDate, mailHeaderDate, short } from '../dates' @@ -237,7 +237,7 @@ export async function ensureUsers(api: APIRequestContext, wanted: { username: st /** The demo trip the screenshot seed creates; its ids are on disk because Playwright projects share no memory. */ export function seededTrip(): { tripId: number; dayIds: number[]; placeIds: number[]; memberIds: number[] } { - return JSON.parse(readFileSync(path.join(process.cwd(), 'e2e', '.tmp', 'seed.json'), 'utf8')) + return JSON.parse(readFileSync(path.join(process.cwd(), E2E_SEED_FILE), 'utf8')) } export async function ensureAdminFixtures(api: APIRequestContext): Promise { @@ -1368,64 +1368,324 @@ export async function ensureCostsFixtures(api: APIRequestContext): Promise */ /** One-page PDFs. The body is what the reader would see if they opened the file. */ -const FILE_PDFS = { +const FILE_PDFS: Record = { 'JR-Pass-voucher': { - title: 'Japan Rail Pass', - lines: ['Exchange order 7714-20', 'Ordinary, 14 days, 2 adults', 'Exchange at Haneda T3 arrivals, JR desk', 'Valid from the day it is exchanged'], + issuer: 'Japan Rail Pass', + title: 'Exchange order', + reference: 'Order 7714-20-JP', + fields: [ + ['Pass', 'Japan Rail Pass, Ordinary'], + ['Validity', '14 consecutive days'], + ['Travellers', '2 adults'], + ['Exchange at', 'Haneda Airport Terminal 3, JR East Travel Service Center'], + ['Opening hours', 'Daily 07:30 to 18:30'], + ], + footer: 'The pass is valid from the day it is exchanged, not from the day of purchase.', }, 'LH716-boarding-pass': { - title: 'Boarding pass LH716', - lines: ['Frankfurt FRA to Tokyo Haneda HND', `${short(-9)}, boarding 12:20, gate A34`, 'Seat 34K, window', 'Booking reference LH-4QK2PZ'], + issuer: 'Lufthansa', + title: 'Boarding pass', + reference: 'Booking LH-4QK2PZ, flight LH716', + fields: [ + ['Passenger', 'BOE / MAURICE MR'], + ['From', 'Frankfurt (FRA), Terminal 1'], + ['To', 'Tokyo Haneda (HND), Terminal 3'], + ['Date', short(-9)], + ['Boarding / departure', '12:20 at gate A34, departure 13:05'], + ['Seat / class', '34K, window, Economy'], + ], + footer: 'Be at the gate 20 minutes before departure. Boarding closes 15 minutes before.', }, 'old-draft-itinerary': { + issuer: 'Autumn in Japan', title: 'Itinerary, first draft', - lines: ['Day 1 Asakusa and the river', 'Day 2 Shibuya, Meiji Jingu', 'Day 3 free', 'Superseded by the plan in TREK'], + reference: 'Superseded by the plan in TREK', + fields: [ + ['Day 1', 'Asakusa, Senso-ji and the river'], + ['Day 2', 'Shibuya, Meiji Jingu, Harajuku'], + ['Day 3', 'Free, weather permitting'], + ['Day 4', 'Shinkansen to Kyoto, Gion in the evening'], + ], + footer: 'Kept for the notes on day 4; everything else moved into the trip.', }, 'hakone-ryokan-confirmation': { - title: 'Ryokan booking', - lines: ['Two nights, half board', 'Kaiseki served at 18:30', 'Check in from 15:00, check out 11:00', 'Confirmation RY-4471'], + issuer: 'Hakone Ginyu', + title: 'Reservation confirmed', + reference: 'Confirmation RY-4471', + fields: [ + ['Guests', '2 adults, one room'], + ['Nights', 'Two nights, half board'], + ['Check-in / check-out', 'From 15:00, until 11:00'], + ['Dinner', 'Kaiseki served at 18:30 in the room'], + ['Total', 'JPY 96,000, paid by card'], + ], + footer: 'Cancellation is free up to seven days before arrival.', }, 'kyoto-bus-pass': { - title: 'Kyoto city bus pass', - lines: ['One day, all city lines', 'Show the pass when leaving the bus', 'Not valid on the Kyoto Bus express'], + issuer: 'Kyoto City Bus', + title: 'One day pass', + reference: 'Pass 0421-8837', + fields: [ + ['Valid on', 'All city lines inside the flat-fare zone'], + ['Valid for', 'One calendar day, first use to last bus'], + ['Not valid on', 'Kyoto Bus express services and the airport lines'], + ], + footer: 'Show the pass to the driver when you leave the bus, printed side up.', }, -} as const +} /** Pictures, drawn flat so they read at thumbnail size as well as full screen. */ -const FILE_IMAGES = { +/** + * The pictures of the trip. No photograph may live in this repository, so they + * are composed instead: three layers per picture, the far one thrown out of + * focus, the near one sharp, and grain over the lot. A single flat drawing + * reads as a drawing at any size; a depth of field does not. + */ +interface PhotoLayer { + /** The SVG body of this layer, over the 1600×900 frame. */ + svg: string + /** How far out of focus it is, in pixels. */ + blur?: number +} + +interface PhotoFixture { + ext: 'jpg' | 'png' + layers: readonly PhotoLayer[] +} + +/** Dust and film grain, sprinkled from a fixed seed so a re-run draws the same frame. */ +const grain = (seed: number, count = 900): string => + Array.from({ length: count }, (_, i) => { + const r = (n: number) => (Math.sin(seed + i * n) + 1) / 2 + return `` + }).join('') + +/** Somebody with their back to us, which is what fills a market lane. */ +const person = (x: number, ground: number, h: number, tone: string): string => + `` + + `` + +/** A pile of produce: a handful of small round things, not one big rectangle. */ +const pile = (x: number, y: number, colour: string, n = 9): string => + Array.from({ length: n }, (_, i) => { + const row = Math.floor(i / 4) + return `` + }).join('') + +/** A haze of light: what a lamp or the sun does to the air in front of it. */ +const bloom = (x: number, y: number, r: number, colour: string, opacity = 0.7): string => + `` + +const FILE_IMAGES: Record = { 'nishiki-market': { + // What people photograph for later is rarely the market itself; it is the + // map with the market pinned on it. ext: 'jpg', - svg: ` - - - ${[0, 1, 2, 3, 4].map(i => ``).join('\n ')} - `, + layers: [ + { + svg: ` + + + + + + ${[0, 1, 2, 3, 4, 5, 6, 7].map(i => [0, 1, 2, 3, 4].map(k => ``).join('')).join('\n ')} + + + + + ${[0, 1, 2, 3, 4].map(k => ``).join('\n ')} + ${[0, 1, 2, 3, 4].map(k => ``).join('\n ')} + ${[0, 1, 2, 3, 4, 5, 6, 7].map(i => ``).join('\n ')} + ${[0, 1, 2, 3, 4, 5, 6, 7].map(i => ``).join('\n ')} + + + + + + + + + + Nishiki-koji Street + Shijo-dori + Kamo River + Shinsen-en + Gosho Park + NAKAGYO + ${[[300, 300], [1080, 470], [560, 690], [1180, 660]].map(([x, y]) => ``).join('\n ')} + + + + + + + Nishiki Market + 4.4 (12,806) · Market + + + + + + Nishiki Market, Kyoto + + + + + + + + + 200 m + Map data © OpenStreetMap contributors + ${grain(6.2, 200)}`, + }, + ], }, 'hakone-ryokan': { + // The confirmation as it looked in the browser, saved to the trip. ext: 'jpg', - svg: ` - - - - - ${[0, 1, 2, 3].map(i => ``).join('\n ')} - `, + layers: [ + { + svg: ` + + + + + + + + + + hakone-ginyu.jp/reservations/RY-4471 + + Hakone Ginyu + Ryokan · Miyanoshita, Hakone-machi, Kanagawa + + + Confirmed + + CONFIRMATION + RY-4471 + ${[['Check-in', `${short(-4)}, from 15:00`], ['Check-out', `${short(-2)}, until 11:00`], ['Guests', '2 adults, one room'], ['Room', 'Japanese suite with open-air bath'], ['Meals', 'Kaiseki dinner and breakfast included']].map(([k, v], i) => ` + ${k.toUpperCase()} + ${v} + + `).join('\n ')} + TOTAL, PAID BY CARD + JPY 96,000 + + + + + + + + + + + + ADDRESS + 100-1 Miyanoshita, Hakone-machi + Ashigarashimo, Kanagawa 250-0404 + + + Cancellation + Free until seven days before arrival. + After that, one night is charged. + Questions: +81 460 82 3355 + ${grain(9.4, 160)}`, + }, + ], }, 'jr-pass-map': { ext: 'png', - svg: ` - - - ${[[180, 700], [520, 700], [760, 460], [1120, 460], [1420, 240], [180, 250], [640, 250], [900, 500], [1420, 500]].map(([x, y]) => ``).join('\n ')}`, + layers: [ + { + // A printed network map: paper, its fold and the grid under the lines. + svg: ` + + + + + + + ${Array.from({ length: 9 }, (_, i) => ``).join('\n ')} + ${Array.from({ length: 16 }, (_, i) => ``).join('\n ')} + + + + + + + + + ${[[120, 760, 'Hakata'], [420, 690, 'Hiroshima'], [640, 560, 'Osaka'], [900, 490, 'Kyoto'], [1300, 490, 'Nagoya'], [1470, 420, 'Tokyo'], [150, 230, 'Kanazawa'], [600, 230, 'Toyama'], [1060, 490, 'Gifu']].map(([x, y, name]) => + `${name}`).join('\n ')} + + + Rail pass network + Sanyo line + Hokuriku + + ${grain(5.5, 260)}`, + }, + ], }, arashiyama: { ext: 'jpg', - svg: ` - ${Array.from({ length: 16 }, (_, i) => ``).join('\n ')} - - `, + layers: [ + { + // The grove behind the path: light coming down through it, nothing in focus. + blur: 24, + svg: ` + + + + + + ${bloom(780, 90, 460, '#fbffd8', 0.55)} + ${Array.from({ length: 26 }, (_, i) => { + const x = -30 + i * 64 + const tilt = ((i % 5) - 2) * 9 + return `` + }).join('\n ')}`, + }, + { + // The stems either side of the path, just off the focal plane. + blur: 4, + svg: `${Array.from({ length: 9 }, (_, i) => { + const x = i < 5 ? 20 + i * 120 : 1000 + (i - 5) * 130 + const w = 42 + (i % 3) * 12 + const tilt = ((i % 4) - 1.5) * 12 + return ` + + ${Array.from({ length: 6 }, (_, k) => ``).join('')} + + ` + }).join('\n ')}`, + }, + { + // The path itself, in focus, with the fence along it and the dapple of + // light that falls between the stems. + svg: ` + + + ${[0, 1, 2, 3, 4, 5, 6, 7].map(i => ` + + + `).join('\n ')} + ${[0, 1, 2, 3, 4, 5, 6, 7].map(i => ``).join('\n ')} + ${grain(2.4, 420)} + + + + + ${grain(11.3)}`, + }, + ], }, -} as const +} /** The two plain-text documents; written out rather than drawn. */ const FILE_TEXTS = { @@ -1497,18 +1757,51 @@ const tmpDir = (): string => { * Exported for the document-sync guide, which puts two of these into the store * (`external.ts`) rather than into the trip. */ -export function drawPdf(title: string, lines: readonly string[]): Buffer { - const escape = (s: string) => s.replace(/([\\()])/g, '\\$1') - const content = [ - `BT /F1 26 Tf 64 752 Td (${escape(title)}) Tj ET`, - ...lines.map((line, i) => `BT /F1 13 Tf 64 ${700 - i * 26} Td (${escape(line)}) Tj ET`), - ].join('\n') +export interface PdfDoc { + /** The company or office the paper comes from, printed in the band at the top. */ + issuer: string + /** What the document is, under the issuer. */ + title: string + /** The line under the title: a booking code, an order number. */ + reference: string + /** The body: a label and its value per row, the way a confirmation prints them. */ + fields: readonly (readonly [string, string])[] + /** The small print along the bottom. */ + footer: string +} + +export function drawPdf(doc: PdfDoc): Buffer { + const esc = (v: string) => v.replace(/([\\()])/g, '\\$1') + // A4 in points, the origin at the bottom left. The band is drawn first, then + // the type over it; everything is Helvetica, which every PDF reader has. + const W = 595 + const ink = '0.07 0.09 0.15' + const parts: string[] = [ + `${ink} rg 0 762 ${W} 80 re f`, + `BT /F2 17 Tf 1 1 1 rg 56 806 Td (${esc(doc.issuer.toUpperCase())}) Tj ET`, + `BT /F1 10 Tf 0.75 0.78 0.85 rg 56 786 Td (${esc(doc.footer)}) Tj ET`, + `BT /F2 21 Tf 0.07 0.09 0.15 rg 56 706 Td (${esc(doc.title)}) Tj ET`, + `BT /F1 11 Tf 0.35 0.38 0.45 rg 56 684 Td (${esc(doc.reference)}) Tj ET`, + `0.85 0.86 0.9 RG 1 w 56 668 m ${W - 56} 668 l S`, + ] + doc.fields.forEach(([label, value], i) => { + const y = 636 - i * 34 + parts.push(`BT /F1 9 Tf 0.45 0.48 0.55 rg 56 ${y + 14} Td (${esc(label.toUpperCase())}) Tj ET`) + parts.push(`BT /F2 13 Tf 0.07 0.09 0.15 rg 56 ${y} Td (${esc(value)}) Tj ET`) + parts.push(`0.92 0.93 0.95 RG 0.6 w 56 ${y - 12} m ${W - 56} ${y - 12} l S`) + }) + const bottom = 636 - doc.fields.length * 34 - 40 + parts.push(`0.96 0.97 0.98 rg 56 ${bottom - 46} ${W - 112} 58 re f`) + parts.push(`BT /F1 10 Tf 0.35 0.38 0.45 rg 72 ${bottom - 12} Td (${esc(doc.footer)}) Tj ET`) + parts.push(`BT /F1 9 Tf 0.55 0.58 0.65 rg 72 ${bottom - 30} Td (${esc('This document was issued electronically and needs no signature.')}) Tj ET`) + const content = parts.join('\n') const objects = [ '<< /Type /Catalog /Pages 2 0 R >>', '<< /Type /Pages /Kids [3 0 R] /Count 1 >>', - '<< /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Resources << /Font << /F1 5 0 R >> >> /Contents 4 0 R >>', + '<< /Type /Page /Parent 2 0 R /MediaBox [0 0 595 842] /Resources << /Font << /F1 5 0 R /F2 6 0 R >> >> /Contents 4 0 R >>', `<< /Length ${Buffer.byteLength(content, 'latin1')} >>\nstream\n${content}\nendstream`, '<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica >>', + '<< /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Bold >>', ] let pdf = '%PDF-1.4\n' const offsets: number[] = [] @@ -1530,19 +1823,23 @@ export function drawPdf(title: string, lines: readonly string[]): Buffer { */ export function filesPdfFixture(id: keyof typeof FILE_PDFS): string { const file = path.join(tmpDir(), `${id}.pdf`) - const { title, lines } = FILE_PDFS[id] - writeFileSync(file, drawPdf(title, lines)) + writeFileSync(file, drawPdf(FILE_PDFS[id])) return file } -/** A 1600×900 picture from its SVG, as `coverFixture` does; drawn on first use. */ +/** A 1600×900 picture, its layers blurred to their own degree and laid over each other. */ export async function filesImageFixture(id: keyof typeof FILE_IMAGES): Promise { - const { ext, svg } = FILE_IMAGES[id] + const { ext, layers } = FILE_IMAGES[id] const file = path.join(tmpDir(), `${id}.${ext}`) if (existsSync(file)) return file - const document = `\n ${svg}\n` - const image = sharp(Buffer.from(document)) - await (ext === 'png' ? image.png() : image.jpeg({ quality: 86 })).toFile(file) + const render = async (layer: PhotoLayer): Promise => { + const document = `\n ${layer.svg}\n` + const drawn = sharp(Buffer.from(document)) + return (layer.blur ? drawn.blur(layer.blur) : drawn).png().toBuffer() + } + const [base, ...rest] = await Promise.all(layers.map(render)) + const composed = sharp(base).composite(rest.map(input => ({ input }))) + await (ext === 'png' ? composed.png() : composed.jpeg({ quality: 88 })).toFile(file) return file } diff --git a/client/e2e/help/guide.ts b/client/e2e/help/guide.ts index 88135f7ad..2b16350ad 100644 --- a/client/e2e/help/guide.ts +++ b/client/e2e/help/guide.ts @@ -154,8 +154,9 @@ export async function captureGuide(page: Page, script: GuideScript): Promise Math.min(Math.max(v, lo), hi) -/** Ring the target in the app's accent, dim everything else, number it. */ -async function ring(page: Page, box: { x: number; y: number; width: number; height: number }, n: number): Promise { +/** + * Ring the target, dim everything else, number it. + * + * The ring is the app's accent, which stands out on nearly every surface the + * guides walk over. Over the lightbox and the other near-black overlays it does + * not: a dark accent on a dark ground is a ring nobody can see. So the surface + * behind the ring is measured, and only when it has too little contrast against + * the accent does a white hairline go around the outside of the ring and the + * badge. Everywhere else the ring keeps the single line it always had. + */ +async function ring( + page: Page, + box: { x: number; y: number; width: number; height: number }, + n: number, + frame: { x: number; y: number; width: number; height: number }, +): Promise { await page.evaluate( - ({ box, n }) => { + ({ box, n, frame }) => { const accent = getComputedStyle(document.documentElement).getPropertyValue('--accent').trim() || '#111827' const accentText = getComputedStyle(document.documentElement).getPropertyValue('--accent-text').trim() || '#ffffff' const pad = 6 + + const parse = (value: string): [number, number, number, number] | null => { + const text = value.trim() + if (text.startsWith('#')) { + const hex = text.length < 7 ? text.slice(1, 4).replace(/./g, c => c + c) : text.slice(1, 7) + const n = Number.parseInt(hex, 16) + return [(n >> 16) & 255, (n >> 8) & 255, n & 255, 1] + } + const inside = /rgba?\(([^)]+)\)/.exec(text) + if (!inside) return null + const parts = inside[1] + .split(/[\s,/]+/) + .filter(Boolean) + .map(Number) + return [parts[0], parts[1], parts[2], parts.length > 3 ? parts[3] : 1] + } + const luminance = (colour: [number, number, number, number]): number => { + const channel = (v: number) => { + const c = v / 255 + return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4 + } + return 0.2126 * channel(colour[0]) + 0.7152 * channel(colour[1]) + 0.0722 * channel(colour[2]) + } + // What lies just outside the ring, through any transparent layer. + const behind = (x: number, y: number): [number, number, number, number] => { + let node = document.elementFromPoint( + Math.max(1, Math.min(window.innerWidth - 2, x)), + Math.max(1, Math.min(window.innerHeight - 2, y)), + ) + while (node) { + const colour = parse(getComputedStyle(node).backgroundColor) + if (colour && colour[3] > 0.2) return colour + node = node.parentElement + } + return [255, 255, 255, 1] + } + // The dim layer darkens that surface before the ring is drawn over it. + const ground = luminance(behind(box.x - pad - 4, box.y + box.height / 2)) * 0.7 + const ink = luminance(parse(accent) || [17, 24, 39, 1]) + const hairline = (Math.max(ground, ink) + 0.05) / (Math.min(ground, ink) + 0.05) < 3 + const el = document.createElement('div') el.id = 'trek-help-ring' Object.assign(el.style, { @@ -231,15 +287,22 @@ async function ring(page: Page, box: { x: number; y: number; width: number; heig width: `${box.width + 2 * pad}px`, height: `${box.height + 2 * pad}px`, borderRadius: '12px', - boxShadow: `0 0 0 3px ${accent}, 0 0 0 100vmax rgba(0,0,0,0.30)`, + boxShadow: `0 0 0 3px ${accent}${hairline ? ', 0 0 0 5px rgba(255,255,255,0.92)' : ''}, 0 0 0 100vmax rgba(0,0,0,0.30)`, pointerEvents: 'none', zIndex: '2147483647', }) + // Outside the corner where that is in shot, and otherwise inside, far + // enough in to clear the frame's edge: a row wider than the picture has + // no outside left of it, and the ring's own corner is off the picture too. + const ringLeft = box.x - pad + const ringTop = box.y - pad + const left = ringLeft - 14 >= frame.x + 2 ? -14 : Math.max(10, frame.x + 10 - ringLeft) + const top = ringTop - 14 >= frame.y + 2 ? -14 : Math.max(10, frame.y + 10 - ringTop) const badge = document.createElement('div') Object.assign(badge.style, { position: 'absolute', - left: '-14px', - top: '-14px', + left: `${left}px`, + top: `${top}px`, width: '28px', height: '28px', borderRadius: '999px', @@ -247,13 +310,15 @@ async function ring(page: Page, box: { x: number; y: number; width: number; heig color: accentText, font: '700 13px/28px Poppins, system-ui, sans-serif', textAlign: 'center', - boxShadow: '0 2px 8px rgba(0,0,0,0.25)', + boxShadow: hairline + ? '0 0 0 2px rgba(255,255,255,0.92), 0 2px 8px rgba(0,0,0,0.25)' + : '0 2px 8px rgba(0,0,0,0.25)', }) badge.textContent = String(n) el.appendChild(badge) document.body.appendChild(el) }, - { box, n }, + { box, n, frame }, ) } @@ -365,5 +430,35 @@ export async function settle(page: Page): Promise { .map(img => new Promise(res => { img.onload = img.onerror = res })) await Promise.race([Promise.all(pending), new Promise(res => setTimeout(res, 3000))]) }) + await showLoadedTiles(page) await page.waitForTimeout(450) } + +/** + * Show the raster tiles that have arrived. + * + * Leaflet fades a tile in over 200 ms and works out how far it has got from + * `+new Date()`. The clock is pinned to the picture day (see PICTURE_DAY), so + * that difference never grows, the tile keeps the opacity 0 it was created + * with, and the map is a grey rectangle in the picture even though every tile + * came back with a 200. Nothing else on the page fades from the wall clock, so + * this only ever touches tiles that are already loaded. + */ +async function showLoadedTiles(page: Page): Promise { + await page.evaluate(() => { + // A rule, not an inline style: Leaflet re-runs the fade on every frame and + // writes the opacity back, so the only thing that holds is a stylesheet + // that outranks it. `leaflet-tile-loaded` is Leaflet's own class, put on a + // tile the moment its image arrives, so a tile still in flight stays hidden. + if (!document.getElementById('trek-help-tiles')) { + const style = document.createElement('style') + style.id = 'trek-help-tiles' + style.textContent = '.leaflet-tile-loaded { opacity: 1 !important; }' + document.head.appendChild(style) + } + for (const tile of document.querySelectorAll('img.leaflet-tile')) { + const img = tile as HTMLImageElement + if (img.complete && img.naturalWidth > 0) img.classList.add('leaflet-tile-loaded') + } + }) +} diff --git a/client/e2e/help/trip-map.guide.ts b/client/e2e/help/trip-map.guide.ts index ac693c918..354ed0a3e 100644 --- a/client/e2e/help/trip-map.guide.ts +++ b/client/e2e/help/trip-map.guide.ts @@ -212,6 +212,29 @@ async function glMapIdle(page: Page): Promise { ) } +/** + * Wait until the raster basemap has actually painted. + * + * `toBeVisible()` on a tile is not enough: Leaflet puts the in the DOM + * with its position and its size before the byte arrives, so a picture taken on + * that signal catches the grey underneath. A tile counts only once the browser + * has decoded it, and a screenful needs several of them. + */ +async function rasterTilesPainted(page: Page, atLeast = 6): Promise { + await page.waitForFunction( + min => { + const tiles = Array.from(document.querySelectorAll('#trek-map img.leaflet-tile')) + const painted = tiles.filter(t => { + const img = t as HTMLImageElement + return img.complete && img.naturalWidth > 0 + }) + return painted.length >= min + }, + atLeast, + { timeout: 60_000 }, + ) +} + async function deleteByName(page: Page, ...names: string[]): Promise { const { tripId } = seededTrip() const res = await page.request.get(`/api/trips/${tripId}/places`) @@ -416,15 +439,16 @@ const SCRIPTS: Record = { act: async p => { await p.getByRole('button', { name: 'Switch to satellite view' }).click() await expect(p.getByRole('button', { name: 'Switch to map view' })).toBeVisible() - // The imagery is raster tiles from a third party; give them a moment - // or the picture catches the grey underneath. - await expect(p.locator('#trek-map img.leaflet-tile').first()).toBeVisible({ timeout: 30_000 }) + // The imagery is raster tiles from a third party, and the switch is + // done long before they are on screen. + await rasterTilesPainted(p) await settle(p) await p.waitForTimeout(1500) }, }, - { target: p => pins(p).nth(pin) }, + { prepare: p => rasterTilesPainted(p), target: p => pins(p).nth(pin) }, { + prepare: p => rasterTilesPainted(p), target: p => p.getByRole('button', { name: 'Switch to map view' }), act: async p => { await p.getByRole('button', { name: 'Switch to map view' }).click() diff --git a/client/e2e/help/trip-places.guide.ts b/client/e2e/help/trip-places.guide.ts index aca703f59..0ffad6e3f 100644 --- a/client/e2e/help/trip-places.guide.ts +++ b/client/e2e/help/trip-places.guide.ts @@ -148,6 +148,24 @@ const SCRIPTS: Record = { await settle(p) }, }, + { + // The other way round, and the one most readers try first: the row is + // dragged onto a day card. The place is off the day again before the + // drag so the picture shows it leaving the column rather than a stop + // that is already there. + prepare: async p => { + await p.getByRole('button', { name: 'Undo' }).click() + await expect(row(p, SPARE.name)).toBeVisible({ timeout: 15_000 }) + await settle(p) + }, + target: p => row(p, SPARE.name), + dropTo: p => p.getByRole('button', { name: /^2 .*Day 2 / }).locator('xpath=..'), + act: async p => { + await row(p, SPARE.name).dragTo(p.getByRole('button', { name: /^2 .*Day 2 / })) + await expect(p.locator('.dp-row[role="button"]').filter({ hasText: SPARE.name }).first()).toBeVisible({ timeout: 15_000 }) + await settle(p) + }, + }, ], cleanup: p => deleteByName(p, SPARE.name), }, diff --git a/client/e2e/screenshots/seed.setup.ts b/client/e2e/screenshots/seed.setup.ts index f630dab64..cadb8fb66 100644 --- a/client/e2e/screenshots/seed.setup.ts +++ b/client/e2e/screenshots/seed.setup.ts @@ -2,7 +2,7 @@ import { test as setup, expect } from '@playwright/test' import { writeFileSync, mkdirSync } from 'node:fs' import path from 'node:path' import { seedDemoData } from './seed' -import { E2E_BASE_URL } from '../../playwright.config' +import { E2E_BASE_URL, E2E_SEED_FILE } from '../../playwright.config' /** * Populates the throwaway E2E database with the demo trip before any screenshot @@ -32,7 +32,6 @@ setup('seed the demo trip', async ({ page, playwright }) => { expect(result.tripId, 'trip was created').toBeTruthy() expect(result.placeIds.length, 'places were created').toBeGreaterThan(0) - const dir = path.join(process.cwd(), 'e2e', '.tmp') - mkdirSync(dir, { recursive: true }) - writeFileSync(path.join(dir, 'seed.json'), JSON.stringify(result, null, 2)) + mkdirSync(path.join(process.cwd(), 'e2e', '.tmp'), { recursive: true }) + writeFileSync(path.join(process.cwd(), E2E_SEED_FILE), JSON.stringify(result, null, 2)) }) diff --git a/client/e2e/server-launch.mjs b/client/e2e/server-launch.mjs index 582632cfe..e64b7a17f 100644 --- a/client/e2e/server-launch.mjs +++ b/client/e2e/server-launch.mjs @@ -12,7 +12,10 @@ import path from 'node:path' import { fileURLToPath } from 'node:url' const here = path.dirname(fileURLToPath(import.meta.url)) -const dbFile = path.join(here, '.tmp', 'e2e.db') +// The port is in the name, so two runs on two port pairs keep two databases +// and can render different guide files at the same time. +const apiPort = process.env.E2E_API_PORT || '3001' +const dbFile = path.join(here, '.tmp', `e2e-${apiPort}.db`) const serverDir = path.join(here, '..', '..', 'server') for (const f of [dbFile, `${dbFile}-wal`, `${dbFile}-shm`]) { diff --git a/client/playwright.config.ts b/client/playwright.config.ts index d139843b2..1101f341b 100644 --- a/client/playwright.config.ts +++ b/client/playwright.config.ts @@ -20,6 +20,13 @@ import { defineConfig, devices } from '@playwright/test' const WEB_PORT = Number(process.env.E2E_WEB_PORT) || 5173 const API_PORT = Number(process.env.E2E_API_PORT) || 3001 export const E2E_BASE_URL = `http://localhost:${WEB_PORT}` +/** + * The session and the seed's ids belong to the database the run boots, which is + * named after its API port (e2e/server-launch.mjs). Two runs on two port pairs + * therefore share nothing, and the default port keeps the old file names. + */ +export const E2E_STATE_FILE = `e2e/.tmp/state-${API_PORT}.json` +export const E2E_SEED_FILE = `e2e/.tmp/seed-${API_PORT}.json` // The day the seed and the pictures are relative to (e2e/dates.ts). Fixed here // for every project and worker that loads this file, so a run that crosses @@ -53,7 +60,7 @@ export default defineConfig({ name: 'app', testMatch: /\.spec\.ts/, testIgnore: /(\.public\.spec\.ts|auth\.setup\.ts)/, - use: { ...devices['Desktop Chrome'], storageState: 'e2e/.tmp/state.json' }, + use: { ...devices['Desktop Chrome'], storageState: E2E_STATE_FILE }, dependencies: ['setup'], }, // Documentation screenshots (`npm run shots`). Excluded from the normal e2e @@ -64,7 +71,7 @@ export default defineConfig({ { name: 'seed', testMatch: /seed\.setup\.ts/, - use: { ...devices['Desktop Chrome'], storageState: 'e2e/.tmp/state.json' }, + use: { ...devices['Desktop Chrome'], storageState: E2E_STATE_FILE }, dependencies: ['setup'], }, { @@ -72,7 +79,7 @@ export default defineConfig({ testMatch: /\.shot\.ts/, use: { ...devices['Desktop Chrome'], - storageState: 'e2e/.tmp/state.json', + storageState: E2E_STATE_FILE, viewport: { width: 1440, height: 900 }, deviceScaleFactor: 2, }, @@ -98,7 +105,7 @@ export default defineConfig({ // and the Files tab's preview embeds a PDF as , which the // shell leaves as a "Download PDF" link. Still headless. channel: 'chromium', - storageState: 'e2e/.tmp/state.json', + storageState: E2E_STATE_FILE, viewport: { width: 1920, height: 1080 }, deviceScaleFactor: 2, }, diff --git a/client/public/help-media/audit-log/step-1.webp b/client/public/help-media/audit-log/step-1.webp index 59df046966e8d249974da99f53283d7457c8c369..92ef29efee2ee396fa2d96e7153d4d213e651854 100644 GIT binary patch literal 55594 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 VxsCW|qg5E(Omgu5nNI)5{1>cbeC+@L literal 59550 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 F003m#b^`za diff --git a/client/public/help-media/audit-log/step-2.webp b/client/public/help-media/audit-log/step-2.webp index 3ef3563e97492c80c142ed28b8889a2bb9c9177d..96a6ebca0d66a2c56186a4e2e3ecf12da0cd7bdb 100644 GIT binary patch literal 17458 zcmeIYWpEwMwk3GP%q&^V7E2a0Gc(I#w3yjqX0(`@nVFfHnVF&O@7>q;es}s!_e{^k z{F#i3IGMXBYvtZ+t%_3$;vynng#Z9mVF5W6IW_{k-+dbz;B=s`Sz!JkJj!2VMRRkA z2nnK1O>Lk<%znIa60Z&Nu-z_aK0lYf|41u0kdbx2*wk*)o*zH^b&Bu*ned79KDe~# zuWSF-^>KO}wd*bVA^KW)AzHq{_pO{OLahZj|cZ=_)$8Cag%w# zd(2z&ar$BC-gW`H*tz|={)un~cG@}Pz4qzze(`B>)cc0KHs=MO-@G1MTIB$KpdHVVIS^fn7;r%}NQTddC84aJ?$;rGG zxujOMUNr7JJJrHRdH=?qyK>YDUg1)y7o~U~Oad22c=b*ZO8wk2u)U`JiVN|;-0>O* z_C9sXxbTEhJBeSa14n?L6pKkG4EfTZHN{!bUDsnCP9?I3G5U-P_p{D@${*Pfe8~?1=`PG>(g`!kdnVE%CR{%(0IMobje~|onVN` zEuaQllnYdSdzsA2=cb!OL~75hcjus(saE@Od4vV68wp0obg(AA;5;>vZCH*EX(2vxMJeS48$O%rAN!rg@W2C51lP&sB_9^|3G*no5*Cq0IQyx zJ+XAzHFl1gxLj)TQO}ebC zn?5%OX2#lda&vao%+GaZif`=82WsV8wv#F^Uovg zlj|iWe>g&QR#1znWOmsx41r74$nG=(Gw9(aVjchP5ih+K47WBX*liFo70LV%(e~(( z-+RP;Yi3;3_^^~Tc0SUZ4OI|t3kMzX-!ER3hjonNHW zxxnZm0IuTFi|*ztA_|&1=uDA2Qdn0Hv-mO~3&}S!iK#y+M-dXLzYAo$07x#NrN_Y4 zgZlr6|5wncF4ZkDD@gq>H{Y*Ha)4o4t~UeeZ?pf^CizMD=Bme=-LDqgMXJe;+2D>@6vWL^d3M`IF{f zuIRr^Ce_!zK-6R997ubJcvrc_pu#Gn;G6XKQZd*Z8Sfs zof1NuAOGz#5lvw*wh%BL>h3?;%7STt;6*5Tm$d=JZSn@A{jT&78h@J|2#l4Padx{c zXoo}22zu{%R-akgY8x-Gw+E6{fwQ6<3hEyW${VIRq)hZRt^YIdAK1l&@{sxa|6#j- zk{>_zT5;#Pnz~y(FH5EV%5|H_MiqIkL_FgMO(jlW^uXEAhxs#29o7)Sh-I+z(xrwr zYh*#38kkkpYAcrwl0eoU^~V0WwBeQKy^ce`#vNTYZChJPjCOdgEdiIt}R~F zWTpT%X*BoqWZd!Og|GRnC0bj(qFq-EgX;>qBjA6yhdW8G<$tk4>E4J8KBULWt^=v> zfx{!Am?JObMH6Jr%rPqO!!rIsG z;GN_a_77M78+HEcu=C3D@U6tkizN

}qk6K}vHtUYPPXvHo`*`6se}$;zLhHv{y& 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

-0+T> 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