Skip to content

Commit 0f72aad

Browse files
committed
Run account console resource tests in parralel
Closes keycloak#43315 Signed-off-by: Jon Koops <jonkoops@gmail.com>
1 parent 5cbba8f commit 0f72aad

1 file changed

Lines changed: 63 additions & 53 deletions

File tree

js/apps/account-ui/test/resources.spec.ts

Lines changed: 63 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,25 @@ import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/r
22
import { expect, test } from "@playwright/test";
33
import resourcesRealm from "./realms/resources-realm.json" with { type: "json" };
44
import { login } from "./support/actions.ts";
5-
import { createTestBed, type TestBed } from "./support/testbed.ts";
5+
import { createTestBed } from "./support/testbed.ts";
66

77
test.describe("Resources", () => {
8-
// The test cases in this suite depend on state created in previous tests.
9-
// Therefore, we run them in serial mode.
10-
// TODO: Refactor tests to be independent and run in parallel.
11-
test.describe.configure({ mode: "serial" });
12-
13-
let testBed: TestBed;
14-
15-
test.beforeAll(async () => {
16-
testBed = await createTestBed(resourcesRealm as RealmRepresentation);
17-
});
18-
19-
test.afterAll(async () => {
20-
await testBed[Symbol.asyncDispose]();
21-
});
22-
238
test("shows the resources owned by the user", async ({ page }) => {
9+
await using testBed = await createTestBed(
10+
resourcesRealm as RealmRepresentation,
11+
);
12+
2413
await login(page, testBed.realm);
2514
await page.getByTestId("resources").click();
2615

2716
await expect(page.getByRole("gridcell", { name: "one" })).toBeVisible();
2817
});
2918

3019
test("shows no resources are shared with another user", async ({ page }) => {
20+
await using testBed = await createTestBed(
21+
resourcesRealm as RealmRepresentation,
22+
);
23+
3124
await login(page, testBed.realm, "alice", "alice");
3225
await page.getByTestId("resources").click();
3326

@@ -36,44 +29,61 @@ test.describe("Resources", () => {
3629
expect(tableData).toBe(0);
3730
});
3831

39-
test("shares a recourse with another user", async ({ page }) => {
40-
await login(page, testBed.realm);
41-
await page.getByTestId("resources").click();
42-
43-
await page.getByTestId("expand-one").click();
44-
await expect(page.getByText("This resource is not shared.")).toBeVisible();
45-
46-
await page.getByTestId("share-one").click();
47-
await page.getByTestId("users").click();
48-
await page.getByTestId("users").fill("alice");
49-
await page.getByTestId("add").click();
50-
51-
await expect(page.getByRole("group", { name: "Share with" })).toHaveText(
52-
"Share with alice",
32+
test("shares a resource with another user", async ({ browser }) => {
33+
await using testBed = await createTestBed(
34+
resourcesRealm as RealmRepresentation,
5335
);
5436

55-
await page
56-
.getByTestId("permissions")
57-
.getByRole("button", { expanded: false })
58-
.click();
59-
await page.getByRole("option", { name: "album:view" }).click();
60-
await page
61-
.getByTestId("permissions")
62-
.getByRole("button", { expanded: true })
63-
.click();
64-
65-
await page.getByTestId("done").click();
66-
67-
await page.getByTestId("expand-one").click();
68-
await expect(page.getByTestId("shared-with-alice")).toBeVisible();
69-
});
70-
71-
test("shows the resources shared with another user", async ({ page }) => {
72-
await login(page, testBed.realm, "alice", "alice");
73-
await page.getByTestId("resources").click();
74-
75-
await page.getByTestId("sharedWithMe").click();
76-
const rowData = page.getByTestId("row[0].name");
77-
await expect(rowData).toHaveText("one");
37+
const context1 = await browser.newContext();
38+
const context2 = await browser.newContext();
39+
40+
try {
41+
const page1 = await context1.newPage();
42+
const page2 = await context2.newPage();
43+
44+
// Share a resource as the main user
45+
await login(page1, testBed.realm);
46+
await page1.getByTestId("resources").click();
47+
48+
await page1.getByTestId("expand-one").click();
49+
await expect(
50+
page1.getByText("This resource is not shared."),
51+
).toBeVisible();
52+
53+
await page1.getByTestId("share-one").click();
54+
await page1.getByTestId("users").click();
55+
await page1.getByTestId("users").fill("alice");
56+
await page1.getByTestId("add").click();
57+
58+
await expect(page1.getByRole("group", { name: "Share with" })).toHaveText(
59+
"Share with alice",
60+
);
61+
62+
await page1
63+
.getByTestId("permissions")
64+
.getByRole("button", { expanded: false })
65+
.click();
66+
await page1.getByRole("option", { name: "album:view" }).click();
67+
await page1
68+
.getByTestId("permissions")
69+
.getByRole("button", { expanded: true })
70+
.click();
71+
72+
await page1.getByTestId("done").click();
73+
74+
await page1.getByTestId("expand-one").click();
75+
await expect(page1.getByTestId("shared-with-alice")).toBeVisible();
76+
77+
// Verify that alice can see the shared resource
78+
await login(page2, testBed.realm, "alice", "alice");
79+
await page2.getByTestId("resources").click();
80+
81+
await page2.getByTestId("sharedWithMe").click();
82+
const rowData = page2.getByTestId("row[0].name");
83+
await expect(rowData).toHaveText("one");
84+
} finally {
85+
await context1.close();
86+
await context2.close();
87+
}
7888
});
7989
});

0 commit comments

Comments
 (0)