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
Create workspace with params
  • Loading branch information
mtojek committed Aug 22, 2023
commit cd96b18bd0145abf19a9d4dce413825f279e54b6
41 changes: 41 additions & 0 deletions site/e2e/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { WorkspaceBuildParameter } from "api/typesGenerated"
export const createWorkspace = async (
page: Page,
templateName: string,
richParameters: RichParameter[] = [],
buildParameters: WorkspaceBuildParameter[] = [],
): Promise<string> => {
await page.goto("/templates/" + templateName + "/workspace", {
Expand All @@ -33,6 +34,46 @@ export const createWorkspace = async (
const name = randomName()
await page.getByLabel("name").fill(name)

for (const buildParameter of buildParameters) {
const richParameter = richParameters.find(
(richParam) => richParam.name === buildParameter.name,
)
if (!richParameter) {
throw new Error(
"build parameter is expected to be present in rich parameter schema",
)
}

const parameterLabel = await page.waitForSelector(
"[data-testid='parameter-field-" + richParameter.name + "']",
{ state: "visible" },
)

if (richParameter.type === "bool") {
const parameterField = await parameterLabel.waitForSelector(
"[data-testid='parameter-field-bool'] .MuiRadio-root input[value='" +
buildParameter.value +
"']",
)
await parameterField.check()
} else if (richParameter.options.length > 0) {
const parameterField = await parameterLabel.waitForSelector(
"[data-testid='parameter-field-options'] .MuiRadio-root input[value='" +
buildParameter.value +
"']",
)
await parameterField.check()
} else if (richParameter.type === "list(string)") {
throw new Error("not implemented yet")
} else {
// text or number
const parameterField = await parameterLabel.waitForSelector(
"[data-testid='parameter-field-text'] input",
)
await parameterField.fill(buildParameter.value)
}
}

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

await expect(page).toHaveURL("/@admin/" + name)
Expand Down
7 changes: 6 additions & 1 deletion site/e2e/tests/createWorkspace.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,12 @@ test("create workspace with default and required parameters", async ({
page,
echoResponsesWithParameters(richParameters),
)
const workspaceName = await createWorkspace(page, template, buildParameters)
const workspaceName = await createWorkspace(
page,
template,
richParameters,
buildParameters,
)
await verifyParameters(page, workspaceName, richParameters, [
// user values:
...buildParameters,
Expand Down