mirror of
https://github.com/penpot/penpot.git
synced 2025-01-21 22:22:43 -05:00
3e090b126e
Mainly removes an inconsistent use of path params and normalize all routes to use query params for make it extensible without breaking urls.
282 lines
7.3 KiB
JavaScript
282 lines
7.3 KiB
JavaScript
import { expect } from "@playwright/test";
|
|
import { BaseWebSocketPage } from "./BaseWebSocketPage";
|
|
|
|
export class DashboardPage extends BaseWebSocketPage {
|
|
static async init(page) {
|
|
await BaseWebSocketPage.initWebSockets(page);
|
|
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-teams",
|
|
"logged-in-user/get-teams-default.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-font-variants?team-id=*",
|
|
"workspace/get-font-variants-empty.json",
|
|
);
|
|
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-projects?team-id=*",
|
|
"logged-in-user/get-projects-default.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-team-members?team-id=*",
|
|
"logged-in-user/get-team-members-your-penpot.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-team-users?team-id=*",
|
|
"logged-in-user/get-team-users-single-user.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-unread-comment-threads?team-id=*",
|
|
"logged-in-user/get-team-users-single-user.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-team-recent-files?team-id=*",
|
|
"logged-in-user/get-team-recent-files-empty.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-profiles-for-file-comments",
|
|
"workspace/get-profile-for-file-comments.json",
|
|
);
|
|
await BaseWebSocketPage.mockRPC(
|
|
page,
|
|
"get-builtin-templates",
|
|
"logged-in-user/get-built-in-templates-empty.json",
|
|
);
|
|
}
|
|
|
|
static anyTeamId = "c7ce0794-0992-8105-8004-38e630f40f6d";
|
|
static secondTeamId = "dd33ff88-f4e5-8033-8003-8096cc07bdf3";
|
|
static draftProjectId = "c7ce0794-0992-8105-8004-38e630f7920b";
|
|
|
|
constructor(page) {
|
|
super(page);
|
|
|
|
this.sidebar = page.getByTestId("dashboard-sidebar");
|
|
this.sidebarMenu = this.sidebar.getByRole("menu");
|
|
this.mainHeading = page
|
|
.getByTestId("dashboard-header")
|
|
.getByRole("heading", { level: 1 });
|
|
|
|
this.addProjectButton = page.getByRole("button", { name: "+ NEW PROJECT" });
|
|
this.projectName = page.getByText("Project 1");
|
|
|
|
this.draftsLink = this.sidebar.getByText("Drafts");
|
|
this.fontsLink = this.sidebar.getByText("Fonts");
|
|
this.libsLink = this.sidebar.getByText("Libraries");
|
|
|
|
this.searchButton = page.getByRole("button", { name: "dashboard-search" });
|
|
this.searchInput = page.getByPlaceholder("Search…");
|
|
|
|
this.teamDropdown = this.sidebar.getByRole("button", {
|
|
name: "Your Penpot",
|
|
});
|
|
this.userAccount = this.sidebar.getByRole("button", {
|
|
name: /Princesa Leia/,
|
|
});
|
|
this.userProfileOption = this.sidebarMenu.getByText("Your account");
|
|
}
|
|
|
|
async setupDraftsEmpty() {
|
|
await this.mockRPC(
|
|
"get-project-files?project-id=*",
|
|
"dashboard/get-project-files-empty.json",
|
|
);
|
|
}
|
|
|
|
async setupSearchEmpty() {
|
|
await this.mockRPC("search-files", "dashboard/search-files-empty.json", {
|
|
method: "POST",
|
|
});
|
|
}
|
|
|
|
async setupLibrariesEmpty() {
|
|
await this.mockRPC(
|
|
"get-team-shared-files?team-id=*",
|
|
"dashboard/get-shared-files-empty.json",
|
|
);
|
|
}
|
|
|
|
async setupDrafts() {
|
|
await this.mockRPC(
|
|
"get-project-files?project-id=*",
|
|
"dashboard/get-project-files.json",
|
|
);
|
|
|
|
await this.mockRPC(/assets\/by-id/gi, "dashboard/thumbnail.png", {
|
|
contentType: "image/png",
|
|
});
|
|
}
|
|
|
|
async setupNewProject() {
|
|
await this.mockRPC("create-project", "dashboard/create-project.json", {
|
|
method: "POST",
|
|
});
|
|
await this.mockRPC(
|
|
"get-projects?team-id=*",
|
|
"dashboard/get-projects-new.json",
|
|
);
|
|
}
|
|
|
|
async setupDashboardFull() {
|
|
await this.mockRPC(
|
|
"get-projects?team-id=*",
|
|
"dashboard/get-projects-full.json",
|
|
);
|
|
await this.mockRPC(
|
|
"get-project-files?project-id=*",
|
|
"dashboard/get-project-files.json",
|
|
);
|
|
await this.mockRPC(
|
|
"get-team-shared-files?team-id=*",
|
|
"dashboard/get-shared-files.json",
|
|
);
|
|
await this.mockRPC(
|
|
"get-team-shared-files?project-id=*",
|
|
"dashboard/get-shared-files.json",
|
|
);
|
|
await this.mockRPC(
|
|
"get-team-recent-files?team-id=*",
|
|
"dashboard/get-team-recent-files.json",
|
|
);
|
|
await this.mockRPC(
|
|
"get-font-variants?team-id=*",
|
|
"dashboard/get-font-variants.json",
|
|
);
|
|
await this.mockRPC("search-files", "dashboard/search-files.json", {
|
|
method: "POST",
|
|
});
|
|
await this.mockRPC("search-files", "dashboard/search-files.json");
|
|
await this.mockRPC("get-teams", "logged-in-user/get-teams-complete.json");
|
|
}
|
|
|
|
async setupAccessTokensEmpty() {
|
|
await this.mockRPC(
|
|
"get-access-tokens",
|
|
"dashboard/get-access-tokens-empty.json",
|
|
);
|
|
}
|
|
|
|
async createAccessToken() {
|
|
await this.mockRPC(
|
|
"create-access-token",
|
|
"dashboard/create-access-token.json",
|
|
{ method: "POST" },
|
|
);
|
|
}
|
|
|
|
async setupAccessTokens() {
|
|
await this.mockRPC("get-access-tokens", "dashboard/get-access-tokens.json");
|
|
}
|
|
|
|
async setupTeamInvitationsEmpty() {
|
|
await this.mockRPC(
|
|
"get-team-invitations?team-id=*",
|
|
"dashboard/get-team-invitations-empty.json",
|
|
);
|
|
}
|
|
|
|
async setupTeamInvitations() {
|
|
await this.mockRPC(
|
|
"get-team-invitations?team-id=*",
|
|
"dashboard/get-team-invitations.json",
|
|
);
|
|
}
|
|
|
|
async setupTeamWebhooksEmpty() {
|
|
await this.mockRPC(
|
|
"get-webhooks?team-id=*",
|
|
"dashboard/get-webhooks-empty.json",
|
|
);
|
|
}
|
|
|
|
async setupTeamWebhooks() {
|
|
await this.mockRPC("get-webhooks?team-id=*", "dashboard/get-webhooks.json");
|
|
}
|
|
|
|
async setupTeamSettings() {
|
|
await this.mockRPC(
|
|
"get-team-stats?team-id=*",
|
|
"dashboard/get-team-stats.json",
|
|
);
|
|
}
|
|
|
|
async goToDashboard() {
|
|
await this.page.goto(
|
|
`#/dashboard/recent?team-id=${DashboardPage.anyTeamId}`,
|
|
);
|
|
await expect(this.mainHeading).toBeVisible();
|
|
}
|
|
|
|
async goToSecondTeamDashboard() {
|
|
await this.page.goto(
|
|
`#/dashboard/recent?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSecondTeamMembersSection() {
|
|
await this.page.goto(
|
|
`#/dashboard/members?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSecondTeamInvitationsSection() {
|
|
await this.page.goto(
|
|
`#/dashboard/invitations?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSecondTeamWebhooksSection() {
|
|
await this.page.goto(
|
|
`#/dashboard/webhooks?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSecondTeamWebhooksSection() {
|
|
await this.page.goto(
|
|
`#/dashboard/webhooks?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSecondTeamSettingsSection() {
|
|
await this.page.goto(
|
|
`#/dashboard/settings?team-id=${DashboardPage.secondTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToSearch() {
|
|
await this.page.goto(
|
|
`#/dashboard/search?team-id=${DashboardPage.anyTeamId}`,
|
|
);
|
|
}
|
|
|
|
async goToDrafts() {
|
|
await this.page.goto(
|
|
`#/dashboard/files?team-id=${DashboardPage.anyTeamId}&project-id=${DashboardPage.draftProjectId}`,
|
|
);
|
|
await expect(this.mainHeading).toHaveText("Drafts");
|
|
}
|
|
|
|
async goToFonts() {
|
|
await this.page.goto(
|
|
`#/dashboard/fonts?team-id=${DashboardPage.anyTeamId}`,
|
|
);
|
|
await expect(this.mainHeading).toHaveText("Fonts");
|
|
}
|
|
|
|
async goToAccount() {
|
|
await this.userAccount.click();
|
|
|
|
await this.userProfileOption.click();
|
|
}
|
|
}
|
|
|
|
export default DashboardPage;
|