feat(mailboxes): postkasser kan forbindes fra fladen
Release / Build and publish image (push) Failing after 9m59s
Release / Build and publish image (push) Failing after 9m59s
Panelet under Integrationer: tilføj, hent nu, kobl fra. Sit eget frem for en tilstand mere inde i Gmail-panelet, for de to er ikke det samme i forskellige klæder — det ene er en app, man logger ind igennem, det andet et kodeord, man selv holder. Feltet hedder IMAP-server og ikke Server: der stod i forvejen Server på CalDAV længere nede, og to felter med samme navn på én side er tvetydige også for en skærmlæser. Testen fandt det, men det var ikke kun testens problem. To vagter fangede mangler undervejs, og begge havde ret: mailbox_failed skulle have en tekst i fladen, ellers ville nogen få serverens engelske logsprog at se, og de tre ruter skulle i openapi.yaml. Der er nu et Mailbox-skema samme sted, som siger hvad der ikke kommer tilbage — kodeordet og eventuelle tokens. E2E-prøven forbinder til noget, der ikke lytter, og ser efter værtens egen afvisning på skærmen. Den er samtidig prøven på at 422 var det rigtige valg: var det stadig 502, ville et mellemled kunne kaste beskeden væk, og der ville stå "noget gik galt". Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
6b4ef5b2f2
commit
c9dfffd95a
@@ -1814,3 +1814,35 @@ test('man kan skrive hvor som helst, og feltet fortæller hvad det forstår', as
|
||||
|
||||
expect(trouble).toEqual([]);
|
||||
});
|
||||
|
||||
test('en postkasse kan tilføjes, og værtens afvisning når frem til skærmen', async ({ page }) => {
|
||||
const trouble = watchForTrouble(page);
|
||||
await page.goto('/indstillinger/integrationer');
|
||||
|
||||
await expect(page.getByRole('heading', { name: 'Postkasser' })).toBeVisible();
|
||||
await page.getByRole('button', { name: 'Tilføj en postkasse' }).click();
|
||||
|
||||
// Nothing is listening there, so the dial fails at once. The point is not the
|
||||
// failure but where it is reported: the server tests the connection before it
|
||||
// saves, so this is refused at the door rather than accepted and then silently
|
||||
// failing every ten minutes.
|
||||
await page.getByLabel('IMAP-server').fill('127.0.0.1:1');
|
||||
await page.getByLabel('Brugernavn').fill('kw');
|
||||
await page.getByLabel('App-kodeord').fill('hemmelig');
|
||||
// `exact`, because "Forbind" is a prefix of "Forbind Gmail" one panel up and
|
||||
// Playwright matches an accessible name by substring unless told otherwise.
|
||||
await page.getByRole('button', { name: 'Forbind', exact: true }).click();
|
||||
|
||||
// The host's own words, not "noget gik galt". This is the whole reason
|
||||
// upstream refusals are answered as 422: a proxy may replace the body of a 5xx,
|
||||
// and then the person is told nothing.
|
||||
await expect(page.getByText(/Postkassen svarede/)).toBeVisible();
|
||||
|
||||
// And nothing was saved on the way past.
|
||||
await page.reload();
|
||||
await expect(page.getByText('127.0.0.1:1')).toBeHidden();
|
||||
|
||||
// The 422 above is the point of the test, not a symptom. Everything else the
|
||||
// watcher caught still has to be empty.
|
||||
expect(trouble.filter((t) => !t.includes('/mailboxes → 422'))).toEqual([]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user