const PAGE_PATH = '/pages/component/global-events/global-events' describe('event trigger', () => { if (process.env.UNI_TEST_DEVICES_DIRECTION == 'landscape') { it('跳过横屏模式', () => { expect(1).toBe(1) }) return } const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase() const isAndroid = platformInfo.startsWith('android') const isIos = platformInfo.startsWith('ios') let page beforeAll(async () => { page = await program.navigateTo(PAGE_PATH) await page.waitFor('view') }) it('touch', async () => { if (!process.env.UNI_AUTOMATOR_APP_WEBVIEW) { const el = await page.$('#touch-target') await el.touchstart({ touches: [{ identifier: 1, pageX: 101, pageY: 101, clientX: 101, clientY: 101, screenX: 101, screenY: 101 }, ], changedTouches: [{ identifier: 1, pageX: 101, pageY: 101, clientX: 101, clientY: 101, screenX: 101, screenY: 101 }, ], }) const touchStartTouchTargetIdentifier = isAndroid ? '1.0' : '1' const touchStartTouchTargetValue = isAndroid ? '101.0' : '101' const touchStartTouchIdentifier = await page.$('#touch-start-touch-identifier') expect(await touchStartTouchIdentifier.text()).toBe(touchStartTouchTargetIdentifier) const touchStartTouchPageX = await page.$('#touch-start-touch-page-x') expect(await touchStartTouchPageX.text()).toBe(touchStartTouchTargetValue) const touchStartTouchPageY = await page.$('#touch-start-touch-page-y') expect(await touchStartTouchPageY.text()).toBe(touchStartTouchTargetValue) const touchStartTouchClientX = await page.$('#touch-start-touch-client-x') expect(await touchStartTouchClientX.text()).toBe(touchStartTouchTargetValue) const touchStartTouchClientY = await page.$('#touch-start-touch-client-y') expect(await touchStartTouchClientY.text()).toBe(touchStartTouchTargetValue) const touchStartTouchScreenX = await page.$('#touch-start-touch-screen-x') expect(await touchStartTouchScreenX.text()).toBe(touchStartTouchTargetValue) const touchStartTouchScreenY = await page.$('#touch-start-touch-screen-y') expect(await touchStartTouchScreenY.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchIdentifier = await page.$('#touch-start-changed-touch-identifier') expect(await touchStartChangedTouchIdentifier.text()).toBe(touchStartTouchTargetIdentifier) const touchStartChangedTouchPageX = await page.$('#touch-start-changed-touch-page-x') expect(await touchStartChangedTouchPageX.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchPageY = await page.$('#touch-start-changed-touch-page-y') expect(await touchStartChangedTouchPageY.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchClientX = await page.$('#touch-start-changed-touch-client-x') expect(await touchStartChangedTouchClientX.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchClientY = await page.$('#touch-start-changed-touch-client-y') expect(await touchStartChangedTouchClientY.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchScreenX = await page.$('#touch-start-changed-touch-screen-x') expect(await touchStartChangedTouchScreenX.text()).toBe(touchStartTouchTargetValue) const touchStartChangedTouchScreenY = await page.$('#touch-start-changed-touch-screen-y') expect(await touchStartChangedTouchScreenY.text()).toBe(touchStartTouchTargetValue) await el.touchmove({ touches: [{ identifier: 1, pageX: 102, pageY: 102, clientX: 102, clientY: 102, screenX: 102, screenY: 102 }], changedTouches: [{ identifier: 1, pageX: 102, pageY: 102, clientX: 102, clientY: 102, screenX: 102, screenY: 102 }, ], }) const touchMoveTouchTargetIdentifier = isAndroid ? '1.0' : '1' const touchMoveTouchTargetValue = isAndroid ? '102.0' : '102' const touchMoveTouchIdentifier = await page.$('#touch-move-touch-identifier') expect(await touchMoveTouchIdentifier.text()).toBe(touchMoveTouchTargetIdentifier) const touchMoveTouchPageX = await page.$('#touch-move-touch-page-x') expect(await touchMoveTouchPageX.text()).toBe(touchMoveTouchTargetValue) const touchMoveTouchPageY = await page.$('#touch-move-touch-page-y') expect(await touchMoveTouchPageY.text()).toBe(touchMoveTouchTargetValue) const touchMoveTouchClientX = await page.$('#touch-move-touch-client-x') expect(await touchMoveTouchClientX.text()).toBe(touchMoveTouchTargetValue) const touchMoveTouchClientY = await page.$('#touch-move-touch-client-y') expect(await touchMoveTouchClientY.text()).toBe(touchMoveTouchTargetValue) const touchMoveTouchScreenX = await page.$('#touch-move-touch-screen-x') expect(await touchMoveTouchScreenX.text()).toBe(touchMoveTouchTargetValue) const touchMoveTouchScreenY = await page.$('#touch-move-touch-screen-y') expect(await touchMoveTouchScreenY.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchIdentifier = await page.$('#touch-move-changed-touch-identifier') expect(await touchMoveChangedTouchIdentifier.text()).toBe(touchMoveTouchTargetIdentifier) const touchMoveChangedTouchPageX = await page.$('#touch-move-changed-touch-page-x') expect(await touchMoveChangedTouchPageX.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchPageY = await page.$('#touch-move-changed-touch-page-y') expect(await touchMoveChangedTouchPageY.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchClientX = await page.$('#touch-move-changed-touch-client-x') expect(await touchMoveChangedTouchClientX.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchClientY = await page.$('#touch-move-changed-touch-client-y') expect(await touchMoveChangedTouchClientY.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchScreenX = await page.$('#touch-move-changed-touch-screen-x') expect(await touchMoveChangedTouchScreenX.text()).toBe(touchMoveTouchTargetValue) const touchMoveChangedTouchScreenY = await page.$('#touch-move-changed-touch-screen-y') expect(await touchMoveChangedTouchScreenY.text()).toBe(touchMoveTouchTargetValue) await el.touchend({ touches: [{ identifier: 1, pageX: 103, pageY: 103, clientX: 103, clientY: 103, screenX: 103, screenY: 103 }], changedTouches: [{ identifier: 1, pageX: 103, pageY: 103, clientX: 103, clientY: 103, screenX: 103, screenY: 103 }, ], }) const touchEndTouchTargetIdentifier = isAndroid ? '1.0' : '1' const touchEndTouchTargetValue = isAndroid ? '103.0' : '103' const touchEndTouchIdentifier = await page.$('#touch-end-touch-identifier') expect(await touchEndTouchIdentifier.text()).toBe(touchEndTouchTargetIdentifier) const touchEndTouchPageX = await page.$('#touch-end-touch-page-x') expect(await touchEndTouchPageX.text()).toBe(touchEndTouchTargetValue) const touchEndTouchPageY = await page.$('#touch-end-touch-page-y') expect(await touchEndTouchPageY.text()).toBe(touchEndTouchTargetValue) const touchEndTouchClientX = await page.$('#touch-end-touch-client-x') expect(await touchEndTouchClientX.text()).toBe(touchEndTouchTargetValue) const touchEndTouchClientY = await page.$('#touch-end-touch-client-y') expect(await touchEndTouchClientY.text()).toBe(touchEndTouchTargetValue) const touchEndTouchScreenX = await page.$('#touch-end-touch-screen-x') expect(await touchEndTouchScreenX.text()).toBe(touchEndTouchTargetValue) const touchEndTouchScreenY = await page.$('#touch-end-touch-screen-y') expect(await touchEndTouchScreenY.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchIdentifier = await page.$('#touch-end-changed-touch-identifier') expect(await touchEndChangedTouchIdentifier.text()).toBe(touchEndTouchTargetIdentifier) const touchEndChangedTouchPageX = await page.$('#touch-end-changed-touch-page-x') expect(await touchEndChangedTouchPageX.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchPageY = await page.$('#touch-end-changed-touch-page-y') expect(await touchEndChangedTouchPageY.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchClientX = await page.$('#touch-end-changed-touch-client-x') expect(await touchEndChangedTouchClientX.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchClientY = await page.$('#touch-end-changed-touch-client-y') expect(await touchEndChangedTouchClientY.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchScreenX = await page.$('#touch-end-changed-touch-screen-x') expect(await touchEndChangedTouchScreenX.text()).toBe(touchEndTouchTargetValue) const touchEndChangedTouchScreenY = await page.$('#touch-end-changed-touch-screen-y') expect(await touchEndChangedTouchScreenY.text()).toBe(touchEndTouchTargetValue) } }) it('click', async () => { const el = await page.$('#longpress-target') await el.tap() const targetX = isAndroid ? '0.0' : '0' const targetY = isAndroid ? '0.0' : '0' const tapEventX = await page.$('#tap-event-x') expect(await tapEventX.text()).toBe(targetX) const tapEventY = await page.$('#tap-event-y') expect(await tapEventY.text()).toBe(targetY) const clickEventX = await page.$('#click-event-x') expect(await clickEventX.text()).toBe(targetX) const clickEventY = await page.$('#click-event-y') expect(await clickEventY.text()).toBe(targetY) }) it('longPress', async () => { if (!process.env.UNI_AUTOMATOR_APP_WEBVIEW) { const el = await page.$('#longpress-target') await el.longpress() const longPressTouchTargetIdentifier = isAndroid ? '1.0' : '1' const longPressTouchTargetValue = isAndroid ? '0.0' : '0' const longPressTouchIdentifier = await page.$('#long-press-touch-identifier') expect(await longPressTouchIdentifier.text()).toBe(longPressTouchTargetIdentifier) const longPressTouchPageX = await page.$('#long-press-touch-page-x') expect(await longPressTouchPageX.text()).toBe(longPressTouchTargetValue) const longPressTouchPageY = await page.$('#long-press-touch-page-y') expect(await longPressTouchPageY.text()).toBe(longPressTouchTargetValue) const longPressTouchClientX = await page.$('#long-press-touch-client-x') expect(await longPressTouchClientX.text()).toBe(longPressTouchTargetValue) const longPressTouchClientY = await page.$('#long-press-touch-client-y') expect(await longPressTouchClientY.text()).toBe(longPressTouchTargetValue) const longPressTouchScreenX = await page.$('#long-press-touch-screen-x') expect(await longPressTouchScreenX.text()).toBe(longPressTouchTargetValue) const longPressTouchScreenY = await page.$('#long-press-touch-screen-y') expect(await longPressTouchScreenY.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchIdentifier = await page.$('#long-press-changed-touch-identifier') expect(await longPressChangedTouchIdentifier.text()).toBe(longPressTouchTargetIdentifier) const longPressChangedTouchPageX = await page.$('#long-press-changed-touch-page-x') expect(await longPressChangedTouchPageX.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchPageY = await page.$('#long-press-changed-touch-page-y') expect(await longPressChangedTouchPageY.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchClientX = await page.$('#long-press-changed-touch-client-x') expect(await longPressChangedTouchClientX.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchClientY = await page.$('#long-press-changed-touch-client-y') expect(await longPressChangedTouchClientY.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchScreenX = await page.$('#long-press-changed-touch-screen-x') expect(await longPressChangedTouchScreenX.text()).toBe(longPressTouchTargetValue) const longPressChangedTouchScreenY = await page.$('#long-press-changed-touch-screen-y') expect(await longPressChangedTouchScreenY.text()).toBe(longPressTouchTargetValue) if (isAndroid || isIos) { if (isAndroid) { if (platformInfo.indexOf('6') != -1 && platformInfo.indexOf('x86') == -1) { await program.tap({ x: 200, y: 700, duration: 1000 }) } else if (platformInfo.indexOf('12') != -1) { await program.tap({ x: 300, y: 1100, duration: 1000 }) } else { await program.tap({ x: 200, y: 1000, duration: 1000 }) } } else if (isIos) { // 规避系统授权弹框 await program.tap({ x: 100, y: 500, }) await program.tap({ x: 200, y: 400, duration: 1000 }) } const longPressTouchIdentifierText = await longPressTouchIdentifier.text() expect(longPressTouchIdentifierText).not.toBe(longPressTouchTargetIdentifier) expect(longPressTouchIdentifierText).toBeTruthy() const longPressTouchPageXText = await longPressTouchPageX.text() expect(longPressTouchPageXText).not.toBe(longPressTouchTargetValue) expect(longPressTouchPageXText).toBeTruthy() const longPressTouchPageYText = await longPressTouchPageY.text() expect(longPressTouchPageYText).not.toBe(longPressTouchTargetValue) expect(longPressTouchPageYText).toBeTruthy() const longPressTouchClientXText = await longPressTouchClientX.text() expect(longPressTouchClientXText).not.toBe(longPressTouchTargetValue) expect(longPressTouchClientXText).toBeTruthy() const longPressTouchClientYText = await longPressTouchClientY.text() expect(longPressTouchClientYText).not.toBe(longPressTouchTargetValue) expect(longPressTouchClientYText).toBeTruthy() const longPressTouchScreenXText = await longPressTouchScreenX.text() expect(longPressTouchScreenXText).not.toBe(longPressTouchTargetValue) expect(longPressTouchScreenXText).toBeTruthy() const longPressTouchScreenYText = await longPressTouchScreenY.text() expect(longPressTouchScreenYText).not.toBe(longPressTouchTargetValue) expect(longPressTouchScreenYText).toBeTruthy() const longPressChangedTouchIdentifierText = await longPressChangedTouchIdentifier.text() expect(longPressChangedTouchIdentifierText).not.toBe(longPressTouchTargetIdentifier) expect(longPressChangedTouchIdentifierText).toBeTruthy() const longPressChangedTouchPageXText = await longPressChangedTouchPageX.text() expect(longPressChangedTouchPageXText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchPageXText).toBeTruthy() const longPressChangedTouchPageYText = await longPressChangedTouchPageY.text() expect(longPressChangedTouchPageYText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchPageYText).toBeTruthy() const longPressChangedTouchClientXText = await longPressChangedTouchClientX.text() expect(longPressChangedTouchClientXText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchClientXText).toBeTruthy() const longPressChangedTouchClientYText = await longPressChangedTouchClientY.text() expect(longPressChangedTouchClientYText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchClientYText).toBeTruthy() const longPressChangedTouchScreenXText = await longPressChangedTouchScreenX.text() expect(longPressChangedTouchScreenXText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchScreenXText).toBeTruthy() const longPressChangedTouchScreenYText = await longPressChangedTouchScreenY.text() expect(longPressChangedTouchScreenYText).not.toBe(longPressTouchTargetValue) expect(longPressChangedTouchScreenYText).toBeTruthy() } } }) it.only('mock tap event', async () => { // ios only 坐标换算准确 if (isIos) { page = await program.reLaunch(PAGE_PATH) await page.waitFor('view') const el = await page.$('#longpress-target') const size = await el.size() const position = await el.offset() // console.log('position', position) // console.log('size', size); const x = position.left + size.width / 2.0 const y = position.top + size.height / 2.0 const res = await uni.getWindowInfo(); // console.log('res', res.statusBarHeight); const baseStatusTextHeight = 44 const baseTop = res.statusBarHeight ?? 0 await program.tap({ x: x, y: y + baseTop + baseStatusTextHeight, duration: 100 }) await page.waitFor(500) const clickEventX = await page.$('#click-event-x') const StringX = await clickEventX.text() expect(Number(StringX)).toBeGreaterThan(0) const clickEventY = await page.$('#click-event-y') const StringY = await clickEventY.text() expect(Number(StringY)).toBeGreaterThan(0) } else { expect(1).toBe(1) } }) })