Skip to content

Commit e459c19

Browse files
committed
chore: improve e2e tests
1 parent 798a054 commit e459c19

File tree

4 files changed

+79
-37
lines changed

4 files changed

+79
-37
lines changed

site/e2e/api.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ export const createOrganizationSyncSettings = async () => {
8181
"fbd2116a-8961-4954-87ae-e4575bd29ce0",
8282
"13de3eb4-9b4f-49e7-b0f8-0c3728a0d2e2",
8383
],
84-
"idp-org-2": ["fbd2116a-8961-4954-87ae-e4575bd29ce0"],
84+
"idp-org-2": ["6b39f0f1-6ad8-4981-b2fc-d52aef53ff1b"],
8585
},
8686
organization_assign_default: true,
8787
});
@@ -97,7 +97,7 @@ export const createGroupSyncSettings = async (orgId: string) => {
9797
"fbd2116a-8961-4954-87ae-e4575bd29ce0",
9898
"13de3eb4-9b4f-49e7-b0f8-0c3728a0d2e2",
9999
],
100-
"idp-group-2": ["fbd2116a-8961-4954-87ae-e4575bd29ce0"],
100+
"idp-group-2": ["6b39f0f1-6ad8-4981-b2fc-d52aef53ff1b"],
101101
},
102102
regex_filter: "@[a-zA-Z0-9]+",
103103
auto_create_missing_groups: true,
@@ -116,7 +116,7 @@ export const createRoleSyncSettings = async (orgId: string) => {
116116
"fbd2116a-8961-4954-87ae-e4575bd29ce0",
117117
"13de3eb4-9b4f-49e7-b0f8-0c3728a0d2e2",
118118
],
119-
"idp-role-2": ["fbd2116a-8961-4954-87ae-e4575bd29ce0"],
119+
"idp-role-2": ["6b39f0f1-6ad8-4981-b2fc-d52aef53ff1b"],
120120
},
121121
},
122122
orgId,

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

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ test.beforeEach(async ({ page }) => {
1616
});
1717

1818
test.describe("IdpOrgSyncPage", () => {
19+
20+
test("show empty table when no org mappings are present", async ({ page }) => {
21+
requiresLicense();
22+
await page.goto("/deployment/idp-org-sync", {
23+
waitUntil: "domcontentloaded",
24+
});
25+
26+
await expect(page.getByRole("row", { name: "idp-org-1" })).not.toBeVisible();
27+
await expect(page.getByRole("heading", { name: "No organization mappings" })).toBeVisible();
28+
});
29+
1930
test("add new IdP organization mapping with API", async ({ page }) => {
2031
requiresLicense();
2132

@@ -29,14 +40,14 @@ test.describe("IdpOrgSyncPage", () => {
2940
page.getByRole("switch", { name: "Assign Default Organization" }),
3041
).toBeChecked();
3142

32-
await expect(page.getByText("idp-org-1")).toBeVisible();
43+
await expect(page.getByRole("row", { name: "idp-org-1" })).toBeVisible();
3344
await expect(
34-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").first(),
45+
page.getByRole("row", { name: "fbd2116a-8961-4954-87ae-e4575bd29ce0" }),
3546
).toBeVisible();
3647

37-
await expect(page.getByText("idp-org-2")).toBeVisible();
48+
await expect(page.getByRole("row", { name: "idp-org-2" })).toBeVisible();
3849
await expect(
39-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").last(),
50+
page.getByRole("row", { name: "6b39f0f1-6ad8-4981-b2fc-d52aef53ff1b" }),
4051
).toBeVisible();
4152
});
4253

@@ -47,12 +58,12 @@ test.describe("IdpOrgSyncPage", () => {
4758
waitUntil: "domcontentloaded",
4859
});
4960

50-
await expect(page.getByText("idp-org-1")).toBeVisible();
51-
await page
61+
const row = page.getByTestId("idp-org-idp-org-1");
62+
await expect(row.getByRole("cell", { name: "idp-org-1" })).toBeVisible();
63+
await row
5264
.getByRole("button", { name: /delete/i })
53-
.first()
5465
.click();
55-
await expect(page.getByText("idp-org-1")).not.toBeVisible();
66+
await expect(row.getByRole("cell", { name: "idp-org-1" })).not.toBeVisible();
5667
await expect(
5768
page.getByText("Organization sync settings updated."),
5869
).toBeVisible();
@@ -67,7 +78,7 @@ test.describe("IdpOrgSyncPage", () => {
6778
const syncField = page.getByRole("textbox", {
6879
name: "Organization sync field",
6980
});
70-
const saveButton = page.getByRole("button", { name: /save/i }).first();
81+
const saveButton = page.getByRole("button", { name: /save/i });
7182

7283
await expect(saveButton).toBeDisabled();
7384

@@ -154,8 +165,8 @@ test.describe("IdpOrgSyncPage", () => {
154165
// Verify new mapping appears in table
155166
const newRow = page.getByTestId("idp-org-new-idp-org");
156167
await expect(newRow).toBeVisible();
157-
await expect(newRow.getByText("new-idp-org")).toBeVisible();
158-
await expect(newRow.getByText(orgName)).toBeVisible();
168+
await expect(newRow.getByRole("cell", { name: "new-idp-org" })).toBeVisible();
169+
await expect(newRow.getByRole("cell", { name: orgName })).toBeVisible();
159170

160171
await expect(
161172
page.getByText("Organization sync settings updated."),

site/e2e/tests/organizations/idpGroupSync.spec.ts

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ test.beforeEach(async ({ page }) => {
1616
});
1717

1818
test.describe("IdpGroupSyncPage", () => {
19+
20+
test("show empty table when no group mappings are present", async ({ page }) => {
21+
requiresLicense();
22+
const org = await createOrganizationWithName(randomName());
23+
await page.goto(`/organizations/${org.name}/idp-sync?tab=groups`, {
24+
waitUntil: "domcontentloaded",
25+
});
26+
27+
await expect(page.getByRole("row", { name: "idp-group-1" })).not.toBeVisible();
28+
await expect(page.getByRole("heading", { name: "No group mappings" })).toBeVisible();
29+
30+
await deleteOrganization(org.name);
31+
});
32+
1933
test("add new IdP group mapping with API", async ({ page }) => {
2034
requiresLicense();
2135
const org = await createOrganizationWithName(randomName());
@@ -29,14 +43,14 @@ test.describe("IdpGroupSyncPage", () => {
2943
page.getByRole("switch", { name: "Auto create missing groups" }),
3044
).toBeChecked();
3145

32-
await expect(page.getByText("idp-group-1")).toBeVisible();
46+
await expect(page.getByRole("row", { name: "idp-group-1" })).toBeVisible();
3347
await expect(
34-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").first(),
48+
page.getByRole("row", { name: "fbd2116a-8961-4954-87ae-e4575bd29ce0" }),
3549
).toBeVisible();
3650

37-
await expect(page.getByText("idp-group-2")).toBeVisible();
51+
await expect(page.getByRole("row", { name: "idp-group-2" })).toBeVisible();
3852
await expect(
39-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").last(),
53+
page.getByRole("row", { name: "6b39f0f1-6ad8-4981-b2fc-d52aef53ff1b" }),
4054
).toBeVisible();
4155

4256
await deleteOrganization(org.name);
@@ -51,12 +65,14 @@ test.describe("IdpGroupSyncPage", () => {
5165
waitUntil: "domcontentloaded",
5266
});
5367

54-
await expect(page.getByText("idp-group-1")).toBeVisible();
55-
await page
68+
const row = page.getByTestId("group-idp-group-1");
69+
await expect(row.getByRole("cell", { name: "idp-group-1" })).toBeVisible();
70+
await row
5671
.getByRole("button", { name: /delete/i })
57-
.first()
5872
.click();
59-
await expect(page.getByText("idp-group-1")).not.toBeVisible();
73+
await expect(
74+
row.getByRole("cell", { name: "idp-group-1" }),
75+
).not.toBeVisible();
6076
await expect(
6177
page.getByText("IdP Group sync settings updated."),
6278
).toBeVisible();
@@ -72,7 +88,7 @@ test.describe("IdpGroupSyncPage", () => {
7288
const syncField = page.getByRole("textbox", {
7389
name: "Group sync field",
7490
});
75-
const saveButton = page.getByRole("button", { name: /save/i }).first();
91+
const saveButton = page.getByRole("button", { name: /save/i });
7692

7793
await expect(saveButton).toBeDisabled();
7894

@@ -151,8 +167,10 @@ test.describe("IdpGroupSyncPage", () => {
151167
// Verify new mapping appears in table
152168
const newRow = page.getByTestId("group-new-idp-group");
153169
await expect(newRow).toBeVisible();
154-
await expect(newRow.getByText("new-idp-group")).toBeVisible();
155-
await expect(newRow.getByText("Everyone")).toBeVisible();
170+
await expect(
171+
newRow.getByRole("cell", { name: "new-idp-group" }),
172+
).toBeVisible();
173+
await expect(newRow.getByRole("cell", { name: "Everyone" })).toBeVisible();
156174

157175
await expect(
158176
page.getByText("IdP Group sync settings updated."),

site/e2e/tests/organizations/idpRoleSync.spec.ts

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,20 @@ test.beforeEach(async ({ page }) => {
1616
});
1717

1818
test.describe("IdpRoleSyncPage", () => {
19+
20+
test("show empty table when no role mappings are present", async ({ page }) => {
21+
requiresLicense();
22+
const org = await createOrganizationWithName(randomName());
23+
await page.goto(`/organizations/${org.name}/idp-sync?tab=roles`, {
24+
waitUntil: "domcontentloaded",
25+
});
26+
27+
await expect(page.getByRole("row", { name: "idp-role-1" })).not.toBeVisible();
28+
await expect(page.getByRole("heading", { name: "No role mappings" })).toBeVisible();
29+
30+
await deleteOrganization(org.name);
31+
});
32+
1933
test("add new IdP role mapping with API", async ({ page }) => {
2034
requiresLicense();
2135
const org = await createOrganizationWithName(randomName());
@@ -25,14 +39,14 @@ test.describe("IdpRoleSyncPage", () => {
2539
waitUntil: "domcontentloaded",
2640
});
2741

28-
await expect(page.getByText("idp-role-1")).toBeVisible();
42+
await expect(page.getByRole("row", { name: "idp-role-1" })).toBeVisible();
2943
await expect(
30-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").first(),
44+
page.getByRole("row", { name: "fbd2116a-8961-4954-87ae-e4575bd29ce0" }),
3145
).toBeVisible();
3246

33-
await expect(page.getByText("idp-role-2")).toBeVisible();
47+
await expect(page.getByRole("row", { name: "idp-role-2" })).toBeVisible();
3448
await expect(
35-
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").last(),
49+
page.getByRole("row", { name: "fbd2116a-8961-4954-87ae-e4575bd29ce0" }),
3650
).toBeVisible();
3751

3852
await deleteOrganization(org.name);
@@ -46,13 +60,12 @@ test.describe("IdpRoleSyncPage", () => {
4660
await page.goto(`/organizations/${org.name}/idp-sync?tab=roles`, {
4761
waitUntil: "domcontentloaded",
4862
});
49-
50-
await expect(page.getByText("idp-role-1")).toBeVisible();
51-
await page
63+
const row = page.getByTestId("role-idp-role-1");
64+
await expect(row.getByRole("cell", { name: "idp-role-1" })).toBeVisible();
65+
await row
5266
.getByRole("button", { name: /delete/i })
53-
.first()
5467
.click();
55-
await expect(page.getByText("idp-role-1")).not.toBeVisible();
68+
await expect(row.getByRole("cell", { name: "idp-role-1" })).not.toBeVisible();
5669
await expect(
5770
page.getByText("IdP Role sync settings updated."),
5871
).toBeVisible();
@@ -70,7 +83,7 @@ test.describe("IdpRoleSyncPage", () => {
7083
const syncField = page.getByRole("textbox", {
7184
name: "Role sync field",
7285
});
73-
const saveButton = page.getByRole("button", { name: /save/i }).first();
86+
const saveButton = page.getByRole("button", { name: /save/i });
7487

7588
await expect(saveButton).toBeDisabled();
7689

@@ -133,8 +146,8 @@ test.describe("IdpRoleSyncPage", () => {
133146
// Verify new mapping appears in table
134147
const newRow = page.getByTestId("role-new-idp-role");
135148
await expect(newRow).toBeVisible();
136-
await expect(newRow.getByText("new-idp-role")).toBeVisible();
137-
await expect(newRow.getByText("organization-admin")).toBeVisible();
149+
await expect(newRow.getByRole("cell", { name: "new-idp-role" })).toBeVisible();
150+
await expect(newRow.getByRole("cell", { name: "organization-admin" })).toBeVisible();
138151

139152
await expect(
140153
page.getByText("IdP Role sync settings updated."),

0 commit comments

Comments
 (0)