scroll-view.test.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. jest.setTimeout(30000);
  2. const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
  3. const isAndroid = platformInfo.startsWith('android')
  4. const isIos = platformInfo.startsWith('ios')
  5. const isMP = platformInfo.startsWith('mp')
  6. const isWeb = platformInfo.startsWith('web')
  7. const isHarmony = platformInfo.startsWith('harmony')
  8. describe('component-native-scroll-view', () => {
  9. let page;
  10. beforeAll(async () => {
  11. page = await program.reLaunch('/pages/component/scroll-view/scroll-view');
  12. await page.waitFor("view");
  13. });
  14. it('Event scroll-vertical',async()=>{
  15. // 纵向滚动
  16. await page.setData({scrollTop: 100})
  17. await page.waitFor(1000)
  18. // 设置top 是否触发scroll 事件
  19. const topScrollDetail = await page.data('scrollDetailTest')
  20. expect(topScrollDetail.scrollLeft).toBe(0)
  21. // Android 差异scrollTop:99.809525
  22. expect(topScrollDetail.scrollTop).toBeGreaterThan(99.5)
  23. //expect([100, 99.809525]).toContain(topScrollDetail.scrollTop);
  24. expect(topScrollDetail.scrollHeight).toBeGreaterThan(0)
  25. expect(topScrollDetail.scrollWidth).toBeGreaterThan(0)
  26. expect(topScrollDetail.deltaX).toBe(0)
  27. expect(topScrollDetail.deltaY).not.toBe(0)
  28. expect(await page.data('isScrollTest')).toBe('scroll:Success')
  29. })
  30. it('Event scroll-horizontal',async()=>{
  31. // 横向滚动
  32. await page.setData({scrollLeft:220})
  33. await page.waitFor(1000)
  34. //设置left 是否触发scroll 事件
  35. const leftScrollDetail = await page.data('scrollDetailTest')
  36. // Android 差异scrollLeft:219.80952
  37. expect(leftScrollDetail.scrollLeft).toBeGreaterThan(219.5)
  38. //expect([220, 219.80952]).toContain(leftScrollDetail.scrollLeft);
  39. expect(leftScrollDetail.scrollTop).toBe(0)
  40. expect(leftScrollDetail.scrollHeight).toBeGreaterThan(0)
  41. expect(leftScrollDetail.scrollWidth).toBeGreaterThan(0)
  42. // 在安卓差异 -99.809525
  43. expect(leftScrollDetail.deltaX).toBeLessThan(-99.5)
  44. //expect([-100, -99.809525]).toContain(leftScrollDetail.deltaX);
  45. expect(leftScrollDetail.deltaY).toBe(0)
  46. expect(await page.data('isScrollTest')).toBe('scroll:Success')
  47. })
  48. // 移后:此测试用例在某些mac-chrome会影响scroll-horizontal的deltaX结果
  49. it('scroll-view-screenshot', async () => {
  50. //禁止滚动条
  51. await page.setData({
  52. showScrollbar: false
  53. })
  54. await page.waitFor(1000);
  55. const image = await program.screenshot({fullPage: true});
  56. expect(image).toSaveImageSnapshot();
  57. });
  58. it('Event scrolltolower-滚动到底部/右边',async()=>{
  59. // 滚动到底部scrollTop:300,是否触发scrolltolower事件
  60. await page.setData({scrollTop: 300})
  61. await page.waitFor(600)
  62. expect(await page.data('isScrolltolowerTest')).toBe('scrolltolower:Success-bottom')
  63. })
  64. it('Event scrolltoupper-滚动到顶部/左边',async()=>{
  65. // 滚动到顶部scrollTop: 0,是否触发scrolltoupper事件
  66. await page.setData({scrollTop: 0})
  67. // await page.callMethod('goTop')
  68. await page.waitFor(600)
  69. expect(await page.data('isScrolltoupperTest')).toBe('scrolltoupper:Success-top')
  70. })
  71. if(!isWeb && !isMP){
  72. it('Event scrollend-滚动结束时触发仅App端支持',async()=>{
  73. if(isHarmony) {
  74. // 鸿蒙scrollEnd触发比较慢
  75. await page.waitFor(500)
  76. }
  77. const endDetail = await page.data('scrollEndDetailTest')
  78. expect(endDetail.scrollLeft).toBe(0)
  79. expect(endDetail.scrollTop).toBe(0)
  80. expect(endDetail.deltaY).toBe(0)
  81. expect(endDetail.deltaX).toBe(0)
  82. expect(endDetail.scrollHeight).toBeGreaterThan(0)
  83. expect(endDetail.scrollWidth).toBeGreaterThan(0)
  84. })
  85. }
  86. if(!isMP) {
  87. it('通过UniElement.scrollBy检测scroll事件是否触发',async()=>{
  88. await page.callMethod('setVerticalScrollBy', 120)
  89. await page.waitFor(600)
  90. const scrollDetail = await page.data('scrollDetailTest')
  91. expect(scrollDetail.scrollTop).toBeGreaterThan(119)
  92. })
  93. }
  94. });