- Fix TypeScript error: InitIntegrations returning null by transitioning to done phase instead - Fix TypeScript error: Object.fromEntries cast in integration grids by typing the array elements - Update E2E onboarding tests to process the new integrations step (skip for now) and increase finish assertion timeout for async mutation
88 lines
3.0 KiB
TypeScript
88 lines
3.0 KiB
TypeScript
import { chromium } from "playwright";
|
|
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("Credentials onboarding should be successful", async () => {
|
|
// Arrange
|
|
const { db, localMountPath } = await createSqliteDbFileAsync();
|
|
const homarrContainer = await createHomarrContainer({
|
|
mounts: {
|
|
"/appdata": localMountPath,
|
|
},
|
|
}).start();
|
|
|
|
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);
|
|
|
|
// Act
|
|
await page.goto(`http://${homarrContainer.getHost()}:${homarrContainer.getMappedPort(7575)}`);
|
|
await actions.startOnboardingAsync("scratch");
|
|
await actions.processUserStepAsync({
|
|
username: "admin",
|
|
password: "Comp(exP4sswOrd",
|
|
confirmPassword: "Comp(exP4sswOrd",
|
|
});
|
|
await actions.processSettingsStepAsync();
|
|
await actions.processIntegrationsStepAsync();
|
|
|
|
// Assert
|
|
await assertions.assertFinishStepVisibleAsync();
|
|
await assertions.assertUserAndAdminGroupInsertedAsync("admin");
|
|
await assertions.assertDbOnboardingStepAsync("finish");
|
|
|
|
// Cleanup
|
|
await browser.close();
|
|
await homarrContainer.stop();
|
|
}, 60_000);
|
|
|
|
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);
|
|
|
|
// 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");
|
|
|
|
// Cleanup
|
|
await browser.close();
|
|
await homarrContainer.stop();
|
|
}, 60_000);
|
|
});
|