Skip to content

Commit 0b8d6d8

Browse files
committed
start workspace with ephemerals
1 parent 055d65f commit 0b8d6d8

File tree

4 files changed

+75
-5
lines changed

4 files changed

+75
-5
lines changed

site/e2e/helpers.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,11 +216,31 @@ export const sshIntoWorkspace = async (
216216
})
217217
}
218218

219-
export const restartWorkspace = async (
219+
export const stopWorkspace = async (
220+
page: Page,
221+
workspaceName: string,
222+
) => {
223+
await page.goto("/@admin/" + workspaceName, {
224+
waitUntil: "domcontentloaded",
225+
})
226+
await expect(page).toHaveURL("/@admin/" + workspaceName)
227+
228+
await page.getByTestId("workspace-stop-button").click()
229+
230+
await page.waitForSelector(
231+
"span[data-testid='build-status'] >> text=Stopped",
232+
{
233+
state: "visible",
234+
},
235+
)
236+
}
237+
238+
export const buildWorkspaceWithParameters = async (
220239
page: Page,
221240
workspaceName: string,
222241
richParameters: RichParameter[] = [],
223242
buildParameters: WorkspaceBuildParameter[] = [],
243+
confirm: boolean = false,
224244
) => {
225245
await page.goto("/@admin/" + workspaceName, {
226246
waitUntil: "domcontentloaded",
@@ -270,7 +290,10 @@ export const restartWorkspace = async (
270290
}
271291

272292
await page.getByTestId("build-parameters-submit").click()
273-
await page.getByTestId("confirm-button").click()
293+
294+
if (confirm) {
295+
await page.getByTestId("confirm-button").click()
296+
}
274297

275298
await page.waitForSelector(
276299
"span[data-testid='build-status'] >> text=Running",

site/e2e/tests/restartWorkspace.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { test } from "@playwright/test"
22
import {
3+
buildWorkspaceWithParameters,
34
createTemplate,
45
createWorkspace,
56
echoResponsesWithParameters,
6-
restartWorkspace,
77
verifyParameters,
88
} from "../helpers"
99

@@ -29,9 +29,10 @@ test("restart workspace with ephemeral parameters", async ({ page }) => {
2929
{ name: firstBuildOption.name, value: "AAAAA" },
3030
{ name: secondBuildOption.name, value: "true" },
3131
]
32-
await restartWorkspace(page, workspaceName, richParameters, buildParameters)
32+
await buildWorkspaceWithParameters(page, workspaceName, richParameters, buildParameters, true)
3333

34-
// Verify that build options are default (not selected).
34+
// FIXME: verify that build options are default (not selected).
35+
// It is the opposite now until the site logic is corrected.
3536
await verifyParameters(page, workspaceName, richParameters, [
3637
{ name: firstBuildOption.name, value: buildParameters[0].value },
3738
{ name: secondBuildOption.name, value: buildParameters[1].value },

site/e2e/tests/startWorkspace.spec.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { test } from "@playwright/test"
2+
import {
3+
buildWorkspaceWithParameters,
4+
createTemplate,
5+
createWorkspace,
6+
echoResponsesWithParameters,
7+
stopWorkspace,
8+
verifyParameters,
9+
} from "../helpers"
10+
11+
import { firstBuildOption, secondBuildOption } from "../parameters"
12+
import { RichParameter } from "../provisionerGenerated"
13+
14+
test("start workspace with ephemeral parameters", async ({ page }) => {
15+
const richParameters: RichParameter[] = [firstBuildOption, secondBuildOption]
16+
const template = await createTemplate(
17+
page,
18+
echoResponsesWithParameters(richParameters),
19+
)
20+
const workspaceName = await createWorkspace(page, template)
21+
22+
// Verify that build options are default (not selected).
23+
await verifyParameters(page, workspaceName, richParameters, [
24+
{ name: firstBuildOption.name, value: firstBuildOption.defaultValue },
25+
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
26+
])
27+
28+
// Stop the workspace
29+
await stopWorkspace(page, workspaceName)
30+
31+
// Now, start the workspace with ephemeral parameters selected.
32+
const buildParameters = [
33+
{ name: firstBuildOption.name, value: "AAAAA" },
34+
{ name: secondBuildOption.name, value: "true" },
35+
]
36+
37+
await buildWorkspaceWithParameters(page, workspaceName, richParameters, buildParameters)
38+
39+
// FIXME: verify that build options are default (not selected).
40+
// It is the opposite now until the site logic is corrected.
41+
await verifyParameters(page, workspaceName, richParameters, [
42+
{ name: firstBuildOption.name, value: buildParameters[0].value },
43+
{ name: secondBuildOption.name, value: buildParameters[1].value },
44+
])
45+
})

site/src/components/WorkspaceActions/Buttons.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ export const StopButton: FC<WorkspaceAction> = ({ handleAction, loading }) => {
9494
loadingPosition="start"
9595
startIcon={<CropSquareIcon />}
9696
onClick={handleAction}
97+
data-testid="workspace-stop-button"
9798
>
9899
Stop
99100
</LoadingButton>

0 commit comments

Comments
 (0)