110 行
4.1 KiB
JavaScript
110 行
4.1 KiB
JavaScript
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
||
const isMP = platformInfo.startsWith('mp')
|
||
const isWeb = platformInfo.startsWith('web')
|
||
const isHarmony = platformInfo.startsWith('harmony')
|
||
|
||
describe('component-native-scroll-view', () => {
|
||
if (isMP) {
|
||
it('skip', () => {
|
||
expect(1).toBe(1)
|
||
})
|
||
return
|
||
}
|
||
|
||
let page;
|
||
beforeAll(async () => {
|
||
page = await program.reLaunch('/pages/component/scroll-view/scroll-view');
|
||
await page.waitFor("view");
|
||
});
|
||
|
||
it('Event scroll-vertical',async()=>{
|
||
// 纵向滚动
|
||
await page.setData({data:{scrollTop: 100}})
|
||
await page.waitFor(1000)
|
||
// 设置top 是否触发scroll 事件
|
||
const topScrollDetail = await page.data('data.scrollDetailTest')
|
||
expect(topScrollDetail.scrollLeft).toBe(0)
|
||
// Android 差异scrollTop:99.809525
|
||
expect(topScrollDetail.scrollTop).toBeGreaterThan(99.5)
|
||
//expect([100, 99.809525]).toContain(topScrollDetail.scrollTop);
|
||
expect(topScrollDetail.scrollHeight).toBeGreaterThan(0)
|
||
expect(topScrollDetail.scrollWidth).toBeGreaterThan(0)
|
||
expect(topScrollDetail.deltaX).toBe(0)
|
||
|
||
// Harmony 差异 deltaY:最后可能为0
|
||
// expect(topScrollDetail.deltaY).not.toBe(0)
|
||
expect(await page.data('data.isScrollTest')).toBe('scroll:Success')
|
||
})
|
||
|
||
it('Event scroll-horizontal',async()=>{
|
||
// 横向滚动
|
||
await page.setData({data:{scrollLeft:220}})
|
||
await page.waitFor(1000)
|
||
//设置left 是否触发scroll 事件
|
||
const leftScrollDetail = await page.data('data.scrollDetailTest')
|
||
// Android 差异scrollLeft:219.80952
|
||
expect(leftScrollDetail.scrollLeft).toBeGreaterThan(219.5)
|
||
//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(leftScrollDetail.deltaX).toBeLessThan(-99.5)
|
||
//expect([-100, -99.809525]).toContain(leftScrollDetail.deltaX);
|
||
expect(leftScrollDetail.deltaY).toBe(0)
|
||
expect(await page.data('data.isScrollTest')).toBe('scroll:Success')
|
||
})
|
||
|
||
// 移后:此测试用例在某些mac-chrome会影响scroll-horizontal的deltaX结果
|
||
it('scroll-view-screenshot', async () => {
|
||
//禁止滚动条
|
||
await page.setData({
|
||
data:{showScrollbar: false}
|
||
})
|
||
await page.waitFor(1000);
|
||
const image = await program.screenshot({fullPage: true});
|
||
expect(image).toSaveImageSnapshot();
|
||
});
|
||
|
||
it('Event scrolltolower-滚动到底部/右边',async()=>{
|
||
// 滚动到底部scrollTop:300,是否触发scrolltolower事件
|
||
await page.setData({data:{scrollTop: 300}})
|
||
await page.waitFor(600)
|
||
expect(await page.data('data.isScrolltolowerTest')).toBe('scrolltolower:Success-bottom')
|
||
})
|
||
|
||
it('Event scrolltoupper-滚动到顶部/左边',async()=>{
|
||
// 滚动到顶部scrollTop: 0,是否触发scrolltoupper事件
|
||
await page.setData({data:{scrollTop: 0}})
|
||
// await page.callMethod('goTop')
|
||
await page.waitFor(600)
|
||
expect(await page.data('data.isScrolltoupperTest')).toBe('scrolltoupper:Success-top')
|
||
})
|
||
|
||
if(!isWeb && !isMP){
|
||
it('Event scrollend-滚动结束时触发仅App端支持',async()=>{
|
||
if(isHarmony) {
|
||
// 鸿蒙scrollEnd触发比较慢
|
||
await page.waitFor(500)
|
||
}
|
||
const endDetail = await page.data('data.scrollEndDetailTest')
|
||
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)
|
||
})
|
||
}
|
||
|
||
if(!isMP) {
|
||
it('通过UniElement.scrollBy检测scroll事件是否触发',async()=>{
|
||
await page.callMethod('setVerticalScrollBy', 120)
|
||
// Harmony 平台动画为1000毫秒 所以600毫秒可能未滚动到指定区域
|
||
await page.waitFor(1000)
|
||
const scrollDetail = await page.data('data.scrollDetailTest')
|
||
expect(scrollDetail.scrollTop).toBeGreaterThan(119)
|
||
})
|
||
}
|
||
});
|