music-app/e2e/navigation.spec.ts
2026-07-03 01:06:35 +00:00

46 lines
1.6 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Bottom Navigation', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/');
});
test('shows all 5 nav items', async ({ page }) => {
await expect(page.getByText('Home')).toBeVisible();
await expect(page.getByText('Playlist')).toBeVisible();
await expect(page.getByText('Search')).toBeVisible();
await expect(page.getByText('Internet Radio')).toBeVisible();
await expect(page.getByText('Create')).toBeVisible();
});
test('Home nav item is active on home page', async ({ page }) => {
const homeNav = page.getByText('Home');
await expect(homeNav).toBeVisible();
});
test('clicking Playlist nav navigates to playlist page', async ({ page }) => {
await page.getByText('Playlist').click();
await expect(page).toHaveURL(/\/playlist/);
});
test('clicking Search nav navigates to search page', async ({ page }) => {
await page.getByText('Search').click();
await expect(page).toHaveURL(/\/search/);
});
test('clicking Internet Radio nav navigates to radio page', async ({ page }) => {
await page.getByText('Internet Radio').click();
await expect(page).toHaveURL(/\/radio/);
});
test('clicking Create nav navigates to create page', async ({ page }) => {
await page.getByText('Create').click();
await expect(page).toHaveURL(/\/create/);
});
test('nav is visible on all pages', async ({ page }) => {
await page.getByText('Search').click();
await expect(page.getByText('Home')).toBeVisible();
await expect(page.getByText('Create')).toBeVisible();
});
});