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

Commitf5d813c

Browse files
authored
test(site): e2e: update workspace with parameters (#9338)
1 parent3557497 commitf5d813c

File tree

5 files changed

+252
-2
lines changed

5 files changed

+252
-2
lines changed

‎site/e2e/helpers.ts

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ export const createWorkspace = async (
3131
awaitpage.goto("/templates/"+templateName+"/workspace",{
3232
waitUntil:"networkidle",
3333
})
34+
awaitexpect(page).toHaveURL("/templates/"+templateName+"/workspace")
35+
3436
constname=randomName()
3537
awaitpage.getByLabel("name").fill(name)
3638

@@ -117,7 +119,10 @@ export const createTemplate = async (
117119
awaitpage.addInitScript({
118120
content:"window.playwright = true",
119121
})
122+
120123
awaitpage.goto("/templates/new",{waitUntil:"networkidle"})
124+
awaitexpect(page).toHaveURL("/templates/new")
125+
121126
awaitpage.getByTestId("file-upload").setInputFiles({
122127
buffer:awaitcreateTemplateVersionTar(responses),
123128
mimeType:"application/x-tar",
@@ -616,3 +621,99 @@ export const fillParameters = async (
616621
}
617622
}
618623
}
624+
625+
exportconstupdateTemplate=async(
626+
page:Page,
627+
templateName:string,
628+
responses?:EchoProvisionerResponses,
629+
)=>{
630+
consttarball=awaitcreateTemplateVersionTar(responses)
631+
632+
constsessionToken=awaitfindSessionToken(page)
633+
constchild=spawn(
634+
"go",
635+
[
636+
"run",
637+
coderMainPath(),
638+
"templates",
639+
"push",
640+
"--test.provisioner",
641+
"echo",
642+
"-y",
643+
"-d",
644+
"-",
645+
templateName,
646+
],
647+
{
648+
env:{
649+
...process.env,
650+
CODER_SESSION_TOKEN:sessionToken,
651+
CODER_URL:"http://localhost:3000",
652+
},
653+
},
654+
)
655+
656+
constuploaded=newAwaiter()
657+
child.on("exit",(code)=>{
658+
if(code===0){
659+
uploaded.done()
660+
return
661+
}
662+
663+
thrownewError(`coder templates push failed with code${code}`)
664+
})
665+
666+
child.stdin.write(tarball)
667+
child.stdin.end()
668+
669+
awaituploaded.wait()
670+
}
671+
672+
exportconstupdateWorkspace=async(
673+
page:Page,
674+
workspaceName:string,
675+
richParameters:RichParameter[]=[],
676+
buildParameters:WorkspaceBuildParameter[]=[],
677+
)=>{
678+
awaitpage.goto("/@admin/"+workspaceName,{
679+
waitUntil:"domcontentloaded",
680+
})
681+
awaitexpect(page).toHaveURL("/@admin/"+workspaceName)
682+
683+
awaitpage.getByTestId("workspace-update-button").click()
684+
awaitpage.getByTestId("confirm-button").click()
685+
686+
awaitfillParameters(page,richParameters,buildParameters)
687+
awaitpage.getByTestId("form-submit").click()
688+
689+
awaitpage.waitForSelector(
690+
"span[data-testid='build-status'] >> text=Running",
691+
{
692+
state:"visible",
693+
},
694+
)
695+
}
696+
697+
exportconstupdateWorkspaceParameters=async(
698+
page:Page,
699+
workspaceName:string,
700+
richParameters:RichParameter[]=[],
701+
buildParameters:WorkspaceBuildParameter[]=[],
702+
)=>{
703+
awaitpage.goto("/@admin/"+workspaceName+"/settings/parameters",{
704+
waitUntil:"domcontentloaded",
705+
})
706+
awaitexpect(page).toHaveURL(
707+
"/@admin/"+workspaceName+"/settings/parameters",
708+
)
709+
710+
awaitfillParameters(page,richParameters,buildParameters)
711+
awaitpage.getByTestId("form-submit").click()
712+
713+
awaitpage.waitForSelector(
714+
"span[data-testid='build-status'] >> text=Running",
715+
{
716+
state:"visible",
717+
},
718+
)
719+
}

‎site/e2e/playwright.config.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export default defineConfig({
4141
`--access-url=http://localhost:${port} `+
4242
`--http-address=localhost:${port} `+
4343
`--in-memory --telemetry=false `+
44+
`--dangerous-disable-rate-limits `+
4445
`--provisioner-daemons 10 `+
4546
`--provisioner-daemons-echo `+
4647
`--provisioner-daemon-poll-interval 50ms`,

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import{test}from"@playwright/test"
1+
import{test,Page}from"@playwright/test"
22
import{
33
createTemplate,
44
createWorkspace,
@@ -17,6 +17,11 @@ import {
1717
}from"../parameters"
1818
import{RichParameter}from"../provisionerGenerated"
1919

20+
test.beforeEach(async({ page}:{page:Page})=>{
21+
// eslint-disable-next-line no-console -- For debugging purposes
22+
page.on("console",(msg)=>console.log("Console: "+msg.text()))
23+
})
24+
2025
test("create workspace",async({ page})=>{
2126
consttemplate=awaitcreateTemplate(page,{
2227
apply:[
@@ -107,6 +112,7 @@ test("create workspace and overwrite default parameters", async ({ page }) => {
107112
page,
108113
echoResponsesWithParameters(richParameters),
109114
)
115+
110116
constworkspaceName=awaitcreateWorkspace(
111117
page,
112118
template,
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
import{test,Page}from"@playwright/test"
2+
3+
import{
4+
createTemplate,
5+
createWorkspace,
6+
echoResponsesWithParameters,
7+
updateTemplate,
8+
updateWorkspace,
9+
updateWorkspaceParameters,
10+
verifyParameters,
11+
}from"../helpers"
12+
13+
import{
14+
fifthParameter,
15+
firstParameter,
16+
secondParameter,
17+
sixthParameter,
18+
secondBuildOption,
19+
}from"../parameters"
20+
import{RichParameter}from"../provisionerGenerated"
21+
22+
test.beforeEach(async({ page}:{page:Page})=>{
23+
// eslint-disable-next-line no-console -- For debugging purposes
24+
page.on("console",(msg)=>console.log("Console: "+msg.text()))
25+
})
26+
27+
test("update workspace, new optional, immutable parameter added",async({
28+
page,
29+
})=>{
30+
constrichParameters:RichParameter[]=[firstParameter,secondParameter]
31+
consttemplate=awaitcreateTemplate(
32+
page,
33+
echoResponsesWithParameters(richParameters),
34+
)
35+
36+
constworkspaceName=awaitcreateWorkspace(page,template)
37+
38+
// Verify that parameter values are default.
39+
awaitverifyParameters(page,workspaceName,richParameters,[
40+
{name:firstParameter.name,value:firstParameter.defaultValue},
41+
{name:secondParameter.name,value:secondParameter.defaultValue},
42+
])
43+
44+
// Push updated template.
45+
constupdatedRichParameters=[...richParameters,fifthParameter]
46+
awaitupdateTemplate(
47+
page,
48+
template,
49+
echoResponsesWithParameters(updatedRichParameters),
50+
)
51+
52+
// Now, update the workspace, and select the value for immutable parameter.
53+
awaitupdateWorkspace(page,workspaceName,updatedRichParameters,[
54+
{name:fifthParameter.name,value:fifthParameter.options[0].value},
55+
])
56+
57+
// Verify parameter values.
58+
awaitverifyParameters(page,workspaceName,updatedRichParameters,[
59+
{name:firstParameter.name,value:firstParameter.defaultValue},
60+
{name:secondParameter.name,value:secondParameter.defaultValue},
61+
{name:fifthParameter.name,value:fifthParameter.options[0].value},
62+
])
63+
})
64+
65+
test("update workspace, new required, mutable parameter added",async({
66+
page,
67+
})=>{
68+
constrichParameters:RichParameter[]=[firstParameter,secondParameter]
69+
consttemplate=awaitcreateTemplate(
70+
page,
71+
echoResponsesWithParameters(richParameters),
72+
)
73+
74+
constworkspaceName=awaitcreateWorkspace(page,template)
75+
76+
// Verify that parameter values are default.
77+
awaitverifyParameters(page,workspaceName,richParameters,[
78+
{name:firstParameter.name,value:firstParameter.defaultValue},
79+
{name:secondParameter.name,value:secondParameter.defaultValue},
80+
])
81+
82+
// Push updated template.
83+
constupdatedRichParameters=[...richParameters,sixthParameter]
84+
awaitupdateTemplate(
85+
page,
86+
template,
87+
echoResponsesWithParameters(updatedRichParameters),
88+
)
89+
90+
// Now, update the workspace, and provide the parameter value.
91+
constbuildParameters=[{name:sixthParameter.name,value:"99"}]
92+
awaitupdateWorkspace(
93+
page,
94+
workspaceName,
95+
updatedRichParameters,
96+
buildParameters,
97+
)
98+
99+
// Verify parameter values.
100+
awaitverifyParameters(page,workspaceName,updatedRichParameters,[
101+
{name:firstParameter.name,value:firstParameter.defaultValue},
102+
{name:secondParameter.name,value:secondParameter.defaultValue},
103+
...buildParameters,
104+
])
105+
})
106+
107+
test("update workspace with ephemeral parameter enabled",async({ page})=>{
108+
constrichParameters:RichParameter[]=[firstParameter,secondBuildOption]
109+
consttemplate=awaitcreateTemplate(
110+
page,
111+
echoResponsesWithParameters(richParameters),
112+
)
113+
114+
constworkspaceName=awaitcreateWorkspace(page,template)
115+
116+
// Verify that parameter values are default.
117+
awaitverifyParameters(page,workspaceName,richParameters,[
118+
{name:firstParameter.name,value:firstParameter.defaultValue},
119+
{name:secondBuildOption.name,value:secondBuildOption.defaultValue},
120+
])
121+
122+
// Now, update the workspace, and select the value for ephemeral parameter.
123+
constbuildParameters=[{name:secondBuildOption.name,value:"true"}]
124+
awaitupdateWorkspaceParameters(
125+
page,
126+
workspaceName,
127+
richParameters,
128+
buildParameters,
129+
)
130+
131+
// Verify that parameter values are default.
132+
awaitverifyParameters(page,workspaceName,richParameters,[
133+
{name:firstParameter.name,value:firstParameter.defaultValue},
134+
{name:secondBuildOption.name,value:secondBuildOption.defaultValue},
135+
])
136+
})

‎site/src/pages/WorkspacePage/UpdateBuildParametersDialog.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,13 @@ export const UpdateBuildParametersDialog: FC<
111111
<ButtonfullWidthtype="button"onClick={dialogProps.onClose}>
112112
Cancel
113113
</Button>
114-
<Buttoncolor="primary"fullWidthtype="submit"form="updateParameters">
114+
<Button
115+
color="primary"
116+
fullWidth
117+
type="submit"
118+
form="updateParameters"
119+
data-testid="form-submit"
120+
>
115121
Update
116122
</Button>
117123
</DialogActions>

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp