mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
191 lines
5.4 KiB
191 lines
5.4 KiB
// test suite |
|
// |
|
import { isTestSuiteActive } from "../../support/page_objects/projectConstants"; |
|
import { mainPage } from "../../support/page_objects/mainPage"; |
|
import { loginPage } from "../../support/page_objects/navigation"; |
|
|
|
let linkText = ""; |
|
const generateShareLink_surveyMode = () => { |
|
mainPage.shareView().click(); |
|
|
|
// ensure modal is rendered and visible |
|
cy.getActiveModal(".nc-modal-share-view") |
|
.find(".ant-modal-title") |
|
.contains("This view is shared via a private link") |
|
.should("be.visible"); |
|
|
|
// enable survey mode |
|
cy.get('[data-cy="nc-modal-share-view__survey-mode"]').click(); |
|
|
|
// copy link text, save URL |
|
cy.get('[data-cy="nc-modal-share-view__link"]').then(($el) => { |
|
linkText = $el.text(); |
|
cy.log(linkText); |
|
}); |
|
}; |
|
|
|
// Options: |
|
// footer |
|
// btnSubmit |
|
// fieldLabel |
|
// |
|
function validateFormPage(options) { |
|
// header & description |
|
cy.get('[data-cy="nc-survey-form__heading"]') |
|
.contains("A B C D") |
|
.should("be.visible"); |
|
cy.get('[data-cy="nc-survey-form__sub-heading"]') |
|
.contains("Survey form for testing") |
|
.should("be.visible"); |
|
|
|
// footer (page index) |
|
cy.get('[data-cy="nc-survey-form__footer"]') |
|
.contains(options.footer) |
|
.should("be.visible"); |
|
|
|
// submit button: will be either OK or Submit |
|
cy.get(`[data-cy="nc-survey-form__${options.btnSubmit}"]`).should( |
|
"be.visible" |
|
); |
|
|
|
// field label |
|
cy.get( |
|
`[data-cy="nc-survey-form__input-${options.fieldLabel.replaceAll( |
|
" ", |
|
"" |
|
)}"]` |
|
).should("be.visible"); |
|
} |
|
|
|
// test suite |
|
// |
|
export const genTest = (apiType, dbType) => { |
|
if (!isTestSuiteActive(apiType, dbType)) return; |
|
let clear; |
|
|
|
/** |
|
* class names specific to survey mode |
|
* data-cy="nc-survey-form__heading" |
|
* data-cy="nc-survey-form__sub-heading" |
|
* data-cy="nc-survey-form__input-${fieldTitle}" |
|
* data-cy="nc-survey-form__field-description" |
|
* data-cy="nc-survey-form__btn-submit" |
|
* data-cy="nc-survey-form__btn-next" |
|
* data-cy="nc-survey-form__success-msg" |
|
* data-cy="nc-survey-form__btn-submit-another-form" |
|
* data-cy="nc-survey-form__footer" |
|
* data-cy="nc-survey-form__icon-next" |
|
* data-cy="nc-survey-form__icon-prev" |
|
*/ |
|
|
|
describe(`${apiType.toUpperCase()} api - Kanban`, () => { |
|
before(() => { |
|
cy.restoreLocalStorage(); |
|
|
|
// disable CY storage handling |
|
clear = Cypress.LocalStorage.clear; |
|
Cypress.LocalStorage.clear = () => {}; |
|
}); |
|
|
|
after(() => { |
|
// re-enable CY storage handling |
|
Cypress.LocalStorage.clear = clear; |
|
cy.saveLocalStorage(); |
|
}); |
|
|
|
it("Create form view", () => { |
|
cy.openTableTab("Country", 25); |
|
cy.viewCreate("form"); |
|
|
|
// prepare form |
|
// wait for input fields to be rendered as enabled |
|
cy.wait(2000); |
|
|
|
// Update header & add some description |
|
cy.get(".nc-form") |
|
.find('[placeholder="Form Title"]') |
|
.clear() |
|
.type("A B C D"); |
|
cy.get(".nc-form") |
|
.find('[placeholder="Add form description"]') |
|
.type("Survey form for testing"); |
|
cy.get(".nc-form").click(); |
|
|
|
// add success message |
|
cy.get("textarea.nc-form-after-submit-msg").type("Congratulations!"); |
|
|
|
// enable "Submit another form" check box |
|
cy.get("button.nc-form-checkbox-submit-another-form").click(); |
|
|
|
// show another form after 5 seconds |
|
cy.get("button.nc-form-checkbox-show-blank-form").click(); |
|
}); |
|
|
|
it("Share form, enable survey mode", () => { |
|
generateShareLink_surveyMode(); |
|
cy.signOut(); |
|
}); |
|
|
|
it("Visit link, validate form", () => { |
|
cy.visit(linkText); |
|
|
|
// validate form |
|
validateFormPage({ |
|
footer: "1 / 3", |
|
btnSubmit: "btn-next", |
|
fieldLabel: "Country", |
|
}); |
|
cy.get('[data-cy="nc-survey-form__input-Country"]').type("x{enter}"); |
|
|
|
validateFormPage({ |
|
footer: "2 / 3", |
|
btnSubmit: "btn-next", |
|
fieldLabel: "LastUpdate", |
|
}); |
|
cy.get('[data-cy="nc-survey-form__input-LastUpdate"]').click(); |
|
cy.get(".ant-picker-now-btn:visible").contains("Now").click(); |
|
cy.get(".ant-btn-primary:visible").contains("Ok").click(); |
|
cy.get('[data-cy="nc-survey-form__btn-next"]').click(); |
|
|
|
// takes time for the link field to be rendered |
|
cy.wait(2000); |
|
|
|
validateFormPage({ |
|
footer: "3 / 3", |
|
btnSubmit: "btn-submit", |
|
fieldLabel: "City List", |
|
}); |
|
cy.get('[data-cy="nc-survey-form__btn-submit"]').click(); |
|
|
|
// validate success message |
|
cy.get('[data-cy="nc-survey-form__success-msg"]') |
|
.should("be.visible") |
|
.contains("Congratulations!") |
|
.should("be.visible"); |
|
|
|
// validate "Submit another form" button |
|
cy.get('[data-cy="nc-survey-form__btn-submit-another-form"]').should( |
|
"be.visible" |
|
); |
|
}); |
|
|
|
it("Delete form view", () => { |
|
loginPage.loginAndOpenProject(apiType, dbType); |
|
cy.openTableTab("Country", 25); |
|
|
|
// clean up newly added rows into Country table operations |
|
// this auto verifies successfull addition of rows to table as well |
|
mainPage.getPagination(5).click(); |
|
|
|
// wait for page rendering to complete |
|
cy.get(".nc-grid-row").should("have.length", 10); |
|
|
|
mainPage.getCell("Country", 10).rightclick(); |
|
cy.getActiveMenu(".nc-dropdown-grid-context-menu") |
|
.contains("Delete Row") |
|
.click(); |
|
|
|
cy.viewDelete(0); |
|
}); |
|
}); |
|
};
|
|
|