feat(tests): enhance smoke test for exercise navigation
All checks were successful
Deploy Development / deploy (push) Successful in 43s
Test Suite / pytest-backend (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 12s
Test Suite / playwright-tests (push) Successful in 1m42s
All checks were successful
Deploy Development / deploy (push) Successful in 43s
Test Suite / pytest-backend (push) Successful in 36s
Test Suite / lint-backend (push) Successful in 0s
Test Suite / build-frontend (push) Successful in 12s
Test Suite / playwright-tests (push) Successful in 1m42s
- Added a check to ensure the loading spinner is not visible before navigating to the exercises page, improving test reliability. - Updated navigation logic to wait for both the URL change and the click event on the exercises link, reducing race conditions. - Modified the assertion to check for the visibility of the main heading on the exercises page, ensuring stricter validation of page load success.
This commit is contained in:
parent
ea4c1f87f6
commit
14cf8a1a53
|
|
@ -59,15 +59,30 @@ test('2. Dashboard lädt ohne Fehler', async ({ page }) => {
|
|||
test('3. Navigation zu Übungen', async ({ page }) => {
|
||||
await login(page);
|
||||
|
||||
await expect(page.locator('.spinner')).toHaveCount(0, { timeout: 10000 });
|
||||
|
||||
// Bei Viewport ≥1024px ist .bottom-nav versteckt — Mobile garantieren wie in playwright.config.js
|
||||
await page.setViewportSize({ width: 390, height: 844 });
|
||||
|
||||
// Desktop-Sidebar enthält ebenfalls Übungen – nur Mobile-Bottom-Nav klicken (sichtbarer Link)
|
||||
await page.locator('.bottom-nav a[href="/exercises"]').click();
|
||||
// Bottom-Nav: Navigation und URL gemeinsam abwarten (vermeidet race mit networkidle)
|
||||
const exercisesLink = page.locator('.bottom-nav').getByRole('link', { name: /Übungen/i });
|
||||
await Promise.all([
|
||||
page.waitForURL(
|
||||
(u) => {
|
||||
const path = u.pathname.replace(/\/$/, '') || '/'
|
||||
return path === '/exercises'
|
||||
},
|
||||
{ timeout: 15000 },
|
||||
),
|
||||
exercisesLink.click(),
|
||||
]);
|
||||
await page.waitForLoadState('networkidle');
|
||||
|
||||
// Prüfe ob Übungen-Seite geladen
|
||||
await expect(page.locator('h1, h2, .page-title')).toContainText(/übungen/i, { timeout: 5000 });
|
||||
// Wie Test 4 (Vereine): eine eindeutige h1 — nicht h1,h2-Kombi (Strict Mode + mehrere Treffer)
|
||||
const main = page.locator('.app-main');
|
||||
await expect(main.getByRole('heading', { level: 1, name: /Übungen/i })).toBeVisible({
|
||||
timeout: 10000,
|
||||
});
|
||||
|
||||
await page.screenshot({ path: 'screenshots/03-uebungen.png' });
|
||||
console.log('✓ Übungen-Seite erreichbar');
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user