utils.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. export function selectClick(testid: string, eq = 0) {
  2. cy.getTestId(testid).click();
  3. cy.getTestId(testid).find('.rc-virtual-list-holder-inner')
  4. .children().eq(eq).click();
  5. }
  6. export function menuTrigger(parent: number, child: number) {
  7. cy.getTestId('menu').children().each(function(el, idx) {
  8. if (idx === parent) {
  9. el.find('.ant-menu-submenu-title').trigger('click');
  10. el.find('ul>li').children().eq(child).trigger('click');
  11. }
  12. });
  13. }
  14. export function validateSelect(testid: string, value: string) {
  15. cy.getTestId(testid).find('.ant-select-selection-item')
  16. .should('have.attr', 'title', value).and('have.text', value);
  17. }
  18. export function validateTableList(tableName: string, firstPageNumber = 3, secondPageNumber = 2) {
  19. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  20. .children('.ant-table-row').should('have.length', firstPageNumber);
  21. cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]').click();
  22. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  23. .children('.ant-table-row').should('have.length', secondPageNumber);
  24. }
  25. export function validateTableSearch(
  26. tableName: string,
  27. value?: string,
  28. options?: {btnTestId?: string},
  29. ) {
  30. cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]')
  31. .click();
  32. const {btnTestId} = options ?? {};
  33. return function(text?: string) {
  34. cy.getTestId(btnTestId ?? 'search_btn').click();
  35. cy.getTestId(btnTestId ?? 'search_btn').should('have.class', 'ant-btn-loading');
  36. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  37. .children('.ant-table-row').first().find('td').first()
  38. .should('include.text', text ?? value);
  39. cy.getTestId(btnTestId ?? 'search_btn')
  40. .should('not.have.class', 'ant-btn-loading');
  41. cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="1"]')
  42. .should('have.class', 'ant-pagination-item-active');
  43. };
  44. }
  45. export function tableBtnClick(tableName: string, index: number) {
  46. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  47. .children('.ant-table-row').first().find('td').last().children().eq(index)
  48. .click();
  49. }
  50. export function validatePut(
  51. modalName: string,
  52. label: string,
  53. options?: {addBtnTestId?: string},
  54. ) {
  55. const {addBtnTestId} = options ?? {};
  56. function validateBtnGroup() {
  57. cy.getTestId('modal_btn_group').find('.ant-btn').first()
  58. .should('have.class', 'ant-btn-loading');
  59. cy.getTestId('modal_btn_group').find('.ant-btn').last()
  60. .should('have.attr', 'disabled');
  61. }
  62. function validateAdd(fn: () => void) {
  63. cy.getTestId(addBtnTestId ?? 'add_btn').click();
  64. cy.getTestId(modalName).should('exist').and('be.visible');
  65. cy.getTestId(modalName).find('h3')
  66. .should('include.text', `新增${label}`);
  67. fn();
  68. cy.getTestId(modalName).find('form').submit();
  69. validateBtnGroup();
  70. cy.get('.ant-message-notice-content').should('include.text', '新增成功');
  71. cy.getTestId(modalName).should('not.exist');
  72. }
  73. function validateEdit(tableName: string, validateFn: () => void) {
  74. tableBtnClick(tableName, 0);
  75. cy.getTestId(modalName).should('exist').and('be.visible');
  76. cy.getTestId(modalName).find('h3').should('include.text', `修改${label}`);
  77. validateFn();
  78. cy.getTestId(modalName).find('form').submit();
  79. validateBtnGroup();
  80. cy.get('.ant-message-notice-content').should('include.text', '修改成功');
  81. cy.getTestId(modalName).should('not.exist');
  82. }
  83. return {validateAdd, validateEdit};
  84. }
  85. export function validateDelete(
  86. tableName: string,
  87. label: string,
  88. ) {
  89. tableBtnClick(tableName, 1);
  90. cy.get('.ant-modal-content').should('be.visible');
  91. cy.get('.ant-modal-confirm-title').should('include.text', `删除${label}`);
  92. cy.get('.ant-modal-confirm-content').should(
  93. 'include.text',
  94. `你确定要删除当前${label}吗?`,
  95. );
  96. cy.get('.ant-modal-confirm-btns').children().last().trigger('click');
  97. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  98. .children('.ant-table-row').first().find('td').last().children().eq(1)
  99. .should('have.class', 'ant-btn-loading');
  100. cy.getTestId(tableName).find('table').find('.ant-table-tbody')
  101. .children('.ant-table-row').first().find('td').last().children().first()
  102. .should('have.attr', 'disabled');
  103. cy.get('.ant-message-notice-content').should('include.text', '删除成功');
  104. }
  105. export function validateExport() {
  106. cy.getTestId('export_btn').click();
  107. cy.getTestId('export_btn').should('have.class', 'ant-btn-loading');
  108. cy.wait('@export');
  109. cy.getTestId('export_btn').should('not.have.class', 'ant-btn-loading');
  110. }