/** * Die Erststart-Frage nach dem abwählbaren Kapitel – im echten Fenster. * * Eigene Datei mit eigener Anwendung, weil `appStarten` die Frage für alle * übrigen Prüfungen beantwortet. Hier soll sie stehenbleiben. */ import { type ElectronApplication, type Page } from '@playwright/test'; import { appStartenOhneZuschnitt } from './electron-hilfe'; import { expect, test } from './konsolenwache'; let app: ElectronApplication; let fenster: Page; test.beforeEach(async () => { ({ app, fenster } = await appStartenOhneZuschnitt()); }); test.afterEach(async () => { await app.close(); }); test('steht beim allerersten Start vor dem Startbildschirm', async () => { /* 89 von 575 Fragen hängen daran. Der Schalter lag bisher unter „Ihr Lernplan“ – wer nie hinunterscrollte, sah ihn nie. */ await expect(fenster.getByRole('heading', { name: /Lernen Sie .* mit\?/u })).toBeVisible(); await expect(fenster.getByRole('heading', { name: 'Heute lernen' })).toHaveCount(0); }); test('hat „mitlernen“ vorausgewählt und nennt die Zahlen', async () => { await expect(fenster.getByRole('radio', { name: /Ja, mitlernen/u })).toBeChecked(); /* Die Zahlen kommen aus dem Katalog, nicht aus dem Text – sonst liefen sie bei der nächsten Katalogfassung auseinander. */ await expect(fenster.getByText(/89 der 575 Fragen/u)).toBeVisible(); }); test('führt mit „Weiter“ zum Startbildschirm und lässt den Katalog vollständig', async () => { await fenster.getByRole('button', { name: 'Weiter', exact: true }).click(); await expect(fenster.getByRole('heading', { name: 'Heute lernen' })).toBeVisible(); /* Der Schalter unter „Ihr Lernplan“ steht danach auf „mitlernen“. */ await expect( fenster.getByRole('checkbox', { name: /Kapitel IV – Not- und Seenotsignalmittel/u }), ).toBeChecked(); }); test('wählt bei „weglassen“ das Kapitel dauerhaft ab', async () => { await fenster.getByRole('radio', { name: /Nein, weglassen/u }).check(); await fenster.getByRole('button', { name: 'Weiter', exact: true }).click(); await expect(fenster.getByRole('heading', { name: 'Heute lernen' })).toBeVisible(); await expect( fenster.getByRole('checkbox', { name: /Kapitel IV – Not- und Seenotsignalmittel/u }), ).not.toBeChecked(); /* Und die Zahlen rechnen ohne das Kapitel: 486 statt 575. */ await expect(fenster.getByText(/von 486 Fragen/u).first()).toBeVisible(); }); test('kommt beim zweiten Start nicht wieder', async () => { await fenster.getByRole('button', { name: 'Weiter', exact: true }).click(); await expect(fenster.getByRole('heading', { name: 'Heute lernen' })).toBeVisible(); /* Neu laden ist der schärfere Fall als ein Neustart: Dasselbe Fenster, derselbe Zustand auf der Platte – hinge die Antwort im Arbeitsspeicher, käme die Frage hier wieder. */ await fenster.reload(); await fenster.waitForSelector('h1', { state: 'visible' }); await expect(fenster.getByRole('heading', { name: 'Heute lernen' })).toBeVisible(); await expect(fenster.getByRole('heading', { name: /Lernen Sie .* mit\?/u })).toHaveCount(0); });