test(260924-m4n): flackernden Marktplatz-Test entschaerfen, act-Warnungen der Proxmox-Kachel weg
- tenant-selector: Komponenten statisch statt im Test dynamisch importiert (Laden zaehlte in die 5-s-Frist des ersten Tests), SUPER_ADMIN/ADMIN in zwei it aufgetrennt - marketplace/marketplace-filters: gleiche Umstellung; userEvent an die falsche Uhr gekoppelt statt auf shouldAdvanceTime zu warten - proxmox-widget: Rendern wartet das erste Laden in act() ab (81 Warnungen weg) - Todo 2026-09-23 nach completed/ Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,9 @@ import type { ReactElement } from 'react';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import type { ProxmoxMetrics, ProxmoxServer } from '@/lib/proxmox-api';
|
||||
import de from '@/messages/de.json';
|
||||
// Statisch importiert (vi.mock wird darueber gehoben) — das Laden faellt in die
|
||||
// Sammelphase, nicht in die Frist des ersten Tests (quick-260924-m4n).
|
||||
import { ProxmoxWidget } from './proxmox-widget';
|
||||
|
||||
// Echter next-intl-Provider mit den deutschen Texten (Muster
|
||||
// proxmox-page-roles.test.tsx) — die Kachel braucht ICU-Plural und useLocale.
|
||||
@@ -119,17 +122,27 @@ function makeServer(
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Rendert die Kachel und wartet INNERHALB von act() das Ende des ersten
|
||||
* Ladens ab (aufgeloestes listServers-Versprechen -> setServers/setLoadFailed/
|
||||
* setNow). Ohne das liefen diese Zustandsaenderungen nach dem Rendern ins Leere
|
||||
* und React meldete je Test drei „not wrapped in act(...)“-Warnungen
|
||||
* (quick-260924-m4n).
|
||||
*/
|
||||
async function renderWidget(
|
||||
props: { config?: Record<string, unknown>; isEditMode?: boolean } = {},
|
||||
) {
|
||||
const { ProxmoxWidget } = await import('./proxmox-widget');
|
||||
return render(
|
||||
<ProxmoxWidget
|
||||
instanceId="w-1"
|
||||
config={props.config ?? {}}
|
||||
isEditMode={props.isEditMode ?? false}
|
||||
/>,
|
||||
);
|
||||
let result!: ReturnType<typeof render>;
|
||||
await act(async () => {
|
||||
result = render(
|
||||
<ProxmoxWidget
|
||||
instanceId="w-1"
|
||||
config={props.config ?? {}}
|
||||
isEditMode={props.isEditMode ?? false}
|
||||
/>,
|
||||
);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
@@ -617,13 +630,15 @@ describe('ProxmoxWidget: Bearbeitungsmodus mit Titel und Serverauswahl (quick-26
|
||||
|
||||
it('Verlassen des Bearbeitungsmodus schliesst die Auswahl', async () => {
|
||||
mockListServers.mockResolvedValue([makeServer('ok')]);
|
||||
const { ProxmoxWidget } = await import('./proxmox-widget');
|
||||
const ui = (isEditMode: boolean) => (
|
||||
<NextIntlClientProvider locale="de" messages={de} timeZone="Europe/Berlin">
|
||||
<ProxmoxWidget instanceId="w-1" config={{}} isEditMode={isEditMode} />
|
||||
</NextIntlClientProvider>
|
||||
);
|
||||
const { rerender } = rtlRender(ui(true));
|
||||
let rerender!: ReturnType<typeof rtlRender>['rerender'];
|
||||
await act(async () => {
|
||||
({ rerender } = rtlRender(ui(true)));
|
||||
});
|
||||
await screen.findByTestId('proxmox-summary');
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Server auswählen' }));
|
||||
|
||||
Reference in New Issue
Block a user