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

56 lines
2.0 KiB
TypeScript

import { test, expect } from '@playwright/test';
test.describe('Home Page', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/');
});
test('loads home page', async ({ page }) => {
await expect(page).toHaveTitle(/Music App/);
});
test('shows navigation hub with feature tabs', async ({ page }) => {
await expect(page.getByText('Music')).toBeVisible();
await expect(page.getByText('New Music')).toBeVisible();
await expect(page.getByText('Mood')).toBeVisible();
await expect(page.getByText('LoFi')).toBeVisible();
});
test('shows quick access cards', async ({ page }) => {
await expect(page.getByText('My Music')).toBeVisible();
await expect(page.getByText('New Releases')).toBeVisible();
});
test('shows mood radio section', async ({ page }) => {
await expect(page.getByText('Mood Radio')).toBeVisible();
await expect(page.getByText('Sad')).toBeVisible();
await expect(page.getByText('Happy')).toBeVisible();
await expect(page.getByText('Energetic')).toBeVisible();
});
test('profile link navigates to account', async ({ page }) => {
await page.getByRole('link', { name: /person/ }).first().click();
// Should navigate to /account
await expect(page).toHaveURL(/\/account/);
});
test('Music tab navigates to library', async ({ page }) => {
await page.getByRole('link', { name: 'Music' }).first().click();
await expect(page).toHaveURL(/\/library/);
});
test('New Music tab navigates to releases', async ({ page }) => {
await page.getByRole('link', { name: 'New Music' }).first().click();
await expect(page).toHaveURL(/\/releases/);
});
test('Mood tab navigates to mood radio', async ({ page }) => {
await page.getByRole('link', { name: 'Mood' }).first().click();
await expect(page).toHaveURL(/\/mood/);
});
test('LoFi tab navigates to lofi channels', async ({ page }) => {
await page.getByRole('link', { name: 'LoFi' }).first().click();
await expect(page).toHaveURL(/\/lofi/);
});
});