list-view.test.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
  2. const isMP = platformInfo.startsWith('mp')
  3. const isWeb = platformInfo.startsWith('web')
  4. const isIOS = platformInfo.startsWith('ios')
  5. const isHarmony = platformInfo.startsWith('harmony')
  6. describe('component-native-list-view', () => {
  7. if (isMP) {
  8. it('skip mp', () => {
  9. expect(1).toBe(1)
  10. })
  11. return
  12. }
  13. let page
  14. beforeAll(async () => {
  15. //打开list-view测试页
  16. page = await program.reLaunch('/pages/component/list-view/list-view')
  17. await page.waitFor(600)
  18. })
  19. //检测竖向scrolltop属性赋值
  20. it('check_scroll_top', async () => {
  21. await page.callMethod('confirm_scroll_top_input', 600)
  22. await page.waitFor(600)
  23. const listElement = await page.$('#listview')
  24. const scrollTop = await listElement.attribute("scrollTop")
  25. console.log("check_scroll_top---"+scrollTop)
  26. expect(scrollTop-600).toBeGreaterThanOrEqual(0)
  27. await page.callMethod('confirm_scroll_top_input', 0)
  28. await page.waitFor(600)
  29. })
  30. //检测横向scrollLeft属性赋值 备注:iOS不支持list-view横向滚动
  31. it('check_scroll_left', async () => {
  32. if(await page.data('scroll_x_boolean') === false) {
  33. await page.callMethod('change_scroll_x_boolean', true)
  34. await page.callMethod('change_scroll_y_boolean', false)
  35. await page.waitFor(600)
  36. }
  37. await page.callMethod('confirm_scroll_left_input', 600)
  38. await page.waitFor(600)
  39. const listElement = await page.$('#listview')
  40. const scrollLeft = await listElement.attribute("scrollLeft")
  41. console.log("check_scroll_left---"+scrollLeft)
  42. expect(scrollLeft-600).toBeGreaterThanOrEqual(0)
  43. await page.callMethod('confirm_scroll_left_input', 0)
  44. await page.waitFor(600)
  45. })
  46. it('Event check_scroll', async () => {
  47. await page.callMethod('change_scroll_y_boolean', true)
  48. await page.callMethod('change_scroll_x_boolean', false)
  49. await page.waitFor(600)
  50. // 设置一次scrollTop 0。切换横竖方向后scrollTop属性是否保持并无规范。
  51. await page.callMethod('confirm_scroll_top_input', 600)
  52. await page.waitFor(500)
  53. await page.callMethod('confirm_scroll_top_input', 300)
  54. await page.waitFor(500)
  55. const scrollDetail = await page.data('scrollDetailTest')
  56. // console.log('scrollDetailTest:', scrollDetail)
  57. expect(scrollDetail.scrollLeft).toBe(0)
  58. // scrollTop和deltaY 在安卓端差异 299.8095
  59. expect(scrollDetail.scrollTop).toBeGreaterThan(299.5)
  60. //expect([300, 299.8095]).toContain(scrollDetail.scrollTop);
  61. expect(scrollDetail.scrollHeight).toBeGreaterThan(0)
  62. expect(scrollDetail.scrollWidth).toBeGreaterThan(0)
  63. expect(scrollDetail.deltaX).toBe(0)
  64. //此处可判断安卓issues:9121的问题
  65. expect(scrollDetail.deltaY).toBeGreaterThan(299.5)
  66. //expect([300.1905, 300, 299.8095]).toContain(scrollDetail.deltaY);
  67. expect(await page.data('isScrollTest')).toBe('scroll:Success')
  68. await page.callMethod('confirm_scroll_top_input', 0)
  69. await page.waitFor(600)
  70. })
  71. it('Event scrolltolower-滚动到底部/右边',async()=>{
  72. // 滚动到底部,是否触发scrolltolower事件
  73. await page.callMethod('confirm_scroll_top_input', 2500)
  74. await page.waitFor(600)
  75. expect(await page.data('isScrolltolowerTest')).toBe('scrolltolower:Success-bottom')
  76. await page.callMethod('confirm_scroll_top_input', 0)
  77. await page.waitFor(600)
  78. })
  79. it('Event scrolltoupper-滚动到顶部/左边',async()=>{
  80. // 滚动到顶部50,是否触发scrolltoupper事件
  81. await page.callMethod('confirm_scroll_top_input', 40)
  82. await page.waitFor(1000)
  83. expect(await page.data('isScrolltoupperTest')).toBe('scrolltoupper:Success-top')
  84. await page.callMethod('confirm_scroll_top_input', 0)
  85. await page.waitFor(600)
  86. })
  87. if(isWeb || isIOS) {
  88. return
  89. }
  90. it('Event scrollend-滚动结束时触发',async()=>{
  91. // 仅App端支持,向上滑动页面
  92. await program.swipe({
  93. startPoint: { x: 100, y: 300 },
  94. endPoint: { x: 100, y: 100 },
  95. duration: 100
  96. })
  97. await page.waitFor(1600)
  98. const endDetail = await page.data('scrollEndDetailTest')
  99. console.log('scrollEndDetailTest:', endDetail)
  100. expect(endDetail.deltaY).toBe(0)
  101. expect(endDetail.deltaX).toBe(0)
  102. expect(endDetail.scrollLeft).toBe(0)
  103. expect(endDetail.scrollTop).toBeGreaterThan(0)
  104. expect(endDetail.scrollHeight).toBeGreaterThan(0)
  105. expect(endDetail.scrollWidth).toBeGreaterThan(0)
  106. })
  107. //检测竖向可滚动区域
  108. it('check_scroll_height', async () => {
  109. await page.callMethod('change_scroll_y_boolean', true)
  110. await page.callMethod('change_scroll_x_boolean', false)
  111. await page.waitFor(600)
  112. const value = await page.callMethod('check_scroll_height')
  113. expect(value).toBe(true)
  114. })
  115. //检测横向可滚动区域 备注:iOS不支持list-view横向滚动
  116. it('check_scroll_width', async () => {
  117. if(isHarmony) {
  118. // 鸿蒙平台list-view的暂不支持一次计算出scrollWidth
  119. expect(1).toBe(1)
  120. return
  121. }
  122. if(await page.data('scroll_x_boolean') === false) {
  123. await page.callMethod('change_scroll_x_boolean', true)
  124. await page.callMethod('change_scroll_y_boolean', false)
  125. await page.waitFor(600)
  126. }
  127. await page.callMethod('change_scroll_y_boolean', false)
  128. await page.callMethod('change_scroll_x_boolean', true)
  129. await page.waitFor(600)
  130. const value = await page.callMethod('check_scroll_width')
  131. expect(value).toBe(true)
  132. })
  133. //检测下拉刷新 备注:iOS本地测试结果正确,但是自动化测试结果错误
  134. it('check_refresher', async () => {
  135. if(await page.data('scroll_y_boolean') === false) {
  136. await page.callMethod('change_scroll_y_boolean', true)
  137. await page.callMethod('change_scroll_x_boolean', false)
  138. await page.waitFor(600)
  139. }
  140. await page.setData({
  141. refresher_enabled_boolean: true,
  142. refresher_triggered_boolean: true
  143. })
  144. await page.waitFor(1000)
  145. expect(await page.data('refresherrefresh')).toBe(true)
  146. //延迟 等待下拉刷新执行结束 防止后续测试任务结果异常
  147. await page.waitFor(2000)
  148. })
  149. // TODO attribute、property规范化
  150. //检测竖向scroll_into_view属性赋值 备注:iOS本地测试结果正确,但是自动化测试结果错误
  151. it('check_scroll_into_view_top', async () => {
  152. if(await page.data('scroll_y_boolean') === false) {
  153. await page.callMethod('change_scroll_y_boolean', true)
  154. await page.callMethod('change_scroll_x_boolean', false)
  155. await page.waitFor(600)
  156. }
  157. await page.callMethod('item_change_size_enum', 3)
  158. await page.waitFor(600)
  159. const listElement = await page.$('#listview')
  160. const scrollTop = await listElement.attribute("scrollTop")
  161. console.log("check_scroll_into_view_top--"+scrollTop)
  162. await page.callMethod('item_change_size_enum', 0)
  163. expect(scrollTop-690).toBeGreaterThanOrEqual(0)
  164. })
  165. //检测横向scroll_into_view属性赋值 备注:iOS不支持list-view横向滚动
  166. it('check_scroll_into_view_left', async () => {
  167. if(await page.data('scroll_x_boolean') === false) {
  168. await page.callMethod('change_scroll_x_boolean', true)
  169. await page.callMethod('change_scroll_y_boolean', false)
  170. await page.waitFor(600)
  171. }
  172. await page.callMethod('setScrollIntoView', "item---3")
  173. await page.waitFor(600)
  174. const listElement = await page.$('#listview')
  175. const scrollLeft = await listElement.attribute("scrollLeft")
  176. console.log("check_scroll_into_view_left--"+scrollLeft)
  177. await page.callMethod('setScrollIntoView', "item---0")
  178. expect(scrollLeft-1080).toBeGreaterThanOrEqual(0)
  179. })
  180. })