// uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/

describe('/pages/CSS/overflow/overflow-visible-event.uvue', () => {
  let isAndroid = process.env.uniTestPlatformInfo.startsWith('android')
  const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
  if(platformInfo.indexOf('12.4') != -1){
    // TODO: 排查 ios 不兼容版本 测试异常原因
    it('ios 12.4 测试异常', () => {
      expect(1).toBe(1)
    })
    return
  }

  if (!process.env.uniTestPlatformInfo.startsWith('android') && !process.env.uniTestPlatformInfo.toLowerCase().includes('ios')) {
    it('dummyTest', async () => {
      expect(1).toBe(1)
    })
    return
  }

	let page;
  let res;
	beforeAll(async () => {
	  page = await program.reLaunch('/pages/CSS/overflow/overflow-visible-event')
	  await page.waitFor(600);
	})
  beforeEach(async () => {
    await page.setData({
      jest_result: false,
      jest_click_x: -1,
      jest_click_y: -1
    })
  });

  it('Check Overflow Visible Part Click', async () => {
    res = await page.callMethod('jest_getRect')
    const point_x = await page.data('jest_click_x');
    const point_y = await page.data('jest_click_y');
    if (isAndroid){
      await program.adbCommand("input tap" + " " + point_x + " " + point_y)
    } else {
      await program.tap({x: point_x, y: point_y})
    }
    await page.waitFor(500);
    res = await page.data('jest_result');
    expect(res).toBe(true)
  });

  // 此测试针对开发者使用 translate 移动view
  it('Check Overflow Visible Part Use translate Drag', async ()=> {
    await page.callMethod('jest_getRect')
    const point_x = await page.data('jest_click_x');
    const point_y = await page.data('jest_click_y');
    const distance = 100;
    const destY = point_y + 100
    const duration = 1000
    if (isAndroid) {
      await program.adbCommand("input swipe" + " " + point_x + " " + point_y + " " + point_x + " " + destY + " " + duration)
    } else {
      await program.swipe({
            startPoint: {
              x: point_x,
              y: point_y
            },
            endPoint: {
              x: point_x,
              y: destY
            },
            duration: duration
          })
    }
    await page.waitFor(1500);
    await page.callMethod('jest_getParentRect')
    const currentParentTop = await page.data('jest_parent_top');
    const offset = 4
    const diff = Math.abs(currentParentTop - distance) < offset
    console.log("current ", currentParentTop);
    console.log("diff", diff);
    expect(diff).toBe(true)
  })

  it('Check Overflow Visible Block View Click', async () => {
    await page.callMethod('jest_getAbsoluteViewRect')
    const point_x = await page.data('jest_click_x');
    const point_y = await page.data('jest_click_y');
    console.log("input tap" + " " + point_x + " " + point_y);
    if (isAndroid) {
      await program.adbCommand("input tap" + " " + point_x + " " + point_y)
    } else {
      await program.tap({x: point_x, y: point_y})
    }
    await page.waitFor(500);
    res = await page.data('jest_result');
    expect(res).toBe(true)
  })

  it('Check Overflow Visible Deep Level Click', async () => {
    await page.callMethod('jest_scrollToDeepOverflow')
    await page.waitFor(500);
    const point_x = await page.data('jest_click_x');
    const point_y = await page.data('jest_click_y');
    console.log("input tap" + " " + point_x + " " + point_y);
    if (isAndroid) {
      await program.adbCommand("input tap" + " " + point_x + " " + point_y)
    } else {
      await program.tap({x: point_x, y: point_y})
    }
    await page.waitFor(500);
    res = await page.data('jest_result');
    expect(res).toBe(true)
  })
});
