From ca2668f1259c8919dc9a43a3bb5322880b771c51 Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Thu, 11 Jan 2024 15:48:13 +0100 Subject: [PATCH 1/8] fix(pr): added solutions for batch 6 tasks 1 and 3 --- .../pageBuilder/blocks/pageBlockPreview.cy.ts | 72 +++++++++++++++++++ .../menus/pagesListMenuItemType.cy.ts | 6 +- cypress-tests/cypress/support/commands.js | 2 + .../cypress/support/login/visitWebsite.ts | 14 ++++ .../pageBuilder/pbCreateCategoryAndBlocks.ts | 36 +++++++++- .../support/pageBuilder/pbUpdatePageBlock.ts | 59 +++++++++++++++ 6 files changed, 184 insertions(+), 5 deletions(-) create mode 100644 cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts create mode 100644 cypress-tests/cypress/support/login/visitWebsite.ts create mode 100644 cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts new file mode 100644 index 00000000000..d8413fc4e4b --- /dev/null +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts @@ -0,0 +1,72 @@ +import { customAlphabet } from "nanoid"; + +context("Page Builder - Blocks", () => { + const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); + beforeEach(() => { + cy.login(); + cy.pbDeleteAllBlocks(); + cy.pbDeleteAllBlockCategories(); + cy.pbDeleteAllTemplates(); + }); + + // Data used for creating multiple block categories. + const blockName = ["Block1Name"]; + const headerTitle = "Header test"; + const headerTitleUpdate = "Edited Header Text"; + const templateData = "tester"; + + const blockCategoryData = { + name: nanoid(10).toLowerCase(), + slug: nanoid(10).toLowerCase(), + icon: "icon-name", + description: nanoid(10).toLowerCase() + }; + + it("Should be able to programatically create and assert a block exists with a proper heading", () => { + cy.pbCreateCategoryAndBlocks({ + blockCategory: blockCategoryData, + blockNames: blockName, + headerText: headerTitle + }); + cy.visit("/page-builder/page-blocks"); + // Asserts the programatically created block contains the correct data. + cy.contains(blockCategoryData.name).click(); + cy.contains(blockName[0]).should("exist"); + cy.contains(headerTitle).should("exist"); + + // Edits the current header for headerTitleUpdate. + cy.findByTestId("pb-blocks-list-block-edit-btn").click(); + cy.get('pb-block:contains("Header test")').click(); + cy.get('[contenteditable="true"]').clear().type(headerTitleUpdate); + cy.contains("Save Changes").click(); + + // Asserts the newly edited header/block contains the right information. + cy.contains(blockCategoryData.name).click(); + cy.contains(blockName[0]).should("exist"); + cy.contains(headerTitleUpdate).should("exist"); + + // Navigate to the template page and create a new template. + cy.visit("/page-builder/page-templates"); + cy.findAllByTestId("pb-templates-list-new-template-btn").click(); + cy.findByRole("textbox", { name: "Title" }).type(templateData); + cy.findByRole("textbox", { name: "Slug" }).type(templateData); + cy.findByRole("textbox", { name: "Description" }).type(templateData); + cy.findByRole("button", { name: "Create" }).click(); + + // Assert the block is being properly displayed. + cy.findByTestId("pb-content-add-block-button").click(); + cy.findByTestId("pb-editor-page-blocks-list-item-block-1-name").contains(headerTitleUpdate); + + // Add the block to the template. + cy.contains(blockCategoryData.name).click(); + cy.get('button[label="Click to Add"]').click({ force: true }); + cy.contains("Save Changes").click(); + + // Assert the template is being displayed properly on the left and then the right side of the screen. + cy.findByTestId("default-data-list") + .find("li.mdc-list-item") + .should("contain", templateData); + cy.findByTestId("default-data-list").find("li.mdc-list-item").first().click(); + cy.get('[data-testid="pb-page-templates-form"]').contains(headerTitleUpdate); + }); +}); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.ts index 48e3d06d3fe..5247f92d8bf 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.ts @@ -84,7 +84,7 @@ describe("Page Builder - List Menu Item Types", () => { cy.findByText("Menu saved successfully."); }); it(`Step 2: assert that menu item and pages are shown (descending order)`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. @@ -122,7 +122,7 @@ describe("Page Builder - List Menu Item Types", () => { }); it(`Step 4: assert that menu item and pages are shown (ascending order)`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. @@ -154,7 +154,7 @@ describe("Page Builder - List Menu Item Types", () => { }); it(`Step 6: assert that the pages list menu item does not exist`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. diff --git a/cypress-tests/cypress/support/commands.js b/cypress-tests/cypress/support/commands.js index e8d92d8aedb..a3c379784ce 100644 --- a/cypress-tests/cypress/support/commands.js +++ b/cypress-tests/cypress/support/commands.js @@ -17,6 +17,7 @@ import "./pageBuilder/pbCreateCategoryAndBlocks"; import "./pageBuilder/pbUpdatePage"; import "./pageBuilder/pbCreateCategory"; import "./pageBuilder/pbDeleteAllCategories"; +import "./pageBuilder/pbUpdatePageBlock"; import "./pageBuilder/pbPublishPage"; import "./pageBuilder/pbDeleteAllPages"; import "./pageBuilder/pbDeletePage"; @@ -29,6 +30,7 @@ import "./pageBuilder/pbDeleteAllBlockCategories"; import "./pageBuilder/pbListBlockCategories"; import "./pageBuilder/pbCreateCategory"; import "./pageBuilder/pbDeleteCategory"; +import "./login/visitWebsite"; import "./headlessCms/cmsCreateContentModel"; import "./headlessCms/cmsUpdateContentModel"; import "./headlessCms/cmsDeleteContentModel"; diff --git a/cypress-tests/cypress/support/login/visitWebsite.ts b/cypress-tests/cypress/support/login/visitWebsite.ts new file mode 100644 index 00000000000..f95810b92a9 --- /dev/null +++ b/cypress-tests/cypress/support/login/visitWebsite.ts @@ -0,0 +1,14 @@ +import "../utils"; + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Cypress { + interface Chainable { + visitWebsite(url: string): Promise<void>; + } + } +} + +Cypress.Commands.add("visitWebsite", url => { + cy.visit(Cypress.env("WEBSITE_URL") + url); +}); diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts index 5f521d912dc..569644eb57f 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts @@ -3,6 +3,7 @@ import { gqlClient } from "../utils"; interface CreateCategoryAndBlocksParams { blockCategory: Record<string, any>; blockNames: string[]; + headerText?: string; } declare global { @@ -16,6 +17,37 @@ declare global { } } +const blockData = (headerText?: string) => ({ + type: "heading", + data: { + text: { + desktop: { + type: "heading", + alignment: "left", + tag: "h1" + }, + data: { + text: `{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"${headerText}\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"heading-element\",\"version\":1,\"tag\":\"h1\",\"styles\":[{\"styleId\":\"heading1\",\"type\":\"typography\"}]}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}` + } + }, + settings: { + margin: { + desktop: { + all: "0px" + } + }, + padding: { + desktop: { + all: "0px" + } + } + } + }, + elements: [], + path: ["WoVi5gTm84", "2rYVcjPC07"], + id: "YQNWzGUybC" +}); + const CREATE_BLOCK_CATEGORY_MUTATION = /* GraphQL */ ` mutation CreateBlockCategory($data: PbBlockCategoryInput!) { pageBuilder { @@ -67,7 +99,7 @@ const CRATE_BLOCK_MUTATION = /* GraphQL */ ` } `; -Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames }) => { +Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, headerText }) => { cy.login().then(user => { const createCategoryPromise = gqlClient .request({ @@ -93,7 +125,7 @@ Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames } id: "xyz", type: "block", data: {}, - elements: [] + elements: headerText ? [blockData(headerText)] : [] } } }, diff --git a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts new file mode 100644 index 00000000000..25510d9776d --- /dev/null +++ b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts @@ -0,0 +1,59 @@ +import { gqlClient } from "../utils"; + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Cypress { + interface Chainable { + pbUpdatePageBlock(id: string, data: any): Promise<any>; + } + } +} +const UPDATE_PAGE_BLOCK = /* GraphQL */ ` + mutation UpdatePageBlock($id: ID!, $data: PbUpdatePageBlockInput!) { + pageBuilder { + pageBlock: updatePageBlock(id: $id, data: $data) { + data { + id + blockCategory + name + content + createdOn + createdBy { + id + displayName + type + } + } + error { + code + message + data + } + } + } + } +`; + +Cypress.Commands.add("pbUpdatePageBlock", (id, data) => { + return cy.login().then(user => { + return gqlClient + .request({ + query: UPDATE_PAGE_BLOCK, + variables: { + id, + data: { + blockCategory: data.slug, + name: data.name, + content: { + id: "xyz", + type: "block", + data: {}, + elements: [data.content.elements] + } + } + }, + authToken: user.idToken.jwtToken + }) + .then(response => response.pageBuilder.pageTemplate); + }); +}); From 139f53ceffaf5e69f8351f681455c6ee5d25905d Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Sun, 14 Jan 2024 14:38:30 +0100 Subject: [PATCH 2/8] fix(pr): added solutions for batch 6 task 2 --- .../pageBuilder/blocks/pageBlockPreview.cy.ts | 13 ++++----- .../admin/pageBuilder/blocks/pageBlocks.cy.ts | 27 +++++++++---------- .../pageBuilder/blocks/pageBlocksCrud.cy.ts | 7 +++-- .../blocks/pageBlocksExportImport.cy.ts | 24 +++++++---------- .../category/pageCategoriesCrud.cy.ts | 19 +++++++------ .../admin/pageBuilder/menus/menuCrud.cy.ts | 7 +++-- .../admin/pageBuilder/menus/menuItems.cy.ts | 12 ++++----- .../templates/pageTemplatesCrud.cy.ts | 7 +++-- .../templates/pageTemplatesDialogSearch.cy.ts | 25 +++++++++-------- .../templates/pageTemplatesExportImport.cy.ts | 25 +++++++++-------- .../templates/pageTemplatesSearch.cy.ts | 26 +++++++++--------- .../templates/pageTemplatesSorting.cy.ts | 19 +++++++------ .../templates/templatesVisible.cy.ts | 9 +++---- .../blocks/pageBlocksExportImport.cy.ts | 18 ++++++------- 14 files changed, 109 insertions(+), 129 deletions(-) diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts index d8413fc4e4b..b4cdcaece36 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts @@ -1,25 +1,21 @@ -import { customAlphabet } from "nanoid"; - +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Blocks", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); beforeEach(() => { cy.login(); cy.pbDeleteAllBlocks(); cy.pbDeleteAllBlockCategories(); cy.pbDeleteAllTemplates(); }); - - // Data used for creating multiple block categories. const blockName = ["Block1Name"]; const headerTitle = "Header test"; const headerTitleUpdate = "Edited Header Text"; const templateData = "tester"; const blockCategoryData = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; it("Should be able to programatically create and assert a block exists with a proper heading", () => { @@ -28,6 +24,7 @@ context("Page Builder - Blocks", () => { blockNames: blockName, headerText: headerTitle }); + cy.visit("/page-builder/page-blocks"); // Asserts the programatically created block contains the correct data. cy.contains(blockCategoryData.name).click(); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts index c5430410ef8..9aa8fcdbf4e 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocks.cy.ts @@ -1,7 +1,6 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Blocks", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); beforeEach(() => { cy.login(); cy.pbDeleteAllBlocks(); @@ -15,31 +14,31 @@ context("Page Builder - Blocks", () => { const blockNames4 = ["!#$%&/()="]; const blockCategoryData1 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData2 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData3 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData4 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; it("Should be able to use the search bar as expected", () => { diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts index fe35a5cdd31..fefaada8873 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts @@ -1,9 +1,8 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Blocks", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const blockCategoryName = nanoid(10); // Generate a random 10-character lowercase string - const blockCategorySlug = nanoid(10); // Generate another random 10-character lowercase string + const blockCategoryName = generateAlphaLowerCaseId(10); // Generate a random 10-character lowercase string + const blockCategorySlug = generateAlphaLowerCaseId(10); // Generate another random 10-character lowercase string beforeEach(() => { cy.login(); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts index ead2e937481..209a1261aff 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts @@ -1,8 +1,6 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Blocks Export/Import", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - beforeEach(() => { cy.login(); cy.pbDeleteAllBlocks(); @@ -10,31 +8,29 @@ context("Page Builder - Blocks Export/Import", () => { }); const blockNames1 = ["Block1Name"]; - const blockNames2 = ["Block1Name", "Block2Name"]; - const blockNames3 = ["Block1Name", "Block2Name", "Block3Name"]; //Data used for creating multible block categories const blockCategoryData1 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData2 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData3 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; it("Test the importation and exportation of all blocks", () => { diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/category/pageCategoriesCrud.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/category/pageCategoriesCrud.cy.ts index e871f131208..b96ad50e27c 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/category/pageCategoriesCrud.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/category/pageCategoriesCrud.cy.ts @@ -1,15 +1,14 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Categories CRUD", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const categoryName = nanoid(6); - const categoryNameEdited = nanoid(6); - const categorySlug = nanoid(6); - const categoryUrl = "/" + nanoid(6) + "/"; - const categoryUrlEdited = "/" + nanoid(6) + "/"; - const categoryNameValidate = nanoid(6); - const categorySlugValidate = nanoid(6); - const categoryUrlValidate = "/" + nanoid(6) + "/"; + const categoryName = generateAlphaLowerCaseId(6); + const categoryNameEdited = generateAlphaLowerCaseId(6); + const categorySlug = generateAlphaLowerCaseId(6); + const categoryUrl = "/" + generateAlphaLowerCaseId(6) + "/"; + const categoryUrlEdited = "/" + generateAlphaLowerCaseId(6) + "/"; + const categoryNameValidate = generateAlphaLowerCaseId(6); + const categorySlugValidate = generateAlphaLowerCaseId(6); + const categoryUrlValidate = "/" + generateAlphaLowerCaseId(6) + "/"; beforeEach(() => { cy.login(); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuCrud.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuCrud.cy.ts index 7920a8dea7f..8190f3d60fb 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuCrud.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuCrud.cy.ts @@ -1,9 +1,8 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Menu CRUD", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const menuName = nanoid(10); - const menuSlug = nanoid(10); + const menuName = generateAlphaLowerCaseId(10); + const menuSlug = generateAlphaLowerCaseId(10); const menuNameEdit = "Testing Menu123"; const menuDescEdit = "This is an edited description."; diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuItems.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuItems.cy.ts index 2bd8a3411b0..162e9214dcc 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuItems.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/menuItems.cy.ts @@ -1,19 +1,17 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Menu Items", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - - const pageListName = nanoid(10); + const pageListName = generateAlphaLowerCaseId(10); const pageListNameEdit = pageListName + "-edit"; - const linkName = nanoid(10); + const linkName = generateAlphaLowerCaseId(10); const linkURL = `/${linkName}/`; const linkNameEdit = linkName + "-edit"; const linkURLEdit = `/${linkNameEdit}/`; - const folderName = nanoid(10); + const folderName = generateAlphaLowerCaseId(10); const folderNameEdit = folderName + "-edit"; - const pageNameNew = nanoid(10); + const pageNameNew = generateAlphaLowerCaseId(10); const pageNameNewEdit = pageNameNew + "-edit"; const menuData = { diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesCrud.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesCrud.cy.ts index 0396446ebcf..c86f001b0e2 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesCrud.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesCrud.cy.ts @@ -1,9 +1,8 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Template CRUD", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const templateName = nanoid(10); - const templateNameEdit = nanoid(10); + const templateName = generateAlphaLowerCaseId(10); + const templateNameEdit = generateAlphaLowerCaseId(10); beforeEach(() => { cy.login(); cy.pbDeleteAllTemplates(); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesDialogSearch.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesDialogSearch.cy.ts index 8418a812957..d4d8913b3fe 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesDialogSearch.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesDialogSearch.cy.ts @@ -1,40 +1,39 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Page Templates Dialog Search", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const titleString1 = nanoid(6); - const titleString2 = nanoid(6); - const titleString3 = nanoid(6); + const titleString1 = generateAlphaLowerCaseId(10); + const titleString2 = generateAlphaLowerCaseId(10); + const titleString3 = generateAlphaLowerCaseId(10); const titleString4 = "!#$%&/()=?*"; const pageTemplateData1 = { title: titleString1, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData2 = { title: titleString2, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData3 = { title: titleString3, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData4 = { title: titleString4, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesExportImport.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesExportImport.cy.ts index 12d1cd1b025..c9aed80c595 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesExportImport.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesExportImport.cy.ts @@ -1,40 +1,39 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Template Export&Import", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); let url = ""; - const titleString1 = nanoid(6); - const titleString2 = nanoid(6); - const titleString3 = nanoid(6); + const titleString1 = generateAlphaLowerCaseId(10); + const titleString2 = generateAlphaLowerCaseId(10); + const titleString3 = generateAlphaLowerCaseId(10); const titleString4 = "!#$%&/()=?*"; const pageTemplateData1 = { title: titleString1, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData2 = { title: titleString2, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData3 = { title: titleString3, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData4 = { title: titleString4, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSearch.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSearch.cy.ts index ff021bd74c4..7efd66f0e4e 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSearch.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSearch.cy.ts @@ -1,39 +1,37 @@ -import { customAlphabet } from "nanoid"; - +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Template Search", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - const titleString1 = nanoid(6); - const titleString2 = nanoid(6); - const titleString3 = nanoid(6); + const titleString1 = generateAlphaLowerCaseId(10); + const titleString2 = generateAlphaLowerCaseId(10); + const titleString3 = generateAlphaLowerCaseId(10); const titleString4 = "!#$%&/()=?*"; const pageTemplateData1 = { title: titleString1, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData2 = { title: titleString2, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData3 = { title: titleString3, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData4 = { title: titleString4, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSorting.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSorting.cy.ts index 8c03f1ea847..c314b019191 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSorting.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/pageTemplatesSorting.cy.ts @@ -1,7 +1,6 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Template Sorting", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); const titleString1 = "ABC"; const titleString2 = "DEF"; const titleString3 = "GHI"; @@ -9,32 +8,32 @@ context("Page Builder - Template Sorting", () => { const pageTemplateData1 = { title: titleString1, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData2 = { title: titleString2, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData3 = { title: titleString3, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" }; const pageTemplateData4 = { title: titleString4, - slug: nanoid(6), - description: nanoid(6), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/templatesVisible.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/templatesVisible.cy.ts index c2c2931f7e8..c840292966e 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/templates/templatesVisible.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/templates/templatesVisible.cy.ts @@ -1,11 +1,10 @@ -import { customAlphabet } from "nanoid"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Template Visibility", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); const pageTemplateData1 = { - title: nanoid(6), - slug: nanoid(6), - description: nanoid(6), + title: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), + description: generateAlphaLowerCaseId(10), tags: [], layout: "static", pageCategory: "static" diff --git a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts b/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts index cb3fed5cd1b..8690438d40f 100644 --- a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts +++ b/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts @@ -17,24 +17,24 @@ context("Page Builder - Blocks Export/Import", () => { //Data used for creating multible block categories const blockCategoryData1 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData2 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; const blockCategoryData3 = { - name: nanoid(10).toLowerCase(), - slug: nanoid(10).toLowerCase(), + name: generateAlphaLowerCaseId(10), + slug: generateAlphaLowerCaseId(10), icon: "icon-name", - description: nanoid(10).toLowerCase() + description: generateAlphaLowerCaseId(10) }; it("Test the importation and exportation of all blocks", () => { From 61a39d08a1bd3701996fa4afd0a6e7fe848e1f3b Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Sun, 14 Jan 2024 15:36:56 +0100 Subject: [PATCH 3/8] fix(pr): refactored batch 6 task 1 for better readability --- .../pageBuilder/blocks/pageBlockPreview.cy.ts | 7 +- .../pageBuilder/blocks/pageBlocksCrud.cy.ts | 4 +- .../blocks/pageBlocksExportImport.cy.ts | 122 ------------------ .../pageBuilder/pbCreateCategoryAndBlocks.ts | 35 +++-- 4 files changed, 30 insertions(+), 138 deletions(-) delete mode 100644 cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts index b4cdcaece36..dabafff2087 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts @@ -22,7 +22,10 @@ context("Page Builder - Blocks", () => { cy.pbCreateCategoryAndBlocks({ blockCategory: blockCategoryData, blockNames: blockName, - headerText: headerTitle + block: { + type: "heading", + text: headerTitle + } }); cy.visit("/page-builder/page-blocks"); @@ -34,7 +37,7 @@ context("Page Builder - Blocks", () => { // Edits the current header for headerTitleUpdate. cy.findByTestId("pb-blocks-list-block-edit-btn").click(); cy.get('pb-block:contains("Header test")').click(); - cy.get('[contenteditable="true"]').clear().type(headerTitleUpdate); + cy.get('[contenteditable="true"]').clear().type(headerTitleUpdate).click(); cy.contains("Save Changes").click(); // Asserts the newly edited header/block contains the right information. diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts index fefaada8873..419829941d0 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlocksCrud.cy.ts @@ -1,8 +1,8 @@ import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Page Builder - Blocks", () => { - const blockCategoryName = generateAlphaLowerCaseId(10); // Generate a random 10-character lowercase string - const blockCategorySlug = generateAlphaLowerCaseId(10); // Generate another random 10-character lowercase string + const blockCategoryName = generateAlphaLowerCaseId(10); + const blockCategorySlug = generateAlphaLowerCaseId(10); beforeEach(() => { cy.login(); diff --git a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts b/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts deleted file mode 100644 index 8690438d40f..00000000000 --- a/cypress-tests/cypress/integration/admin/pageBuilder/blocks/pageBlocksExportImport.cy.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { customAlphabet } from "nanoid"; - -context("Page Builder - Blocks Export/Import", () => { - const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); - - beforeEach(() => { - cy.login(); - cy.pbDeleteAllBlocks(); - cy.pbDeleteAllBlockCategories(); - }); - - const blockNames1 = ["Block1Name"]; - - const blockNames2 = ["Block1Name", "Block2Name"]; - - const blockNames3 = ["Block1Name", "Block2Name", "Block3Name"]; - - //Data used for creating multible block categories - const blockCategoryData1 = { - name: generateAlphaLowerCaseId(10), - slug: generateAlphaLowerCaseId(10), - icon: "icon-name", - description: generateAlphaLowerCaseId(10) - }; - - const blockCategoryData2 = { - name: generateAlphaLowerCaseId(10), - slug: generateAlphaLowerCaseId(10), - icon: "icon-name", - description: generateAlphaLowerCaseId(10) - }; - - const blockCategoryData3 = { - name: generateAlphaLowerCaseId(10), - slug: generateAlphaLowerCaseId(10), - icon: "icon-name", - description: generateAlphaLowerCaseId(10) - }; - - it("Test the importation and exportation of all blocks", () => { - cy.visit("/page-builder/page-blocks"); - // Exports all created data and saves the exported string value. - cy.pbCreateCategoryAndBlocks({ - blockCategory: blockCategoryData1, - blockNames: blockNames1 - }); - cy.pbCreateCategoryAndBlocks({ - blockCategory: blockCategoryData2, - blockNames: blockNames2 - }); - cy.pbCreateCategoryAndBlocks({ - blockCategory: blockCategoryData3, - blockNames: blockNames3 - }); - - cy.findByPlaceholderText("Search blocks").should("exist"); - cy.findByTestId("pb-blocks-list-options-menu").click(); - cy.findByText("Export all blocks").click(); - cy.findByText("Your export is now ready!").should("exist"); - - cy.get("pb-blocks-export-dialog-export-url") - .invoke("text") - .then(text => { - const url = text.trim(); - console.log(url); - cy.pbDeleteAllBlockCategories(); - cy.pbDeleteAllBlocks(); - - cy.visit("/page-builder/page-blocks"); - cy.findByPlaceholderText("Search blocks").should("exist"); - cy.findByTestId("pb-blocks-list-options-menu").click(); - cy.findByRole("menuitem", { name: "Import blocks" }).click(); - cy.contains("Paste File URL").should("exist").click(); - cy.contains("File URL").type(url); - cy.contains("Continue").click(); - cy.findByText("All blocks have been imported").should("exist"); - cy.contains("Continue").click(); - - // Validation of imported blocks and categories. - cy.contains(blockCategoryData1.name).should("exist"); - cy.contains(blockCategoryData2.name).should("exist"); - cy.contains(blockCategoryData3.name).should("exist"); - - cy.contains(blockCategoryData1.name).click(); - cy.contains(blockNames1[0]).should("exist"); - cy.contains(blockCategoryData1.name).click(); - cy.contains(blockNames2[0]).should("exist"); - cy.contains(blockCategoryData1.name).click(); - cy.contains(blockNames3[0]).should("exist"); - }); - }); - - it("Test the importation and exportation functionality of the import block button", () => { - cy.visit("/page-builder/page-blocks"); - cy.pbCreateCategoryAndBlocks({ - blockCategory: blockCategoryData1, - blockNames: blockNames1 - }); - - cy.contains(blockCategoryData1.name).click(); - cy.findByTestId("pb-blocks-list-block-export-btn").click(); - cy.findByText("Your export is now ready!").should("exist"); - cy.get("span.link-text.mdc-typography--body2") - .invoke("text") - .then(url => { - cy.pbDeleteAllBlockCategories(); - cy.pbDeleteAllBlocks(); - - cy.visit("/page-builder/page-blocks"); - cy.findByTestId("pb-blocks-list-options-menu").click(); - cy.findByRole("menuitem", { name: "Import blocks" }).click(); - cy.contains("Paste File URL").should("exist").click(); - cy.contains("File URL").type(url); - cy.contains("Continue").click(); - cy.findByText("All blocks have been imported").should("exist"); - cy.contains("Continue").click(); - - cy.visit("/page-builder/page-blocks"); - cy.contains(blockCategoryData1.name).should("exist"); - }); - }); -}); diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts index 569644eb57f..da30e94236c 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts @@ -3,9 +3,14 @@ import { gqlClient } from "../utils"; interface CreateCategoryAndBlocksParams { blockCategory: Record<string, any>; blockNames: string[]; - headerText?: string; + block?: Block; } +type Block = { + type: string; + text: string; +}; + declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Cypress { @@ -17,9 +22,8 @@ declare global { } } -const blockData = (headerText?: string) => ({ - type: "heading", - data: { +const createHeadingBlock = (blockText: string) => { + return { text: { desktop: { type: "heading", @@ -27,7 +31,7 @@ const blockData = (headerText?: string) => ({ tag: "h1" }, data: { - text: `{\"root\":{\"children\":[{\"children\":[{\"detail\":0,\"format\":0,\"mode\":\"normal\",\"style\":\"\",\"text\":\"${headerText}\",\"type\":\"text\",\"version\":1}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"heading-element\",\"version\":1,\"tag\":\"h1\",\"styles\":[{\"styleId\":\"heading1\",\"type\":\"typography\"}]}],\"direction\":\"ltr\",\"format\":\"\",\"indent\":0,\"type\":\"root\",\"version\":1}}` + text: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${blockText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading-element","version":1,"tag":"h1","styles":[{"styleId":"heading1","type":"typography"}]}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}` } }, settings: { @@ -42,11 +46,18 @@ const blockData = (headerText?: string) => ({ } } } - }, - elements: [], - path: ["WoVi5gTm84", "2rYVcjPC07"], - id: "YQNWzGUybC" -}); + }; +}; + +const blockData = (blockText: string, blockType: string) => { + switch (blockType) { + case "heading": + return { + type: "heading", + data: createHeadingBlock(blockText) + }; + } +}; const CREATE_BLOCK_CATEGORY_MUTATION = /* GraphQL */ ` mutation CreateBlockCategory($data: PbBlockCategoryInput!) { @@ -99,7 +110,7 @@ const CRATE_BLOCK_MUTATION = /* GraphQL */ ` } `; -Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, headerText }) => { +Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, block }) => { cy.login().then(user => { const createCategoryPromise = gqlClient .request({ @@ -125,7 +136,7 @@ Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, id: "xyz", type: "block", data: {}, - elements: headerText ? [blockData(headerText)] : [] + elements: block ? [blockData(block.text, block.type)] : [] } } }, From 4f24857f4c236ab7fb45c32852eac96b01240263 Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Tue, 16 Jan 2024 11:52:04 +0100 Subject: [PATCH 4/8] fix(pr): made additional changes for batch 6 --- .../admin/formBuilder/forms/createForm.cy.ts | 8 +-- .../pageBuilder/blocks/pageBlockPreview.cy.ts | 2 +- .../menus/pagesListMenuItemType.cy.js | 6 +- cypress-tests/cypress/support/commands.js | 2 +- .../pageBuilder/pbCreateCategoryAndBlocks.ts | 57 +++++-------------- .../createHeadingBlock.ts | 29 ++++++++++ cypress-tests/cypress/support/utils.ts | 4 +- .../support/{login => }/visitWebsite.ts | 2 +- cypress-tests/package.json | 4 +- 9 files changed, 57 insertions(+), 57 deletions(-) create mode 100644 cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts rename cypress-tests/cypress/support/{login => }/visitWebsite.ts (94%) diff --git a/cypress-tests/cypress/e2e/admin/formBuilder/forms/createForm.cy.ts b/cypress-tests/cypress/e2e/admin/formBuilder/forms/createForm.cy.ts index 74c76dd7bd1..1fb37b66c5d 100644 --- a/cypress-tests/cypress/e2e/admin/formBuilder/forms/createForm.cy.ts +++ b/cypress-tests/cypress/e2e/admin/formBuilder/forms/createForm.cy.ts @@ -1,13 +1,11 @@ -import { customAlphabet } from "nanoid"; - -const nanoid = customAlphabet("abcdefghijklmnopqrstuvwxyz"); +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; context("Forms Creation", () => { beforeEach(() => cy.login()); describe("Create Form", () => { - const newFormTitle = `Test form 1 ${nanoid(10)}`; - const newFormTitle2 = `Test form 2 ${nanoid(10)}`; + const newFormTitle = `Test form 1 ${generateAlphaLowerCaseId(10)}`; + const newFormTitle2 = `Test form 2 ${generateAlphaLowerCaseId(10)}`; it("should be able to create form, rename it, publish it, create new revision and delete it", () => { cy.visit("/form-builder/forms"); diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts index dabafff2087..2e47c58b841 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts @@ -22,7 +22,7 @@ context("Page Builder - Blocks", () => { cy.pbCreateCategoryAndBlocks({ blockCategory: blockCategoryData, blockNames: blockName, - block: { + content: { type: "heading", text: headerTitle } diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.js b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.js index e271a861a72..902f3174195 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.js +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/menus/pagesListMenuItemType.cy.js @@ -92,7 +92,7 @@ describe.skip("Menus Module", () => { }); it(`Step 2: assert that menu item and pages are shown (descending order)`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. @@ -130,7 +130,7 @@ describe.skip("Menus Module", () => { }); it(`Step 4: assert that menu item and pages are shown (ascending order)`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. @@ -162,7 +162,7 @@ describe.skip("Menus Module", () => { }); it(`Step 6: assert that the pages list menu item does not exist`, () => { - cy.visit(Cypress.env("WEBSITE_URL") + `/page-${id}-${0}/`); + cy.visitWebsite(`/page-${id}-${0}/`); cy.reloadUntil(() => { // We wait until the document contains the newly added menu. diff --git a/cypress-tests/cypress/support/commands.js b/cypress-tests/cypress/support/commands.js index a3c379784ce..78a86b95761 100644 --- a/cypress-tests/cypress/support/commands.js +++ b/cypress-tests/cypress/support/commands.js @@ -30,7 +30,7 @@ import "./pageBuilder/pbDeleteAllBlockCategories"; import "./pageBuilder/pbListBlockCategories"; import "./pageBuilder/pbCreateCategory"; import "./pageBuilder/pbDeleteCategory"; -import "./login/visitWebsite"; +import "./visitWebsite"; import "./headlessCms/cmsCreateContentModel"; import "./headlessCms/cmsUpdateContentModel"; import "./headlessCms/cmsDeleteContentModel"; diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts index da30e94236c..146c81fa006 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts @@ -1,13 +1,13 @@ import { gqlClient } from "../utils"; - +import { createHeadingBlock } from "./pbCreateCategoryAndBlocks/createHeadingBlock"; interface CreateCategoryAndBlocksParams { blockCategory: Record<string, any>; blockNames: string[]; - block?: Block; + content?: Content; } -type Block = { - type: string; +type Content = { + type: "heading"; text: string; }; @@ -22,40 +22,17 @@ declare global { } } -const createHeadingBlock = (blockText: string) => { - return { - text: { - desktop: { - type: "heading", - alignment: "left", - tag: "h1" - }, - data: { - text: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${blockText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading-element","version":1,"tag":"h1","styles":[{"styleId":"heading1","type":"typography"}]}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}` - } - }, - settings: { - margin: { - desktop: { - all: "0px" - } - }, - padding: { - desktop: { - all: "0px" - } - } - } - }; -}; - -const blockData = (blockText: string, blockType: string) => { - switch (blockType) { +const contentData = (contentText: string, contentType: string) => { + switch (contentType) { case "heading": return { - type: "heading", - data: createHeadingBlock(blockText) + type: "block", + data: {}, + elements: [createHeadingBlock(contentText)] }; + + default: + return {}; } }; @@ -110,7 +87,7 @@ const CRATE_BLOCK_MUTATION = /* GraphQL */ ` } `; -Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, block }) => { +Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, content }) => { cy.login().then(user => { const createCategoryPromise = gqlClient .request({ @@ -129,15 +106,11 @@ Cypress.Commands.add("pbCreateCategoryAndBlocks", ({ blockCategory, blockNames, gqlClient.request({ query: CRATE_BLOCK_MUTATION, variables: { + id: "xyz", data: { name: blockName, blockCategory: categorySlug, - content: { - id: "xyz", - type: "block", - data: {}, - elements: block ? [blockData(block.text, block.type)] : [] - } + content: content ? contentData(content.text, content.type) : {} } }, authToken: user.idToken.jwtToken diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts new file mode 100644 index 00000000000..bacab41711c --- /dev/null +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts @@ -0,0 +1,29 @@ +export const createHeadingBlock = (blockText: string) => { + return { + type: "heading", + data: { + text: { + desktop: { + type: "heading", + alignment: "left", + tag: "h1" + }, + data: { + text: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${blockText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading-element","version":1,"tag":"h1","styles":[{"styleId":"heading1","type":"typography"}]}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}` + } + }, + settings: { + margin: { + desktop: { + all: "0px" + } + }, + padding: { + desktop: { + all: "0px" + } + } + } + } + }; +}; diff --git a/cypress-tests/cypress/support/utils.ts b/cypress-tests/cypress/support/utils.ts index 1742da21140..d8252e18357 100644 --- a/cypress-tests/cypress/support/utils.ts +++ b/cypress-tests/cypress/support/utils.ts @@ -1,6 +1,6 @@ import { GraphQLClient } from "graphql-request"; -import { customAlphabet } from "nanoid"; import { getSuperAdminUser, User } from "./login"; +import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; const DEFAULT_TENANT_ID = "root"; @@ -107,5 +107,5 @@ export const createGqlQuery = <TReturn, TVariables = Record<string, never>>( }; export const generateId = () => { - return customAlphabet("abcdefghijklmnopqrstuvwxyz", 10)(); + return generateAlphaLowerCaseId(10); }; diff --git a/cypress-tests/cypress/support/login/visitWebsite.ts b/cypress-tests/cypress/support/visitWebsite.ts similarity index 94% rename from cypress-tests/cypress/support/login/visitWebsite.ts rename to cypress-tests/cypress/support/visitWebsite.ts index f95810b92a9..e30f2c047fc 100644 --- a/cypress-tests/cypress/support/login/visitWebsite.ts +++ b/cypress-tests/cypress/support/visitWebsite.ts @@ -1,4 +1,4 @@ -import "../utils"; +import "./utils"; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace diff --git a/cypress-tests/package.json b/cypress-tests/package.json index 8cec83edc8f..b5d6424ef4a 100644 --- a/cypress-tests/package.json +++ b/cypress-tests/package.json @@ -19,8 +19,8 @@ "lodash": "^4.17.11", "nanoid": "^3.0.0", "node-fetch": "^2.6.1", - "typescript": "4.7.4", - "uniqid": "^5.2.0" + "uniqid": "^5.2.0", + "typescript": "4.7.4" }, "scripts": { "cypress:open": "yarn cypress open", From 730b1fc803cce24cc31459cae150f48952781ec5 Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Thu, 18 Jan 2024 17:24:16 +0100 Subject: [PATCH 5/8] fix(pr): made most of the changes as stated in the pr review --- .../pageBuilder/blocks/pageBlockPreview.cy.ts | 10 +++- .../pageBuilder/pbCreateCategoryAndBlocks.ts | 11 ++--- .../createHeadingBlock.ts | 48 +++++++++++-------- cypress-tests/package.json | 4 +- 4 files changed, 41 insertions(+), 32 deletions(-) diff --git a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts index 2e47c58b841..ef4fb7a2e5d 100644 --- a/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts +++ b/cypress-tests/cypress/e2e/admin/pageBuilder/blocks/pageBlockPreview.cy.ts @@ -1,5 +1,6 @@ import { generateAlphaLowerCaseId } from "@webiny/utils/generateId"; -context("Page Builder - Blocks", () => { + +context("Page Builder - Block Preview", () => { beforeEach(() => { cy.login(); cy.pbDeleteAllBlocks(); @@ -29,8 +30,13 @@ context("Page Builder - Blocks", () => { }); cy.visit("/page-builder/page-blocks"); + // Asserts the programatically created block contains the correct data. - cy.contains(blockCategoryData.name).click(); + cy.findByTestId("default-data-list").within(() => { + cy.get("li") + .first() + .within(() => cy.contains(blockCategoryData.name).should("exist").click()); + }); cy.contains(blockName[0]).should("exist"); cy.contains(headerTitle).should("exist"); diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts index 146c81fa006..95ea2b35f54 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks.ts @@ -1,15 +1,16 @@ import { gqlClient } from "../utils"; import { createHeadingBlock } from "./pbCreateCategoryAndBlocks/createHeadingBlock"; + interface CreateCategoryAndBlocksParams { blockCategory: Record<string, any>; blockNames: string[]; content?: Content; } -type Content = { +interface Content { type: "heading"; text: string; -}; +} declare global { // eslint-disable-next-line @typescript-eslint/no-namespace @@ -25,11 +26,7 @@ declare global { const contentData = (contentText: string, contentType: string) => { switch (contentType) { case "heading": - return { - type: "block", - data: {}, - elements: [createHeadingBlock(contentText)] - }; + return createHeadingBlock(contentText); default: return {}; diff --git a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts index bacab41711c..3e50973bc2f 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbCreateCategoryAndBlocks/createHeadingBlock.ts @@ -1,29 +1,35 @@ export const createHeadingBlock = (blockText: string) => { return { - type: "heading", - data: { - text: { - desktop: { - type: "heading", - alignment: "left", - tag: "h1" - }, + type: "block", + data: {}, + elements: [ + { + type: "heading", data: { - text: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${blockText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading-element","version":1,"tag":"h1","styles":[{"styleId":"heading1","type":"typography"}]}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}` - } - }, - settings: { - margin: { - desktop: { - all: "0px" - } - }, - padding: { - desktop: { - all: "0px" + text: { + desktop: { + type: "heading", + alignment: "left", + tag: "h1" + }, + data: { + text: `{"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"${blockText}","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"heading-element","version":1,"tag":"h1","styles":[{"styleId":"heading1","type":"typography"}]}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}` + } + }, + settings: { + margin: { + desktop: { + all: "0px" + } + }, + padding: { + desktop: { + all: "0px" + } + } } } } - } + ] }; }; diff --git a/cypress-tests/package.json b/cypress-tests/package.json index b5d6424ef4a..8cec83edc8f 100644 --- a/cypress-tests/package.json +++ b/cypress-tests/package.json @@ -19,8 +19,8 @@ "lodash": "^4.17.11", "nanoid": "^3.0.0", "node-fetch": "^2.6.1", - "uniqid": "^5.2.0", - "typescript": "4.7.4" + "typescript": "4.7.4", + "uniqid": "^5.2.0" }, "scripts": { "cypress:open": "yarn cypress open", From 95618d3d0adc7b7c35dbe8aac4e92815f41b730a Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Fri, 19 Jan 2024 10:15:55 +0100 Subject: [PATCH 6/8] fix(pr): made the final changes described in the pr --- .../support/pageBuilder/pbUpdatePageBlock.ts | 39 +++++++------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts index 25510d9776d..dc58ff25438 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts @@ -1,4 +1,4 @@ -import { gqlClient } from "../utils"; +import { createGqlQuery, GqlResponse } from "../utils"; declare global { // eslint-disable-next-line @typescript-eslint/no-namespace @@ -34,26 +34,17 @@ const UPDATE_PAGE_BLOCK = /* GraphQL */ ` } `; -Cypress.Commands.add("pbUpdatePageBlock", (id, data) => { - return cy.login().then(user => { - return gqlClient - .request({ - query: UPDATE_PAGE_BLOCK, - variables: { - id, - data: { - blockCategory: data.slug, - name: data.name, - content: { - id: "xyz", - type: "block", - data: {}, - elements: [data.content.elements] - } - } - }, - authToken: user.idToken.jwtToken - }) - .then(response => response.pageBuilder.pageTemplate); - }); -}); +export const pbUpdatePageBlock = createGqlQuery<GqlResponse<null>, { id: string }>( + UPDATE_PAGE_BLOCK +); + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace Cypress { + interface Chainable { + pbDeletePage: typeof pbUpdatePageBlock; + } + } +} + +Cypress.Commands.add("pbUpdatePageBlock", pbUpdatePageBlock); From c3d659da6cb3ac31b6e3071157a9a191848dfaa5 Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Fri, 19 Jan 2024 10:23:37 +0100 Subject: [PATCH 7/8] fix(pr): made additional changes to last commit --- .../support/pageBuilder/pbUpdatePageBlock.ts | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts index dc58ff25438..13bc9e06c81 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts @@ -1,13 +1,5 @@ import { createGqlQuery, GqlResponse } from "../utils"; -declare global { - // eslint-disable-next-line @typescript-eslint/no-namespace - namespace Cypress { - interface Chainable { - pbUpdatePageBlock(id: string, data: any): Promise<any>; - } - } -} const UPDATE_PAGE_BLOCK = /* GraphQL */ ` mutation UpdatePageBlock($id: ID!, $data: PbUpdatePageBlockInput!) { pageBuilder { @@ -34,17 +26,17 @@ const UPDATE_PAGE_BLOCK = /* GraphQL */ ` } `; -export const pbUpdatePageBlock = createGqlQuery<GqlResponse<null>, { id: string }>( - UPDATE_PAGE_BLOCK -); - declare global { // eslint-disable-next-line @typescript-eslint/no-namespace namespace Cypress { interface Chainable { - pbDeletePage: typeof pbUpdatePageBlock; + pbUpdatePageBlock: typeof pbUpdatePageBlock; } } } +export const pbUpdatePageBlock = createGqlQuery<GqlResponse<null>, { id: string }>( + UPDATE_PAGE_BLOCK +); + Cypress.Commands.add("pbUpdatePageBlock", pbUpdatePageBlock); From 8cd3def8199ff91db928527950725ee1c1bba8e6 Mon Sep 17 00:00:00 2001 From: Asmaloth <borna.dobrovic1@gmail.com> Date: Fri, 19 Jan 2024 11:48:54 +0100 Subject: [PATCH 8/8] fix(pr): fixed the remaining bugs related to pbUpdatePageBlock --- cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts index 13bc9e06c81..b541b7512f8 100644 --- a/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts +++ b/cypress-tests/cypress/support/pageBuilder/pbUpdatePageBlock.ts @@ -35,7 +35,7 @@ declare global { } } -export const pbUpdatePageBlock = createGqlQuery<GqlResponse<null>, { id: string }>( +export const pbUpdatePageBlock = createGqlQuery<GqlResponse<null>, { id: string; data: object }>( UPDATE_PAGE_BLOCK );