From f0f2b571b5f2c2fac1dbea0d4e0d1348d0b56644 Mon Sep 17 00:00:00 2001 From: dswbx Date: Thu, 3 Apr 2025 11:04:31 +0200 Subject: [PATCH] e2e: added adapter configs --- app/e2e/inc/adapters.ts | 23 +++++++++++++++++++++++ app/e2e/media.e2e-spec.ts | 12 ++++++++---- 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 app/e2e/inc/adapters.ts diff --git a/app/e2e/inc/adapters.ts b/app/e2e/inc/adapters.ts new file mode 100644 index 00000000..2a8eff0a --- /dev/null +++ b/app/e2e/inc/adapters.ts @@ -0,0 +1,23 @@ +const adapter = process.env.TEST_ADAPTER; + +const default_config = { + media_adapter: "local" +} as const; + +const configs = { + cloudflare: { + media_adapter: "r2" + } +} + +export function getAdapterConfig(): typeof default_config { + if (adapter) { + if (!configs[adapter]) { + throw new Error(`Adapter "${adapter}" not found. Available adapters: ${Object.keys(configs).join(", ")}`); + } + + return configs[adapter] as typeof default_config; + } + + return default_config; +} \ No newline at end of file diff --git a/app/e2e/media.e2e-spec.ts b/app/e2e/media.e2e-spec.ts index f518d938..e877d825 100644 --- a/app/e2e/media.e2e-spec.ts +++ b/app/e2e/media.e2e-spec.ts @@ -2,9 +2,13 @@ import { test, expect } from "@playwright/test"; import { testIds } from "../src/ui/lib/config"; import type { SchemaResponse } from "../src/modules/server/SystemController"; +import { getAdapterConfig } from "./inc/adapters"; + // Annotate entire file as serial. test.describe.configure({ mode: "serial" }); +const adapterConfig = getAdapterConfig(); + test("can enable media", async ({ page }) => { await page.goto("/media/settings"); @@ -16,9 +20,9 @@ test("can enable media", async ({ page }) => { await expect(enableToggle).toHaveAttribute("aria-checked", "true"); // select local - const localAdapter = page.locator("css=button#adapter-local"); - await expect(localAdapter).toBeVisible(); - await localAdapter.click(); + const adapterChoice = page.locator(`css=button#adapter-${adapterConfig.media_adapter}`); + await expect(adapterChoice).toBeVisible(); + await adapterChoice.click(); // save const saveBtn = page.getByRole("button", { name: /Update/i }); @@ -33,7 +37,7 @@ test("can enable media", async ({ page }) => { expect(response?.status(), "fresh config 200").toBe(200); const body = (await response?.json()) as SchemaResponse; expect(body.config.media.enabled, "media is enabled").toBe(true); - expect(body.config.media.adapter.type, "adapter is local").toBe("local"); + expect(body.config.media.adapter.type, "correct adapter").toBe(adapterConfig.media_adapter); } });