// tests/homepage.test.js
import { test, expect } from '@playwright/test';

test('首页加载和热门歌曲列表显示', async ({ page }) => {
  // 导航到首页
  await page.goto('http://localhost:3000/');
  
  // 验证页面标题
  await expect(page).toHaveTitle(/VibeVault/);
  
  // 验证页面标题"发现音乐"
  await expect(page.getByText('发现音乐')).toBeVisible();
  
  // 验证热门歌曲标题显示
  await expect(page.getByText('热门歌曲')).toBeVisible();
  
  // 验证热门歌曲列表中有6首歌曲（林俊杰的歌曲）
  const songItems = await page.locator('.songs-list .song-item').all();
  expect(songItems.length).toBe(6);
  
  // 验证第一首歌是"江南"，歌手是"林俊杰"
  const firstSong = songItems[0];
  await expect(firstSong).toContainText('江南');
  await expect(firstSong).toContainText('林俊杰');
  
  // 点击第一首歌，验证是否跳转到播放界面
  await firstSong.click();
  
  // 验证播放界面的URL
  await expect(page).toHaveURL(/songs\/1/);
  
  // 验证播放界面显示歌曲标题
  await expect(page.getByText('江南')).toBeVisible();
  
  // 验证播放界面显示歌手名称
  await expect(page.getByText('林俊杰')).toBeVisible();
  
  // 验证播放按钮可见
  await expect(page.locator('.play-btn-large')).toBeVisible();
});

test('精选推荐和热门歌单显示', async ({ page }) => {
  // 导航到首页
  await page.goto('http://localhost:3000/');
  
  // 验证精选推荐标题显示
  await expect(page.getByText('精选推荐')).toBeVisible();
  
  // 验证热门歌单标题显示
  await expect(page.getByText('热门歌单')).toBeVisible();
  
  // 验证精选推荐有3个歌单
  const featuredPlaylists = await page.locator('.featured-section .playlist-card').all();
  expect(featuredPlaylists.length).toBe(3);
  
  // 验证热门歌单至少有4个歌单
  const popularPlaylists = await page.locator('.popular-section .playlist-card').all();
  expect(popularPlaylists.length).toBeGreaterThanOrEqual(4);
});