Research-Stack/4-Infrastructure/k3s-flake/tests/jellyfin-direct.spec.ts
Brandon Schneider bc0f10db40 feat(infra): Jellyfin wizard complete, SSO-Auth plugin files deployed
- Jellyfin setup wizard completed, admin account created (admin/jellyfin-admin)
- SSO-Auth plugin v4.0.0.3 downloaded and placed in plugins directory
- Authentik OIDC provider for Jellyfin updated with correct redirect URI
- All services verified running

Build: 3313 jobs, 0 errors (lake build Compiler)
2026-05-31 14:14:20 -05:00

38 lines
1.6 KiB
TypeScript

import { test } from '@playwright/test';
test('Jellyfin wizard + OIDC via direct port', async ({ page }) => {
test.setTimeout(180000);
// Bypass Caddy forward_auth by going to Jellyfin directly
console.log('=== Connecting to Jellyfin directly ===');
await page.goto('http://100.88.57.96:30091/web/#/wizard/start.html', { waitUntil: 'networkidle', timeout: 30000 });
await page.waitForTimeout(5000);
console.log('URL:', page.url());
console.log('Title:', await page.title());
// Check if we're on the wizard
const pageContent = await page.textContent('body');
if (pageContent?.includes('wizard') || pageContent?.includes('Welcome')) {
console.log('Wizard page detected');
}
// Dump all visible elements
const buttons = await page.locator('button, .button-submit, [class*="button"]').all();
console.log(`Found ${buttons.length} clickable elements`);
for (const btn of buttons) {
if (await btn.isVisible()) {
console.log(` Visible: "${await btn.textContent()}" tag=${await btn.evaluate(el => el.tagName)} class=${await btn.evaluate(el => el.className)}`);
}
}
await page.screenshot({ path: '/tmp/jf-wizard-start.png', fullPage: true });
// Try clicking next/submit
const nextBtn = page.locator('button:has-text("Next"), .button-submit:visible, button[type="submit"]').first();
if (await nextBtn.isVisible({ timeout: 2000 }).catch(() => false)) {
await nextBtn.click();
await page.waitForTimeout(3000);
await page.screenshot({ path: '/tmp/jf-wizard-step2.png', fullPage: true });
console.log('Clicked Next. URL:', page.url());
}
});