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.
192 lines
5.4 KiB
192 lines
5.4 KiB
2 years ago
|
// 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);
|
||
|
});
|
||
|
});
|
||
|
};
|