mirror of
https://github.com/penpot/penpot.git
synced 2025-04-01 09:31:26 -05:00
✨ Add integration tests to viewer role
This commit is contained in:
parent
df416af19b
commit
3a7d187110
10 changed files with 236 additions and 2 deletions
12
frontend/playwright/data/dashboard/get-all-projects.json
Normal file
12
frontend/playwright/data/dashboard/get-all-projects.json
Normal file
|
@ -0,0 +1,12 @@
|
|||
[
|
||||
{
|
||||
"~:id": "c7ce0794-0992-8105-8004-38e630f7920b",
|
||||
"~:team-id": "c7ce0794-0992-8105-8004-38e630f40f6d",
|
||||
"~:created-at": "~m1723794627396",
|
||||
"~:modified-at": "~m1731671259822",
|
||||
"~:is-default": true,
|
||||
"~:name": "Drafts",
|
||||
"~:team-name": "Default",
|
||||
"~:is-default-team": true
|
||||
}
|
||||
]
|
|
@ -0,0 +1,25 @@
|
|||
[
|
||||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": true,
|
||||
"~:is-admin": true,
|
||||
"~:can-edit": false
|
||||
},
|
||||
"~:name": "Default",
|
||||
"~:modified-at": "~m1713533116375",
|
||||
"~:id": "~uc7ce0794-0992-8105-8004-38e630f40f6d",
|
||||
"~:created-at": "~m1713533116375",
|
||||
"~:is-default": true
|
||||
}
|
||||
]
|
|
@ -20,4 +20,4 @@
|
|||
"~:id": "~uc7ce0794-0992-8105-8004-38e630f40f6d",
|
||||
"~:created-at": "~m1713533116375",
|
||||
"~:is-default": true
|
||||
}
|
||||
}
|
23
frontend/playwright/data/workspace/get-team-role-viewer.json
Normal file
23
frontend/playwright/data/workspace/get-team-role-viewer.json
Normal file
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"~:features": {
|
||||
"~#set": [
|
||||
"layout/grid",
|
||||
"styles/v2",
|
||||
"fdata/pointer-map",
|
||||
"fdata/objects-map",
|
||||
"components/v2",
|
||||
"fdata/shape-data-type"
|
||||
]
|
||||
},
|
||||
"~:permissions": {
|
||||
"~:type": "~:membership",
|
||||
"~:is-owner": false,
|
||||
"~:is-admin": false,
|
||||
"~:can-edit": false
|
||||
},
|
||||
"~:name": "Default",
|
||||
"~:modified-at": "~m1713533116375",
|
||||
"~:id": "~uc7ce0794-0992-8105-8004-38e630f40f6d",
|
||||
"~:created-at": "~m1713533116375",
|
||||
"~:is-default": true
|
||||
}
|
|
@ -259,6 +259,11 @@ export class DashboardPage extends BaseWebSocketPage {
|
|||
await expect(this.mainHeading).toHaveText("Drafts");
|
||||
}
|
||||
|
||||
async goToFonts() {
|
||||
await this.page.goto(`#/dashboard/team/${DashboardPage.anyTeamId}/fonts`);
|
||||
await expect(this.mainHeading).toHaveText("Fonts");
|
||||
}
|
||||
|
||||
async goToAccount() {
|
||||
await this.userAccount.click();
|
||||
|
||||
|
|
66
frontend/playwright/ui/specs/dashboard-viewer-role.spec.js
Normal file
66
frontend/playwright/ui/specs/dashboard-viewer-role.spec.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
import { test, expect } from "@playwright/test";
|
||||
import DashboardPage from "../pages/DashboardPage";
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await DashboardPage.init(page);
|
||||
await DashboardPage.mockRPC(
|
||||
page,
|
||||
"get-profile",
|
||||
"logged-in-user/get-profile-logged-in-no-onboarding.json",
|
||||
);
|
||||
await DashboardPage.mockRPC(
|
||||
page,
|
||||
"get-teams",
|
||||
"logged-in-user/get-teams-role-viewer.json",
|
||||
);
|
||||
});
|
||||
|
||||
test("User can't create a new project", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.goToDashboard();
|
||||
await expect(dashboardPage.addProjectButton).toBeHidden();
|
||||
});
|
||||
|
||||
test("User has an empty placeholder", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.goToDashboard();
|
||||
await expect(
|
||||
dashboardPage.page.getByTestId("empty-placeholder"),
|
||||
).toBeVisible();
|
||||
});
|
||||
|
||||
test("User hasn't context menu options for edit file", async ({ page }) => {
|
||||
await DashboardPage.mockRPC(
|
||||
page,
|
||||
"get-all-projects",
|
||||
"dashboard/get-all-projects.json",
|
||||
);
|
||||
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.setupDrafts();
|
||||
await dashboardPage.goToDrafts();
|
||||
|
||||
const button = dashboardPage.page.getByRole("button", { name: /New File 2/ });
|
||||
await button.click();
|
||||
await button.click({ button: "right" });
|
||||
|
||||
await expect(dashboardPage.page.getByText("rename")).toBeHidden();
|
||||
await expect(dashboardPage.page.getByText("duplicate")).toBeHidden();
|
||||
await expect(
|
||||
dashboardPage.page.getByText("add as shared library"),
|
||||
).toBeHidden();
|
||||
await expect(dashboardPage.page.getByText("delete")).toBeHidden();
|
||||
});
|
||||
|
||||
test("User hasn't create file button", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.setupDrafts();
|
||||
await dashboardPage.goToDrafts();
|
||||
await expect(dashboardPage.page.getByText("+ New File")).toBeHidden();
|
||||
});
|
||||
|
||||
test("User hasn't add font button", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.goToFonts();
|
||||
await expect(dashboardPage.page.getByText("add custom font")).toBeHidden();
|
||||
});
|
|
@ -52,3 +52,47 @@ test("Lists files in the drafts page", async ({ page }) => {
|
|||
dashboardPage.page.getByRole("button", { name: /New File 2/ }),
|
||||
).toBeVisible();
|
||||
});
|
||||
|
||||
test("User hasn't an empty placeholder", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.goToDashboard();
|
||||
await expect(
|
||||
dashboardPage.page.getByTestId("empty-placeholder"),
|
||||
).toBeHidden();
|
||||
});
|
||||
|
||||
test("User has context menu options for edit file", async ({ page }) => {
|
||||
await DashboardPage.mockRPC(
|
||||
page,
|
||||
"get-all-projects",
|
||||
"dashboard/get-all-projects.json",
|
||||
);
|
||||
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.setupDrafts();
|
||||
await dashboardPage.goToDrafts();
|
||||
|
||||
const button = dashboardPage.page.getByRole("button", { name: /New File 2/ });
|
||||
await button.click();
|
||||
await button.click({ button: "right" });
|
||||
|
||||
await expect(dashboardPage.page.getByText("rename")).toBeVisible();
|
||||
await expect(dashboardPage.page.getByText("duplicate")).toBeVisible();
|
||||
await expect(
|
||||
dashboardPage.page.getByText("add as shared library"),
|
||||
).toBeVisible();
|
||||
await expect(dashboardPage.page.getByText("delete")).toBeVisible();
|
||||
});
|
||||
|
||||
test("User has create file button", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.setupDrafts();
|
||||
await dashboardPage.goToDrafts();
|
||||
await expect(dashboardPage.page.getByText("+ New File")).toBeVisible();
|
||||
});
|
||||
|
||||
test("User has add font button", async ({ page }) => {
|
||||
const dashboardPage = new DashboardPage(page);
|
||||
await dashboardPage.goToFonts();
|
||||
await expect(dashboardPage.page.getByText("add custom font")).toBeVisible();
|
||||
});
|
||||
|
|
34
frontend/playwright/ui/specs/workspace-viewer-role.spec.js
Normal file
34
frontend/playwright/ui/specs/workspace-viewer-role.spec.js
Normal file
|
@ -0,0 +1,34 @@
|
|||
import { test, expect } from "@playwright/test";
|
||||
import { WorkspacePage } from "../pages/WorkspacePage";
|
||||
import { presenceFixture } from "../../data/workspace/ws-notifications";
|
||||
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await WorkspacePage.init(page);
|
||||
|
||||
const workspacePage = new WorkspacePage(page);
|
||||
await workspacePage.setupEmptyFile(page);
|
||||
await WorkspacePage.mockRPC(
|
||||
page,
|
||||
"get-team?id=*",
|
||||
"workspace/get-team-role-viewer.json",
|
||||
);
|
||||
|
||||
await workspacePage.goToWorkspace();
|
||||
});
|
||||
|
||||
test("User haven't toolbar", async ({ page }) => {
|
||||
await expect(page.getByTitle("toggle toolbar")).toBeHidden();
|
||||
await expect(page.getByTitle("design")).toBeHidden();
|
||||
});
|
||||
|
||||
test("User haven't edition menu entries", async ({ page }) => {
|
||||
await page.getByTitle("main menu").click();
|
||||
await page.getByText("file").last().click();
|
||||
|
||||
await expect(page.getByText("Add as Shared Library")).toBeHidden();
|
||||
|
||||
await page.getByText("edit").click();
|
||||
|
||||
await expect(page.getByText("Undo")).toBeHidden();
|
||||
await expect(page.getByText("Redo")).toBeHidden();
|
||||
});
|
|
@ -225,3 +225,28 @@ test("Bug 9066 - Problem with grid layout", async ({ page }) => {
|
|||
page.getByTestId("children-6ad3e6b9-c5a0-80cf-8005-283bbe378bcb"),
|
||||
).toHaveText(["CBCDEF"]);
|
||||
});
|
||||
|
||||
test("User have toolbar", async ({ page }) => {
|
||||
const workspacePage = new WorkspacePage(page);
|
||||
await workspacePage.setupEmptyFile(page);
|
||||
await workspacePage.goToWorkspace();
|
||||
|
||||
await expect(page.getByTitle("toggle toolbar")).toBeVisible();
|
||||
await expect(page.getByTitle("design")).toBeVisible();
|
||||
});
|
||||
|
||||
test("User have edition menu entries", async ({ page }) => {
|
||||
const workspacePage = new WorkspacePage(page);
|
||||
await workspacePage.setupEmptyFile(page);
|
||||
await workspacePage.goToWorkspace();
|
||||
|
||||
await page.getByTitle("Main menu").click();
|
||||
await page.getByText("file").last().click();
|
||||
|
||||
await expect(page.getByText("Add as Shared Library")).toBeVisible();
|
||||
|
||||
await page.getByText("edit").click();
|
||||
|
||||
await expect(page.getByText("Undo")).toBeVisible();
|
||||
await expect(page.getByText("Redo")).toBeVisible();
|
||||
});
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
[{:keys [class title subtitle type children] :rest props}]
|
||||
|
||||
(let [class (dm/str class " " (stl/css :empty-placeholder))
|
||||
props (mf/spread-props props {:class class})
|
||||
props (mf/spread-props props {:class class :data-testid "empty-placeholder"})
|
||||
type (or type 1)
|
||||
decoration-type (dm/str "empty-placeholder-" (str type))]
|
||||
[:> "div" props
|
||||
|
|
Loading…
Add table
Reference in a new issue