test(ui): add e2e and integration tests
This commit is contained in:
38
tests/e2e/admin.spec.js
Normal file
38
tests/e2e/admin.spec.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test.describe('Admin Panel', () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto('/admin');
|
||||
});
|
||||
|
||||
test('displays admin navigation', async ({ page }) => {
|
||||
await expect(page.getByRole('heading', { name: 'CV Admin' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('navigation links work', async ({ page }) => {
|
||||
await page.click('text=Erfahrung');
|
||||
await expect(page).toHaveURL(/.*experience/);
|
||||
|
||||
await page.click('text=Skills');
|
||||
await expect(page).toHaveURL(/.*skills/);
|
||||
|
||||
await page.click('text=Persönlich');
|
||||
await expect(page).toHaveURL(/.*admin$/);
|
||||
});
|
||||
|
||||
test('personal form displays fields', async ({ page }) => {
|
||||
const form = page.locator('form');
|
||||
await expect(form.locator('input[name="name"]')).toBeVisible();
|
||||
await expect(form.locator('input[name="title"]')).toBeVisible();
|
||||
await expect(form.locator('input[name="email"]')).toBeVisible();
|
||||
});
|
||||
|
||||
test('can navigate to experience section', async ({ page }) => {
|
||||
await page.click('text=Erfahrung');
|
||||
await expect(page.getByRole('heading', { name: 'Berufserfahrung' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('export button is present', async ({ page }) => {
|
||||
await expect(page.getByRole('button', { name: /json export/i })).toBeVisible();
|
||||
});
|
||||
});
|
||||
39
tests/e2e/cv.spec.js
Normal file
39
tests/e2e/cv.spec.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import { test, expect } from '@playwright/test';
|
||||
|
||||
test.describe('CV Page', () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await page.goto('/');
|
||||
});
|
||||
|
||||
test('displays hero section with name', async ({ page }) => {
|
||||
await expect(page.locator('h1')).toContainText('Tuan-Dat Tran');
|
||||
});
|
||||
|
||||
test('displays job title', async ({ page }) => {
|
||||
const heroTitle = page.locator('section').first().locator('h2');
|
||||
await expect(heroTitle).toContainText('DevOps Engineer');
|
||||
});
|
||||
|
||||
test('displays experience section', async ({ page }) => {
|
||||
await expect(page.getByRole('heading', { name: 'Berufserfahrung' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('displays skills section', async ({ page }) => {
|
||||
await expect(page.getByRole('heading', { name: 'Skills' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('displays education section', async ({ page }) => {
|
||||
await expect(page.getByRole('heading', { name: 'Ausbildung' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('displays projects section', async ({ page }) => {
|
||||
await expect(page.getByRole('heading', { name: 'Projekte' })).toBeVisible();
|
||||
});
|
||||
|
||||
test('contact links are present', async ({ page }) => {
|
||||
const heroSection = page.locator('section').first();
|
||||
await expect(heroSection.getByRole('link', { name: 'Email' })).toBeVisible();
|
||||
await expect(heroSection.getByRole('link', { name: 'GitHub' })).toBeVisible();
|
||||
await expect(heroSection.getByRole('link', { name: 'LinkedIn' })).toBeVisible();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user