diff --git a/site/e2e/api.ts b/site/e2e/api.ts index 940dcf11ab..90fe72b1c1 100644 --- a/site/e2e/api.ts +++ b/site/e2e/api.ts @@ -1,5 +1,6 @@ import type { Page } from "@playwright/test"; import { expect } from "@playwright/test"; +import { formatDuration, intervalToDuration } from "date-fns"; import * as API from "api/api"; import type { SerpentOption } from "api/typesGenerated"; import { coderPort } from "./constants"; @@ -128,6 +129,26 @@ export async function verifyConfigFlagEntries( }); } +export async function verifyConfigFlagDuration( + page: Page, + config: API.DeploymentConfig, + flag: string, +) { + const opt = findConfigOption(config, flag); + const configOption = page.locator( + `div.options-table .option-${flag} .option-value-string`, + ); + await expect(configOption).toHaveText( + formatDuration( + // intervalToDuration takes ms, so convert nanoseconds to ms + intervalToDuration({ + start: 0, + end: (opt.value as number) / 1e6, + }), + ), + ); +} + export function findConfigOption( config: API.DeploymentConfig, flag: string, diff --git a/site/e2e/tests/deployment/network.spec.ts b/site/e2e/tests/deployment/network.spec.ts new file mode 100644 index 0000000000..ec4d869622 --- /dev/null +++ b/site/e2e/tests/deployment/network.spec.ts @@ -0,0 +1,40 @@ +import { test } from "@playwright/test"; +import { getDeploymentConfig } from "api/api"; +import { + setupApiCalls, + verifyConfigFlagArray, + verifyConfigFlagBoolean, + verifyConfigFlagDuration, + verifyConfigFlagNumber, + verifyConfigFlagString, +} from "../../api"; + +test("login with OIDC", async ({ page }) => { + await setupApiCalls(page); + const config = await getDeploymentConfig(); + + await page.goto("/deployment/network", { waitUntil: "domcontentloaded" }); + + await verifyConfigFlagString(page, config, "access-url"); + await verifyConfigFlagBoolean(page, config, "block-direct-connections"); + await verifyConfigFlagBoolean(page, config, "browser-only"); + await verifyConfigFlagBoolean(page, config, "derp-force-websockets"); + await verifyConfigFlagBoolean(page, config, "derp-server-enable"); + await verifyConfigFlagString(page, config, "derp-server-region-code"); + await verifyConfigFlagString(page, config, "derp-server-region-code"); + await verifyConfigFlagNumber(page, config, "derp-server-region-id"); + await verifyConfigFlagString(page, config, "derp-server-region-name"); + await verifyConfigFlagArray(page, config, "derp-server-stun-addresses"); + await verifyConfigFlagBoolean(page, config, "disable-password-auth"); + await verifyConfigFlagBoolean(page, config, "disable-session-expiry-refresh"); + await verifyConfigFlagDuration(page, config, "max-token-lifetime"); + await verifyConfigFlagDuration(page, config, "proxy-health-interval"); + await verifyConfigFlagBoolean(page, config, "redirect-to-access-url"); + await verifyConfigFlagBoolean(page, config, "secure-auth-cookie"); + await verifyConfigFlagDuration(page, config, "session-duration"); + await verifyConfigFlagString(page, config, "tls-address"); + await verifyConfigFlagBoolean(page, config, "tls-allow-insecure-ciphers"); + await verifyConfigFlagString(page, config, "tls-client-auth"); + await verifyConfigFlagBoolean(page, config, "tls-enable"); + await verifyConfigFlagString(page, config, "tls-min-version"); +});