Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
start workspace with ephemerals
  • Loading branch information
mtojek committed Aug 25, 2023
commit 0b8d6d8c544481ba8726f36b7b3bf0f105dab9f0
27 changes: 25 additions & 2 deletions site/e2e/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,31 @@ export const sshIntoWorkspace = async (
})
}

export const restartWorkspace = async (
export const stopWorkspace = async (
page: Page,
workspaceName: string,
) => {
await page.goto("/@admin/" + workspaceName, {
waitUntil: "domcontentloaded",
})
await expect(page).toHaveURL("/@admin/" + workspaceName)

await page.getByTestId("workspace-stop-button").click()

await page.waitForSelector(
"span[data-testid='build-status'] >> text=Stopped",
{
state: "visible",
},
)
}

export const buildWorkspaceWithParameters = async (
page: Page,
workspaceName: string,
richParameters: RichParameter[] = [],
buildParameters: WorkspaceBuildParameter[] = [],
confirm: boolean = false,
) => {
await page.goto("/@admin/" + workspaceName, {
waitUntil: "domcontentloaded",
Expand Down Expand Up @@ -270,7 +290,10 @@ export const restartWorkspace = async (
}

await page.getByTestId("build-parameters-submit").click()
await page.getByTestId("confirm-button").click()

if (confirm) {
await page.getByTestId("confirm-button").click()
}

await page.waitForSelector(
"span[data-testid='build-status'] >> text=Running",
Expand Down
7 changes: 4 additions & 3 deletions site/e2e/tests/restartWorkspace.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { test } from "@playwright/test"
import {
buildWorkspaceWithParameters,
createTemplate,
createWorkspace,
echoResponsesWithParameters,
restartWorkspace,
verifyParameters,
} from "../helpers"

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

// Verify that build options are default (not selected).
// FIXME: verify that build options are default (not selected).
// It is the opposite now until the site logic is corrected.
await verifyParameters(page, workspaceName, richParameters, [
{ name: firstBuildOption.name, value: buildParameters[0].value },
{ name: secondBuildOption.name, value: buildParameters[1].value },
Expand Down
45 changes: 45 additions & 0 deletions site/e2e/tests/startWorkspace.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { test } from "@playwright/test"
import {
buildWorkspaceWithParameters,
createTemplate,
createWorkspace,
echoResponsesWithParameters,
stopWorkspace,
verifyParameters,
} from "../helpers"

import { firstBuildOption, secondBuildOption } from "../parameters"
import { RichParameter } from "../provisionerGenerated"

test("start workspace with ephemeral parameters", async ({ page }) => {
const richParameters: RichParameter[] = [firstBuildOption, secondBuildOption]
const template = await createTemplate(
page,
echoResponsesWithParameters(richParameters),
)
const workspaceName = await createWorkspace(page, template)

// Verify that build options are default (not selected).
await verifyParameters(page, workspaceName, richParameters, [
{ name: firstBuildOption.name, value: firstBuildOption.defaultValue },
{ name: secondBuildOption.name, value: secondBuildOption.defaultValue },
])

// Stop the workspace
await stopWorkspace(page, workspaceName)

// Now, start the workspace with ephemeral parameters selected.
const buildParameters = [
{ name: firstBuildOption.name, value: "AAAAA" },
{ name: secondBuildOption.name, value: "true" },
]

await buildWorkspaceWithParameters(page, workspaceName, richParameters, buildParameters)

// FIXME: verify that build options are default (not selected).
// It is the opposite now until the site logic is corrected.
await verifyParameters(page, workspaceName, richParameters, [
{ name: firstBuildOption.name, value: buildParameters[0].value },
{ name: secondBuildOption.name, value: buildParameters[1].value },
])
})
1 change: 1 addition & 0 deletions site/src/components/WorkspaceActions/Buttons.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ export const StopButton: FC<WorkspaceAction> = ({ handleAction, loading }) => {
loadingPosition="start"
startIcon={<CropSquareIcon />}
onClick={handleAction}
data-testid="workspace-stop-button"
>
Stop
</LoadingButton>
Expand Down