mirror of
https://github.com/coder/coder.git
synced 2026-06-04 05:28:20 +00:00
962608cde0
Closes coder/internal#168 Gets rid of the "global state" authentication, and adds a `login` helper which should be called at the beginning of each test. This means that not every test needs to authenticated as admin, and we can even have tests that encompass multiple permission levels. We also now create more than just the single admin user during setup, so that we can have a set of users to pick from as appropriate.
55 lines
1.9 KiB
TypeScript
55 lines
1.9 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
import { API } from "api/api";
|
|
import { Language } from "pages/CreateUserPage/CreateUserForm";
|
|
import { coderPort, license, premiumTestsRequired, users } from "../constants";
|
|
import { expectUrl } from "../expectUrl";
|
|
import { createUser } from "../helpers";
|
|
|
|
test("setup deployment", async ({ page }) => {
|
|
await page.goto("/", { waitUntil: "domcontentloaded" });
|
|
API.setHost(`http://127.0.0.1:${coderPort}`);
|
|
const exists = await API.hasFirstUser();
|
|
// First user already exists, abort early. All tests execute this as a dependency,
|
|
// if you run multiple tests in the UI, this will fail unless we check this.
|
|
if (exists) {
|
|
return;
|
|
}
|
|
|
|
// Setup first user
|
|
await page.getByLabel(Language.usernameLabel).fill(users.admin.username);
|
|
await page.getByLabel(Language.emailLabel).fill(users.admin.email);
|
|
await page.getByLabel(Language.passwordLabel).fill(users.admin.password);
|
|
await page.getByTestId("create").click();
|
|
|
|
await expectUrl(page).toHavePathName("/workspaces");
|
|
await page.getByTestId("button-select-template").isVisible();
|
|
|
|
for (const user of Object.values(users)) {
|
|
// Already created as first user
|
|
if (user.username === "admin") {
|
|
continue;
|
|
}
|
|
|
|
await createUser(page, user);
|
|
}
|
|
|
|
// Setup license
|
|
if (premiumTestsRequired || license) {
|
|
// Make sure that we have something that looks like a real license
|
|
expect(license).toBeTruthy();
|
|
expect(license.length).toBeGreaterThan(92); // the signature alone should be this long
|
|
expect(license.split(".").length).toBe(3); // otherwise it's invalid
|
|
|
|
await page.goto("/deployment/licenses", { waitUntil: "domcontentloaded" });
|
|
await expect(page).toHaveTitle("License Settings - Coder");
|
|
|
|
await page.getByText("Add a license").click();
|
|
await page.getByRole("textbox").fill(license);
|
|
await page.getByText("Upload License").click();
|
|
|
|
await expect(
|
|
page.getByText("You have successfully added a license"),
|
|
).toBeVisible();
|
|
}
|
|
});
|