diff --git a/site/e2e/pom/HealthzPage.ts b/site/e2e/pom/HealthzPage.ts new file mode 100644 index 0000000000000..7a85ec38fb07b --- /dev/null +++ b/site/e2e/pom/HealthzPage.ts @@ -0,0 +1,13 @@ +import { Locator, Page } from "@playwright/test" +import { BasePom } from "./BasePom" + +export class HealthzPage extends BasePom { + constructor(baseURL: string | undefined, page: Page) { + super(baseURL, "/healthz", page) + } + + getOk(): Locator { + const locator = this.page.locator("text=ok") + return locator + } +} diff --git a/site/e2e/tests/healthz.spec.ts b/site/e2e/tests/healthz.spec.ts new file mode 100644 index 0000000000000..c58ede2503bd3 --- /dev/null +++ b/site/e2e/tests/healthz.spec.ts @@ -0,0 +1,8 @@ +import { test } from "@playwright/test" +import { HealthzPage } from "../pom/HealthzPage" + +test("Healthz is available without authentication", async ({ baseURL, page }) => { + const healthzPage = new HealthzPage(baseURL, page) + await page.goto(healthzPage.url, { waitUntil: "networkidle" }) + await healthzPage.getOk().waitFor({ state: "visible" }) +}) diff --git a/site/src/app.tsx b/site/src/app.tsx index 51e0872b09eb5..0178b992b2018 100644 --- a/site/src/app.tsx +++ b/site/src/app.tsx @@ -14,6 +14,7 @@ import { ProjectsPage } from "./pages/projects" import { ProjectPage } from "./pages/projects/[organization]/[project]" import { CreateWorkspacePage } from "./pages/projects/[organization]/[project]/create" import { WorkspacePage } from "./pages/workspaces/[workspace]" +import { HealthzPage } from "./pages/healthz" export const App: React.FC = () => { return ( @@ -45,6 +46,7 @@ export const App: React.FC = () => { } /> } /> + } /> } /> diff --git a/site/src/pages/healthz.tsx b/site/src/pages/healthz.tsx new file mode 100644 index 0000000000000..76b000e10261b --- /dev/null +++ b/site/src/pages/healthz.tsx @@ -0,0 +1,8 @@ +import React from "react" + +/** + * HealthzPage is a page that is available without authentication that is used + * for reporting whether or not the Dashboard is online. It should be + * accessible by humans and services. + */ +export const HealthzPage: React.FC = () =>
ok