import { chromium } from "@playwright/test"; import { describe, test } from "vitest"; import { OnboardingActions } from "./shared/actions/onboarding-actions"; import { OnboardingAssertions } from "./shared/assertions/onboarding-assertions"; import { createHomarrContainer } from "./shared/create-homarr-container"; import { createSqliteDbFileAsync } from "./shared/e2e-db"; describe("Onboarding", () => { test("External provider onboarding setup should be successful", async () => { // Arrange const { db, localMountPath } = await createSqliteDbFileAsync(); const homarrContainer = await createHomarrContainer({ environment: { AUTH_PROVIDERS: "ldap", AUTH_LDAP_URI: "ldap://host.docker.internal:3890", AUTH_LDAP_BASE: "not-used", AUTH_LDAP_BIND_DN: "not-used", AUTH_LDAP_BIND_PASSWORD: "not-used", }, mounts: { "/appdata": localMountPath, }, }).start(); const externalGroupName = "oidc-admins"; const browser = await chromium.launch(); const context = await browser.newContext(); const page = await context.newPage(); const actions = new OnboardingActions(page, db); const assertions = new OnboardingAssertions(page, db); try { // Act await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`); await actions.startOnboardingAsync("scratch"); await actions.processExternalGroupStepAsync({ name: externalGroupName, }); await actions.processSettingsStepAsync(); await actions.processIntegrationsStepAsync(); // Assert await assertions.assertFinishStepVisibleAsync(); await assertions.assertExternalGroupInsertedAsync(externalGroupName); await assertions.assertDbOnboardingStepAsync("finish"); } finally { await Promise.all([browser.close(), homarrContainer.stop()]); } }, 60_000); });