test(e2e): kalendertesten afhang af, hvilken ugedag den blev kørt på
CI / OpenAPI is valid (push) Successful in 11s
CI / Go (push) Failing after 13m58s
CI / Docker image builds (push) Successful in 2m43s
CI / End-to-end (push) Successful in 9m12s

Grøn i månedsvis, rød i morges — på en commit, der ikke var i nærheden af en
kalender. Det kostede en runde at tro, det var min egen ændring.

Testen lægger opgaven på i morgen og trækker den til dagen efter. Er i morgen en
søndag, er kilden sidste kolonne i sin række og målet første celle i den næste —
nede i den del af gitteret, et 720 px vindue skærer af. Et syntetisk træk slipper
i målets midtpunkt uden den auto-scroll, en rigtig markør får af browseren, så et
mål under folden bliver aldrig ramt. I går lå begge celler i samme række.

To ting rettet, og den anden er den vigtigste:

- Vinduet er højt nok til alle seks rækker under månedsdelen.
- Målet tages fra gitteret frem for at blive regnet ud af datoen. Dagen efter i
  morgen ligger ikke altid i den måned, der vises — i enden af en kort måned
  falder den udenfor — mens cellen ved siden af altid gør. Med et fald tilbage
  til cellen før, for den ene dag om måneden hvor der ikke er en efter.

Appen fejler ikke noget: en rigtig bruger ruller.
This commit is contained in:
Kristian Wind
2026-08-22 08:48:31 +02:00
parent 3e8d609316
commit acd6784333
+23 -3
View File
@@ -558,15 +558,35 @@ test('en opgave kan trækkes til en anden dag og videre til et projekt', async (
// browser is pinned to Europe/Copenhagen and this process is not, and for two
// hours of every day they disagree about what today is.
await page.goto('/upcoming');
// Taller than the default window, and it is not cosmetic: the month grid is
// six rows, and in 720 px the last one is cut off by the fold. A synthetic
// drag drops at the target's centre without the auto-scroll a real pointer
// gets from the browser — so a target below the fold is never hit.
//
// That made this test depend on the date. The task sits on tomorrow, and when
// tomorrow is a Sunday, the day after is the first cell of the next row, down
// in the cut-off part. It passed for months and failed the morning tomorrow
// happened to be a Sunday, on a commit that had touched nothing near a
// calendar.
await page.setViewportSize({ width: 1280, height: 1000 });
await page.getByRole('button', { name: 'Måned', exact: true }).click();
const chip = page.locator('.chip').filter({ hasText: 'hent pakken' });
await expect(chip).toBeVisible();
const from = await page.locator('.day').filter({ has: chip }).getAttribute('data-date');
const to = new Date(new Date(`${from}T12:00:00Z`).getTime() + 86400000)
.toISOString()
.slice(0, 10);
// The neighbouring cell is taken from the grid, not worked out from the date.
// The day after tomorrow is not always in the month on screen — at the end of
// a short month it falls outside it entirely — and the cell next door always
// is. Falls back to the cell before, for the one day a month when there is no
// cell after.
const dates = await page
.locator('.day[data-date]')
.evaluateAll((cells) => cells.map((cell) => cell.dataset.date));
const at = dates.indexOf(from);
const to = dates[at + 1] ?? dates[at - 1];
await chip.dragTo(page.locator(`[data-date="${to}"]`));
await expect(page.locator(`[data-date="${to}"]`).getByText('hent pakken')).toBeVisible();