-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
111 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import { type Locator, type Page } from '@playwright/test'; | ||
import { BaseComponent } from './baseComponent'; | ||
|
||
export class DeleteProjectModal extends BaseComponent { | ||
|
||
get confirmationInput(): Locator { | ||
return this.componentLocator.getByLabel(`Enter 'DELETE PROJECT' to confirm`); | ||
} | ||
|
||
get submitButton(): Locator { | ||
return this.componentLocator.getByRole('button', { name: 'Delete Project' }); | ||
} | ||
|
||
constructor(page: Page) { | ||
super(page, page.locator(`dialog.modal:has-text("Enter 'DELETE PROJECT' to confirm")`)); | ||
} | ||
|
||
async confirmDeleteProject(): Promise<void> { | ||
await this.confirmationInput.fill('DELETE PROJECT'); | ||
await this.submitButton.click(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
import { BasePage } from './basePage'; | ||
import type { Page } from '@playwright/test'; | ||
|
||
export class CreateProjectPage extends BasePage { | ||
constructor(page: Page) { | ||
super(page, page.getByRole('heading', { name: 'Create Project' }), `/project/create`); | ||
} | ||
|
||
async fillForm(values: { code: string, customCode?: boolean, name?: string, type?: string, purpose?: string, description?: string }): Promise<void> { | ||
const { code, customCode = false, name = code, type, purpose = 'Software Developer', description = name } = values; | ||
await this.page.getByLabel('Name').fill(name); | ||
await this.page.getByLabel('Description').fill(description ?? name); | ||
if (type) await this.page.getByLabel('Project type').selectOption({ label: type }); | ||
if (purpose) await this.page.getByLabel('Purpose').selectOption({ label: purpose }); | ||
await this.page.getByLabel('Language Code').fill(code); | ||
if (customCode) { | ||
await this.page.getByLabel('Custom Code').check(); | ||
await this.page.getByLabel('Code', { exact: true }).fill(code); | ||
} | ||
} | ||
|
||
async submit(): Promise<void> { | ||
await this.page.getByRole('button', {name: 'Create Project'}).click(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
import * as testEnv from './envVars'; | ||
|
||
import { AdminDashboardPage } from './pages/adminDashboardPage'; | ||
import { ProjectPage } from './pages/projectPage'; | ||
import { loginAs } from './utils/authHelpers'; | ||
import { test, type CreateProjectResponse } from './fixtures'; | ||
import { waitForGqlResponse } from './utils/gqlHelpers'; | ||
import { expect } from '@playwright/test'; | ||
|
||
test('delete and recreate project', async ({ page, uniqueTestId }) => { | ||
// Step 1: Login | ||
await loginAs(page.request, 'admin', testEnv.defaultPassword); | ||
const adminDashboard = await new AdminDashboardPage(page).goto(); | ||
|
||
// Step 2: Create a new project | ||
const createProjectPage = await adminDashboard.clickCreateProject(); | ||
const projectCode = `recreate-project-test-${uniqueTestId}`; | ||
await createProjectPage.fillForm({ code: projectCode, customCode: true }); | ||
await createProjectPage.submit(); | ||
const projectPage = await new ProjectPage(page, projectCode, projectCode).waitFor(); | ||
|
||
// Step 3: Delete the project | ||
const deleteProjectModal = await projectPage.clickDeleteProject(); | ||
await deleteProjectModal.confirmDeleteProject(); | ||
await adminDashboard.waitFor(); | ||
|
||
// Step 4: Recreate the project | ||
await adminDashboard.clickCreateProject(); | ||
await createProjectPage.fillForm({ code: projectCode, customCode: true }); | ||
|
||
const createProjectResponse = await waitForGqlResponse<CreateProjectResponse>(page, async () => { | ||
await createProjectPage.submit(); | ||
}); | ||
await projectPage.waitFor(); | ||
|
||
// Step 5: Clean up the last created project (the first one is only soft deleted, but that's probably fine) | ||
const projectId = createProjectResponse.data.createProject.createProjectResponse.id; | ||
const deleteResponse = await page.request.delete(`${testEnv.serverBaseUrl}/api/project/${projectId}`); | ||
expect(deleteResponse.ok()).toBeTruthy(); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters