87 lines
3.2 KiB
TypeScript
87 lines
3.2 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
|
|
const BASE_URL = process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:1313';
|
|
|
|
test.describe('Hugo sections functionality', () => {
|
|
test('articles section loads correctly', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/articles/`);
|
|
|
|
// Check that section page loads
|
|
await expect(page.locator('h1')).toContainText('Articles');
|
|
|
|
// Verify section content is displayed
|
|
await expect(page.getByText('Welcome to the articles section')).toBeVisible();
|
|
|
|
// Check that article posts are listed
|
|
const articleCount = await page.locator('article.post').count();
|
|
expect(articleCount).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('individual article pages load correctly', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/articles/first-article/`);
|
|
|
|
// Check that individual article loads
|
|
await expect(page.locator('h1')).toContainText('First Article');
|
|
await expect(page.getByText('This is the first article content')).toBeVisible();
|
|
});
|
|
|
|
test('news section loads correctly', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/news/`);
|
|
|
|
// Check that section page loads
|
|
await expect(page.locator('h1')).toContainText('News');
|
|
// Verify section content is displayed
|
|
await expect(page.getByText('Latest news updates').first()).toBeVisible();
|
|
|
|
// Check that news posts are listed
|
|
const newsCount = await page.locator('article.post').count();
|
|
expect(newsCount).toBeGreaterThan(0);
|
|
});
|
|
|
|
test('individual news pages load correctly', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/news/breaking-news/`);
|
|
|
|
// Check that individual news item loads
|
|
await expect(page.locator('h1')).toContainText('Breaking News');
|
|
await expect(page.getByText('This is breaking news content')).toBeVisible();
|
|
});
|
|
|
|
|
|
test('section pagination works if applicable', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/articles/`);
|
|
|
|
// Check if pagination exists and works
|
|
const paginationExists = await page.locator('.pagination').count() > 0;
|
|
|
|
if (paginationExists) {
|
|
// Test pagination if it exists
|
|
await expect(page.locator('.pagination')).toBeVisible();
|
|
|
|
// Check if there's a next page link and it works
|
|
const nextLink = page.locator('.pagination a[rel="next"]');
|
|
if (await nextLink.count() > 0) {
|
|
await nextLink.click();
|
|
await expect(page.locator('h1')).toContainText('Articles');
|
|
}
|
|
}
|
|
});
|
|
|
|
test('section RSS feeds are accessible', async ({ page }) => {
|
|
// Test articles RSS feed
|
|
const articlesRssResponse = await page.request.get(`${BASE_URL}/articles/index.xml`);
|
|
expect(articlesRssResponse.status()).toBe(200);
|
|
|
|
// Test news RSS feed
|
|
const newsRssResponse = await page.request.get(`${BASE_URL}/news/index.xml`);
|
|
expect(newsRssResponse.status()).toBe(200);
|
|
});
|
|
|
|
test('existing blog section still works', async ({ page }) => {
|
|
await page.goto(`${BASE_URL}/blog/`);
|
|
|
|
// Verify existing blog section still works
|
|
await expect(page.locator('h1').first()).toContainText('Demo Blog');
|
|
await expect(page.getByText('Welcome to the demo blog')).toBeVisible();
|
|
});
|
|
});
|