scroll-view.test.js 3.6 KB
Newer Older
Anne_LXM's avatar
Anne_LXM 已提交
1
jest.setTimeout(30000);
2
describe('component-native-scroll-view', () => {
3 4 5 6 7 8 9 10 11 12 13 14
  let page;
  beforeAll(async () => {
    page = await program.reLaunch('/pages/component/scroll-view/scroll-view');
    await page.waitFor(300);
  });

  it('scroll-view-screenshot', async () => {
    //禁止滚动条
    await page.setData({
        showScrollbar: false
    })
    await page.waitFor(300);
15
    const image = await program.screenshot({fullPage: true});
16 17
    expect(image).toSaveImageSnapshot();
  });
18 19 20 21

  it('Event scroll-vertical',async()=>{
    // 纵向滚动
    await page.setData({scrollTop: 100})
22
    await page.waitFor(1000)
23 24
    // 设置top 是否触发scroll 事件
    const topScrollDetail = await page.data('scrollDetailTest')
25
    console.log('topScrollDetail:', topScrollDetail)
26 27 28 29 30 31 32
    expect(topScrollDetail.scrollLeft).toBe(0)
    // Android 差异scrollTop:99.809525
    expect([100, 99.809525]).toContain(topScrollDetail.scrollTop);
    expect(topScrollDetail.scrollHeight).toBeGreaterThan(0)
    expect(topScrollDetail.scrollWidth).toBeGreaterThan(0)
    expect(topScrollDetail.deltaX).toBe(0)
    expect(topScrollDetail.deltaY).not.toBe(0)
33
    expect(await page.data('isScrollTest')).toBe('scroll:Success')
34 35 36
  })

  it('Event scroll-horizontal',async()=>{
37
    console.log('data-1:', await page.data())
38 39
    // 横向滚动
    await page.setData({scrollLeft:220})
40 41 42
    const waitTime = process.env.uniTestPlatformInfo.includes('chrome') ? 4000:1000
    await page.waitFor(waitTime)
    console.log('data-2:', await page.data())
43 44
    //设置left 是否触发scroll 事件
    const leftScrollDetail = await page.data('scrollDetailTest')
45
    console.log('leftScrollDetail:', leftScrollDetail)
46 47 48 49 50 51 52 53
    // Android 差异scrollLeft:219.80952
    expect([220, 219.80952]).toContain(leftScrollDetail.scrollLeft);
    expect(leftScrollDetail.scrollTop).toBe(0)
    expect(leftScrollDetail.scrollHeight).toBeGreaterThan(0)
    expect(leftScrollDetail.scrollWidth).toBeGreaterThan(0)
    // 在安卓差异 -99.809525
    expect([-100, -99.809525]).toContain(leftScrollDetail.deltaX);
    expect(leftScrollDetail.deltaY).toBe(0)
54
    expect(await page.data('isScrollTest')).toBe('scroll:Success')
55 56 57
  })

  it('Event scrolltolower-滚动到底部/右边',async()=>{
58
    // 滚动到底部scrollTop:300,是否触发scrolltolower事件
59 60
    await page.setData({scrollTop: 300})
    await page.waitFor(600)
61
    expect(await page.data('isScrolltolowerTest')).toBe('scrolltolower:Success-bottom')
62 63 64
  })

  it('Event scrolltoupper-滚动到顶部/左边',async()=>{
65 66 67
    // 滚动到顶部scrollTop: 0,是否触发scrolltoupper事件
    await page.setData({scrollTop: 0})
    // await page.callMethod('goTop')
68
    await page.waitFor(600)
69
    expect(await page.data('isScrolltoupperTest')).toBe('scrolltoupper:Success-top')
70
  })
71 72 73 74

  if(!process.env.UNI_UTS_PLATFORM.startsWith('web')){
    it('Event scrollend-滚动结束时触发仅App端支持',async()=>{
      const endDetail = await page.data('scrollEndDetailTest')
75
      console.log('scrollEndDetailTest:', endDetail)
76 77 78 79 80 81 82 83
      expect(endDetail.scrollLeft).toBe(0)
      expect(endDetail.scrollTop).toBe(0)
      expect(endDetail.deltaY).toBe(0)
      expect(endDetail.deltaX).toBe(0)
      expect(endDetail.scrollHeight).toBeGreaterThan(0)
      expect(endDetail.scrollWidth).toBeGreaterThan(0)
    })
  }
84 85 86 87 88 89 90 91

  it('通过UniElement.scrollBy检测scroll事件是否触发',async()=>{
    await page.callMethod('setVerticalScrollBy', 120)
    // await page.waitFor(600)
    const scrollDetail = await page.data('scrollDetailTest')
    console.log('setVerticalScrollBy scrollDetail:', scrollDetail)
    expect(scrollDetail.scrollTop).toBe(120)
  })
92
});