fix(tests): even more tests pass now, just need to fix these last 3

This commit is contained in:
perf3ct 2025-07-15 22:22:20 +00:00
parent a487943b0e
commit 70e291e057
No known key found for this signature in database
GPG Key ID: 569C4EEC436F5232
7 changed files with 139 additions and 99 deletions

View File

@ -5,12 +5,12 @@ import { TestHelpers } from './utils/test-helpers';
test.describe('Document Management', () => { test.describe('Document Management', () => {
let helpers: TestHelpers; let helpers: TestHelpers;
test.beforeEach(async ({ adminPage }) => { test.beforeEach(async ({ authenticatedPage }) => {
helpers = new TestHelpers(adminPage); helpers = new TestHelpers(authenticatedPage);
await helpers.navigateToPage('/documents'); await helpers.navigateToPage('/documents');
}); });
test('should display document list', async ({ adminPage: page }) => { test('should display document list', async ({ authenticatedPage: page }) => {
// The documents page should be visible with title and description // The documents page should be visible with title and description
// Use more flexible selectors for headings - based on artifact, it's h4 // Use more flexible selectors for headings - based on artifact, it's h4
const documentsHeading = page.locator('h4:has-text("Documents")'); const documentsHeading = page.locator('h4:has-text("Documents")');
@ -86,7 +86,7 @@ test.describe('Document Management', () => {
console.log('Document list page test completed successfully'); console.log('Document list page test completed successfully');
}); });
test.skip('should navigate to document details', async ({ dynamicAdminPage: page }) => { test.skip('should navigate to document details', async ({ authenticatedPage: page }) => {
// Click on first document if available // Click on first document if available
const firstDocument = page.locator('.MuiCard-root').first(); const firstDocument = page.locator('.MuiCard-root').first();
@ -103,7 +103,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should display document metadata', async ({ dynamicAdminPage: page }) => { test.skip('should display document metadata', async ({ authenticatedPage: page }) => {
const firstDocument = page.locator('.MuiCard-root').first(); const firstDocument = page.locator('.MuiCard-root').first();
if (await firstDocument.isVisible()) { if (await firstDocument.isVisible()) {
@ -117,7 +117,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should allow document download', async ({ dynamicAdminPage: page }) => { test.skip('should allow document download', async ({ authenticatedPage: page }) => {
const firstDocument = page.locator('[data-testid="document-item"], .document-item, .document-card').first(); const firstDocument = page.locator('[data-testid="document-item"], .document-item, .document-card').first();
if (await firstDocument.isVisible()) { if (await firstDocument.isVisible()) {
@ -139,7 +139,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should allow document deletion', async ({ dynamicAdminPage: page }) => { test.skip('should allow document deletion', async ({ authenticatedPage: page }) => {
const firstDocument = page.locator('[data-testid="document-item"], .document-item, .document-card').first(); const firstDocument = page.locator('[data-testid="document-item"], .document-item, .document-card').first();
if (await firstDocument.isVisible()) { if (await firstDocument.isVisible()) {
@ -163,7 +163,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should filter documents by type', async ({ dynamicAdminPage: page }) => { test.skip('should filter documents by type', async ({ authenticatedPage: page }) => {
// Look for filter controls // Look for filter controls
const filterDropdown = page.locator('[data-testid="type-filter"], select[name="type"], .type-filter'); const filterDropdown = page.locator('[data-testid="type-filter"], select[name="type"], .type-filter');
if (await filterDropdown.isVisible()) { if (await filterDropdown.isVisible()) {
@ -180,7 +180,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should sort documents', async ({ dynamicAdminPage: page }) => { test.skip('should sort documents', async ({ authenticatedPage: page }) => {
const sortDropdown = page.locator('[data-testid="sort"], select[name="sort"], .sort-dropdown'); const sortDropdown = page.locator('[data-testid="sort"], select[name="sort"], .sort-dropdown');
if (await sortDropdown.isVisible()) { if (await sortDropdown.isVisible()) {
await sortDropdown.selectOption('date-desc'); await sortDropdown.selectOption('date-desc');
@ -192,7 +192,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should display OCR status', async ({ dynamicAdminPage: page }) => { test.skip('should display OCR status', async ({ authenticatedPage: page }) => {
const firstDocument = page.locator('.MuiCard-root').first(); const firstDocument = page.locator('.MuiCard-root').first();
if (await firstDocument.isVisible()) { if (await firstDocument.isVisible()) {
@ -207,7 +207,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should search within document content', async ({ dynamicAdminPage: page }) => { test.skip('should search within document content', async ({ authenticatedPage: page }) => {
const firstDocument = page.locator('.MuiCard-root').first(); const firstDocument = page.locator('.MuiCard-root').first();
if (await firstDocument.isVisible()) { if (await firstDocument.isVisible()) {
@ -230,7 +230,7 @@ test.describe('Document Management', () => {
} }
}); });
test.skip('should paginate document list', async ({ dynamicAdminPage: page }) => { test.skip('should paginate document list', async ({ authenticatedPage: page }) => {
// Look for pagination controls // Look for pagination controls
const nextPageButton = page.locator('[data-testid="next-page"], button:has-text("Next"), .pagination-next'); const nextPageButton = page.locator('[data-testid="next-page"], button:has-text("Next"), .pagination-next');
if (await nextPageButton.isVisible()) { if (await nextPageButton.isVisible()) {
@ -246,7 +246,7 @@ test.describe('Document Management', () => {
} }
}); });
test('should show document thumbnails'.skip, async ({ dynamicAdminPage: page }) => { test('should show document thumbnails'.skip, async ({ authenticatedPage: page }) => {
// Check for document thumbnails in list view // Check for document thumbnails in list view
const documentThumbnails = page.locator('[data-testid="document-thumbnail"], .thumbnail, .document-preview'); const documentThumbnails = page.locator('[data-testid="document-thumbnail"], .thumbnail, .document-preview');
if (await documentThumbnails.first().isVisible()) { if (await documentThumbnails.first().isVisible()) {

View File

@ -15,9 +15,9 @@ export const TEST_CREDENTIALS = {
} as const; } as const;
export const TIMEOUTS = { export const TIMEOUTS = {
login: 10000, login: 15000,
navigation: 10000, navigation: 15000,
api: 5000 api: 8000
} as const; } as const;
export interface AuthFixture { export interface AuthFixture {
@ -67,7 +67,7 @@ export class AuthHelper {
const isWebKit = browserName.includes('WebKit') && !browserName.includes('Chrome'); const isWebKit = browserName.includes('WebKit') && !browserName.includes('Chrome');
if (isWebKit) { if (isWebKit) {
console.log('WebKit browser detected - adding extra wait time'); console.log('WebKit browser detected - adding extra wait time');
await this.page.waitForTimeout(3000); await this.page.waitForTimeout(5000);
} }
// Clear any existing content and fill the fields // Clear any existing content and fill the fields
@ -79,41 +79,62 @@ export class AuthHelper {
// WebKit needs extra time for form validation // WebKit needs extra time for form validation
if (isWebKit) { if (isWebKit) {
await this.page.waitForTimeout(2000); await this.page.waitForTimeout(3000);
} }
// Wait for login API response before clicking submit
const loginPromise = this.page.waitForResponse(response =>
response.url().includes('/auth/login') && response.status() === 200,
{ timeout: TIMEOUTS.login }
);
// Click submit button - look for the sign in button specifically // Click submit button - look for the sign in button specifically
const signInButton = this.page.locator('button[type="submit"]:has-text("Sign in")'); const signInButton = this.page.locator('button[type="submit"]:has-text("Sign in")');
await signInButton.waitFor({ state: 'visible', timeout: TIMEOUTS.login }); await signInButton.waitFor({ state: 'visible', timeout: TIMEOUTS.login });
await signInButton.click();
try { if (isWebKit) {
const response = await loginPromise; // WebKit-specific approach: don't wait for API response, just click and wait for navigation
await signInButton.click();
// Wait for navigation to dashboard with more flexible URL pattern // WebKit needs more time before checking navigation
await this.page.waitForURL(/.*\/dashboard.*/, { timeout: TIMEOUTS.navigation }); await this.page.waitForTimeout(2000);
// Wait for navigation with longer timeout for WebKit
await this.page.waitForURL(/.*\/dashboard.*/, { timeout: 25000 });
console.log(`Successfully navigated to: ${this.page.url()}`); console.log(`Successfully navigated to: ${this.page.url()}`);
// Wait for dashboard content to load - be more flexible about the welcome message // Wait for dashboard content to load with extra time for WebKit
await this.page.waitForFunction(() => { await this.page.waitForFunction(() => {
return document.querySelector('h4') !== null && return document.querySelector('h4') !== null &&
(document.querySelector('h4')?.textContent?.includes('Welcome') || (document.querySelector('h4')?.textContent?.includes('Welcome') ||
document.querySelector('[role="main"]') !== null); document.querySelector('[role="main"]') !== null);
}, { timeout: TIMEOUTS.navigation }); }, { timeout: 20000 });
} catch (error) { } else {
// Take a screenshot for debugging // Standard approach for other browsers
await this.page.screenshot({ const loginPromise = this.page.waitForResponse(response =>
path: `test-results/login-failure-${credentials.username}-${Date.now()}.png`, response.url().includes('/auth/login') && response.status() === 200,
fullPage: true { timeout: TIMEOUTS.login }
}); );
throw error;
await signInButton.click();
try {
const response = await loginPromise;
// Wait for navigation to dashboard with more flexible URL pattern
await this.page.waitForURL(/.*\/dashboard.*/, { timeout: TIMEOUTS.navigation });
console.log(`Successfully navigated to: ${this.page.url()}`);
// Wait for dashboard content to load - be more flexible about the welcome message
await this.page.waitForFunction(() => {
return document.querySelector('h4') !== null &&
(document.querySelector('h4')?.textContent?.includes('Welcome') ||
document.querySelector('[role="main"]') !== null);
}, { timeout: TIMEOUTS.navigation });
} catch (error) {
// Take a screenshot for debugging
await this.page.screenshot({
path: `test-results/login-failure-${credentials.username}-${Date.now()}.png`,
fullPage: true
});
throw error;
}
} }
} }

View File

@ -35,12 +35,12 @@ const OCR_LANGUAGES = {
test.describe('OCR Multiple Languages', () => { test.describe('OCR Multiple Languages', () => {
let helpers: TestHelpers; let helpers: TestHelpers;
test.beforeEach(async ({ adminPage }) => { test.beforeEach(async ({ dynamicAdminPage }) => {
helpers = new TestHelpers(adminPage); helpers = new TestHelpers(dynamicAdminPage);
await helpers.navigateToPage('/settings'); await helpers.navigateToPage('/settings');
}); });
test('should display OCR language selector in settings', async ({ adminPage: page }) => { test('should display OCR language selector in settings', async ({ dynamicAdminPage: page }) => {
// Navigate to settings page // Navigate to settings page
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -77,7 +77,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should select multiple OCR languages', async ({ adminPage: page }) => { test('should select multiple OCR languages', async ({ dynamicAdminPage: page }) => {
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -126,7 +126,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should upload Spanish document and process with Spanish OCR', async ({ adminPage: page }) => { test('should upload Spanish document and process with Spanish OCR', async ({ dynamicAdminPage: page }) => {
// First set language to Spanish using the multi-language selector // First set language to Spanish using the multi-language selector
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -203,7 +203,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should upload English document and process with English OCR', async ({ adminPage: page }) => { test('should upload English document and process with English OCR', async ({ dynamicAdminPage: page }) => {
// First set language to English using the multi-language selector // First set language to English using the multi-language selector
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -280,7 +280,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should validate OCR results contain expected language-specific content', async ({ adminPage: page }) => { test('should validate OCR results contain expected language-specific content', async ({ dynamicAdminPage: page }) => {
await page.goto('/documents'); await page.goto('/documents');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -325,7 +325,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should retry failed OCR with different language', async ({ adminPage: page }) => { test('should retry failed OCR with different language', async ({ dynamicAdminPage: page }) => {
await page.goto('/documents'); await page.goto('/documents');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -371,7 +371,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should handle mixed language document', async ({ adminPage: page }) => { test('should handle mixed language document', async ({ dynamicAdminPage: page }) => {
// Upload mixed language document // Upload mixed language document
await page.goto('/upload'); await page.goto('/upload');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -425,7 +425,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should persist language preference across sessions', async ({ adminPage: page }) => { test('should persist language preference across sessions', async ({ dynamicAdminPage: page }) => {
// Set language to Spanish // Set language to Spanish
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -466,7 +466,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should display available languages from API', async ({ adminPage: page }) => { test('should display available languages from API', async ({ dynamicAdminPage: page }) => {
// Navigate to settings and check API call for languages // Navigate to settings and check API call for languages
const languagesPromise = helpers.waitForApiCall('/api/ocr/languages', TIMEOUTS.medium); const languagesPromise = helpers.waitForApiCall('/api/ocr/languages', TIMEOUTS.medium);
@ -500,7 +500,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should handle bulk operations with multiple languages', async ({ adminPage: page }) => { test('should handle bulk operations with multiple languages', async ({ dynamicAdminPage: page }) => {
await page.goto('/documents'); await page.goto('/documents');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -555,7 +555,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should handle OCR language errors gracefully', async ({ adminPage: page }) => { test('should handle OCR language errors gracefully', async ({ dynamicAdminPage: page }) => {
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -584,7 +584,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should upload document with multiple languages selected', async ({ adminPage: page }) => { test('should upload document with multiple languages selected', async ({ dynamicAdminPage: page }) => {
// First set multiple languages in settings // First set multiple languages in settings
await page.goto('/settings'); await page.goto('/settings');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -671,7 +671,7 @@ test.describe('OCR Multiple Languages', () => {
} }
}); });
test('should retry failed OCR with multiple languages', async ({ adminPage: page }) => { test('should retry failed OCR with multiple languages', async ({ dynamicAdminPage: page }) => {
await page.goto('/documents'); await page.goto('/documents');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();

View File

@ -238,11 +238,9 @@ test.describe('Source Management', () => {
console.log('No toast notification found'); console.log('No toast notification found');
} }
// Source should be removed from list // Source should be removed from list - check for empty state
if (sourceName) { await expect(page.locator('h5:has-text("No Sources Configured")')).toBeVisible({ timeout: 10000 });
await expect(page.locator(`:has-text("${sourceName}")`)).not.toBeVisible({ timeout: 10000 }); console.log('Source successfully deleted - no sources remaining');
console.log(`Source '${sourceName}' successfully deleted`);
}
} else { } else {
console.log('No delete button found - test will pass but delete was not performed'); console.log('No delete button found - test will pass but delete was not performed');
} }

View File

@ -20,10 +20,10 @@ export interface E2ETestUser {
} }
export const E2E_TIMEOUTS = { export const E2E_TIMEOUTS = {
login: 10000, login: 15000,
navigation: 10000, navigation: 15000,
api: 5000, api: 8000,
userCreation: 15000, userCreation: 20000,
} as const; } as const;
/** /**
@ -148,7 +148,7 @@ export class E2ETestAuthHelper {
const isWebKit = browserName.includes('WebKit') && !browserName.includes('Chrome'); const isWebKit = browserName.includes('WebKit') && !browserName.includes('Chrome');
if (isWebKit) { if (isWebKit) {
console.log('WebKit browser detected - adding extra wait time'); console.log('WebKit browser detected - adding extra wait time');
await this.page.waitForTimeout(3000); await this.page.waitForTimeout(5000);
} }
// Clear any existing content and fill the fields // Clear any existing content and fill the fields
@ -160,32 +160,53 @@ export class E2ETestAuthHelper {
// WebKit needs extra time for form validation // WebKit needs extra time for form validation
if (isWebKit) { if (isWebKit) {
await this.page.waitForTimeout(2000); await this.page.waitForTimeout(3000);
} }
// Wait for login API response before clicking submit
const loginPromise = this.page.waitForResponse(response =>
response.url().includes('/auth/login') && response.status() === 200,
{ timeout: E2E_TIMEOUTS.login }
);
// Click submit button - look for the sign in button specifically // Click submit button - look for the sign in button specifically
const signInButton = this.page.locator('button[type="submit"]:has-text("Sign in")'); const signInButton = this.page.locator('button[type="submit"]:has-text("Sign in")');
await signInButton.waitFor({ state: 'visible', timeout: E2E_TIMEOUTS.login }); await signInButton.waitFor({ state: 'visible', timeout: E2E_TIMEOUTS.login });
await signInButton.click();
const response = await loginPromise; if (isWebKit) {
// WebKit-specific approach: don't wait for API response, just click and wait for navigation
// Wait for navigation to dashboard with more flexible URL pattern await signInButton.click();
await this.page.waitForURL(/.*\/dashboard.*/, { timeout: E2E_TIMEOUTS.navigation });
console.log(`Successfully navigated to: ${this.page.url()}`); // WebKit needs more time before checking navigation
await this.page.waitForTimeout(2000);
// Wait for dashboard content to load - be more flexible about the welcome message
await this.page.waitForFunction(() => { // Wait for navigation with longer timeout for WebKit
return document.querySelector('h4') !== null && await this.page.waitForURL(/.*\/dashboard.*/, { timeout: 25000 });
(document.querySelector('h4')?.textContent?.includes('Welcome') || console.log(`Successfully navigated to: ${this.page.url()}`);
document.querySelector('[role="main"]') !== null);
}, { timeout: E2E_TIMEOUTS.navigation }); // Wait for dashboard content to load with extra time for WebKit
await this.page.waitForFunction(() => {
return document.querySelector('h4') !== null &&
(document.querySelector('h4')?.textContent?.includes('Welcome') ||
document.querySelector('[role="main"]') !== null);
}, { timeout: 20000 });
} else {
// Standard approach for other browsers
const loginPromise = this.page.waitForResponse(response =>
response.url().includes('/auth/login') && response.status() === 200,
{ timeout: E2E_TIMEOUTS.login }
);
await signInButton.click();
const response = await loginPromise;
// Wait for navigation to dashboard with more flexible URL pattern
await this.page.waitForURL(/.*\/dashboard.*/, { timeout: E2E_TIMEOUTS.navigation });
console.log(`Successfully navigated to: ${this.page.url()}`);
// Wait for dashboard content to load - be more flexible about the welcome message
await this.page.waitForFunction(() => {
return document.querySelector('h4') !== null &&
(document.querySelector('h4')?.textContent?.includes('Welcome') ||
document.querySelector('[role="main"]') !== null);
}, { timeout: E2E_TIMEOUTS.navigation });
}
console.log(`Login as ${credentials.username} completed successfully`); console.log(`Login as ${credentials.username} completed successfully`);
return true; return true;

View File

@ -5,16 +5,16 @@ import { TestHelpers } from './utils/test-helpers';
test.describe('WebDAV Workflow (Dynamic Auth)', () => { test.describe('WebDAV Workflow (Dynamic Auth)', () => {
let helpers: TestHelpers; let helpers: TestHelpers;
test.beforeEach(async ({ dynamicAdminPage }) => { test.beforeEach(async ({ authenticatedPage }) => {
helpers = new TestHelpers(dynamicAdminPage); helpers = new TestHelpers(authenticatedPage);
await helpers.navigateToPage('/sources'); await helpers.navigateToPage('/sources');
}); });
test('should create and configure WebDAV source with dynamic admin', async ({ dynamicAdminPage: page, testAdmin }) => { test('should create and configure WebDAV source with dynamic admin', async ({ authenticatedPage: page }) => {
// Increase timeout for this test as WebDAV operations can be slow // Increase timeout for this test as WebDAV operations can be slow
test.setTimeout(60000); test.setTimeout(60000);
console.log(`Running WebDAV test with dynamic admin: ${testAdmin.credentials.username}`); console.log('Running WebDAV test with authenticated admin');
// Navigate to sources page // Navigate to sources page
await page.goto('/sources'); await page.goto('/sources');
@ -141,7 +141,7 @@ test.describe('WebDAV Workflow (Dynamic Auth)', () => {
if (nameInput) { if (nameInput) {
await nameInput.clear(); await nameInput.clear();
await nameInput.fill(`Test WebDAV Source - ${testAdmin.credentials.username}`); await nameInput.fill('Test WebDAV Source - admin');
console.log('Filled name input'); console.log('Filled name input');
} else { } else {
console.log('Warning: Could not find name input field'); console.log('Warning: Could not find name input field');
@ -339,11 +339,11 @@ test.describe('WebDAV Workflow (Dynamic Auth)', () => {
console.log('Warning: Could not find source items - list may be empty or using different selectors'); console.log('Warning: Could not find source items - list may be empty or using different selectors');
} }
console.log(`✅ WebDAV source creation test completed by dynamic admin: ${testAdmin.credentials.username}`); console.log('✅ WebDAV source creation test completed by authenticated admin');
}); });
test('should test WebDAV connection with dynamic admin', async ({ dynamicAdminPage: page, testAdmin }) => { test('should test WebDAV connection with dynamic admin', async ({ authenticatedPage: page }) => {
console.log(`Testing WebDAV connection with dynamic admin: ${testAdmin.credentials.username}`); console.log('Testing WebDAV connection with authenticated admin');
// This test assumes a WebDAV source exists from the previous test or setup // This test assumes a WebDAV source exists from the previous test or setup
await page.goto('/sources'); await page.goto('/sources');
@ -376,6 +376,6 @@ test.describe('WebDAV Workflow (Dynamic Auth)', () => {
console.log('Connection status:', statusText); console.log('Connection status:', statusText);
} }
console.log(`✅ WebDAV connection test completed by dynamic admin: ${testAdmin.credentials.username}`); console.log('✅ WebDAV connection test completed by authenticated admin');
}); });
}); });

View File

@ -5,12 +5,12 @@ import { TestHelpers } from './utils/test-helpers';
test.describe('WebDAV Workflow', () => { test.describe('WebDAV Workflow', () => {
let helpers: TestHelpers; let helpers: TestHelpers;
test.beforeEach(async ({ adminPage }) => { test.beforeEach(async ({ authenticatedPage }) => {
helpers = new TestHelpers(adminPage); helpers = new TestHelpers(authenticatedPage);
await helpers.navigateToPage('/sources'); await helpers.navigateToPage('/sources');
}); });
test('should create and configure WebDAV source', async ({ adminPage: page }) => { test('should create and configure WebDAV source', async ({ authenticatedPage: page }) => {
// Increase timeout for this test as WebDAV operations can be slow // Increase timeout for this test as WebDAV operations can be slow
// This addresses the timeout issues with Material-UI Select components // This addresses the timeout issues with Material-UI Select components
test.setTimeout(60000); test.setTimeout(60000);
@ -223,7 +223,7 @@ test.describe('WebDAV Workflow', () => {
} }
}); });
test('should test WebDAV connection', async ({ adminPage: page }) => { test('should test WebDAV connection', async ({ authenticatedPage: page }) => {
// This test assumes a WebDAV source exists from the previous test or setup // This test assumes a WebDAV source exists from the previous test or setup
await page.goto('/sources'); await page.goto('/sources');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -256,7 +256,7 @@ test.describe('WebDAV Workflow', () => {
} }
}); });
test('should initiate WebDAV sync', async ({ adminPage: page }) => { test('should initiate WebDAV sync', async ({ authenticatedPage: page }) => {
await page.goto('/sources'); await page.goto('/sources');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -287,7 +287,7 @@ test.describe('WebDAV Workflow', () => {
} }
}); });
test('should show WebDAV sync history', async ({ adminPage: page }) => { test('should show WebDAV sync history', async ({ authenticatedPage: page }) => {
await page.goto('/sources'); await page.goto('/sources');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();
@ -310,7 +310,7 @@ test.describe('WebDAV Workflow', () => {
} }
}); });
test('should handle WebDAV source deletion', async ({ adminPage: page }) => { test('should handle WebDAV source deletion', async ({ authenticatedPage: page }) => {
await page.goto('/sources'); await page.goto('/sources');
await helpers.waitForLoadingToComplete(); await helpers.waitForLoadingToComplete();