Files
comarques-de-catalunya/tests/smoke.spec.js
Jaume Garriga Maestre 1a6b2d90b3
All checks were successful
CI · Test & Deploy / Playwright tests (push) Successful in 1m50s
CI · Test & Deploy / Deploy to VPS (push) Successful in 27s
fix(ci): keep server alive across test steps, fix welcome screen test
2026-05-14 11:19:26 +02:00

74 lines
2.4 KiB
JavaScript

// smoke.spec.js — Basic smoke tests for comarques app
// Runs against a static HTTP server (no DB required).
// Playwright is invoked with chromium via npx.
const { test, expect } = require('@playwright/test');
const BASE = process.env.APP_URL || 'http://localhost:9090';
test.describe('App loads', () => {
test('title is correct', async ({ page }) => {
await page.goto(BASE + '/index.html');
await expect(page).toHaveTitle(/Comarques de Catalunya/);
});
test('welcome screen exists in DOM', async ({ page }) => {
await page.goto(BASE + '/index.html');
// The welcome screen must always be present in the DOM
const welcome = page.locator('#screen-welcome');
await expect(welcome).toBeAttached();
});
});
test.describe('comarca-paths.js', () => {
test('COMARCA_PATHS loads and has 43 entries', async ({ page }) => {
await page.goto(BASE + '/index.html');
await page.waitForTimeout(500);
const count = await page.evaluate(() => Object.keys(COMARCA_PATHS).length);
expect(count).toBe(43);
});
test('Lluçanès and Moianès have map paths', async ({ page }) => {
await page.goto(BASE + '/index.html');
await page.waitForTimeout(500);
const result = await page.evaluate(() => ({
llucanes: !!COMARCA_PATHS['Lluçanès'],
moianes: !!COMARCA_PATHS['Moianès'],
}));
expect(result.llucanes).toBe(true);
expect(result.moianes).toBe(true);
});
});
test.describe('Filters', () => {
test('coastal filter returns 12 comarques', async ({ page }) => {
await page.goto(BASE + '/index.html');
await page.waitForTimeout(500);
const count = await page.evaluate(() => {
activeGroups = new Set(['coastal']);
return getActiveComarques().length;
});
expect(count).toBe(12);
});
test('interior filter returns 21 comarques', async ({ page }) => {
await page.goto(BASE + '/index.html');
await page.waitForTimeout(500);
const count = await page.evaluate(() => {
activeGroups = new Set(['interior']);
return getActiveComarques().length;
});
expect(count).toBe(21);
});
test('mountain filter returns 10 comarques', async ({ page }) => {
await page.goto(BASE + '/index.html');
await page.waitForTimeout(500);
const count = await page.evaluate(() => {
activeGroups = new Set(['mountain']);
return getActiveComarques().length;
});
expect(count).toBe(10);
});
});