utils.ts 5.3 KB

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