feat: Improve UI layout and navigation
- Increase logo size (48x48 desktop, 56x56 mobile) for better visibility - Add logo as favicon - Add logo to mobile header - Move user menu to navigation bars (sidebar on desktop, bottom bar on mobile) - Fix desktop chat layout - container structure prevents voice controls cutoff - Fix mobile bottom bar - use icon-only ActionIcons instead of truncated text buttons - Hide Create Node/New Conversation buttons on mobile to save header space - Make fixed header and voice controls work properly with containers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
34
tests/auth.setup.ts
Normal file
34
tests/auth.setup.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { test as setup, expect } from '@playwright/test';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import path from 'node:path';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const authFile = path.join(__dirname, '../.playwright/.auth/user.json');
|
||||
|
||||
setup('authenticate', async ({ page }) => {
|
||||
// Navigate to login page
|
||||
await page.goto('http://localhost:3000/login');
|
||||
|
||||
// Fill in the Bluesky handle
|
||||
await page.getByPlaceholder('e.g., yourname.bsky.social').fill('aprongecko.bsky.social');
|
||||
|
||||
// Click login button
|
||||
await page.getByRole('button', { name: 'Log in with Bluesky' }).click();
|
||||
|
||||
// Wait for OAuth redirect and handle it
|
||||
// This will open the Bluesky authorization page
|
||||
// In a real test, you would need to handle the OAuth flow
|
||||
// For now, we'll wait for the callback
|
||||
await page.waitForURL(/callback/, { timeout: 30000 });
|
||||
|
||||
// After successful auth, should redirect to chat
|
||||
await page.waitForURL(/chat/, { timeout: 10000 });
|
||||
|
||||
// Verify we're logged in
|
||||
await expect(page.getByText('Ponderants Interview')).toBeVisible();
|
||||
|
||||
// Save authenticated state
|
||||
await page.context().storageState({ path: authFile });
|
||||
});
|
||||
Reference in New Issue
Block a user