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

Commitcb19fd4

Browse files
authored
chore: use user admin and template admin for even more e2e tests (#16974)
1 parent49a35e3 commitcb19fd4

11 files changed

+135
-128
lines changed

‎site/e2e/helpers.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,8 @@ export const createTemplate = async (
267267
);
268268
}
269269

270-
// pickerisdisabled if only oneorg is available
270+
//The organizationpickerwill bedisabled ifthere isonly oneoption.
271271
constpickerIsDisabled=awaitorgPicker.isDisabled();
272-
273272
if(!pickerIsDisabled){
274273
awaitorgPicker.click();
275274
awaitpage.getByText(orgName,{exact:true}).click();
@@ -1094,8 +1093,12 @@ export async function createUser(
10941093
constorgPicker=page.getByLabel("Organization *");
10951094
constorganizationsEnabled=awaitorgPicker.isVisible();
10961095
if(organizationsEnabled){
1097-
awaitorgPicker.click();
1098-
awaitpage.getByText(orgName,{exact:true}).click();
1096+
// The organization picker will be disabled if there is only one option.
1097+
constpickerIsDisabled=awaitorgPicker.isDisabled();
1098+
if(!pickerIsDisabled){
1099+
awaitorgPicker.click();
1100+
awaitpage.getByText(orgName,{exact:true}).click();
1101+
}
10991102
}
11001103

11011104
awaitpage.getByLabel("Login Type").click();

‎site/e2e/tests/auditLogs.spec.ts

Lines changed: 96 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import{typePage,expect,test}from"@playwright/test";
2-
import{users}from"../constants";
2+
import{defaultPassword,users}from"../constants";
33
import{
44
createTemplate,
5+
createUser,
56
createWorkspace,
6-
currentUser,
77
login,
8+
randomName,
89
requiresLicense,
910
}from"../helpers";
1011
import{beforeCoderTest}from"../hooks";
@@ -15,6 +16,14 @@ test.beforeEach(async ({ page }) => {
1516
beforeCoderTest(page);
1617
});
1718

19+
constname=randomName();
20+
constuserToAudit={
21+
username:`peep-${name}`,
22+
password:defaultPassword,
23+
email:`peep-${name}@coder.com`,
24+
roles:["Template Admin","User Admin"],
25+
};
26+
1827
asyncfunctionresetSearch(page:Page,username:string){
1928
constclearButton=page.getByLabel("Clear search");
2029
if(awaitclearButton.isVisible()){
@@ -27,92 +36,96 @@ async function resetSearch(page: Page, username: string) {
2736
awaitexpect(page.getByText("All users")).not.toBeVisible();
2837
}
2938

30-
test("logins are logged",async({ page})=>{
39+
test.describe("audit logs",()=>{
3140
requiresLicense();
3241

33-
// Go to the audit history
34-
awaitlogin(page,users.auditor);
35-
awaitpage.goto("/audit");
36-
constusername=users.auditor.username;
37-
38-
constloginMessage=`${username} logged in`;
39-
// Make sure those things we did all actually show up
40-
awaitresetSearch(page,username);
41-
awaitexpect(page.getByText(loginMessage).first()).toBeVisible();
42-
});
42+
test.beforeAll(async({ browser})=>{
43+
constcontext=awaitbrowser.newContext();
44+
constpage=awaitcontext.newPage();
45+
awaitlogin(page);
46+
awaitcreateUser(page,userToAudit);
47+
});
4348

44-
test("creating templates and workspaces is logged",async({ page})=>{
45-
requiresLicense();
49+
test("logins are logged",async({ page})=>{
50+
// Go to the audit history
51+
awaitlogin(page,users.auditor);
52+
awaitpage.goto("/audit");
4653

47-
// Do some stuff that should show up in the audit logs
48-
awaitlogin(page,users.templateAdmin);
49-
constusername=users.templateAdmin.username;
50-
consttemplateName=awaitcreateTemplate(page);
51-
constworkspaceName=awaitcreateWorkspace(page,templateName);
52-
53-
// Go to the audit history
54-
awaitlogin(page,users.auditor);
55-
awaitpage.goto("/audit");
56-
57-
// Make sure those things we did all actually show up
58-
awaitresetSearch(page,username);
59-
awaitexpect(
60-
page.getByText(`${username} created template${templateName}`),
61-
).toBeVisible();
62-
awaitexpect(
63-
page.getByText(`${username} created workspace${workspaceName}`),
64-
).toBeVisible();
65-
awaitexpect(
66-
page.getByText(`${username} started workspace${workspaceName}`),
67-
).toBeVisible();
68-
69-
// Make sure we can inspect the details of the log item
70-
constcreatedWorkspace=page.locator(".MuiTableRow-root",{
71-
hasText:`${username} created workspace${workspaceName}`,
54+
// Make sure those things we did all actually show up
55+
awaitresetSearch(page,users.auditor.username);
56+
constloginMessage=`${users.auditor.username} logged in`;
57+
awaitexpect(page.getByText(loginMessage).first()).toBeVisible();
7258
});
73-
awaitcreatedWorkspace.getByLabel("open-dropdown").click();
74-
awaitexpect(
75-
createdWorkspace.getByText(`automatic_updates: "never"`),
76-
).toBeVisible();
77-
awaitexpect(
78-
createdWorkspace.getByText(`name: "${workspaceName}"`),
79-
).toBeVisible();
80-
});
8159

82-
test("inspecting and filtering audit logs",async({ page})=>{
83-
requiresLicense();
60+
test("creating templates and workspaces is logged",async({ page})=>{
61+
// Do some stuff that should show up in the audit logs
62+
awaitlogin(page,userToAudit);
63+
constusername=userToAudit.username;
64+
consttemplateName=awaitcreateTemplate(page);
65+
constworkspaceName=awaitcreateWorkspace(page,templateName);
66+
67+
// Go to the audit history
68+
awaitlogin(page,users.auditor);
69+
awaitpage.goto("/audit");
70+
71+
// Make sure those things we did all actually show up
72+
awaitresetSearch(page,username);
73+
awaitexpect(
74+
page.getByText(`${username} created template${templateName}`),
75+
).toBeVisible();
76+
awaitexpect(
77+
page.getByText(`${username} created workspace${workspaceName}`),
78+
).toBeVisible();
79+
awaitexpect(
80+
page.getByText(`${username} started workspace${workspaceName}`),
81+
).toBeVisible();
82+
83+
// Make sure we can inspect the details of the log item
84+
constcreatedWorkspace=page.locator(".MuiTableRow-root",{
85+
hasText:`${username} created workspace${workspaceName}`,
86+
});
87+
awaitcreatedWorkspace.getByLabel("open-dropdown").click();
88+
awaitexpect(
89+
createdWorkspace.getByText(`automatic_updates: "never"`),
90+
).toBeVisible();
91+
awaitexpect(
92+
createdWorkspace.getByText(`name: "${workspaceName}"`),
93+
).toBeVisible();
94+
});
8495

85-
// Do some stuff that should show up in the audit logs
86-
awaitlogin(page,users.templateAdmin);
87-
constusername=users.templateAdmin.username;
88-
consttemplateName=awaitcreateTemplate(page);
89-
constworkspaceName=awaitcreateWorkspace(page,templateName);
90-
91-
// Go to the audit history
92-
awaitlogin(page,users.auditor);
93-
awaitpage.goto("/audit");
94-
constloginMessage=`${username} logged in`;
95-
conststartedWorkspaceMessage=`${username} started workspace${workspaceName}`;
96-
97-
// Filter by resource type
98-
awaitresetSearch(page,username);
99-
awaitpage.getByText("All resource types").click();
100-
constworkspaceBuildsOption=page.getByText("Workspace Build");
101-
awaitworkspaceBuildsOption.scrollIntoViewIfNeeded({timeout:5000});
102-
awaitworkspaceBuildsOption.click();
103-
// Our workspace build should be visible
104-
awaitexpect(page.getByText(startedWorkspaceMessage)).toBeVisible();
105-
// Logins should no longer be visible
106-
awaitexpect(page.getByText(loginMessage)).not.toBeVisible();
107-
awaitpage.getByLabel("Clear search").click();
108-
awaitexpect(page.getByText("All resource types")).toBeVisible();
109-
110-
// Filter by action type
111-
awaitresetSearch(page,username);
112-
awaitpage.getByText("All actions").click();
113-
awaitpage.getByText("Login",{exact:true}).click();
114-
// Logins should be visible
115-
awaitexpect(page.getByText(loginMessage).first()).toBeVisible();
116-
// Our workspace build should no longer be visible
117-
awaitexpect(page.getByText(startedWorkspaceMessage)).not.toBeVisible();
96+
test("inspecting and filtering audit logs",async({ page})=>{
97+
// Do some stuff that should show up in the audit logs
98+
awaitlogin(page,userToAudit);
99+
constusername=userToAudit.username;
100+
consttemplateName=awaitcreateTemplate(page);
101+
constworkspaceName=awaitcreateWorkspace(page,templateName);
102+
103+
// Go to the audit history
104+
awaitlogin(page,users.auditor);
105+
awaitpage.goto("/audit");
106+
constloginMessage=`${username} logged in`;
107+
conststartedWorkspaceMessage=`${username} started workspace${workspaceName}`;
108+
109+
// Filter by resource type
110+
awaitresetSearch(page,username);
111+
awaitpage.getByText("All resource types").click();
112+
constworkspaceBuildsOption=page.getByText("Workspace Build");
113+
awaitworkspaceBuildsOption.scrollIntoViewIfNeeded({timeout:5000});
114+
awaitworkspaceBuildsOption.click();
115+
// Our workspace build should be visible
116+
awaitexpect(page.getByText(startedWorkspaceMessage)).toBeVisible();
117+
// Logins should no longer be visible
118+
awaitexpect(page.getByText(loginMessage)).not.toBeVisible();
119+
awaitpage.getByLabel("Clear search").click();
120+
awaitexpect(page.getByText("All resource types")).toBeVisible();
121+
122+
// Filter by action type
123+
awaitresetSearch(page,username);
124+
awaitpage.getByText("All actions").click();
125+
awaitpage.getByText("Login",{exact:true}).click();
126+
// Logins should be visible
127+
awaitexpect(page.getByText(loginMessage).first()).toBeVisible();
128+
// Our workspace build should no longer be visible
129+
awaitexpect(page.getByText(startedWorkspaceMessage)).not.toBeVisible();
130+
});
118131
});

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

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {
55
deleteOrganization,
66
setupApiCalls,
77
}from"../../api";
8-
import{randomName,requiresLicense}from"../../helpers";
9-
import{login}from"../../helpers";
8+
import{users}from"../../constants";
9+
import{login,randomName,requiresLicense}from"../../helpers";
1010
import{beforeCoderTest}from"../../hooks";
1111

1212
test.beforeEach(async({ page})=>{
@@ -15,13 +15,14 @@ test.beforeEach(async ({ page }) => {
1515
awaitsetupApiCalls(page);
1616
});
1717

18-
test.describe("IdpOrgSyncPage",()=>{
18+
test.describe("IdP organization sync",()=>{
19+
requiresLicense();
20+
1921
test.describe.configure({retries:1});
2022

2123
test("show empty table when no org mappings are present",async({
2224
page,
2325
})=>{
24-
requiresLicense();
2526
awaitpage.goto("/deployment/idp-org-sync",{
2627
waitUntil:"domcontentloaded",
2728
});
@@ -35,8 +36,6 @@ test.describe("IdpOrgSyncPage", () => {
3536
});
3637

3738
test("add new IdP organization mapping with API",async({ page})=>{
38-
requiresLicense();
39-
4039
awaitcreateOrganizationSyncSettings();
4140

4241
awaitpage.goto("/deployment/idp-org-sync",{
@@ -59,7 +58,6 @@ test.describe("IdpOrgSyncPage", () => {
5958
});
6059

6160
test("delete a IdP org to coder org mapping row",async({ page})=>{
62-
requiresLicense();
6361
awaitcreateOrganizationSyncSettings();
6462
awaitpage.goto("/deployment/idp-org-sync",{
6563
waitUntil:"domcontentloaded",
@@ -77,7 +75,6 @@ test.describe("IdpOrgSyncPage", () => {
7775
});
7876

7977
test("update sync field",async({ page})=>{
80-
requiresLicense();
8178
awaitpage.goto("/deployment/idp-org-sync",{
8279
waitUntil:"domcontentloaded",
8380
});
@@ -100,7 +97,6 @@ test.describe("IdpOrgSyncPage", () => {
10097
});
10198

10299
test("toggle off default organization assignment",async({ page})=>{
103-
requiresLicense();
104100
awaitpage.goto("/deployment/idp-org-sync",{
105101
waitUntil:"domcontentloaded",
106102
});
@@ -126,8 +122,6 @@ test.describe("IdpOrgSyncPage", () => {
126122
test("export policy button is enabled when sync settings are present",async({
127123
page,
128124
})=>{
129-
requiresLicense();
130-
131125
awaitpage.goto("/deployment/idp-org-sync",{
132126
waitUntil:"domcontentloaded",
133127
});
@@ -140,10 +134,7 @@ test.describe("IdpOrgSyncPage", () => {
140134
});
141135

142136
test("add new IdP organization mapping with UI",async({ page})=>{
143-
requiresLicense();
144-
145137
constorgName=randomName();
146-
147138
awaitcreateOrganizationWithName(orgName);
148139

149140
awaitpage.goto("/deployment/idp-org-sync",{
@@ -172,7 +163,7 @@ test.describe("IdpOrgSyncPage", () => {
172163
awaitorgSelector.click();
173164
awaitpage.waitForTimeout(1000);
174165

175-
constoption=awaitpage.getByRole("option",{name:orgName});
166+
constoption=page.getByRole("option",{name:orgName});
176167
awaitexpect(option).toBeAttached({timeout:30000});
177168
awaitexpect(option).toBeVisible();
178169
awaitoption.click();

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,13 @@ import {
55
getCurrentOrgId,
66
setupApiCalls,
77
}from"../../api";
8-
import{defaultOrganizationName}from"../../constants";
9-
import{requiresLicense}from"../../helpers";
10-
import{login}from"../../helpers";
8+
import{defaultOrganizationName,users}from"../../constants";
9+
import{login,requiresLicense}from"../../helpers";
1110
import{beforeCoderTest}from"../../hooks";
1211

1312
test.beforeEach(async({ page})=>{
1413
beforeCoderTest(page);
15-
awaitlogin(page);
14+
awaitlogin(page,users.userAdmin);
1615
awaitsetupApiCalls(page);
1716
});
1817

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import{expect,test}from"@playwright/test";
22
import{createUser,getCurrentOrgId,setupApiCalls}from"../../api";
3-
import{defaultOrganizationName}from"../../constants";
4-
import{requiresLicense}from"../../helpers";
5-
import{login}from"../../helpers";
3+
import{defaultOrganizationName,users}from"../../constants";
4+
import{login,requiresLicense}from"../../helpers";
65
import{beforeCoderTest}from"../../hooks";
76

87
test.beforeEach(async({ page})=>{
98
beforeCoderTest(page);
10-
awaitlogin(page);
9+
awaitlogin(page,users.userAdmin);
1110
});
1211

1312
constDEFAULT_GROUP_NAME="Everyone";

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import{expect,test}from"@playwright/test";
2-
import{defaultOrganizationName}from"../../constants";
3-
import{randomName,requiresLicense}from"../../helpers";
4-
import{login}from"../../helpers";
2+
import{defaultOrganizationName,users}from"../../constants";
3+
import{login,randomName,requiresLicense}from"../../helpers";
54
import{beforeCoderTest}from"../../hooks";
65

76
test.beforeEach(async({ page})=>{
87
beforeCoderTest(page);
9-
awaitlogin(page);
8+
awaitlogin(page,users.userAdmin);
109
});
1110

1211
test("create group",async({ page, baseURL})=>{

‎site/e2e/tests/groups/removeGroup.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import{expect,test}from"@playwright/test";
22
import{createGroup,getCurrentOrgId,setupApiCalls}from"../../api";
3-
import{defaultOrganizationName}from"../../constants";
4-
import{requiresLicense}from"../../helpers";
5-
import{login}from"../../helpers";
3+
import{defaultOrganizationName,users}from"../../constants";
4+
import{login,requiresLicense}from"../../helpers";
65
import{beforeCoderTest}from"../../hooks";
76

87
test.beforeEach(async({ page})=>{
98
beforeCoderTest(page);
10-
awaitlogin(page);
9+
awaitlogin(page,users.userAdmin);
1110
awaitsetupApiCalls(page);
1211
});
1312

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp