mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-01 12:52:11 +03:00
OmniRoute is an intelligent API gateway that unifies 20+ AI providers behind a single OpenAI-compatible endpoint. Features include intelligent routing with 6 strategies, multi-format translation (OpenAI/Claude/Gemini/Responses API), circuit breakers, semantic caching, combo fallback chains, real-time health monitoring, and a full dashboard with provider management, analytics, and CLI tool integration. Key highlights: - 20+ providers (Claude Code, Codex, Gemini CLI, GitHub Copilot, iFlow, Qwen, Kiro, etc.) - 6 routing strategies (Fill First, Round Robin, P2C, Random, Least Used, Cost Optimized) - Export/Import database backup with full archive support - Translator Playground with 4 modes (Playground, Chat Tester, Test Bench, Live Monitor) - 100% TypeScript across src/ and open-sse/ - Docker support with multi-stage builds - Comprehensive documentation and 9 dashboard screenshots
29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Dashboard Navigation", () => {
|
|
test("redirects unauthenticated user to /login", async ({ page }) => {
|
|
const response = await page.goto("/dashboard");
|
|
// Should either show login page or redirect to /login
|
|
await page.waitForURL(/\/(login|dashboard)/);
|
|
const url = page.url();
|
|
// The app should show some kind of page (login or dashboard)
|
|
expect(url).toMatch(/\/(login|dashboard)/);
|
|
});
|
|
|
|
test("login page renders with form elements", async ({ page }) => {
|
|
await page.goto("/login");
|
|
// Should show some form of authentication UI
|
|
const body = page.locator("body");
|
|
await expect(body).toBeVisible();
|
|
});
|
|
|
|
test("/docs page renders documentation", async ({ page }) => {
|
|
await page.goto("/docs");
|
|
const body = page.locator("body");
|
|
await expect(body).toBeVisible();
|
|
// Docs should contain some content
|
|
const text = await body.textContent();
|
|
expect(text?.length).toBeGreaterThan(100);
|
|
});
|
|
});
|