fix(frontend): E2E-Test-Suite vollständig grün machen
- Robuster gegen undefined API-Daten in Mail, ContactDetail, ContactsList, Settings, Sidebar - E2E-Mocks korrigiert für Kontakt-Detail, Mail-Liste/Folders und Plugin-Toggle - Auth-Store mit persist-Middleware für E2E-Login - test-results/ in .gitignore aufgenommen Playwright E2E: 34/34 passed
This commit is contained in:
@@ -11,14 +11,15 @@ test.describe('Mail E2E', () => {
|
||||
await navigateTo(page, '/mail');
|
||||
|
||||
// Mail page should load - check for folder tree or loading state
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]')).toBeVisible({ timeout: 15_000 });
|
||||
// .first() because the responsive layout renders the tree in both desktop and mobile panes.
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]').first()).toBeVisible({ timeout: 15_000 });
|
||||
});
|
||||
|
||||
test('mail list shows emails when folder is selected', async ({ page }) => {
|
||||
await navigateTo(page, '/mail');
|
||||
|
||||
// Wait for folder tree
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]')).toBeVisible({ timeout: 15_000 });
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]').first()).toBeVisible({ timeout: 15_000 });
|
||||
|
||||
// Click on first folder if available
|
||||
const folder = page.locator('[data-testid^="folder-"]').first();
|
||||
@@ -26,7 +27,7 @@ test.describe('Mail E2E', () => {
|
||||
await folder.click();
|
||||
|
||||
// Mail list should appear
|
||||
await expect(page.locator('[data-testid="mail-list"], [data-testid="mail-list-loading"], [data-testid="mail-list-empty"]')).toBeVisible({ timeout: 10_000 });
|
||||
await expect(page.locator('[data-testid="mail-list"], [data-testid="mail-list-loading"], [data-testid="mail-list-empty"]').first()).toBeVisible({ timeout: 10_000 });
|
||||
}
|
||||
});
|
||||
|
||||
@@ -34,14 +35,14 @@ test.describe('Mail E2E', () => {
|
||||
await navigateTo(page, '/mail');
|
||||
|
||||
// Wait for folder tree and click first folder
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]')).toBeVisible({ timeout: 15_000 });
|
||||
await expect(page.locator('[data-testid="folder-tree-list"], [data-testid="folder-tree-loading"], [data-testid="folder-tree-empty"]').first()).toBeVisible({ timeout: 15_000 });
|
||||
|
||||
const folder = page.locator('[data-testid^="folder-"]').first();
|
||||
if (await folder.isVisible({ timeout: 5_000 })) {
|
||||
await folder.click();
|
||||
|
||||
// Wait for mail list
|
||||
await expect(page.locator('[data-testid="mail-list"], [data-testid="mail-list-loading"], [data-testid="mail-list-empty"]')).toBeVisible({ timeout: 10_000 });
|
||||
await expect(page.locator('[data-testid="mail-list"], [data-testid="mail-list-loading"], [data-testid="mail-list-empty"]').first()).toBeVisible({ timeout: 10_000 });
|
||||
|
||||
// Click first mail if available
|
||||
const mailItem = page.locator('[data-testid^="mail-item-"]').first();
|
||||
@@ -49,7 +50,7 @@ test.describe('Mail E2E', () => {
|
||||
await mailItem.click();
|
||||
|
||||
// Mail detail should appear
|
||||
await expect(page.locator('[data-testid="mail-detail"], [data-testid="mail-detail-loading"], [data-testid="mail-detail-empty"]')).toBeVisible({ timeout: 10_000 });
|
||||
await expect(page.locator('[data-testid="mail-detail"], [data-testid="mail-detail-loading"], [data-testid="mail-detail-empty"]').first()).toBeVisible({ timeout: 10_000 });
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user