feat: add full Zonemaster stack with Docker and Spanish UI

- Clone all 5 Zonemaster component repos (LDNS, Engine, CLI, Backend, GUI)
- Dockerfile.backend: 8-stage multi-stage build LDNS→Engine→CLI→Backend
- Dockerfile.gui: Astro static build served via nginx
- docker-compose.yml: backend (internal) + frontend (port 5353)
- nginx.conf: root redirects to /es/, /api/ proxied to backend
- zonemaster-gui/config.ts: defaultLanguage set to 'es' (Spanish)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-21 08:19:24 +02:00
commit 8d4eaa1489
1567 changed files with 204155 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import { test, expect } from './global-setup';
import { setLang } from './utils/app.utils';
test.describe('Zonemaster test FR25 - [Should be able to export the result in multiple formats (HTML, CSV, JSON, TEXT)]', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/');
await setLang(page, 'en');
await page.waitForLoadState('networkidle');
});
test('should have an export button', async ({ page }) => {
await page.locator('input[name="domain"]').first().focus();
await page.keyboard.type('results.afNiC.Fr');
await page.keyboard.press('Enter');
const exportButton = page.locator('#zmExportButton');
const exportContent = page.locator('#zmExportDialog');
await expect(exportButton).toBeVisible({ timeout: 10000 });
await expect(exportButton).toHaveText('Export');
await expect(exportContent).toBeHidden();
await exportButton.click();
await expect(exportContent).toBeVisible({ timeout: 1000 });
await expect(page.locator('#zmExportDialog button:nth-child(1)')).toHaveText('JSON');
await expect(page.locator('#zmExportDialog button:nth-child(2)')).toHaveText('HTML');
await expect(page.locator('#zmExportDialog button:nth-child(3)')).toHaveText('CSV');
await expect(page.locator('#zmExportDialog button:nth-child(4)')).toHaveText('Text');
});
});