web-view.test.js 4.6 KB
Newer Older
DCloud-WZF's avatar
DCloud-WZF 已提交
1 2 3
// uni-app自动化测试教程: uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/

describe('component-native-web-view', () => {
4
  if (!process.env.uniTestPlatformInfo.startsWith('web') && !process.env.UNI_AUTOMATOR_APP_WEBVIEW) {
DCloud-WZF's avatar
DCloud-WZF 已提交
5
    let page;
6
    let start = 0;
DCloud-WZF's avatar
DCloud-WZF 已提交
7 8 9 10 11 12 13 14
    beforeAll(async () => {
      page = await program.reLaunch('/pages/component/web-view/web-view');
      await page.waitFor(3000);
    });

    it('check_load_url', async () => {
      expect(await page.data('loadError')).toBe(false)
    });
15

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    it('test attr webview-styles', async () => {
      await page.setData({
        webview_styles: {
          progress: {
            color: '#FF0'
          }
        }
      });
      await page.waitFor(100);
      await page.callMethod('reload');
      await page.waitFor(100);
      await page.setData({
        webview_styles: {
          progress: {
            color: 'yellow'
          }
        }
      });
      await page.waitFor(100);
      await page.callMethod('reload');
36 37 38 39 40 41 42 43 44 45 46
    });

    it('test touch event', async () => {
      await page.setData({
        autoTest: true
      });
      const info = await page.callMethod('getWindowInfo');
      await program.tap({
        x: 1,
        y: (info.statusBarHeight + 44) * info.pixelRatio + 1
      });
47 48 49 50
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventTouchstart')) && (await page.data('eventTap')) || (Date.now() - start > 500);
      });
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
      expect(await page.data('eventTouchstart')).toEqual({
        clientX: 1,
        clientY: 1
      });
      expect(await page.data('eventTap')).toEqual({
        clientX: 1,
        clientY: 1
      });
      await page.setData({
        pointerEvents: 'none'
      });
      await page.waitFor(100);
      await program.tap({
        x: 10,
        y: (info.statusBarHeight + 44) * info.pixelRatio + 10
      });
67 68 69 70
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventTouchstart')) && (await page.data('eventTap')) || (Date.now() - start > 500);
      });
71 72 73 74 75 76 77 78 79 80 81
      expect(await page.data('eventTouchstart')).toEqual({
        clientX: 1,
        clientY: 1
      });
      expect(await page.data('eventTap')).toEqual({
        clientX: 1,
        clientY: 1
      });
      await page.setData({
        pointerEvents: 'auto'
      });
82 83
    });

84
    it('test event loading load', async () => {
85 86 87 88 89
      await page.callMethod('reload');
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoading')) || (Date.now() - start > 500);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
90 91 92 93 94 95 96 97 98 99 100
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
        expect(await page.data('eventLoading')).toEqual({
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
      }else {
        expect(await page.data('eventLoading')).toEqual({
          tagName: 'WEB-VIEW',
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
101 102 103 104 105
      }
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoad')) || (Date.now() - start > 5000);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
106 107 108 109 110 111 112 113 114 115 116 117
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
         expect(await page.data('eventLoad')).toEqual({
           type: 'load',
           src: 'https://www.dcloud.io/'
         });
      }else {
        expect(await page.data('eventLoad')).toEqual({
          tagName: 'WEB-VIEW',
          type: 'load',
          src: 'https://www.dcloud.io/'
        });
      }
118 119 120
    });

    it('test event error', async () => {
121 122 123 124 125
      const infos = process.env.uniTestPlatformInfo.split(' ');
      const version = parseInt(infos[infos.length - 1]);
      if (process.env.uniTestPlatformInfo.startsWith('android') && version > 5) {
        await page.setData({
          src: 'https://www.dclou.io/uni-app-x'
126 127 128 129
        });
        start = Date.now();
        await page.waitFor(async () => {
          return (await page.data('eventError')) || (Date.now() - start > 1000);
130 131 132 133 134 135 136 137 138 139 140
        });
        expect(await page.data('eventError')).toEqual({
          tagName: 'WEB-VIEW',
          type: 'error',
          errCode: 100002,
          errMsg: 'page error',
          url: 'https://www.dclou.io',
          fullUrl: 'https://www.dclou.io/uni-app-x',
          src: 'https://www.dclou.io/uni-app-x'
        });
      }
141 142 143 144
      await page.setData({
        autoTest: false
      });
    });
DCloud-WZF's avatar
DCloud-WZF 已提交
145 146 147 148 149 150
  } else {
    // TODO: web 端暂不支持
    it('web', async () => {
      expect(1).toBe(1)
    })
  }
lizhongyi_'s avatar
lizhongyi_ 已提交
151
});