46 lines
1.6 KiB
TypeScript
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();
|
|
});
|
|
}); |