| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- import { test, expect } from "../setup";
- import {
- generateName,
- generateSlug,
- generateDescription,
- } from "../utils/faker";
- async function createPage(adminPage) {
- const cms = {
- name: generateName(),
- slug: generateSlug(),
- shortDescription: generateDescription(),
- };
- /**
- * Reaching the create page.
- */
- await adminPage.goto("admin/cms");
- await adminPage.waitForSelector(
- 'a.primary-button:has-text("Create Page")',
- { state: "visible" }
- );
- await adminPage.click('a.primary-button:has-text("Create Page")');
- /**
- * Description Section.
- */
- await adminPage.fillInTinymce("#content_ifr", cms.shortDescription);
- /**
- * General Section.
- */
- await adminPage.fill("#page_title", cms.name);
- await adminPage.click('label[for="channels_1"]');
- await expect(adminPage.locator("input#channels_1")).toBeChecked();
- /**
- * SEO Section.
- */
- await adminPage.fill("#meta_title", cms.name);
- await adminPage.fill("#url_key", cms.slug);
- await adminPage.fill("#meta_keywords", cms.name);
- await adminPage.fill("#meta_description", cms.shortDescription);
- /**
- * Now submit the form.
- */
- await adminPage.click('button.primary-button:has-text("Save Page")');
- await expect(
- adminPage.locator("#app p", { hasText: "CMS created successfully." })
- ).toBeVisible();
- await expect(adminPage.getByText(cms.name)).toBeVisible();
- await expect(adminPage.getByText(cms.slug)).toBeVisible();
- return cms;
- }
- test.describe("cms management", () => {
- test("should create a page", async ({ adminPage }) => {
- await createPage(adminPage);
- });
- test("should edit a page", async ({ adminPage }) => {
- const cms = {
- name: generateName(),
- slug: generateSlug(),
- shortDescription: generateDescription(),
- };
- /**
- * Reaching the edit CMS page.
- */
- await adminPage.goto("admin/cms");
- await adminPage.waitForSelector("span.cursor-pointer.icon-edit");
- const iconEdit = await adminPage.$$("span.cursor-pointer.icon-edit");
- await iconEdit[0].click();
- /**
- * Edit General Section.
- */
- await adminPage.getByRole("textbox", { name: "Page Title" }).fill("");
- await adminPage
- .getByRole("textbox", { name: "Page Title" })
- .fill(cms.name);
- /**
- * Edit Description Section.
- */
- const editorFrame = adminPage.frameLocator(
- "iframe.tox-edit-area__iframe"
- );
- await editorFrame.locator("body").fill(cms.shortDescription);
- /**
- * Edit SEO Section.
- */
- await adminPage.fill("#meta_title", "");
- await adminPage.fill("#meta_title", cms.name);
- await adminPage.fill("#url_key", "");
- await adminPage.fill("#url_key", cms.slug);
- await adminPage.fill("#meta_keywords", "");
- await adminPage.fill("#meta_keywords", cms.name);
- await adminPage.fill("#meta_description", "");
- await adminPage.fill("#meta_description", cms.shortDescription);
- /**
- * Now Submit The Form.
- */
- await adminPage.click('button.primary-button:has-text("Save Page")');
- await expect(
- adminPage.locator("#app p", {
- hasText: "CMS updated successfully.",
- })
- ).toBeVisible();
- await expect(adminPage.getByText(cms.name)).toBeVisible();
- await expect(adminPage.getByText(cms.slug)).toBeVisible();
- });
- test("should delete a page", async ({ adminPage }) => {
- /**
- * Creating a page to delete.
- */
- const cms = await createPage(adminPage);
- /**
- * Deleting a CMS page.
- */
- await adminPage.goto("admin/cms");
- await adminPage.waitForSelector("span.cursor-pointer.icon-delete", {
- state: "visible",
- });
- const iconDelete = await adminPage.$$(
- "span.cursor-pointer.icon-delete"
- );
- await iconDelete[0].click();
- /**
- * Confirmation modal for deleting a CMS page.
- */
- await adminPage.waitForSelector("text=Are you sure");
- const agreeButton = await adminPage.locator(
- 'button.primary-button:has-text("Agree")'
- );
- if (await agreeButton.isVisible()) {
- await agreeButton.click();
- } else {
- console.error("Agree button not found or not visible.");
- }
- /**
- * Alert message for deleting a CMS page should appear.
- */ ("CMS deleted successfully.");
- await expect(
- adminPage.locator("#app p", {
- hasText: "CMS deleted successfully.",
- })
- ).toBeVisible();
- await expect(adminPage.getByText(cms.name)).not.toBeVisible();
- });
- test("should mass delete the selected pages", async ({ adminPage }) => {
- /**
- * Creating CMS pages for multiselect delete.
- */
- await createPage(adminPage);
- /**
- * Deleting a CMS page.
- */
- await adminPage.goto("admin/cms");
- await adminPage.waitForSelector("span.cursor-pointer.icon-delete", {
- state: "visible",
- });
- const iconDelete = await adminPage.$$(
- "span.cursor-pointer.icon-delete"
- );
- await iconDelete[0].click();
- /**
- * Confirmation modal for deleting a CMS page.
- */
- await adminPage.waitForSelector("text=Are you sure");
- const agreeButton = await adminPage.locator(
- 'button.primary-button:has-text("Agree")'
- );
- if (await agreeButton.isVisible()) {
- await agreeButton.click();
- } else {
- console.error("Agree button not found or not visible.");
- }
- /**
- * Alert message for deleting a CMS page should appear.
- */
- await expect(
- adminPage.getByText("CMS deleted successfully.")
- ).toBeVisible();
- });
- test("should mass delete all the rows of current pages", async ({
- adminPage,
- }) => {
- /**
- * Creating a page to delete.
- */
- const cms = await createPage(adminPage);
- await adminPage.goto("admin/cms");
- /**
- * Selecting a multiselector checkbox.
- */
- await adminPage.locator(".icon-uncheckbox").first().click();
- await adminPage
- .getByRole("button", { name: "Select Action " })
- .click();
- await adminPage.getByRole("link", { name: "Delete" }).click();
- /**
- * Confirmation modal for deleting CMS pages.
- */
- await adminPage
- .getByRole("button", { name: "Agree", exact: true })
- .click();
- /**
- * Confirmation modal for deleting CMS pages.
- */
- await adminPage.getByText("Selected Data Deleted").click();
- await expect(adminPage.getByText(cms.name)).not.toBeVisible();
- });
- });
|