8000 feat(site): support match option for auto create workspace flow by BrunoQuaresma · Pull Request #13836 · coder/coder · GitHub
[go: up one dir, main page]

Skip to content

feat(site): support match option for auto create workspace flow #13836

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 6 commits into from
Jul 9, 2024
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
Add e2e tests
  • Loading branch information
BrunoQuaresma committed Jul 8, 2024
commit 6b6b32c5861c8d358caa01128b5712ca90fd4cb4
2 changes: 1 addition & 1 deletion site/e2e/parameters.ts
Original file line number Diff line number Diff line change
Expand Up < 8000 /td> @@ -2,7 +2,7 @@ import type { RichParameter } from "./provisionerGenerated";

// Rich parameters

const emptyParameter: RichParameter = {
export const emptyParameter: RichParameter = {
name: "",
description: "",
type: "",
Expand Down
47 changes: 47 additions & 0 deletions site/e2e/tests/workspaces/autoCreateWorkspace.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import { test, expect } from "@playwright/test";
import { username } from "../../constants";
import {
createTemplate,
createWorkspace,
echoResponsesWithParameters,
} from "../../helpers";
import { emptyParameter } from "../../parameters";
import type { RichParameter } from "../../provisionerGenerated";

test("create workspace in auto mode", async ({ page }) => {
const richParameters: RichParameter[] = [
{ ...emptyParameter, name: "repo", type: "string" },
];
const template = await createTemplate(
page,
echoResponsesWithParameters(richParameters),
);
const name = "test-workspace";
await page.goto(
`/templates/${template}/workspace?mode=auto&param.repo=example&name=${name}`,
{
waitUntil: "domcontentloaded",
},
);
await expect(page).toHaveTitle(`${username}/${name} - Coder`);
});

test("use an existing workspace that matches the `match` parameter instead of creating a new one", async ({
page,
}) => {
const richParameters: RichParameter[] = [
{ ...emptyParameter, name: "repo", type: "string" },
];
const template = await createTemplate(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I haven't worked with the E2E stuff much yet, so just to make sure I'm understanding: these tests aren't isolated, right? That's how the second test is able to have a workspace already exist, even though it didn't explicitly make two of them?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are not isolated, but I ensure that a previous workspace with the right match exists in line 39.

page,
echoResponsesWithParameters(richParameters),
);
const prevWorkspace = await createWorkspace(page, template);
await page.goto(
`/templates/${template}/workspace?mode=auto&param.repo=example&name=new-name&match=name:${prevWorkspace}`,
{
waitUntil: "domcontentloaded",
},
);
await expect(page).toHaveTitle(`${username}/${prevWorkspace} - Coder`);
});
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import {
openTerminalWindow,
requireTerraformProvisioner,
verifyParameters,
} from "../helpers";
import { beforeCoderTest } from "../hooks";
} from "../../helpers";
import { beforeCoderTest } from "../../hooks";
import {
secondParameter,
fourthParameter,
Expand All @@ -18,8 +18,8 @@ import {
seventhParameter,
sixthParameter,
randParamName,
} from "../parameters";
import type { RichParameter } from "../provisionerGenerated";
} from "../../parameters";
import type { RichParameter } from "../../provisionerGenerated";

test.beforeEach(({ page }) => beforeCoderTest(page));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import {
createWorkspace,
echoResponsesWithParameters,
verifyParameters,
} from "../helpers";
import { beforeCoderTest } from "../hooks";
import { firstBuildOption, secondBuildOption } from "../parameters";
import type { RichParameter } from "../provisionerGenerated";
} from "../../helpers";
import { beforeCoderTest } from "../../hooks";
import { firstBuildOption, secondBuildOption } from "../../parameters";
import type { RichParameter } from "../../provisionerGenerated";

test.beforeEach(({ page }) => beforeCoderTest(page));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import {
echoResponsesWithParameters,
stopWorkspace,
verifyParameters,
} from "../helpers";
import { beforeCoderTest } from "../hooks";
import { firstBuildOption, secondBuildOption } from "../parameters";
import type { RichParameter } from "../provisionerGenerated";
} from "../../helpers";
import { beforeCoderTest } from "../../hooks";
import { firstBuildOption, secondBuildOption } from "../../parameters";
import type { RichParameter } from "../../provisionerGenerated";

test.beforeEach(({ page }) => beforeCoderTest(page));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,16 @@ import {
updateWorkspace,
updateWorkspaceParameters,
verifyParameters,
} from "../helpers";
import { beforeCoderTest } from "../hooks";
} from "../../helpers";
import { beforeCoderTest } from "../../hooks";
import {
fifthParameter,
firstParameter,
secondParameter,
sixthParameter,
secondBuildOption,
} from "../parameters";
import type { RichParameter } from "../provisionerGenerated";
} from "../../parameters";
import type { RichParameter } from "../../provisionerGenerated";

test.beforeEach(({ page }) => beforeCoderTest(page));

Expand Down
0