// Copyright 2021 99cloud // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import 'cypress-file-upload'; import getTitle from './common'; function uuid() { return Cypress._.random(0, 1e6); } function getId(formItemName) { return `#form-item-col-${formItemName}`; } function getIdLogin(formItemName) { return `#normal_login_${formItemName}`; } function getIdReset(formItemName) { return `#reset_password_${formItemName}`; } Cypress.Commands.add('closeNotice', () => { cy.get('.ant-notification-topRight') .first() .find('.anticon-check-circle') .should('exist'); cy.get('.ant-notification-topRight') .first() .find('.ant-notification-close-x') .first() .click(); }); Cypress.Commands.add('waitFormLoading', () => { cy.get('.ant-btn-loading', { timeout: 120000 }).should('not.exist'); }); Cypress.Commands.add('clickFormActionSubmitButton', (waitTime) => { cy.get('.footer-btns') .find('button') .eq(1) .click() .waitFormLoading() .closeNotice(); if (waitTime) { cy.wait(waitTime); } }); Cypress.Commands.add( 'clickModalActionSubmitButton', (inTable = true, waitTime) => { cy.get('.ant-modal-footer') .find('button') .eq(1) .click() .waitFormLoading() .closeNotice(); if (inTable) { cy.wait(2000).waitTableLoading(); } if (waitTime) { cy.wait(waitTime); } } ); Cypress.Commands.add('clickModalActionSubmitButtonFailed', () => { cy.get('.ant-modal-footer').find('button').eq(1).click(); cy.get('.ant-btn-loading').should('not.exist'); }); Cypress.Commands.add('clickModalActionCancelButton', () => { cy.get('.ant-modal-footer').find('button').eq(0).click(); }); Cypress.Commands.add('clickConfirmActionSubmitButton', (waitTime) => { cy.get('.ant-modal-confirm-btns') .find('button') .eq(1) .click() .waitFormLoading() .closeNotice(); if (waitTime) { cy.wait(waitTime); } }); Cypress.Commands.add('checkDisableAction', (waitTime) => { cy.get('.ant-modal-confirm-confirm') .first() .find('.anticon-close-circle') .should('exist'); cy.get('.ant-modal-confirm-btns').find('button').last().click(); if (waitTime) { cy.wait(waitTime); } }); Cypress.Commands.add('clickStepActionNextButton', (waitTime = 2000) => { cy.get('.step-form-footer-btns') .find('button') .last() .click({ force: true }) .wait(waitTime); }); Cypress.Commands.add('clickStepActionCancelButton', (waitTime = 2000) => { cy.get('.step-form-footer-btns') .find('button') .first() .click() .wait(waitTime); }); Cypress.Commands.add('formInput', (formItemName, value, selector = 'input') => { cy.get(getId(formItemName)).find(selector).clear().type(value); }); Cypress.Commands.add('formText', (formItemName, value) => { cy.get(getId(formItemName)) .find('textarea') .clear({ force: true }) .type(value, { force: true }); }); Cypress.Commands.add('formJsonInput', (formItemName, content) => { const value = JSON.stringify(content); cy.get(getId(formItemName)) .find('textarea') .clear({ force: true }) .wait(2000) .type(value, { force: true, parseSpecialCharSequences: false }); }); Cypress.Commands.add('formInputName', (formItemName, typeName) => { const name = `test-${typeName}-${uuid()}`; cy.get(getId(formItemName)).find('input').clear().type(name); }); Cypress.Commands.add('formCheckboxClick', (formItemName, index = 0) => { cy.get(getId(formItemName)).find('input').eq(index).click(); }); Cypress.Commands.add('formTableSelectAll', (formItemName) => { cy.get(getId(formItemName)) .find('.ant-table-thead') .find('.ant-checkbox-input') .check(); }); Cypress.Commands.add('formTableNotSelectAll', (formItemName) => { cy.get(getId(formItemName)) .find('.ant-table-thead') .find('.ant-checkbox-input') .uncheck(); }); Cypress.Commands.add('formTableSelect', (formItemName, value) => { if (!value) { cy.get(getId(formItemName)) .find('.ant-table-row') .first() .find('.ant-table-selection-column') .click({ force: true }); return; } cy.get(getId(formItemName)) .find('.ant-table-row') .contains(value) .find('.ant-table-selection-column') .first() .click({ force: true }); }); Cypress.Commands.add('formTableClearSelect', (formItemName) => { cy.get(getId(formItemName)).find('.ant-tag-close-icon').first().click(); }); Cypress.Commands.add( 'formTableSelectBySearch', (formItemName, value, waitTime) => { const formItemId = getId(formItemName); cy.get(formItemId) .find('.magic-input-wrapper') .find('input') .clear() .type(`${value}{enter}`) .wait(waitTime || 2000); cy.get(formItemId) .find('.ant-table-row') .first() .find('.ant-table-selection-column') .find('input') .click({ force: true }); } ); Cypress.Commands.add( 'formTableSelectBySearchOption', (formItemName, name, value, waitTime = 2000) => { const formItemId = getId(formItemName); const realName = getTitle(name); const realValue = getTitle(value); cy.get(formItemId).find('.magic-input-wrapper').find('input').click(); cy.get(formItemId) .find('.magic-input-wrapper') .find('.ant-menu-item') .contains(realName) .click(); cy.get(formItemId) .find('.magic-input-wrapper') .find('.ant-menu-item') .contains(realValue) .click(); cy.wait(waitTime); cy.get(formItemId) .find('.ant-table-row') .first() .find('.ant-table-selection-column') .click({ force: true }); } ); Cypress.Commands.add('formSelect', (formItemName, label) => { cy.get(getId(formItemName)).find('.ant-select').click().wait(2000); if (label !== undefined) { const realLabel = getTitle(label); cy.get('.ant-select-item-option') .contains(realLabel) .click({ force: true }); } else { cy.get('.ant-select-dropdown') .last() .find('.ant-select-item-option') .first() .click({ force: true }); } }); Cypress.Commands.add('formRadioChoose', (formItemName, itemIndex = 0) => { cy.get(getId(formItemName)) .find('.ant-radio-button-wrapper') .eq(itemIndex) .click(); }); Cypress.Commands.add('formRadioChooseByLabel', (formItemName, label) => { const realName = getTitle(label); cy.get(getId(formItemName)) .find('.ant-radio-button-wrapper') .contains(realName) .first() .click(); }); Cypress.Commands.add('formAttachFile', (formItemName, filename) => { cy.get(getId(formItemName)).find('input').attachFile(filename).wait(2000); }); Cypress.Commands.add('formAddSelectAdd', (formItemName) => { cy.get(getId(formItemName)).find('.add-btn').click().wait(2000); }); Cypress.Commands.add('formSwitch', (formItemName) => { cy.get(getId(formItemName)).find('.ant-switch').click().wait(2000); }); Cypress.Commands.add('formButtonClick', (formItemName) => { cy.get(getId(formItemName)).find('button').first().click().wait(2000); }); Cypress.Commands.add('formTransfer', (formItemName, value) => { const formId = getId(formItemName); cy.get(formId).find('.ant-transfer-list').first().as('leftTrans'); cy.get('@leftTrans').find('.ant-transfer-list-search').clear().type(value); cy.get('@leftTrans') .find('.ant-table-row') .first() .find('.ant-checkbox-input') .click(); cy.get(formId).find('.ant-transfer-operation').find('button').first().click(); }); Cypress.Commands.add('formTransferRight', (formItemName, value) => { cy.get(getId(formItemName)).find('.ant-transfer-list').eq(1).as('rightTrans'); cy.get('@rightTrans').find('.ant-transfer-list-search').clear().type(value); }); Cypress.Commands.add('formTabClick', (formItemName, index) => { cy.get(getId(formItemName)).find('.ant-tabs-tab').eq(index).click(); }); Cypress.Commands.add('waitLoginFormLoading', () => { cy.get('#normal_login_username', { timeout: 120000 }).should('exist'); }); Cypress.Commands.add('loginFormInput', (formItemName, value) => { cy.get(getIdLogin(formItemName)).clear().type(value); }); Cypress.Commands.add('loginFormSubmit', () => { cy.get('#normal_login_submit > div > button').click().waitFormLoading(); }); Cypress.Commands.add('loginFormSelect', (index, label) => { cy.get('.ant-select-selector').eq(index).click().wait(2000); if (label !== undefined) { cy.get('.ant-select-item-option').contains(label).click({ force: true }); } else { cy.get('.ant-select-dropdown') .last() .find('.ant-select-item-option') .first() .click({ force: true }); } }); Cypress.Commands.add('resetFormInput', (formItemName, value) => { cy.get(getIdReset(formItemName)).clear().type(value); }); Cypress.Commands.add('resetFormSubmit', () => { cy.get('#reset_password').find('button').first().click().waitFormLoading(); }); Cypress.Commands.add('clickConfirmButtonInModal', () => { cy.get('.ant-modal-footer').find('button').last().click(); }); Cypress.Commands.add('formInputKeyValue', (formItemName, key, value) => { cy.get(getId(formItemName)) .find('.item-detail') .last() .find('input') .eq(0) .clear() .type(key); cy.get(getId(formItemName)) .find('.item-detail') .last() .find('input') .eq(1) .clear() .type(value); }); Cypress.Commands.add('formTransferLeftCheck', (formItemName, index) => { const formId = getId(formItemName); cy.get(formId) .find('.ant-transfer-list') .first() .find('.ant-tree-checkbox') .eq(index) .click(); cy.get(formId).find('.ant-transfer-operation').find('button').first().click(); }); Cypress.Commands.add('formTransferRightCheck', (formItemName, index) => { const formId = getId(formItemName); cy.get(formId) .find('.ant-transfer-list') .last() .find('.ant-checkbox-input') .eq(index) .click(); cy.get(formId).find('.ant-transfer-operation').find('button').last().click(); });