Files
2026-05-18 11:46:02 +02:00

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();
});
});