diff --git a/scripts/cypress/integration/common/4g_table_view_expanded_form.js b/scripts/cypress/integration/common/4g_table_view_expanded_form.js index 9e4dfc4697..ddf97541bb 100644 --- a/scripts/cypress/integration/common/4g_table_view_expanded_form.js +++ b/scripts/cypress/integration/common/4g_table_view_expanded_form.js @@ -1,20 +1,30 @@ -import { isTestSuiteActive } from '../../support/page_objects/projectConstants'; +import { isTestSuiteActive } from "../../support/page_objects/projectConstants"; +import { loginPage } from "../../support/page_objects/navigation"; +import { mainPage } from "../../support/page_objects/mainPage"; function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); } +function verifyExpandFormHeader(title) { + cy.getActiveDrawer(".nc-drawer-expanded-form") + .should("exist") + .find(".nc-expanded-form-header") + .contains(title) + .should("exist"); +} + export const genTest = (apiType, dbType) => { if (!isTestSuiteActive(apiType, dbType)) return; describe(`${apiType.toUpperCase()} api - Table views: Expanded form`, () => { - before(() => { + loginPage.loginAndOpenProject(apiType, dbType); cy.restoreLocalStorage(); // open a table to work on views // - cy.openTableTab('Country', 25); + cy.openTableTab("Country", 25); }); beforeEach(() => { @@ -27,7 +37,7 @@ export const genTest = (apiType, dbType) => { after(() => { cy.restoreLocalStorage(); - cy.closeTableTab('Country'); + cy.closeTableTab("Country"); cy.saveLocalStorage(); }); @@ -40,82 +50,144 @@ export const genTest = (apiType, dbType) => { cy.get(`.nc-create-${viewType}-view`).click(); // Pop up window, click Submit (accepting default name for view) - cy.getActiveModal('.nc-modal-view-create').find('.ant-btn-primary').click(); - cy.toastWait('View created successfully'); + cy.getActiveModal(".nc-modal-view-create") + .find(".ant-btn-primary") + .click(); + cy.toastWait("View created successfully"); // validate if view was created && contains default name 'Country1' cy.get(`.nc-${viewType}-view-item`) .contains(`${capitalizeFirstLetter(viewType)}-1`) - .should('exist'); + .should("exist"); + + if (viewType === "gallery") { + // mainPage.unhideField("City List"); + cy.get(".nc-fields-menu-btn").click(); + cy.getActiveMenu(".nc-dropdown-fields-menu") + .find(`.nc-fields-list label:contains("City List"):visible`) + .click(); + cy.get(".nc-fields-menu-btn").click(); + + cy.get('.ant-card-body [title="City List"]').should("exist"); + cy.wait(5000); + } }); - it(`Expand a row in ${viewType} and verify url`, () => { - - if (viewType === 'grid') { - cy.get('.nc-row-expand') - .first() - .click({ force: true }); - } else if (viewType === 'gallery') { - cy.get('.nc-gallery-container .ant-card') - .first() - .click({ force: true }); + // click on first row-expand if grid & first card if its gallery + if (viewType === "grid") { + cy.get(".nc-row-expand").first().click({ force: true }); + } else if (viewType === "gallery") { + cy.get(".nc-gallery-container .ant-card").first().click(); } - cy.url().should('include', 'rowId=1'); + + // ensure expand draw is open + verifyExpandFormHeader("Afghanistan"); + cy.url().should("include", "rowId=1"); // spy on clipboard to verify copied text + // creating alias for clipboard cy.window().then((win) => { - cy.spy(win.navigator.clipboard, 'writeText').as('copy'); + cy.spy(win.navigator.clipboard, "writeText").as("copy"); }); // copy url - cy.get('.nc-copy-row-url').click(); - - cy.get('@copy').should('be.calledWithMatch', `?rowId=1`); - - cy.get('.nc-expand-form-close-btn').click(); - + cy.getActiveDrawer(".nc-drawer-expanded-form") + .should("exist") + .find(".nc-copy-row-url") + .click(); + + // use alias; verify if clipboard was called with correct text + cy.get("@copy").should("be.calledWithMatch", `?rowId=1`); + + // close expanded form + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find(".nc-expand-form-close-btn") + .click(); }); it(`Visit a ${viewType} row url and verify expanded form`, () => { - cy.url() - .then((url) => { - cy.visit('/' + url.split('/').slice(3).join('/').split('?')[0] + '?rowId=2'); + cy.url().then((url) => { + cy.visit( + "/" + url.split("/").slice(3).join("/").split("?")[0] + "?rowId=2" + ); - return cy.get('.nc-expanded-form-header').should('exist'); - }); + verifyExpandFormHeader("Algeria"); + }); }); it(`Visit an invalid ${viewType} row url and verify expanded form`, () => { - cy.url() - .then((url) => { - cy.visit('/' + url.split('/').slice(3).join('/').split('?')[0] + '?rowId=99999999'); - cy.toastWait('Record not found'); - cy.get('.nc-expanded-form-header').should('not.exist'); - - return cy.get(viewType === 'grid' ? '.nc-grid' : '.nc-gallery').should('exist'); - }); + cy.url().then((url) => { + cy.visit( + "/" + + url.split("/").slice(3).join("/").split("?")[0] + + "?rowId=99999999" + ); + + cy.toastWait("Record not found"); + + cy.get(`.nc-drawer-expanded-form .ant-drawer-content:visible`).should( + "not.exist" + ); + + // defaults to corresponding grid / gallery view + cy.get(viewType === "grid" ? ".nc-grid" : ".nc-gallery").should( + "exist" + ); + }); }); - it(`Visit a ${viewType} row url and verify nested expanded form`, () => { - cy.url() - .then((url) => { - cy.visit('/' + url.split('/').slice(3).join('/').split('?')[0] + '?rowId=2'); - cy.get('.nc-expanded-form-header').should('exist'); - - cy.get('.nc-form-fields-container').scrollTo(0, 800); - - // todo: click on a LTAR field to open nested expanded form - // and verify copy url functionality - // cy.get('.name:contains("City List")'). - // return cy.wait(100000) - }); + cy.url().then((url) => { + cy.visit( + "/" + url.split("/").slice(3).join("/").split("?")[0] + "?rowId=1" + ); + + verifyExpandFormHeader("Afghanistan"); + + cy.get(".nc-drawer-expanded-form .ant-drawer-content").should( + "exist" + ); + + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find(".ant-card-body") + .first() + .click(); + + cy.get(".nc-drawer-expanded-form .ant-drawer-content").should( + "have.length", + 2 + ); + + cy.wait(1000); + + verifyExpandFormHeader("Kabul"); + + // close expanded forms + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find(".ant-btn") + .contains("Cancel") + .click(); + + verifyExpandFormHeader("Afghanistan"); + + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find(".ant-btn") + .contains("Cancel") + .click(); + }); }); + it("Delete view", () => { + cy.get(".nc-view-delete-icon").click({ force: true }); + cy.getActiveModal(".nc-modal-view-delete") + .find(".ant-btn-dangerous") + .click(); + cy.toastWait("View deleted successfully"); + }); }; - viewTest('grid'); // grid view - viewTest('gallery'); // gallery view + viewTest("grid"); // grid view + viewTest("gallery"); // gallery view }); }; diff --git a/scripts/cypress/support/commands.js b/scripts/cypress/support/commands.js index 35a6cdb2af..a7feb162e2 100644 --- a/scripts/cypress/support/commands.js +++ b/scripts/cypress/support/commands.js @@ -24,141 +24,125 @@ // -- This will overwrite an existing command -- // Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... }) -import 'cypress-file-upload'; -import { isXcdb, isPostgres } from './page_objects/projectConstants'; +import "cypress-file-upload"; +import { isXcdb, isPostgres } from "./page_objects/projectConstants"; -require('@4tw/cypress-drag-drop'); +require("@4tw/cypress-drag-drop"); // for waiting until page load -Cypress.Commands.add('waitForSpinners', () => { - cy.visit('http://localhost:3000/signup', { +Cypress.Commands.add("waitForSpinners", () => { + cy.visit("http://localhost:3000/signup", { retryOnNetworkFailure: true, timeout: 1200000, headers: { - 'Accept-Encoding': 'gzip, deflate', + "Accept-Encoding": "gzip, deflate", }, }); - cy.get('.nc-form-signup').should('exist'); + cy.get(".nc-form-signup").should("exist"); }); -Cypress.Commands.add('signinOrSignup', (_args) => { +Cypress.Commands.add("signinOrSignup", (_args) => { const args = Object.assign( - { username: 'user@nocodb.com', password: 'Password123.' }, + { username: "user@nocodb.com", password: "Password123." }, _args ); cy.wait(1000); // signin/signup - cy.get('body').then(($body) => { + cy.get("body").then(($body) => { // cy.wait(1000) cy.url().then((url) => { - if (!url.includes('/projects')) { + if (!url.includes("/projects")) { // handle initial load - if ($body.find('.welcome-page').length > 0) { + if ($body.find(".welcome-page").length > 0) { cy.wait(8000); - cy.get('body').trigger('mousemove'); - cy.snip('LetsBegin'); - cy.contains('Let\'s Begin').click(); - cy.get('input[type="text"]', { timeout: 12000 }).type( - args.username - ); + cy.get("body").trigger("mousemove"); + cy.snip("LetsBegin"); + cy.contains("Let's Begin").click(); + cy.get('input[type="text"]', { timeout: 12000 }).type(args.username); cy.get('input[type="password"]').type(args.password); - cy.snip('SignUp'); + cy.snip("SignUp"); cy.get('button:contains("SIGN UP")').click(); // handle signin } else { - cy.get('input[type="text"]', { timeout: 12000 }).type( - args.username - ); + cy.get('input[type="text"]', { timeout: 12000 }).type(args.username); cy.get('input[type="password"]').type(args.password); - cy.snip('SignIn'); + cy.snip("SignIn"); cy.get('button:contains("SIGN IN")').click(); } - } else if (url.includes('/signin')) { - cy.get('input[type="text"]', { timeout: 12000 }).type( - args.username - ); + } else if (url.includes("/signin")) { + cy.get('input[type="text"]', { timeout: 12000 }).type(args.username); cy.get('input[type="password"]').type(args.password); - cy.snip('SignIn'); + cy.snip("SignIn"); cy.get('button:contains("SIGN IN")').click(); } }); }); // indicates page-load complete - cy.get('.nc-noco-brand-icon', { timeout: 12000 }).should('exist'); + cy.get(".nc-noco-brand-icon", { timeout: 12000 }).should("exist"); }); // for opening/creating a rest project -Cypress.Commands.add('openOrCreateRestProject', (_args) => { +Cypress.Commands.add("openOrCreateRestProject", (_args) => { const args = Object.assign({ new: false }, _args); // signin/signup cy.signinOrSignup(); - cy.get('.nc-new-project-menu').should('exist'); - cy.snip('ProjectPage'); - cy.get('body').then(($body) => { + cy.get(".nc-new-project-menu").should("exist"); + cy.snip("ProjectPage"); + cy.get("body").then(($body) => { const filter = args.meta - ? '.nc-meta-project-row' - : ':not(.nc-meta-project-row)'; + ? ".nc-meta-project-row" + : ":not(.nc-meta-project-row)"; // if project exist open - if ( - $body.find('.nc-rest-project-row').filter(filter).length && - !args.new - ) { - cy.get('.nc-rest-project-row').filter(filter).first().click(); + if ($body.find(".nc-rest-project-row").filter(filter).length && !args.new) { + cy.get(".nc-rest-project-row").filter(filter).first().click(); } else { - cy.contains('New Project') - .trigger('onmouseover') - .trigger('mouseenter'); + cy.contains("New Project").trigger("onmouseover").trigger("mouseenter"); if (args.meta) { - cy.get('.nc-create-xc-db-project').click(); - cy.url({ timeout: 6000 }).should('contain', '#/project/xcdb'); - cy.get('.nc-metadb-project-name').type( - 'test_proj' + Date.now() - ); - cy.contains('button', 'Create', { timeout: 3000 }).click(); + cy.get(".nc-create-xc-db-project").click(); + cy.url({ timeout: 6000 }).should("contain", "#/project/xcdb"); + cy.get(".nc-metadb-project-name").type("test_proj" + Date.now()); + cy.contains("button", "Create", { timeout: 3000 }).click(); } else { - cy.get('.nc-create-external-db-project').click(); - cy.url({ timeout: 6000 }).should('contain', '#/project'); - cy.get('.database-field input').click().clear().type('sakila'); - cy.contains('Test Database Connection').click(); - cy.contains('Ok & Save Project', { timeout: 3000 }).click(); + cy.get(".nc-create-external-db-project").click(); + cy.url({ timeout: 6000 }).should("contain", "#/project"); + cy.get(".database-field input").click().clear().type("sakila"); + cy.contains("Test Database Connection").click(); + cy.contains("Ok & Save Project", { timeout: 3000 }).click(); } } }); - cy.url({ timeout: 20000 }).should('contain', '#/nc/'); + cy.url({ timeout: 20000 }).should("contain", "#/nc/"); }); -Cypress.Commands.add('refreshTableTab', () => { - cy.task('log', `[refreshTableTab]`); +Cypress.Commands.add("refreshTableTab", () => { + cy.task("log", `[refreshTableTab]`); - cy.get('.nc-project-tree') - .find('.v-list-item__title:contains(Tables)', { timeout: 10000 }) - .should('exist') + cy.get(".nc-project-tree") + .find(".v-list-item__title:contains(Tables)", { timeout: 10000 }) + .should("exist") .first() .rightclick({ force: true }); - cy.getActiveMenu('.nc-dropdown-tree-view-context-menu') + cy.getActiveMenu(".nc-dropdown-tree-view-context-menu") .find('[role="menuitem"]') - .contains('Tables Refresh') - .should('exist') + .contains("Tables Refresh") + .should("exist") .click({ force: true }); - cy.toastWait('Tables refreshed'); + cy.toastWait("Tables refreshed"); }); // tn: table name // rc: row count. validate row count if rc!=0 -Cypress.Commands.add('openTableTab', (tn, rc) => { - cy.task('log', `[openTableTab] ${tn} ${rc}`); +Cypress.Commands.add("openTableTab", (tn, rc) => { + cy.task("log", `[openTableTab] ${tn} ${rc}`); - cy.get(`.nc-project-tree-tbl-${tn}`) - .should('exist') - .first() - .click(); + cy.get(`.nc-project-tree-tbl-${tn}`).should("exist").first().click(); // kludge to make new tab active // cy.get('.ant-tabs-tab-btn') @@ -167,74 +151,70 @@ Cypress.Commands.add('openTableTab', (tn, rc) => { // .click(); cy.wait(3000); - cy.get('.xc-row-table.nc-grid').should('exist'); + cy.get(".xc-row-table.nc-grid").should("exist"); // wait for page rendering to complete if (rc != 0) { - cy.get('.nc-grid-row').should('have.length', rc); + cy.get(".nc-grid-row").should("have.length", rc); } }); -Cypress.Commands.add('closeTableTab', (tn) => { - cy.task('log', `[closeTableTab] ${tn}`); - cy.get('.ant-tabs-tab-btn') +Cypress.Commands.add("closeTableTab", (tn) => { + cy.task("log", `[closeTableTab] ${tn}`); + cy.get(".ant-tabs-tab-btn") .contains(tn) - .should('exist') + .should("exist") .parent() .parent() .parent() - .find('button') + .find("button") .click(); // subsequent tab open commands will fail if tab is not closed completely cy.wait(1000); }); -Cypress.Commands.add('openOrCreateGqlProject', (_args) => { +Cypress.Commands.add("openOrCreateGqlProject", (_args) => { const args = Object.assign({ new: false, meta: false }, _args); cy.signinOrSignup(); - cy.get('.nc-new-project-menu').should('exist'); - cy.get('body').then(($body) => { + cy.get(".nc-new-project-menu").should("exist"); + cy.get("body").then(($body) => { const filter = args.meta - ? '.nc-meta-project-row' - : ':not(.nc-meta-project-row)'; + ? ".nc-meta-project-row" + : ":not(.nc-meta-project-row)"; // if project exist open if ( - $body.find('.nc-graphql-project-row').filter(filter).length && + $body.find(".nc-graphql-project-row").filter(filter).length && !args.new ) { - cy.get('.nc-graphql-project-row').filter(filter).first().click(); + cy.get(".nc-graphql-project-row").filter(filter).first().click(); } else { - cy.contains('New Project') - .trigger('onmouseover') - .trigger('mouseenter'); + cy.contains("New Project").trigger("onmouseover").trigger("mouseenter"); if (args.meta) { - cy.get('.nc-create-xc-db-project').click(); - cy.url({ timeout: 6000 }).should('contain', '#/project/xcdb'); - cy.contains('GRAPHQL APIs').closest('label').click(); - cy.get('.nc-metadb-project-name').type( - 'test_proj' + Date.now() - ); - cy.contains('button', 'Create', { timeout: 3000 }).click(); + cy.get(".nc-create-xc-db-project").click(); + cy.url({ timeout: 6000 }).should("contain", "#/project/xcdb"); + cy.contains("GRAPHQL APIs").closest("label").click(); + cy.get(".nc-metadb-project-name").type("test_proj" + Date.now()); + cy.contains("button", "Create", { timeout: 3000 }).click(); } else { - cy.get('.nc-create-external-db-project').click(); - cy.url({ timeout: 6000 }).should('contain', '#/project'); - cy.contains('GRAPHQL APIs').closest('label').click(); - cy.get('.database-field input').click().clear().type('sakila'); - cy.contains('Test Database Connection').click(); - cy.contains('Ok & Save Project').should('exist').click(); + cy.get(".nc-create-external-db-project").click(); + cy.url({ timeout: 6000 }).should("contain", "#/project"); + cy.contains("GRAPHQL APIs").closest("label").click(); + cy.get(".database-field input").click().clear().type("sakila"); + cy.contains("Test Database Connection").click(); + cy.contains("Ok & Save Project").should("exist").click(); } } }); - cy.url({ timeout: 20000 }).should('contain', '#/nc/'); + cy.url({ timeout: 20000 }).should("contain", "#/nc/"); }); let LOCAL_STORAGE_MEMORY = {}; let LOCAL_STORAGE_MEMORY_v2 = {}; -Cypress.Commands.add('saveLocalStorage', (name) => { +Cypress.Commands.add("saveLocalStorage", (name) => { LOCAL_STORAGE_MEMORY = {}; Object.keys(localStorage).forEach((key) => { LOCAL_STORAGE_MEMORY[key] = localStorage[key]; @@ -250,109 +230,119 @@ const restoreLocalStorage = () => { cy.printLocalStorage(); }; -Cypress.Commands.add('restoreLocalStorage', restoreLocalStorage); -Cypress.on('window:before:load', restoreLocalStorage); +Cypress.Commands.add("restoreLocalStorage", restoreLocalStorage); +// Cypress.on("window:before:load", restoreLocalStorage); -Cypress.Commands.add('deleteLocalStorage', () => { +Cypress.Commands.add("deleteLocalStorage", () => { Object.keys(LOCAL_STORAGE_MEMORY).forEach((key) => { localStorage.removeItem(key); }); }); -Cypress.Commands.add('printLocalStorage', () => { - cy.task('log', `[printLocalStorage]`); - cy.task('log', JSON.stringify(localStorage, null, 2)); - cy.task('log', JSON.stringify(LOCAL_STORAGE_MEMORY, null, 2)); +Cypress.Commands.add("printLocalStorage", () => { + // cy.task('log', `[printLocalStorage]`); + // cy.task('log', JSON.stringify(localStorage, null, 2)); + // cy.task('log', JSON.stringify(LOCAL_STORAGE_MEMORY, null, 2)); }); -Cypress.Commands.add('getActiveModal', (wrapperSelector) => { +Cypress.Commands.add("getActiveModal", (wrapperSelector) => { if (wrapperSelector) { return cy.get(`${wrapperSelector} .ant-modal-content:visible`).last(); } - return cy.get('.ant-modal-content:visible').last(); + return cy.get(".ant-modal-content:visible").last(); }); -Cypress.Commands.add('getActiveMenu', (overlaySelector) => { +Cypress.Commands.add("getActiveMenu", (overlaySelector) => { if (overlaySelector) { return cy.get(`${overlaySelector} .ant-dropdown-content:visible`); } - return cy.get('.ant-dropdown-content:visible').last(); + return cy.get(".ant-dropdown-content:visible").last(); }); -Cypress.Commands.add('getActivePopUp', () => { - return cy.get('.ant-menu-submenu-popup:visible').last(); +Cypress.Commands.add("getActivePopUp", () => { + return cy.get(".ant-menu-submenu-popup:visible").last(); }); -Cypress.Commands.add('getActiveSelection', (selector) => { +Cypress.Commands.add("getActiveSelection", (selector) => { if (selector) { return cy.get(`${selector}.ant-select-dropdown:visible`).last(); } - return cy.get('.ant-select-dropdown:visible').last(); + return cy.get(".ant-select-dropdown:visible").last(); }); -Cypress.Commands.add('getActiveDrawer', (selector) => { +Cypress.Commands.add("getActiveDrawer", (selector) => { if (selector) { return cy.get(`${selector} .ant-drawer-content:visible`).last(); } - return cy.get('.ant-drawer-content:visible').last(); + return cy.get(".ant-drawer-content:visible").last(); }); -Cypress.Commands.add('getActivePicker', (dropdownSelector) => { +Cypress.Commands.add("getActivePicker", (dropdownSelector) => { if (dropdownSelector) { return cy.get(`${dropdownSelector}.ant-drawer-content:visible`).last(); } - return cy.get('.ant-picker-dropdown :visible').last(); + return cy.get(".ant-picker-dropdown :visible").last(); }); -Cypress.Commands.add('createTable', (name) => { - cy.task('log', `[createTableTab] ${name}`); +Cypress.Commands.add("createTable", (name) => { + cy.task("log", `[createTableTab] ${name}`); cy.wait(1000); - cy.get('.nc-add-new-table').should('exist').click(); + cy.get(".nc-add-new-table").should("exist").click(); cy.wait(1000); - cy.getActiveModal('.nc-modal-table-create').find(`input[type="text"]:visible`) + cy.getActiveModal(".nc-modal-table-create") + .find(`input[type="text"]:visible`) .click() .clear() .type(name); // submit button - cy.getActiveModal('.nc-modal-table-create').find('button.ant-btn-primary:visible').click(); + cy.getActiveModal(".nc-modal-table-create") + .find("button.ant-btn-primary:visible") + .click(); cy.wait(1000); - cy.get('.xc-row-table.nc-grid').should('exist'); + cy.get(".xc-row-table.nc-grid").should("exist"); // cy.get('.ant-tabs-tab-active > .ant-tabs-tab-btn').contains(name).should("exist"); - cy.url().should('contain', `table/${name}`); - cy.get(`.nc-project-tree-tbl-${name}`).should('exist'); + cy.url().should("contain", `table/${name}`); + cy.get(`.nc-project-tree-tbl-${name}`).should("exist"); cy.wait(1000); }); -Cypress.Commands.add('deleteTable', (name, dbType) => { - cy.get(`.nc-project-tree-tbl-${name}`).should('exist').rightclick(); - cy.getActiveMenu('.nc-dropdown-tree-view-context-menu').find('[role="menuitem"]').contains('Delete').click(); - cy.getActiveModal().find('button').contains('Yes').click(); +Cypress.Commands.add("deleteTable", (name, dbType) => { + cy.get(`.nc-project-tree-tbl-${name}`).should("exist").rightclick(); + cy.getActiveMenu(".nc-dropdown-tree-view-context-menu") + .find('[role="menuitem"]') + .contains("Delete") + .click(); + cy.getActiveModal().find("button").contains("Yes").click(); cy.toastWait(`Deleted table successfully`); }); -Cypress.Commands.add('renameTable', (oldName, newName) => { - +Cypress.Commands.add("renameTable", (oldName, newName) => { // right click on project table name cy.get(`.nc-project-tree-tbl-${oldName}`) - .should('exist') + .should("exist") .first() .rightclick(); // choose rename option from menu - cy.getActiveMenu('.nc-dropdown-tree-view-context-menu') + cy.getActiveMenu(".nc-dropdown-tree-view-context-menu") .find('[role="menuitem"]') - .contains('Rename') + .contains("Rename") .click({ force: true }); // feed new name - cy.getActiveModal('.nc-modal-table-rename').find('input').clear().type(newName); + cy.getActiveModal(".nc-modal-table-rename") + .find("input") + .clear() + .type(newName); // submit - cy.getActiveModal('.nc-modal-table-rename').find('button').contains('Submit').click(); - - cy.toastWait('Table renamed successfully'); + cy.getActiveModal(".nc-modal-table-rename") + .find("button") + .contains("Submit") + .click(); + cy.toastWait("Table renamed successfully"); }); // Cypress.Commands.add('createColumn', (table, columnName) => { @@ -376,43 +366,48 @@ Cypress.Commands.add('renameTable', (oldName, newName) => { // cy.get('th:contains(new_column)').should('exist'); // }); -Cypress.Commands.add('toastWait', (msg) => { +Cypress.Commands.add("toastWait", (msg) => { // cy.get('.ant-message-notice-content:visible', { timout: 30000 }).should('exist') - cy.get(`.ant-message-notice-content:visible:contains("${msg}")`, { timeout: 30000 }).should('exist'); - cy.get('.ant-message-notice-content:visible', { timeout: 12000 }).should('not.exist'); + cy.get(`.ant-message-notice-content:visible:contains("${msg}")`, { + timeout: 30000, + }).should("exist"); + cy.get(".ant-message-notice-content:visible", { timeout: 12000 }).should( + "not.exist" + ); }); // vn: view name // rc: expected row count. validate row count if rc!=0 -Cypress.Commands.add('openViewsTab', (vn, rc) => { - cy.task('log', `[openViewsTab] ${vn} ${rc}`); +Cypress.Commands.add("openViewsTab", (vn, rc) => { + cy.task("log", `[openViewsTab] ${vn} ${rc}`); - cy.get(`.nc-project-tree-tbl-${vn}`, { timeout: 10000 }).should('exist') + cy.get(`.nc-project-tree-tbl-${vn}`, { timeout: 10000 }) + .should("exist") .first() .click({ force: true }); // kludge to make new tab active - cy.get('.ant-tabs-tab-btn') + cy.get(".ant-tabs-tab-btn") .contains(vn) - .should('exist') + .should("exist") .click({ force: true }); // wait for page rendering to complete if (rc != 0) { - cy.get('.xc-row-table.nc-grid').should('exist'); - cy.get('.nc-grid-row').should('have.length', rc); + cy.get(".xc-row-table.nc-grid").should("exist"); + cy.get(".nc-grid-row").should("have.length", rc); } }); -Cypress.Commands.add('closeViewsTab', (vn) => { - cy.task('log', `[closeViewsTab] ${vn}`); - cy.get('.ant-tabs-tab-btn') +Cypress.Commands.add("closeViewsTab", (vn) => { + cy.task("log", `[closeViewsTab] ${vn}`); + cy.get(".ant-tabs-tab-btn") .contains(vn) - .should('exist') + .should("exist") .parent() .parent() .parent() - .find('button') + .find("button") .click(); }); @@ -422,9 +417,9 @@ Cypress.Commands.add('closeViewsTab', (vn) => { let screenShotDb = []; // snip entire screen -Cypress.Commands.add('snip', (filename) => { +Cypress.Commands.add("snip", (filename) => { if ( - true === Cypress.env('screenshot') && + true === Cypress.env("screenshot") && false === screenShotDb.includes(filename) ) { let storeName = `${screenShotDb.length}_${filename}`; @@ -435,9 +430,9 @@ Cypress.Commands.add('snip', (filename) => { }); // snip current modal -Cypress.Commands.add('snipActiveModal', (filename) => { +Cypress.Commands.add("snipActiveModal", (filename) => { if ( - true === Cypress.env('screenshot') && + true === Cypress.env("screenshot") && false === screenShotDb.includes(filename) ) { let storeName = `${screenShotDb.length}_${filename}`; @@ -452,9 +447,9 @@ Cypress.Commands.add('snipActiveModal', (filename) => { }); // snip current menu -Cypress.Commands.add('snipActiveMenu', (filename) => { +Cypress.Commands.add("snipActiveMenu", (filename) => { if ( - true === Cypress.env('screenshot') && + true === Cypress.env("screenshot") && false === screenShotDb.includes(filename) ) { let storeName = `${screenShotDb.length}_${filename}`; @@ -469,22 +464,26 @@ Cypress.Commands.add('snipActiveMenu', (filename) => { }); // pre-test file hook -Cypress.Commands.add('fileHook', () => { - window.localStorage.setItem('vueuse-color-scheme', 'light'); +Cypress.Commands.add("fileHook", () => { + window.localStorage.setItem("vueuse-color-scheme", "light"); }); -Cypress.Commands.add('signOut', () => { +Cypress.Commands.add("signOut", () => { // sign out cy.visit(`/`); - cy.get('.nc-project-page-title', { timeout: 30000 }).contains('My Projects').should('be.visible'); - cy.get('.nc-menu-accounts', { timeout: 30000 }).should('exist').click(); - cy.getActiveMenu('.nc-dropdown-user-accounts-menu').find('.ant-dropdown-menu-item').eq(1).click(); + cy.get(".nc-project-page-title", { timeout: 30000 }) + .contains("My Projects") + .should("be.visible"); + cy.get(".nc-menu-accounts", { timeout: 30000 }).should("exist").click(); + cy.getActiveMenu(".nc-dropdown-user-accounts-menu") + .find(".ant-dropdown-menu-item") + .eq(1) + .click(); cy.wait(5000); - cy.get('button:contains("SIGN")').should('exist'); + cy.get('button:contains("SIGN")').should("exist"); }); - // Drag n Drop // refer: https://stackoverflow.com/a/55409853 /*