import { test, expect } from '@playwright/test'; test.describe('Data Export', () => { test.beforeEach(async ({ page }) => { await page.goto('http://localhost:5001/auth'); await page.fill('input[name="username"]', 'admin'); await page.fill('input[name="password"]', 'admin123'); await page.click('button[type="submit"]'); await expect(page).toHaveURL('http://localhost:5001/'); }); test.skip('should export user data as JSON', async ({ page }) => { // 1. Go to Settings await page.goto('http://localhost:5001/settings'); // 2. Click Export Data button // Wait for download *response* (the blob) const downloadPromise = page.waitForResponse(response => response.url().includes('/api/user/data-export') && response.status() === 200 && response.request().method() === 'POST' ); // Trigger export await page.click('button[data-testid="button-export-data"]'); const response = await downloadPromise; expect(response.ok()).toBeTruthy(); // 3. Verify Content const json = await response.json(); // Verify structure expect(json).toHaveProperty('user'); expect(json.user).toHaveProperty('username', 'admin'); // expect(json.user).toHaveProperty('email', 'admin@example.com'); // Email might vary if we used seed logic differently, but admin/admin123 usually has admin@example.com expect(json).toHaveProperty('tasks'); expect(Array.isArray(json.tasks)).toBeTruthy(); expect(json).toHaveProperty('labels'); expect(Array.isArray(json.labels)).toBeTruthy(); expect(json).toHaveProperty('systemSettings'); }); });