Skip to content

Commit 65a0eec

Browse files
committed
More cases
1 parent 41e7cbb commit 65a0eec

File tree

11 files changed

+110
-19
lines changed

11 files changed

+110
-19
lines changed

site/e2e/pom/CreateTemplatePage.ts

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,32 @@ import { BasePom } from "./BasePom"
33

44
export class CreateTemplatePage extends BasePom {
55
readonly createTemplateForm: Locator
6-
readonly createTemplateButton: Locator
6+
readonly submitButton: Locator
77

88
constructor(baseURL: string | undefined, page: Page) {
99
super(baseURL, `/templates`, page)
1010

1111
this.createTemplateForm = page.getByTestId("form-create-template")
12-
this.createTemplateButton = page.getByTestId("button-create-template")
12+
this.submitButton = page.getByTestId("button-create-template")
1313
}
1414

1515
async loaded() {
1616
await expect(this.page).toHaveTitle("Create Template - Coder")
1717

1818
await this.createTemplateForm.waitFor({ state: "visible" })
19-
await this.createTemplateButton.waitFor({ state: "visible" })
19+
await this.submitButton.waitFor({ state: "visible" })
2020
}
2121

22-
async fillIn() {
23-
await this.createTemplateForm.getByLabel("Name *").fill("my-first-template")
22+
async submitForm() {
2423
await this.createTemplateForm
25-
.getByLabel("Display name")
26-
.fill("My First Template")
24+
.getByTestId("form-template-upload")
25+
.setInputFiles("./e2e/testdata/docker.tar")
26+
await this.createTemplateForm.getByLabel("Name *").fill("my-first-template")
27+
await this.createTemplateForm.getByLabel("Display name").fill("My First Template")
2728
await this.createTemplateForm
2829
.getByLabel("Description")
2930
.fill("This is my first template.")
30-
await this.createTemplateForm
31-
.getByTestId("form-template-upload")
32-
.setInputFiles("./e2e/testdata/docker.tar")
3331

34-
await this.createTemplateButton.click()
32+
await this.submitButton.click()
3533
}
3634
}

site/e2e/pom/CreateWorkspacePage.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { expect, Locator, Page } from "@playwright/test"
2+
import { BasePom } from "./BasePom"
3+
4+
export class CreateWorkspacePage extends BasePom {
5+
readonly createWorkspaceForm: Locator
6+
readonly submitButton: Locator
7+
8+
constructor(baseURL: string | undefined, page: Page) {
9+
super(baseURL, `/templates/docker/workspace`, page)
10+
11+
this.createWorkspaceForm = page.getByTestId("form-create-workspace")
12+
this.submitButton = page.getByTestId("button-create-workspace")
13+
}
14+
15+
async loaded() {
16+
await expect(this.page).toHaveTitle("Create Workspace - Coder")
17+
18+
await this.createWorkspaceForm.waitFor({ state: "visible" })
19+
await this.submitButton.waitFor({ state: "visible" })
20+
}
21+
22+
async submitForm() {
23+
await this.createWorkspaceForm.getByLabel("Workspace Name").fill("my-first-workspace")
24+
25+
await this.submitButton.click()
26+
}
27+
}

site/e2e/pom/TemplatePage.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { expect, Locator, Page } from "@playwright/test"
2+
import { BasePom } from "./BasePom"
3+
4+
export class TemplatePage extends BasePom {
5+
readonly createWorkspaceButton: Locator
6+
7+
constructor(baseURL: string | undefined, page: Page) {
8+
super(baseURL, `/templates/docker`, page)
9+
10+
this.createWorkspaceButton = page.getByTestId("button-create-workspace")
11+
}
12+
13+
async loaded() {
14+
await this.createWorkspaceButton.waitFor({ state: "visible" })
15+
16+
await expect(this.page).toHaveTitle("My First Template · Template - Coder")
17+
}
18+
19+
async createWorkspace() {
20+
await this.createWorkspaceButton.click()
21+
}
22+
}

site/e2e/pom/TemplatesPage.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ export class TemplatesPage extends BasePom {
1515
}
1616

1717
async loaded() {
18-
await expect(this.page).toHaveTitle("Templates - Coder")
19-
2018
await this.addTemplateButton.waitFor({ state: "visible" })
19+
20+
await expect(this.page).toHaveTitle("Templates - Coder")
2121
}
2222

2323
async addTemplate() {

site/e2e/pom/WorkspacePage.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { expect, Locator, Page } from "@playwright/test"
2+
import { BasePom } from "./BasePom"
3+
4+
export class WorkspacePage extends BasePom {
5+
readonly stopWorkspaceButton: Locator
6+
7+
constructor(baseURL: string | undefined, page: Page) {
8+
super(baseURL, `/templates/docker/workspace`, page)
9+
10+
this.stopWorkspaceButton = page.getByTestId("button-stop-workspace")
11+
}
12+
13+
async loaded() {
14+
await this.stopWorkspaceButton.waitFor({ state: "visible" })
15+
16+
await expect(this.page).toHaveTitle("admin/workspace-1 - Coder")
17+
}
18+
19+
async stop() {
20+
await this.stopWorkspaceButton.click()
21+
}
22+
}

site/e2e/pom/index.ts

Lines changed: 0 additions & 2 deletions
This file was deleted.

site/e2e/tests/basicScenario.spec.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@ import { test } from "@playwright/test"
22
import { getStatePath } from "../helpers"
33
import { TemplatesPage } from "../pom/TemplatesPage"
44
import { CreateTemplatePage } from "../pom/CreateTemplatePage"
5+
import { TemplatePage } from "../pom/TemplatePage"
6+
import { CreateWorkspacePage } from "../pom/CreateWorkspacePage"
7+
import { WorkspacePage } from "../pom/WorkspacePage"
58

69
test.use({ storageState: getStatePath("authState") })
710

811
test("Basic scenario", async ({ page, baseURL }) => {
912
const templatesPage = new TemplatesPage(baseURL, page)
1013
const createTemplatePage = new CreateTemplatePage(baseURL, page)
14+
const templatePage = new TemplatePage(baseURL, page)
15+
const createWorkspacePage = new CreateWorkspacePage(baseURL, page)
16+
const workspacePage = new WorkspacePage(baseURL, page)
1117

1218
await test.step("Load empty templates page", async () => {
1319
await templatesPage.goto()
@@ -18,8 +24,23 @@ test("Basic scenario", async ({ page, baseURL }) => {
1824
await templatesPage.addTemplate()
1925
await createTemplatePage.loaded()
2026

21-
await createTemplatePage.fillIn()
27+
await createTemplatePage.submitForm()
28+
await templatePage.loaded()
29+
})
30+
31+
await test.step("Start a workspace", async() => {
32+
await templatePage.createWorkspace()
33+
await createWorkspacePage.loaded()
34+
35+
await createWorkspacePage.submitForm()
36+
await workspacePage.loaded()
37+
})
38+
39+
// await test.step("Workspace is up and running", async() => {
40+
// await workspacePage.isRunning()
41+
// })
2242

43+
await test.step("Finally", async() => {
2344
await page.waitForTimeout(5 * 60 * 1000) // FIXME
2445
})
2546
})

site/src/components/TemplateLayout/TemplatePageHeader.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ const CreateWorkspaceButton: FC<{
103103
startIcon={<AddCircleOutline />}
104104
component={RouterLink}
105105
to={`/templates/${templateName}/workspace`}
106+
data-testid="button-create-workspace"
106107
>
107108
Create workspace
108109
</Button>

site/src/components/WorkspaceStatusBadge/WorkspaceStatusBadge.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,6 @@ export const WorkspaceStatusBadge: FC<
100100
PropsWithChildren<WorkspaceStatusBadgeProps>
101101
> = ({ build, className }) => {
102102
const { text, icon, type } = getStatus(build.status)
103-
return <Pill className={className} icon={icon} text={text} type={type} />
103+
return <Pill className={className} icon={icon} text={text} type={type} data-testid={"workspace-status-" + type }
104+
/>
104105
}

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ export const CreateWorkspacePageView: FC<
211211

212212
return (
213213
<FullPageHorizontalForm title="New workspace" onCancel={props.onCancel}>
214-
<HorizontalForm onSubmit={form.handleSubmit}>
214+
<HorizontalForm onSubmit={form.handleSubmit} data-testid="form-create-workspace">
215215
{/* General info */}
216216
<FormSection
217217
title="General info"
@@ -383,6 +383,7 @@ export const CreateWorkspacePageView: FC<
383383
onCancel={props.onCancel}
384384
isLoading={props.creatingWorkspace}
385385
submitLabel={t("createWorkspace")}
386+
submitTestId="button-create-workspace"
386387
/>
387388
</HorizontalForm>
388389
</FullPageHorizontalForm>

site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export const TemplateSummaryPageView: FC<TemplateSummaryPageViewProps> = ({
5151
<Stack spacing={4}>
5252
<TemplateStats template={template} activeVersion={activeVersion} />
5353
{daus && <DAUChart daus={daus} />}
54-
<TemplateResourcesTable resources={getStartedResources(resources)} />
54+
<TemplateResourcesTable resources={getStartedResources(resources)}/>
5555
</Stack>
5656
)
5757
}

0 commit comments

Comments
 (0)