mirror of
https://github.com/Portabase/portabase.git
synced 2026-07-14 11:16:13 +02:00
* fix: release.yml * fix: S3ChannelConfigSchema type port mismatch * fix(csp): Conditionally sets UPGRADE_INSECURE_REQUESTS based on the PROJECT_URL scheme. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: fix bug in github action. * chore: adding e2e tesing for notification. * fix: updating trivy-action to the latest version, using new tagging pattern (vX.XX.XX instead of (X.XX.XX). * fix: removing browser targeting in e2e workflow as it is already specify in playwright.config.ts * fix: mapping secrets to environment variables in the end-to-end workflow. * fix: add a condition to allow end-to-end workflow execution only on main repo (fork are excluded). * fix: adding some data-testid to rely on more stable locator. * fix: adding some data-testid to rely on more stable locator. * fix: removing unusued browsers in end-to-end workflow. * fix: removing unused browsers in end-to-end workflow. * fix: removing unused browsers in end-to-end workflow. --------- Co-authored-by: charlesgauthereau <charles.gauthereau@soluce-technologies.com> Co-authored-by: killianlarcher <killian.larcher@soluce-technologies.com>
60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
import {Page} from "@playwright/test";
|
|
|
|
|
|
/**
|
|
* Locate a project card in the list.
|
|
*
|
|
* Executes from: `/dashboard/projects`.
|
|
*/
|
|
export function get(page: Page, projectName: string) {
|
|
return page.locator('a[href^="/dashboard/projects/"]').filter({hasText: projectName}).first();
|
|
}
|
|
|
|
/**
|
|
* Create a project from the selected entrypoint.
|
|
*
|
|
* Available entrypoints:
|
|
* - `emptyState`: the empty-state CTA.
|
|
* - `button`: the classic create button.
|
|
*
|
|
* * Executes from: `/dashboard/projects`.
|
|
*/
|
|
export async function create(page: Page, entrypoint: "emptyState" | "button", projectName: string) {
|
|
if (entrypoint === "emptyState") {
|
|
await page.getByText("Create new Project", {exact: true}).click();
|
|
} else {
|
|
await page.getByRole("button", {name: /Create Project/i}).click();
|
|
}
|
|
|
|
await page.getByLabel("Name").fill(projectName);
|
|
await page.getByRole("button", {name: "Create"}).click();
|
|
}
|
|
|
|
/**
|
|
* Edit an existing project from its details page.
|
|
*
|
|
* Executes from: `/dashboard/projects/[projectId]`.
|
|
*/
|
|
export async function edit(page: Page, currentName: string, updatedName: string) {
|
|
await get(page, currentName).click();
|
|
|
|
await page
|
|
.getByRole("button", {name: /Delete Project/i})
|
|
.locator("xpath=ancestor::div[1]/preceding-sibling::div[1]/*[1]")
|
|
.click();
|
|
|
|
await page.getByLabel("Name").fill(updatedName);
|
|
await page.getByRole("button", {name: "Update"}).click();
|
|
}
|
|
|
|
/**
|
|
* Delete an existing project from its details page.
|
|
*
|
|
* Executes from: `/dashboard/projects/[projectId]`.
|
|
* */
|
|
export async function remove(page: Page, projectName: string) {
|
|
await get(page, projectName).click();
|
|
await page.getByRole("button", {name: /Delete Project/i}).click();
|
|
await page.getByRole("button", {name: "Delete", exact: true}).click();
|
|
}
|