test(e2e): kalendertesten afhang af, hvilken ugedag den blev kørt på
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:
+23
-3
@@ -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
|
// browser is pinned to Europe/Copenhagen and this process is not, and for two
|
||||||
// hours of every day they disagree about what today is.
|
// hours of every day they disagree about what today is.
|
||||||
await page.goto('/upcoming');
|
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();
|
await page.getByRole('button', { name: 'Måned', exact: true }).click();
|
||||||
|
|
||||||
const chip = page.locator('.chip').filter({ hasText: 'hent pakken' });
|
const chip = page.locator('.chip').filter({ hasText: 'hent pakken' });
|
||||||
await expect(chip).toBeVisible();
|
await expect(chip).toBeVisible();
|
||||||
|
|
||||||
const from = await page.locator('.day').filter({ has: chip }).getAttribute('data-date');
|
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()
|
// The neighbouring cell is taken from the grid, not worked out from the date.
|
||||||
.slice(0, 10);
|
// 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 chip.dragTo(page.locator(`[data-date="${to}"]`));
|
||||||
await expect(page.locator(`[data-date="${to}"]`).getByText('hent pakken')).toBeVisible();
|
await expect(page.locator(`[data-date="${to}"]`).getByText('hent pakken')).toBeVisible();
|
||||||
|
|||||||
Reference in New Issue
Block a user