mirror of
https://github.com/penpot/penpot.git
synced 2025-05-10 20:46:37 +02: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
|
||||||
|
}
|
||||||
|
]
|
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");
|
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() {
|
async goToAccount() {
|
||||||
await this.userAccount.click();
|
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/ }),
|
dashboardPage.page.getByRole("button", { name: /New File 2/ }),
|
||||||
).toBeVisible();
|
).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"),
|
page.getByTestId("children-6ad3e6b9-c5a0-80cf-8005-283bbe378bcb"),
|
||||||
).toHaveText(["CBCDEF"]);
|
).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}]
|
[{:keys [class title subtitle type children] :rest props}]
|
||||||
|
|
||||||
(let [class (dm/str class " " (stl/css :empty-placeholder))
|
(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)
|
type (or type 1)
|
||||||
decoration-type (dm/str "empty-placeholder-" (str type))]
|
decoration-type (dm/str "empty-placeholder-" (str type))]
|
||||||
[:> "div" props
|
[:> "div" props
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue