Skip to content

Commit ee59c2a

Browse files
committed
Scenario covered
1 parent 4e3f683 commit ee59c2a

File tree

6 files changed

+54
-17
lines changed

6 files changed

+54
-17
lines changed

site/e2e/playwright.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const config: PlaywrightTestConfig = {
2424
port,
2525
reuseExistingServer: false,
2626
},
27-
timeout: 120 * 1000,
27+
timeout: 5 * 60 * 1000,
2828
}
2929

3030
export default config

site/e2e/pom/WorkspacePage.ts

Lines changed: 42 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,81 @@ import { expect, Locator, Page } from "@playwright/test"
22
import { BasePom } from "./BasePom"
33

44
export class WorkspacePage extends BasePom {
5+
readonly workspaceOptionsButton: Locator
6+
readonly deleteWorkspaceMenuItem: Locator
7+
readonly stopWorkspaceButton: Locator
8+
59
readonly workspaceRunningBadge: Locator
610
readonly workspaceStoppedBadge: Locator
11+
readonly workspaceDeletedBadge: Locator
12+
713
readonly terminalButton: Locator
814
readonly agentVersion: Locator
915
readonly agentLifecycleReady: Locator
10-
readonly stopWorkspaceButton: Locator
16+
17+
readonly deleteDialogConfirmation: Locator
18+
readonly deleteDialogConfirm: Locator
1119

1220
constructor(baseURL: string | undefined, page: Page) {
1321
super(baseURL, `/templates/docker/workspace`, page)
1422

23+
this.workspaceOptionsButton = page.getByTestId("workspace-options-button")
24+
this.deleteWorkspaceMenuItem = page.getByTestId("menuitem-delete-workspace")
25+
this.stopWorkspaceButton = page.getByTestId("button-stop-workspace")
26+
1527
this.workspaceRunningBadge = page.getByTestId(
1628
"badge-workspace-status-running",
1729
)
1830
this.workspaceStoppedBadge = page.getByTestId(
1931
"badge-workspace-status-stopped",
2032
)
33+
this.workspaceDeletedBadge = page.getByTestId(
34+
"badge-workspace-status-deleted",
35+
)
2136
this.terminalButton = page.getByTestId("button-terminal")
2237
this.agentVersion = page.getByTestId("agent-version")
2338
this.agentLifecycleReady = page.getByTestId("agent-lifecycle-ready")
24-
this.stopWorkspaceButton = page.getByTestId("button-stop-workspace")
39+
40+
this.deleteDialogConfirmation = page.getByTestId(
41+
"delete-dialog-confirmation",
42+
)
43+
this.deleteDialogConfirm = page.getByTestId("delete-dialog-confirm")
2544
}
2645

2746
async loaded() {
2847
await this.stopWorkspaceButton.waitFor({ state: "visible" })
2948
await expect(this.page).toHaveTitle("admin/my-first-workspace - Coder")
3049
}
3150

51+
async stop() {
52+
await this.stopWorkspaceButton.click()
53+
}
54+
55+
async delete() {
56+
await this.workspaceOptionsButton.click()
57+
await this.deleteWorkspaceMenuItem.click()
58+
59+
await this.deleteDialogConfirmation.waitFor({ state: "visible" })
60+
await this.deleteDialogConfirmation
61+
.getByLabel("Name of workspace to delete")
62+
.fill("my-first-workspace")
63+
64+
await this.page.waitForTimeout(1000) // Wait for 1s to snapshot the delete dialog before submitting
65+
await this.deleteDialogConfirm.click()
66+
}
67+
3268
async isRunning() {
3369
await this.workspaceRunningBadge.waitFor({ state: "visible" })
3470
await this.terminalButton.waitFor({ state: "visible" })
3571
await this.agentVersion.waitFor({ state: "visible" })
3672
await this.agentLifecycleReady.waitFor({ state: "visible" })
37-
await this.page.waitForTimeout(1000) // Wait for 1s to snapshot the agent status on the video
38-
}
39-
40-
async stop() {
41-
await this.stopWorkspaceButton.click()
4273
}
4374

4475
async isStopped() {
4576
await this.workspaceStoppedBadge.waitFor({ state: "visible" })
4677
}
78+
79+
async isDeleted() {
80+
await this.workspaceDeletedBadge.waitFor({ state: "visible" })
81+
}
4782
}

site/e2e/tests/basicScenario.spec.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,18 @@ test("Basic scenario", async ({ page, baseURL }) => {
3434

3535
await createWorkspacePage.submitForm()
3636
await workspacePage.loaded()
37-
})
38-
39-
await test.step("Workspace is up and running", async () => {
4037
await workspacePage.isRunning()
38+
await page.waitForTimeout(1000) // Wait for 1s to snapshot the agent status on the video
4139
})
4240

4341
await test.step("Stop the workspace", async () => {
4442
await workspacePage.stop()
45-
})
46-
47-
await test.step("Workspace is stopped", async () => {
4843
await workspacePage.isStopped()
4944
})
5045

51-
await test.step("Finally", async () => {
52-
await page.waitForTimeout(5 * 60 * 1000) // FIXME
46+
await test.step("Delete the workspace", async () => {
47+
await workspacePage.delete()
48+
await workspacePage.isDeleted()
49+
await page.waitForTimeout(1000) // Wait to show the deleted workspace
5350
})
5451
})

site/src/components/Dialogs/DeleteDialog/DeleteDialog.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export const DeleteDialog: FC<PropsWithChildren<DeleteDialogProps>> = ({
5757
label={t("deleteDialog.confirmLabel", { entity })}
5858
error={hasError}
5959
helperText={hasError && t("deleteDialog.incorrectName", { entity })}
60+
data-testid="delete-dialog-confirmation"
6061
/>
6162
</>
6263
)

site/src/components/Dialogs/Dialog.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export const DialogActionButtons: React.FC<DialogActionButtonsProps> = ({
7575
[styles.errorButton]: type === "delete",
7676
[styles.successButton]: type === "success",
7777
})}
78+
data-testid={type + "-dialog-confirm"}
7879
>
7980
{confirmText}
8081
</LoadingButton>

site/src/components/WorkspaceActions/WorkspaceActions.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,10 @@ export const WorkspaceActions: FC<WorkspaceActionsProps> = ({
163163
Change version
164164
</MenuItem>
165165
)}
166-
<MenuItem onClick={onMenuItemClick(handleDelete)}>
166+
<MenuItem
167+
onClick={onMenuItemClick(handleDelete)}
168+
data-testid="menuitem-delete-workspace"
169+
>
167170
<DeleteOutlined />
168171
Delete
169172
</MenuItem>

0 commit comments

Comments
 (0)