Skip to content

test(site): e2e: update workspace with parameters #9338

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 23 commits into from
Aug 29, 2023
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