utils.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. export function selectClick(testid: string, eq = 0) {
  2. cy.getTestId(testid).click();
  3. cy.getTestId(testid).find('.rc-virtual-list-holder-inner').children().eq(eq).click();
  4. }
  5. export function intoMenu(parent: string, child: string) {
  6. cy.getTestId('menu')
  7. .children()
  8. .each(function (el) {
  9. const titleElement = el.find('.ant-menu-submenu-title');
  10. if (titleElement.text() === parent) {
  11. titleElement.trigger('click');
  12. el.find(`ul>li[title="${child}"]`).trigger('click');
  13. }
  14. });
  15. }
  16. export function validateSelect(testid: string, value: string) {
  17. cy.getTestId(testid)
  18. .find('.ant-select-selection-item')
  19. .should('have.attr', 'title', value)
  20. .and('have.text', value);
  21. }
  22. export function validateTableList(tableName: string, firstPageNumber = 3, secondPageNumber = 2) {
  23. cy.getTestId(tableName)
  24. .find('table')
  25. .find('.ant-table-tbody')
  26. .children('.ant-table-row')
  27. .should('have.length', firstPageNumber);
  28. cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]').click();
  29. cy.getTestId(tableName)
  30. .find('table')
  31. .find('.ant-table-tbody')
  32. .children('.ant-table-row')
  33. .should('have.length', secondPageNumber);
  34. }
  35. export function validateTableSearch(
  36. tableName: string,
  37. value?: string,
  38. options?: {btnTestId?: string},
  39. ) {
  40. cy.getTestId(tableName).siblings('.ant-pagination').find('li[title="2"]').click();
  41. const {btnTestId} = options ?? {};
  42. return function (text?: string) {
  43. cy.getTestId(btnTestId ?? 'search_btn').click();
  44. cy.getTestId(btnTestId ?? 'search_btn').should('have.class', 'ant-btn-loading');
  45. cy.getTestId(tableName)
  46. .find('table')
  47. .find('.ant-table-tbody')
  48. .children('.ant-table-row')
  49. .first()
  50. .find('td')
  51. .first()
  52. .should('include.text', text ?? value);
  53. cy.getTestId(btnTestId ?? 'search_btn').should('not.have.class', 'ant-btn-loading');
  54. cy.getTestId(tableName)
  55. .siblings('.ant-pagination')
  56. .find('li[title="1"]')
  57. .should('have.class', 'ant-pagination-item-active');
  58. };
  59. }
  60. export function tableBtnClick(tableName: string, index: number) {
  61. cy.getTestId(tableName)
  62. .find('table')
  63. .find('.ant-table-tbody')
  64. .children('.ant-table-row')
  65. .first()
  66. .find('td')
  67. .last()
  68. .children()
  69. .eq(index)
  70. .click();
  71. }
  72. export function validateModalBtnGroup(modalName: string) {
  73. cy.getTestId(modalName)
  74. .getTestId('modal_btn_group')
  75. .find('.ant-btn')
  76. .should('have.class', 'ant-btn-loading');
  77. }
  78. export function validateModalOperation(modalName: string, text: string) {
  79. cy.getTestId(modalName).find('form').submit();
  80. validateModalBtnGroup(modalName);
  81. cy.get('.ant-message-notice-content').should('include.text', text);
  82. cy.getTestId(modalName).should('not.exist');
  83. }
  84. export function validatePut(modalName: string, label: string, options?: {addBtnTestId?: string}) {
  85. const {addBtnTestId} = options ?? {};
  86. function validateAdd(fn: () => void) {
  87. cy.getTestId(addBtnTestId ?? 'add_btn').click();
  88. cy.getTestId(modalName).should('exist').and('be.visible');
  89. cy.getTestId(modalName).find('h3').should('include.text', `新增${label}`);
  90. fn();
  91. validateModalOperation(modalName, '新增成功');
  92. }
  93. function validateEdit(tableName: string, validateFn: () => void) {
  94. tableBtnClick(tableName, 0);
  95. cy.getTestId(modalName).should('exist').and('be.visible');
  96. cy.getTestId(modalName).find('h3').should('include.text', `修改${label}`);
  97. validateFn();
  98. validateModalOperation(modalName, '修改成功');
  99. }
  100. return {validateAdd, validateEdit};
  101. }
  102. export function validateDelete(tableName: string, label: string) {
  103. tableBtnClick(tableName, 1);
  104. cy.get('.ant-modal-content').should('be.visible');
  105. cy.get('.ant-modal-confirm-title').should('include.text', `删除${label}`);
  106. cy.get('.ant-modal-confirm-content').should('include.text', `你确定要删除当前${label}吗?`);
  107. cy.get('.ant-modal-confirm-btns').children().last().trigger('click');
  108. cy.getTestId(tableName)
  109. .find('table')
  110. .find('.ant-table-tbody')
  111. .children('.ant-table-row')
  112. .first()
  113. .find('td')
  114. .last()
  115. .children()
  116. .eq(1)
  117. .should('have.class', 'ant-btn-loading');
  118. cy.getTestId(tableName)
  119. .find('table')
  120. .find('.ant-table-tbody')
  121. .children('.ant-table-row')
  122. .first()
  123. .find('td')
  124. .last()
  125. .children()
  126. .first()
  127. .should('have.attr', 'disabled');
  128. cy.get('.ant-message-notice-content').should('include.text', '删除成功');
  129. }
  130. export function validateExport(testid?: string) {
  131. cy.getTestId(testid ?? 'export_btn').click();
  132. cy.getTestId(testid ?? 'export_btn').should('have.class', 'ant-btn-loading');
  133. cy.getTestId(testid ?? 'export_btn').should('not.have.class', 'ant-btn-loading');
  134. }
  135. export function closeModal() {
  136. cy.get('.ReactModal__Overlay').trigger('click', 'topRight');
  137. }
  138. export function clickDatePicker(id: string) {
  139. cy.getTestId(id).click();
  140. cy.get('.ant-picker-panels')
  141. .children()
  142. .eq(0)
  143. .find('.ant-picker-content')
  144. .find('tbody')
  145. .find('td')
  146. .eq(0)
  147. .click();
  148. cy.get('.ant-picker-panels')
  149. .children()
  150. .eq(1)
  151. .find('.ant-picker-content')
  152. .find('tbody')
  153. .find('td')
  154. .eq(0)
  155. .click();
  156. }