Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3549cc4

Browse files
committed
feat: create e2e tests for IDP org sync settings page
1 parent40624bf commit3549cc4

File tree

3 files changed

+180
-1
lines changed

3 files changed

+180
-1
lines changed

‎site/e2e/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ code .
5555
Enterprise tests require a license key to run.
5656

5757
```shell
58-
exportCODER_E2E_ENTERPRISE_LICENSE=<license key>
58+
exportCODER_E2E_LICENSE=<license key>
5959
```
6060

6161
#Debugging tests

‎site/e2e/api.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,31 @@ export const createOrganization = async () => {
6363
returnorg;
6464
};
6565

66+
exportconstcreateOrganizationWithName=async(name:string)=>{
67+
constorg=awaitAPI.createOrganization({
68+
name,
69+
display_name:`${name}`,
70+
description:`Org description${name}`,
71+
icon:"/emojis/1f957.png",
72+
});
73+
returnorg;
74+
};
75+
76+
exportconstcreateOrganizationSyncSettings=async()=>{
77+
constsettings=awaitAPI.patchOrganizationIdpSyncSettings({
78+
field:"organization-field-test",
79+
mapping:{
80+
"idp-org-1":[
81+
"fbd2116a-8961-4954-87ae-e4575bd29ce0",
82+
"13de3eb4-9b4f-49e7-b0f8-0c3728a0d2e2",
83+
],
84+
"idp-org-2":["fbd2116a-8961-4954-87ae-e4575bd29ce0"],
85+
},
86+
organization_assign_default:true,
87+
});
88+
returnsettings;
89+
};
90+
6691
exportasyncfunctionverifyConfigFlagBoolean(
6792
page:Page,
6893
config:DeploymentConfig,
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
import{expect,test}from"@playwright/test";
2+
import{
3+
createOrganizationSyncSettings,
4+
createOrganizationWithName,
5+
setupApiCalls,
6+
}from"../../api";
7+
import{requiresLicense}from"../../helpers";
8+
import{beforeCoderTest}from"../../hooks";
9+
10+
test.describe("IdpOrgSyncPage",()=>{
11+
test.beforeEach(async({ page})=>awaitbeforeCoderTest(page));
12+
13+
test("add new IdP organization mapping with API",async({ page})=>{
14+
requiresLicense();
15+
awaitsetupApiCalls(page);
16+
17+
awaitcreateOrganizationSyncSettings();
18+
19+
awaitpage.goto("/deployment/idp-org-sync",{
20+
waitUntil:"domcontentloaded",
21+
});
22+
23+
awaitexpect(
24+
page.getByRole("switch",{name:"Assign Default Organization"}),
25+
).toBeChecked();
26+
27+
awaitexpect(page.getByText("idp-org-1")).toBeVisible();
28+
awaitexpect(
29+
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").first(),
30+
).toBeVisible();
31+
32+
awaitexpect(page.getByText("idp-org-2")).toBeVisible();
33+
awaitexpect(
34+
page.getByText("fbd2116a-8961-4954-87ae-e4575bd29ce0").last(),
35+
).toBeVisible();
36+
});
37+
38+
test("delete a IdP org to coder org mapping row",async({ page})=>{
39+
requiresLicense();
40+
awaitsetupApiCalls(page);
41+
awaitcreateOrganizationSyncSettings();
42+
awaitpage.goto("/deployment/idp-org-sync",{
43+
waitUntil:"domcontentloaded",
44+
});
45+
46+
awaitexpect(page.getByText("idp-org-1")).toBeVisible();
47+
awaitpage
48+
.getByRole("button",{name:/delete/i})
49+
.first()
50+
.click();
51+
awaitexpect(page.getByText("idp-org-1")).not.toBeVisible();
52+
awaitexpect(
53+
page.getByText("Organization sync settings updated."),
54+
).toBeVisible();
55+
});
56+
57+
test("update sync field",async({ page})=>{
58+
requiresLicense();
59+
awaitpage.goto("/deployment/idp-org-sync",{
60+
waitUntil:"domcontentloaded",
61+
});
62+
63+
constsyncField=page.getByRole("textbox",{
64+
name:"Organization sync field",
65+
});
66+
constsaveButton=page.getByRole("button",{name:"Save"}).first();
67+
68+
awaitexpect(saveButton).toBeDisabled();
69+
70+
awaitsyncField.fill("test-field");
71+
awaitexpect(saveButton).toBeEnabled();
72+
73+
awaitpage.getByRole("button",{name:"Save"}).click();
74+
75+
awaitexpect(
76+
page.getByText("Organization sync settings updated."),
77+
).toBeVisible();
78+
});
79+
80+
test("toggle default organization assignment",async({ page})=>{
81+
requiresLicense();
82+
awaitpage.goto("/deployment/idp-org-sync",{
83+
waitUntil:"domcontentloaded",
84+
});
85+
86+
consttoggle=page.getByRole("switch",{
87+
name:"Assign Default Organization",
88+
});
89+
awaittoggle.click();
90+
91+
awaitexpect(
92+
page.getByText("Organization sync settings updated."),
93+
).toBeVisible();
94+
95+
awaitexpect(toggle).not.toBeChecked();
96+
});
97+
98+
test("export policy button is enabled when sync settings are present",async({
99+
page,
100+
})=>{
101+
requiresLicense();
102+
awaitsetupApiCalls(page);
103+
104+
awaitpage.goto("/deployment/idp-org-sync",{
105+
waitUntil:"domcontentloaded",
106+
});
107+
108+
constexportButton=page.getByRole("button",{name:/ExportPolicy/i});
109+
awaitcreateOrganizationSyncSettings();
110+
111+
awaitexpect(exportButton).toBeEnabled();
112+
awaitexportButton.click();
113+
});
114+
115+
test("add new IdP organization mapping with UI",async({ page})=>{
116+
requiresLicense();
117+
awaitsetupApiCalls(page);
118+
119+
awaitcreateOrganizationWithName("developers");
120+
121+
awaitpage.goto("/deployment/idp-org-sync",{
122+
waitUntil:"domcontentloaded",
123+
});
124+
125+
constidpOrgInput=page.getByLabel("IdP organization name");
126+
constorgSelector=page.getByPlaceholder("Select organization");
127+
constaddButton=page.getByRole("button",{
128+
name:/AddIdPorganization/i,
129+
});
130+
131+
awaitexpect(addButton).toBeDisabled();
132+
133+
awaitidpOrgInput.fill("new-idp-org");
134+
135+
// Select Coder organization from combobox
136+
awaitorgSelector.click();
137+
awaitpage.getByRole("option",{name:"developers"}).click();
138+
139+
// Add button should now be enabled
140+
awaitexpect(addButton).toBeEnabled();
141+
142+
awaitaddButton.click();
143+
144+
// Verify new mapping appears in table
145+
constnewRow=page.getByTestId("idp-org-new-idp-org");
146+
awaitexpect(newRow).toBeVisible();
147+
awaitexpect(newRow.getByText("new-idp-org")).toBeVisible();
148+
awaitexpect(newRow.getByText("developers")).toBeVisible();
149+
150+
awaitexpect(
151+
page.getByText("Organization sync settings updated."),
152+
).toBeVisible();
153+
});
154+
});

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp