Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6abe5f6

Browse files
committed
idk
1 parent 50ff06c commit 6abe5f6

36 files changed

+215
-63
lines changed

site/e2e/helpers.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { type ChildProcess, exec, spawn } from "node:child_process";
22
import { randomUUID } from "node:crypto";
3-
import * as fs from "node:fs";
43
import net from "node:net";
54
import path from "node:path";
65
import { Duplex } from "node:stream";
@@ -19,7 +18,9 @@ import {
1918
coderMain,
2019
coderPort,
2120
defaultOrganizationName,
21+
email,
2222
license,
23+
password,
2324
premiumTestsRequired,
2425
prometheusPort,
2526
requireTerraformTests,
@@ -56,6 +57,17 @@ export function requireTerraformProvisioner() {
5657
test.skip(!requireTerraformTests);
5758
}
5859

60+
type LoginOptions = {
61+
email: string;
62+
password: string;
63+
};
64+
65+
export async function login(page: Page, options?: LoginOptions) {
66+
await page.getByLabel("Email").fill(options?.email || email);
67+
await page.getByLabel("Password").fill(options?.password || password);
68+
await page.getByRole("button", { name: "Sign In" }).click();
69+
}
70+
5971
/**
6072
* createWorkspace creates a workspace for a template. It does not wait for it
6173
* to be running, but it does navigate to the page.

site/e2e/hooks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import http from "node:http";
22
import type { BrowserContext, Page } from "@playwright/test";
33
import { coderPort, gitAuth } from "./constants";
44

5-
export const beforeCoderTest = async (page: Page) => {
5+
export const beforeCoderTest = (page: Page) => {
66
page.on("console", (msg) => console.info(`[onConsole] ${msg.text()}`));
77

88
page.on("request", (request) => {

site/e2e/playwright.config.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@ import {
1313

1414
export const wsEndpoint = process.env.CODER_E2E_WS_ENDPOINT;
1515

16-
// This is where auth cookies are stored!
17-
export const storageState = path.join(__dirname, ".auth.json");
18-
1916
// If running terraform tests, verify the requirements exist in the
2017
// environment.
2118
//
@@ -58,17 +55,15 @@ export default defineConfig({
5855
projects: [
5956
{
6057
name: "testsSetup",
61-
testMatch: /global.setup\.ts/,
58+
testMatch: /setup\/.*\.spec\.ts/,
6259
},
6360
{
6461
name: "tests",
65-
testMatch: /.*\.spec\.ts/,
62+
testMatch: /tests\/.*\.spec\.ts/,
6663
dependencies: ["testsSetup"],
67-
use: { storageState },
6864
timeout: 30_000,
6965
},
7066
],
71-
reporter: [["./reporter.ts"]],
7267
use: {
7368
actionTimeout: 5000,
7469
baseURL: `http://localhost:${coderPort}`,

site/e2e/global.setup.ts renamed to site/e2e/setup/createFirstUser.spec.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import { expect, test } from "@playwright/test";
22
import { API } from "api/api";
33
import { Language } from "pages/CreateUserPage/CreateUserForm";
4-
import { setupApiCalls } from "./api";
5-
import * as constants from "./constants";
6-
import { expectUrl } from "./expectUrl";
7-
import { storageState } from "./playwright.config";
4+
import { setupApiCalls } from "../api";
5+
import * as constants from "../constants";
6+
import { expectUrl } from "../expectUrl";
87

98
test("setup deployment", async ({ page }) => {
109
await page.goto("/", { waitUntil: "domcontentloaded" });
@@ -23,7 +22,6 @@ test("setup deployment", async ({ page }) => {
2322
await page.getByTestId("create").click();
2423

2524
await expectUrl(page).toHavePathName("/workspaces");
26-
await page.context().storageState({ path: storageState });
2725

2826
await page.getByTestId("button-select-template").isVisible();
2927

site/e2e/tests/app.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@ import { test } from "@playwright/test";
44
import {
55
createTemplate,
66
createWorkspace,
7+
login,
78
startAgent,
89
stopAgent,
910
stopWorkspace,
1011
} from "../helpers";
1112
import { beforeCoderTest } from "../hooks";
1213

13-
test.beforeEach(({ page }) => beforeCoderTest(page));
14+
test.beforeEach(async ({ page }) => {
15+
beforeCoderTest(page);
16+
await login(page);
17+
});
1418

1519
test("app", async ({ context, page }) => {
1620
test.setTimeout(75_000);

site/e2e/tests/auditLogs.spec.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
11
import { expect, test } from "@playwright/test";
2-
import { createTemplate, createWorkspace, requiresLicense } from "../helpers";
2+
import {
3+
createTemplate,
4+
createWorkspace,
5+
login,
6+
requiresLicense,
7+
} from "../helpers";
38
import { beforeCoderTest } from "../hooks";
49

5-
test.beforeEach(({ page }) => beforeCoderTest(page));
10+
test.beforeEach(async ({ page }) => {
11+
beforeCoderTest(page);
12+
await login(page);
13+
});
614

715
test("inspecting and filtering audit logs", async ({ page }) => {
816
requiresLicense();

site/e2e/tests/deployment/appearance.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
import { chromium, expect, test } from "@playwright/test";
22
import { expectUrl } from "../../expectUrl";
3-
import { randomName, requiresLicense } from "../../helpers";
3+
import { login, randomName, requiresLicense } from "../../helpers";
4+
import { beforeCoderTest } from "../../hooks";
5+
6+
test.beforeEach(async ({ page }) => {
7+
beforeCoderTest(page);
8+
await login(page);
9+
});
410

511
test("set application name", async ({ page }) => {
612
requiresLicense();

site/e2e/tests/deployment/general.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,16 @@ import { expect, test } from "@playwright/test";
22
import { API } from "api/api";
33
import { setupApiCalls } from "../../api";
44
import { e2eFakeExperiment1, e2eFakeExperiment2 } from "../../constants";
5+
import { login } from "../../helpers";
6+
import { beforeCoderTest } from "../../hooks";
57

6-
test("experiments", async ({ page }) => {
8+
test.beforeEach(async ({ page }) => {
9+
beforeCoderTest(page);
10+
await login(page);
711
await setupApiCalls(page);
12+
});
813

14+
test("experiments", async ({ page }) => {
915
// Load experiments from backend API
1016
const availableExperiments = await API.getAvailableExperiments();
1117

site/e2e/tests/deployment/idpOrgSync.spec.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import {
77
} from "../../api";
88
import { requiresLicense } from "../../helpers";
99
import { beforeCoderTest } from "../../hooks";
10+
import { login } from "../../helpers";
1011

11-
test.describe("IdpOrgSyncPage", () => {
12-
test.beforeEach(async ({ page }) => await beforeCoderTest(page));
12+
test.beforeEach(async ({ page }) => {
13+
beforeCoderTest(page);
14+
await login(page);
15+
await setupApiCalls(page);
16+
});
1317

18+
test.describe("IdpOrgSyncPage", () => {
1419
test("add new IdP organization mapping with API", async ({ page }) => {
1520
requiresLicense();
16-
await setupApiCalls(page);
1721

1822
await createOrganizationSyncSettings();
1923

@@ -38,7 +42,6 @@ test.describe("IdpOrgSyncPage", () => {
3842

3943
test("delete a IdP org to coder org mapping row", async ({ page }) => {
4044
requiresLicense();
41-
await setupApiCalls(page);
4245
await createOrganizationSyncSettings();
4346
await page.goto("/deployment/idp-org-sync", {
4447
waitUntil: "domcontentloaded",
@@ -106,7 +109,6 @@ test.describe("IdpOrgSyncPage", () => {
106109
page,
107110
}) => {
108111
requiresLicense();
109-
await setupApiCalls(page);
110112

111113
await page.goto("/deployment/idp-org-sync", {
112114
waitUntil: "domcontentloaded",
@@ -121,7 +123,6 @@ test.describe("IdpOrgSyncPage", () => {
121123

122124
test("add new IdP organization mapping with UI", async ({ page }) => {
123125
requiresLicense();
124-
await setupApiCalls(page);
125126

126127
await createOrganizationWithName("developers");
127128

site/e2e/tests/deployment/licenses.spec.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { expect, test } from "@playwright/test";
2-
import { requiresLicense } from "../../helpers";
2+
import { beforeCoderTest } from "../../hooks";
3+
import { login, requiresLicense } from "../../helpers";
4+
5+
test.beforeEach(async ({ page }) => {
6+
beforeCoderTest(page);
7+
await login(page);
8+
});
39

410
test("license was added successfully", async ({ page }) => {
511
requiresLicense();

site/e2e/tests/deployment/network.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ import {
88
verifyConfigFlagNumber,
99
verifyConfigFlagString,
1010
} from "../../api";
11+
import { beforeCoderTest } from "../../hooks";
12+
import { login } from "../../helpers";
1113

12-
test("enabled network settings", async ({ page }) => {
14+
test.beforeEach(async ({ page }) => {
15+
beforeCoderTest(page);
16+
await login(page);
1317
await setupApiCalls(page);
18+
});
19+
20+
test("enabled network settings", async ({ page }) => {
1421
const config = await API.getDeploymentConfig();
1522

1623
await page.goto("/deployment/network", { waitUntil: "domcontentloaded" });

site/e2e/tests/deployment/observability.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ import {
88
verifyConfigFlagEmpty,
99
verifyConfigFlagString,
1010
} from "../../api";
11+
import { beforeCoderTest } from "../../hooks";
12+
import { login } from "../../helpers";
1113

12-
test("enabled observability settings", async ({ page }) => {
14+
test.beforeEach(async ({ page }) => {
15+
beforeCoderTest(page);
16+
await login(page);
1317
await setupApiCalls(page);
18+
});
19+
20+
test("enabled observability settings", async ({ page }) => {
1421
const config = await API.getDeploymentConfig();
1522

1623
await page.goto("/deployment/observability", {

site/e2e/tests/deployment/security.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ import {
88
verifyConfigFlagNumber,
99
verifyConfigFlagString,
1010
} from "../../api";
11+
import { beforeCoderTest } from "../../hooks";
12+
import { login } from "../../helpers";
1113

12-
test("enabled security settings", async ({ page }) => {
14+
test.beforeEach(async ({ page }) => {
15+
beforeCoderTest(page);
16+
await login(page);
1317
await setupApiCalls(page);
18+
});
19+
20+
test("enabled security settings", async ({ page }) => {
1421
const config = await API.getDeploymentConfig();
1522

1623
await page.goto("/deployment/security", { waitUntil: "domcontentloaded" });

site/e2e/tests/deployment/userAuth.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,16 @@ import {
77
verifyConfigFlagEntries,
88
verifyConfigFlagString,
99
} from "../../api";
10+
import { beforeCoderTest } from "../../hooks";
11+
import { login } from "../../helpers";
1012

11-
test("login with OIDC", async ({ page }) => {
13+
test.beforeEach(async ({ page }) => {
14+
beforeCoderTest(page);
15+
await login(page);
1216
await setupApiCalls(page);
17+
});
18+
19+
test("login with OIDC", async ({ page }) => {
1320
const config = await API.getDeploymentConfig();
1421

1522
await page.goto("/deployment/userauth", { waitUntil: "domcontentloaded" });

site/e2e/tests/deployment/workspaceProxies.spec.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import { setupApiCalls } from "../../api";
44
import { coderPort, workspaceProxyPort } from "../../constants";
55
import { randomName, requiresLicense } from "../../helpers";
66
import { startWorkspaceProxy, stopWorkspaceProxy } from "../../proxy";
7+
import { beforeCoderTest } from "../../hooks";
8+
import { login } from "../../helpers";
9+
10+
test.beforeEach(async ({ page }) => {
11+
beforeCoderTest(page);
12+
await login(page);
13+
});
714

815
test("default proxy is online", async ({ page }) => {
916
requiresLicense();

site/e2e/tests/externalAuth.spec.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
createTemplate,
99
createWorkspace,
1010
echoResponsesWithExternalAuth,
11+
login,
1112
} from "../helpers";
1213
import { beforeCoderTest, resetExternalAuthKey } from "../hooks";
1314

@@ -31,9 +32,11 @@ test.beforeAll(async ({ baseURL }) => {
3132
});
3233
});
3334

34-
test.beforeEach(async ({ context }) => resetExternalAuthKey(context));
35-
36-
test.beforeEach(({ page }) => beforeCoderTest(page));
35+
test.beforeEach(async ({ context, page }) => {
36+
beforeCoderTest(page);
37+
await login(page);
38+
await resetExternalAuthKey(context);
39+
});
3740

3841
// Ensures that a Git auth provider with the device flow functions and completes!
3942
test("external auth device", async ({ page }) => {

site/e2e/tests/groups/addMembers.spec.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,17 @@ import {
77
} from "../../api";
88
import { requiresLicense } from "../../helpers";
99
import { beforeCoderTest } from "../../hooks";
10+
import { login } from "../../helpers";
1011

11-
test.beforeEach(async ({ page }) => await beforeCoderTest(page));
12+
test.beforeEach(async ({ page }) => {
13+
beforeCoderTest(page);
14+
await login(page);
15+
await setupApiCalls(page);
16+
});
1217

1318
test("add members", async ({ page, baseURL }) => {
1419
requiresLicense();
15-
await setupApiCalls(page);
20+
1621
const orgId = await getCurrentOrgId();
1722
const group = await createGroup(orgId);
1823
const numberOfMembers = 3;

site/e2e/tests/groups/addUsersToDefaultGroup.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ import { expect, test } from "@playwright/test";
22
import { createUser, getCurrentOrgId, setupApiCalls } from "../../api";
33
import { requiresLicense } from "../../helpers";
44
import { beforeCoderTest } from "../../hooks";
5+
import { login } from "../../helpers";
56

6-
test.beforeEach(async ({ page }) => await beforeCoderTest(page));
7+
test.beforeEach(async ({ page }) => {
8+
beforeCoderTest(page);
9+
await login(page);
10+
});
711

812
const DEFAULT_GROUP_NAME = "Everyone";
913

site/e2e/tests/groups/createGroup.spec.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
import { expect, test } from "@playwright/test";
22
import { randomName, requiresLicense } from "../../helpers";
33
import { beforeCoderTest } from "../../hooks";
4+
import { login } from "../../helpers";
45

5-
test.beforeEach(async ({ page }) => await beforeCoderTest(page));
6+
test.beforeEach(async ({ page }) => {
7+
beforeCoderTest(page);
8+
await login(page);
9+
});
610

711
test("create group", async ({ page, baseURL }) => {
812
requiresLicense();
13+
914
await page.goto(`${baseURL}/groups`, { waitUntil: "domcontentloaded" });
1015
await expect(page).toHaveTitle("Groups - Coder");
1116

0 commit comments

Comments
 (0)