Skip to content

test(site): e2e: create workspace with rich parameters #9185

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 15 commits into from
Aug 22, 2023
Prev Previous commit
Next Next commit
more tests
  • Loading branch information
mtojek committed Aug 22, 2023
commit 2ffc3d44271690c55838a97f8247fe7843d4139c
4 changes: 3 additions & 1 deletion site/e2e/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ import { WorkspaceBuildParameter } from "api/typesGenerated"
export const createWorkspace = async (
page: Page,
templateName: string,
buildParameters: WorkspaceBuildParameter[] = [],
): Promise<string> => {
await page.goto("/templates/" + templateName + "/workspace", {
waitUntil: "networkidle",
})
const name = randomName()
await page.getByLabel("name").fill(name)

await page.getByTestId("form-submit").click()

await expect(page).toHaveURL("/@admin/" + name)
Expand Down Expand Up @@ -466,7 +468,7 @@ const findSessionToken = async (page: Page): Promise<string> => {
}

export const echoResponsesWithParameters = (
richParameters: RichParameter[]
richParameters: RichParameter[],
): EchoProvisionerResponses => {
return {
plan: [
Expand Down
28 changes: 28 additions & 0 deletions site/e2e/parameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -108,3 +108,31 @@ export const fifthParameter: RichParameter = {
icon: "",
order: 3,
}

// sixthParameter is mutable string without a default value (parameter value is required).
export const sixthParameter: RichParameter = {
...emptyParameter,

name: "sixth_parameter",
displayName: "Sixth parameter",
type: "number",
options: [],
description: "This is sixth parameter.",
icon: "/emojis/1f310.png",
required: true,
mutable: true,
order: 1,
}

// seventhParameter is immutable string without a default value (parameter value is required).
export const seventhParameter: RichParameter = {
...emptyParameter,

name: "seventh_parameter",
displayName: "Seventh parameter",
type: "string",
options: [],
description: "This is seventh parameter.",
required: true,
order: 1,
}
47 changes: 43 additions & 4 deletions site/e2e/tests/createWorkspace.spec.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
import { test } from "@playwright/test"
import { createTemplate, createWorkspace, echoResponsesWithParameters, verifyParameters } from "../helpers"
import {
createTemplate,
createWorkspace,
echoResponsesWithParameters,
verifyParameters,
} from "../helpers"

import {
secondParameter,
fourthParameter,
fifthParameter,
firstParameter,
thirdParameter,
seventhParameter,
sixthParameter,
} from "../parameters"
import { RichParameter } from "../provisionerGenerated"

Expand All @@ -33,7 +40,10 @@ test("create workspace with default immutable parameters", async ({ page }) => {
fourthParameter,
fifthParameter,
]
const template = await createTemplate(page, echoResponsesWithParameters(richParameters))
const template = await createTemplate(
page,
echoResponsesWithParameters(richParameters),
)
const workspaceName = await createWorkspace(page, template)
await verifyParameters(page, workspaceName, richParameters, [
{ name: secondParameter.name, value: secondParameter.defaultValue },
Expand All @@ -44,13 +54,42 @@ test("create workspace with default immutable parameters", async ({ page }) => {

test("create workspace with default mutable parameters", async ({ page }) => {
const richParameters: RichParameter[] = [firstParameter, thirdParameter]
const template = await createTemplate(page, echoResponsesWithParameters(richParameters))
const template = await createTemplate(
page,
echoResponsesWithParameters(richParameters),
)
const workspaceName = await createWorkspace(page, template)
await verifyParameters(page, workspaceName, richParameters, [
{ name: firstParameter.name, value: firstParameter.defaultValue },
{ name: thirdParameter.name, value: thirdParameter.defaultValue },
])
})

// TODO custom parameter values
test("create workspace with default and required parameters", async ({
page,
}) => {
const richParameters: RichParameter[] = [
secondParameter,
fourthParameter,
sixthParameter,
seventhParameter,
]
const buildParameters = [
{ name: sixthParameter.name, value: "12345" },
{ name: seventhParameter.name, value: "abcdef" },
]
const template = await createTemplate(
page,
echoResponsesWithParameters(richParameters),
)
const workspaceName = await createWorkspace(page, template, buildParameters)
await verifyParameters(page, workspaceName, richParameters, [
// user values:
...buildParameters,
// default values:
{ name: secondParameter.name, value: secondParameter.defaultValue },
{ name: fourthParameter.name, value: fourthParameter.defaultValue },
])
})

// TODO custom parameter values