export function selectClick(testid: string, eq = 0) { cy.getTestId(testid).click(); cy.getTestId(testid) .find('.rc-virtual-list-holder-inner') .children() .eq(eq) .click(); } export function intoMenu(parent: string, child: string) { cy.getTestId('menu') .children() .each(function (el) { const titleElement = el.find('.ant-menu-submenu-title'); if (titleElement.text() === parent) { titleElement.trigger('click'); el.find(`ul>li[title="${child}"]`).trigger('click'); } }); } export function validateSelect(testid: string, value: string) { cy.getTestId(testid) .find('.ant-select-selection-item') .should('have.attr', 'title', value) .and('have.text', value); } export function validateTableList( tableName: string, firstPageNumber = 3, secondPageNumber = 2, ) { cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .should('have.length', firstPageNumber); cy.getTestId(tableName) .siblings('.ant-pagination') .find('li[title="2"]') .click(); cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .should('have.length', secondPageNumber); } export function validateTableSearch( tableName: string, value?: string, options?: {btnTestId?: string}, ) { cy.getTestId(tableName) .siblings('.ant-pagination') .find('li[title="2"]') .click(); const {btnTestId} = options ?? {}; return function (text?: string) { cy.getTestId(btnTestId ?? 'search_btn').click(); cy.getTestId(btnTestId ?? 'search_btn').should( 'have.class', 'ant-btn-loading', ); cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .first() .find('td') .first() .should('include.text', text ?? value); cy.getTestId(btnTestId ?? 'search_btn').should( 'not.have.class', 'ant-btn-loading', ); cy.getTestId(tableName) .siblings('.ant-pagination') .find('li[title="1"]') .should('have.class', 'ant-pagination-item-active'); }; } export function tableBtnClick(tableName: string, index: number) { cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .first() .find('td') .last() .children() .eq(index) .click(); } export function validateModalBtnGroup(modalName: string) { cy.getTestId(modalName) .getTestId('modal_btn_group') .find('.ant-btn') .should('have.class', 'ant-btn-loading'); } export function validateModalOperation(modalName: string, text: string) { cy.getTestId(modalName).find('form').submit(); validateModalBtnGroup(modalName); cy.get('.ant-message-notice-content').should('include.text', text); cy.getTestId(modalName).should('not.exist'); } export function validatePut( modalName: string, label: string, options?: {addBtnTestId?: string}, ) { const {addBtnTestId} = options ?? {}; function validateAdd(fn: () => void) { cy.getTestId(addBtnTestId ?? 'add_btn').click(); cy.getTestId(modalName).should('exist').and('be.visible'); cy.getTestId(modalName).find('h3').should('include.text', `新增${label}`); fn(); validateModalOperation(modalName, '新增成功'); } function validateEdit(tableName: string, validateFn: () => void) { tableBtnClick(tableName, 0); cy.getTestId(modalName).should('exist').and('be.visible'); cy.getTestId(modalName).find('h3').should('include.text', `修改${label}`); validateFn(); validateModalOperation(modalName, '修改成功'); } return {validateAdd, validateEdit}; } export function validateDelete(tableName: string, label: string) { tableBtnClick(tableName, 1); cy.get('.ant-modal-content').should('be.visible'); cy.get('.ant-modal-confirm-title').should('include.text', `删除${label}`); cy.get('.ant-modal-confirm-content').should( 'include.text', `你确定要删除当前${label}吗?`, ); cy.get('.ant-modal-confirm-btns').children().last().trigger('click'); cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .first() .find('td') .last() .children() .eq(1) .should('have.class', 'ant-btn-loading'); cy.getTestId(tableName) .find('table') .find('.ant-table-tbody') .children('.ant-table-row') .first() .find('td') .last() .children() .first() .should('have.attr', 'disabled'); cy.get('.ant-message-notice-content').should('include.text', '删除成功'); } export function validateExport(testid?: string) { cy.getTestId(testid ?? 'export_btn').click(); cy.getTestId(testid ?? 'export_btn').should('have.class', 'ant-btn-loading'); cy.getTestId(testid ?? 'export_btn').should( 'not.have.class', 'ant-btn-loading', ); } export function closeModal() { cy.get('.ReactModal__Overlay').trigger('click', 'topRight'); } export function clickDatePicker(id: string) { cy.getTestId(id).click(); cy.get('.ant-picker-panels') .children() .eq(0) .find('.ant-picker-content') .find('tbody') .find('td') .eq(0) .click(); cy.get('.ant-picker-panels') .children() .eq(1) .find('.ant-picker-content') .find('tbody') .find('td') .eq(0) .click(); }