diff --git a/tests/cypress/e2e/Forms/formPageDataValidation.cy.js b/tests/cypress/e2e/Forms/formPageDataValidation.cy.js
new file mode 100644
index 0000000000..064e5e6a95
--- /dev/null
+++ b/tests/cypress/e2e/Forms/formPageDataValidation.cy.js
@@ -0,0 +1,149 @@
+describe("Forms page", () => {
+ const formidableFormsUpgradeUrl = 'https://formidableforms.com/lite-upgrade/?utm_source=WordPress&utm_medium=settings-license&utm_campaign=liteplugin';
+ const origin = Cypress.config('baseUrl');
+ const formTitle = "Test Form";
+
+ beforeEach(() => {
+ cy.login();
+ cy.visit('/wp-admin/admin.php?page=formidable');
+ cy.createNewForm(formTitle);
+ cy.viewport(1280, 720);
+ });
+
+ it("should validate all data in list view", () => {
+ cy.log("Validate all header data");
+ cy.log("Validate the upgrade link");
+ cy.get('.frm-upgrade-bar > a')
+ .should('have.text', 'upgrading to PRO')
+ .and('have.attr', 'href', formidableFormsUpgradeUrl)
+ .then(link => {
+ cy.wrap(link).invoke('removeAttr', 'target').click();
+
+ cy.origin('https://formidableforms.com', { args: { formidableFormsUpgradeUrl } }, ({ formidableFormsUpgradeUrl }) => {
+ cy.location('href').should('eq', formidableFormsUpgradeUrl);
+ });
+
+ cy.log("Navigate back to the original page");
+ cy.visit('/wp-admin/admin.php?page=formidable');
+ });
+
+ cy.log("Validate the header logo link");
+ cy.get('a.frm-header-logo')
+ .should('have.attr', 'href', origin + "/wp-admin/admin.php?page=formidable")
+ .click();
+
+ cy.log("Validate the URL after clicking the header logo");
+ cy.url().should('eq', origin + "/wp-admin/admin.php?page=formidable");
+
+ cy.log("Validate other header elements");
+ cy.get('h1').should("contain", "Forms");
+ cy.get('#frm-publishing > .frm-button-secondary').should("contain", "Import");
+ cy.get('#frm-publishing > .button-primary').should("contain", "Add New");
+
+ cy.log("Validate all other elements shown in forms page");
+ cy.get('.published > .current').should("contain", "My Forms");
+ cy.get('.subsubsub > .trash > a').should("contain", "Trash");
+ cy.get('#entry-search-input').should('exist');
+ cy.get('#search-submit').should("contain", "Search");
+ cy.get('#bulk-action-selector-top').should("contain", "Bulk Actions");
+ cy.get('#doaction').should("contain", "Apply");
+
+ cy.log("Verify that table view in forms page is in list mode");
+ cy.get('#view-switch-list').should("exist").click();
+
+ cy.log("Verify existence of the select all checkbox");
+ cy.get('#cb-select-all-1').should("exist");
+
+ cy.log("Verify column names in the forms page");
+ cy.get('#name > a').should("contain", "Form Title");
+ cy.get('#entries').should("contain", "Entries");
+ cy.get('#id > a > :nth-child(1)').should("contain", "ID");
+ cy.get('#form_key > a > :nth-child(1)').should("contain", "Key");
+ cy.get('#shortcode').should("contain", "Actions");
+ cy.get('#created_at > a > :nth-child(1)').should("contain", "Date");
+
+ cy.log("Verify existence of a single row select checkbox");
+ cy.get('[id^="cb-item-action-"]').should("exist");
+
+ cy.log("Verify list view data of the created form");
+ cy.get('.id').should("exist");
+ cy.get(`[id^="item-action-"] > .name > strong > .row-title:contains("${formTitle}")`)
+ .parents('[id^="item-action-"]')
+ .within(() => {
+ cy.get('.entries > a').should("contain", "0");
+ cy.get('.name > strong > .row-title').should("contain", formTitle);
+ cy.get('.form_key').should("contain", "test-form");
+ cy.get('.shortcode > div').should("exist");
+
+ cy.getCurrentFormattedDate().then((formattedDate) => {
+ cy.log('Formatted Date: ', formattedDate);
+
+ cy.log("Find the element that displays the date and get its text content");
+ cy.get('.created_at > abbr')
+ .invoke('text')
+ .then((dateText) => {
+ const dateMatch = dateText.match(/\d{4}\/\d{2}\/\d{2}/);
+ const displayedDate = dateMatch ? dateMatch[0] : '';
+ expect(displayedDate).to.equal(formattedDate);
+ });
+ });
+ });
+ });
+
+ it("should validate all data in excerpt view", () => {
+ cy.log("Verify that table view in forms page is in excerpt mode");
+ cy.get('#view-switch-excerpt').should("exist").click();
+
+ cy.log("Verify existence of the select all checkbox");
+ cy.get('#cb-select-all-1').should("exist");
+
+ cy.log("Verify column names in the forms page");
+ cy.get('#name > a').should("contain", "Form Title");
+ cy.get('#entries').should("contain", "Entries");
+ cy.get('#id > a > :nth-child(1)').should("contain", "ID");
+ cy.get('#form_key > a > :nth-child(1)').should("contain", "Key");
+ cy.get('#shortcode').should("contain", "Actions");
+ cy.get('#created_at > a > :nth-child(1)').should("contain", "Date");
+
+ cy.log("Verify existence of a single row select checkbox");
+ cy.get('[id^="cb-item-action-"]').should("exist");
+
+ cy.log("Verify excerpt view data of the created form");
+ cy.get('.id').should("exist");
+
+ cy.get(`[id^="item-action-"] > .name > strong > .row-title:contains("${formTitle}")`)
+ .parents('[id^="item-action-"]')
+ .within(() => {
+ cy.get('.name > strong > .row-title').should("contain", formTitle);
+ cy.get('.entries > a').should("contain", "0");
+ cy.get('.form_key').should("contain", "test-form");
+ cy.get('.shortcode > div').should("exist");
+
+ cy.getCurrentFormattedDate().then((formattedDate) => {
+ cy.log('Formatted Date: ', formattedDate);
+
+ cy.log("Find the element that displays the date and get its title content");
+ cy.get('.created_at > abbr')
+ .invoke('attr', 'title')
+ .then((dateTime) => {
+ const datePart = dateTime.split(' ')[0];
+ expect(datePart).to.equal(formattedDate);
+
+
+ cy.log("Check that time exists in the
element");
+ /* eslint-disable no-unused-expressions */
+ cy.get('.created_at > abbr')
+ .invoke('html')
+ .then((html) => {
+ expect(html.split('
')[1]).to.exist.and.not.be.empty;
+ /* eslint-enable no-unused-expressions */
+ });
+ });
+ });
+ });
+ });
+
+ afterEach(() => {
+ cy.deleteForm();
+ });
+});
diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js
index 94e09f2123..75a5cb914f 100644
--- a/tests/cypress/support/commands.js
+++ b/tests/cypress/support/commands.js
@@ -35,19 +35,23 @@ Cypress.Commands.add("createNewForm", () => {
cy.get("#frm-save-form-name-button").should("contain", "Save").click();
cy.get("a[aria-label='Close']", { timeout: 7000 }).click();
})
-
Cypress.Commands.add("deleteForm", () => {
cy.log("Delete Form");
cy.contains('#the-list tr', 'Test Form').trigger('mouseover').then(($row) => {
console.log('Hovered Row:', $row);
- // Find the visible element with class "trash" within the hovered row and click it
- cy.wrap($row).within(() => {
- cy.get('.row-actions .trash .frm-trash-link').should('be.visible').click({ force: true });
+ cy.wrap($row).within(() => {
+ cy.get('.row-actions .trash .frm-trash-link').should('be.visible').click({ force: true });
});
- cy.get("div[role='dialog']").should("contain", "Do you want to move this form to the trash?");
- cy.xpath("//a[@id='frm-confirmed-click']").should("contain", "Confirm").click({ force: true });
- })
-})
+ cy.get("body").then(($body) => {
+ if ($body.find("div[role='dialog']").length) {
+ cy.get("div[role='dialog']").should("be.visible").and("contain.text", "Do you want to move this form to the trash?");
+ cy.xpath("//a[@id='frm-confirmed-click']").should("contain.text", "Confirm").click({ force: true });
+ } else {
+ cy.log("Dialog not found");
+ }
+ });
+ });
+});
Cypress.Commands.add("openForm", () => {
cy.log("Click on the created form");
@@ -65,6 +69,8 @@ Cypress.Commands.add("openForm", () => {
cy.get('.frm_field_list > #frm-nav-tabs > .frm-tabs > #frm_insert_fields_tab').should("contain", "Add Fields");
});
-
-
-
+Cypress.Commands.add("getCurrentFormattedDate", () => {
+ const currentDate = new Date();
+ const formattedDate = currentDate.toISOString().split('T')[0].replace(/-/g, '/');
+ return formattedDate;
+});
\ No newline at end of file