Readur/frontend/e2e/navigation.spec.ts

79 lines
3.1 KiB
TypeScript

import { test, expect } from './fixtures/auth';
import { TestHelpers } from './utils/test-helpers';
test.describe('Navigation', () => {
let helpers: TestHelpers;
test.beforeEach(async ({ authenticatedPage }) => {
helpers = new TestHelpers(authenticatedPage);
});
test('should check available routes after login', async ({ authenticatedPage: page }) => {
// Check current URL after login
console.log('Current URL after login:', page.url());
// Try to navigate to various pages and see what works
const routes = ['/dashboard', '/upload', '/search', '/documents', '/sources', '/settings'];
for (const route of routes) {
console.log(`\nTesting route: ${route}`);
try {
await page.goto(route);
await page.waitForLoadState('networkidle', { timeout: 5000 });
const title = await page.title();
const currentUrl = page.url();
console.log(`${route} -> ${currentUrl} (title: ${title})`);
// Check if there are any obvious error messages
const errorElements = page.locator(':has-text("Error"), :has-text("Not found"), :has-text("404")');
const hasError = await errorElements.count() > 0;
if (hasError) {
console.log(`⚠️ Possible error on ${route}`);
}
// Check for file input on upload page
if (route === '/upload') {
const fileInputs = await page.locator('input[type="file"]').count();
const dropzones = await page.locator(':has-text("Drag"), :has-text("Choose"), [role="button"]').count();
console.log(` File inputs: ${fileInputs}, Dropzones: ${dropzones}`);
// Get page content for debugging
const bodyText = await page.locator('body').textContent();
console.log(` Upload page content preview: ${bodyText?.substring(0, 200)}...`);
}
} catch (error) {
console.log(`${route} failed: ${error}`);
}
}
});
test('should check what elements are on dashboard', async ({ authenticatedPage: page }) => {
await page.goto('/dashboard');
await page.waitForLoadState('networkidle', { timeout: 5000 });
console.log('Dashboard URL:', page.url());
// Check for welcome message
const welcomeMessage = await page.locator('h4:has-text("Welcome back,")').isVisible();
console.log('Welcome message present:', welcomeMessage);
// Check for common navigation elements
const navLinks = await page.locator('a, button').allTextContents();
console.log('Navigation elements:', navLinks);
// Check for any upload-related elements on dashboard
const uploadElements = await page.locator(':has-text("Upload"), :has-text("File"), input[type="file"]').count();
console.log('Upload elements on dashboard:', uploadElements);
if (uploadElements > 0) {
const uploadTexts = await page.locator(':has-text("Upload"), :has-text("File")').allTextContents();
console.log('Upload-related text:', uploadTexts);
}
// Verify we're properly logged in
await expect(page.locator('h4:has-text("Welcome back,")')).toBeVisible();
});
});