test(domains): Live-Bestaetigung im Test robust oeffnen
Tessera CI/CD / Lint & Type Check (push) Successful in 49s
Tessera CI/CD / Tests (push) Successful in 2m4s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 13m58s
Tessera CI/CD / Build & Publish Images (push) Successful in 4m6s
Tessera CI/CD / Sicherheitspruefung (nur Bericht) (push) Successful in 1m35s
Tessera CI/CD / Lint & Type Check (push) Successful in 49s
Tessera CI/CD / Tests (push) Successful in 2m4s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 13m58s
Tessera CI/CD / Build & Publish Images (push) Successful in 4m6s
Tessera CI/CD / Sicherheitspruefung (nur Bericht) (push) Successful in 1m35s
Im CI blieb der Bestaetigungsdialog nach dem ersten Klick vereinzelt aus (Laeufe 513, 514, 518), lokal auch unter Last nie nachstellbar. Der Test wartet jetzt auf die geladenen Einstellungen und wiederholt den Klick, bis der Dialog steht; ein zweiter Klick speichert nichts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -173,6 +173,22 @@ function contactList(): DomainsContactList {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Klickt „Live-System“, bis der Bestaetigungsdialog steht. Ein erneuter Klick oeffnet nur
|
||||||
|
* denselben Dialog und speichert nichts (siehe Kommentar im Test „Wechsel auf Live“).
|
||||||
|
*/
|
||||||
|
async function openLiveDialog(): Promise<HTMLElement> {
|
||||||
|
return waitFor(
|
||||||
|
() => {
|
||||||
|
if (!screen.queryByRole('alertdialog')) {
|
||||||
|
fireEvent.click(screen.getByRole('radio', { name: /Live-System \(kostenpflichtig\)/ }));
|
||||||
|
}
|
||||||
|
return screen.getByRole('alertdialog');
|
||||||
|
},
|
||||||
|
{ timeout: 5000, interval: 100 },
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/** Oeffnet den Reiter Einstellungen (Standardreiter ist Domains). */
|
/** Oeffnet den Reiter Einstellungen (Standardreiter ist Domains). */
|
||||||
async function renderSettings() {
|
async function renderSettings() {
|
||||||
render(<DomainsPage />);
|
render(<DomainsPage />);
|
||||||
@@ -275,10 +291,12 @@ describe('Einstellungen', () => {
|
|||||||
it('Wechsel auf Live verlangt Bestaetigung; erst die bestaetigte Speicherung sendet confirmLive', async () => {
|
it('Wechsel auf Live verlangt Bestaetigung; erst die bestaetigte Speicherung sendet confirmLive', async () => {
|
||||||
mockSaveSettings.mockResolvedValue(settings({ environment: 'LIVE' }));
|
mockSaveSettings.mockResolvedValue(settings({ environment: 'LIVE' }));
|
||||||
await renderSettings();
|
await renderSettings();
|
||||||
const liveRadio = await screen.findByRole('radio', { name: /Live-System \(kostenpflichtig\)/ });
|
// Im CI blieb der Dialog nach dem ersten Klick vereinzelt aus (Laeufe 513, 514, 518 am
|
||||||
fireEvent.click(liveRadio);
|
// 09.10.2026), lokal nie nachstellbar, auch nicht unter Last. Darum: erst warten, bis die
|
||||||
|
// Einstellungen geladen sind, und den Klick wiederholen, bis der Dialog steht. Ein erneuter
|
||||||
const dialog = await screen.findByRole('alertdialog');
|
// Klick auf „Live“ oeffnet nur wieder denselben Dialog und speichert nichts.
|
||||||
|
await screen.findByPlaceholderText('Gespeichert – leer lassen, um es beizubehalten');
|
||||||
|
const dialog = await openLiveDialog();
|
||||||
expect(within(dialog).getByText(/kosten Geld/)).toBeTruthy();
|
expect(within(dialog).getByText(/kosten Geld/)).toBeTruthy();
|
||||||
expect(mockSaveSettings).not.toHaveBeenCalled();
|
expect(mockSaveSettings).not.toHaveBeenCalled();
|
||||||
|
|
||||||
@@ -291,11 +309,8 @@ describe('Einstellungen', () => {
|
|||||||
.checked,
|
.checked,
|
||||||
).toBe(true);
|
).toBe(true);
|
||||||
|
|
||||||
fireEvent.click(screen.getByRole('radio', { name: /Live-System \(kostenpflichtig\)/ }));
|
|
||||||
fireEvent.click(
|
fireEvent.click(
|
||||||
within(await screen.findByRole('alertdialog')).getByRole('button', {
|
within(await openLiveDialog()).getByRole('button', { name: 'Live-System verwenden' }),
|
||||||
name: 'Live-System verwenden',
|
|
||||||
}),
|
|
||||||
);
|
);
|
||||||
await waitFor(() => expect(mockSaveSettings).toHaveBeenCalledTimes(1));
|
await waitFor(() => expect(mockSaveSettings).toHaveBeenCalledTimes(1));
|
||||||
expect(mockSaveSettings).toHaveBeenCalledWith({ environment: 'LIVE', confirmLive: true });
|
expect(mockSaveSettings).toHaveBeenCalledWith({ environment: 'LIVE', confirmLive: true });
|
||||||
|
|||||||
Reference in New Issue
Block a user