Skip to content

chore(site): add e2e tests for groups #12866

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Apr 5, 2024
Prev Previous commit
Next Next commit
Add test to remove member
  • Loading branch information
BrunoQuaresma committed Apr 4, 2024
commit c643c6a1a19049ce5e14634f87956279bb30dd0e
2 changes: 1 addition & 1 deletion site/e2e/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const createGroup = async (orgId: string) => {
const name = randomName();
const group = await API.createGroup(orgId, {
name,
display_name: `Display Name of ${name}`,
display_name: `Display ${name}`,
avatar_url: "/emojis/1f60d.png",
quota_allowance: 0,
});
Expand Down
8 changes: 3 additions & 5 deletions site/e2e/tests/groups/addMembers.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,9 @@ test("add members", async ({ page, baseURL }) => {
Array.from({ length: numberOfMembers }, () => createUser(orgId)),
);

await page.goto(`${baseURL}/groups`, { waitUntil: "domcontentloaded" });
await expect(page).toHaveTitle("Groups - Coder");

const groupRow = page.getByRole("row", { name: group.display_name });
await groupRow.click();
await page.goto(`${baseURL}/groups/${group.id}`, {
waitUntil: "domcontentloaded",
});
await expect(page).toHaveTitle(`${group.display_name} - Coder`);

for (const user of users) {
Expand Down
21 changes: 21 additions & 0 deletions site/e2e/tests/groups/navigateToGroupPage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { test, expect } from "@playwright/test";
import { createGroup, getCurrentOrgId, setupApiCalls } from "../../api";
import { beforeCoderTest } from "../../hooks";

test.beforeEach(async ({ page }) => await beforeCoderTest(page));

test("navigate to group page", async ({ page, baseURL }) => {
await setupApiCalls(page);
const orgId = await getCurrentOrgId();
const group = await createGroup(orgId);

await page.goto(`${baseURL}/users`, { waitUntil: "domcontentloaded" });
await expect(page).toHaveTitle("Users - Coder");

await page.getByText("Groups").click();
await expect(page).toHaveTitle("Groups - Coder");

const groupRow = page.getByRole("row", { name: group.display_name });
await groupRow.click();
await expect(page).toHaveTitle(`${group.display_name} - Coder`);
});
11 changes: 4 additions & 7 deletions site/e2e/tests/groups/removeGroup.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,12 @@ test("remove group", async ({ page, baseURL }) => {
const orgId = await getCurrentOrgId();
const group = await createGroup(orgId);

await page.goto(`${baseURL}/groups`, { waitUntil: "domcontentloaded" });
await expect(page).toHaveTitle("Groups - Coder");

const groupRow = page.getByRole("row", { name: group.display_name });
await groupRow.click();

await page.goto(`${baseURL}/groups/${group.id}`, {
waitUntil: "domcontentloaded",
});
await expect(page).toHaveTitle(`${group.display_name} - Coder`);
await page.getByRole("button", { name: "Delete" }).click();

await page.getByRole("button", { name: "Delete" }).click();
const dialog = page.getByTestId("dialog");
await dialog.getByLabel("Name of the group to delete").fill(group.name);
await dialog.getByRole("button", { name: "Delete" }).click();
Expand Down
34 changes: 34 additions & 0 deletions site/e2e/tests/groups/removeMember.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { test, expect } from "@playwright/test";
import * as API from "api/api";
import {
createGroup,
createUser,
getCurrentOrgId,
setupApiCalls,
} from "../../api";
import { beforeCoderTest } from "../../hooks";

test.beforeEach(async ({ page }) => await beforeCoderTest(page));

test("remove member", async ({ page, baseURL }) => {
await setupApiCalls(page);
const orgId = await getCurrentOrgId();
const [group, member] = await Promise.all([
createGroup(orgId),
createUser(orgId),
]);
await API.addMember(group.id, member.id);

await page.goto(`${baseURL}/groups/${group.id}`, {
waitUntil: "domcontentloaded",
});
await expect(page).toHaveTitle(`${group.display_name} - Coder`);

const userRow = page.getByRole("row", { name: member.username });
await userRow.getByRole("button", { name: "More options" }).click();

const menu = page.locator("#more-options");
await menu.getByText("Remove").click({ timeout: 1_000 });

await expect(page.getByText("Member removed successfully.")).toBeVisible();
});
1 change: 0 additions & 1 deletion site/src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1147,7 +1147,6 @@ export const patchGroup = async (
export const addMember = async (groupId: string, userId: string) => {
return patchGroup(groupId, {
name: "",
display_name: "",
add_users: [userId],
remove_users: [],
});
Expand Down