web-view.test.js 5.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
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios') == false) {
         expect(await page.data('eventTouchstart')).toEqual({
           clientX: 1,
           clientY: 1
         });

         expect(await page.data('eventTap')).toEqual({
           clientX: 1,
           clientY: 1
         });
      }

63 64 65 66 67 68 69 70
      await page.setData({
        pointerEvents: 'none'
      });
      await page.waitFor(100);
      await program.tap({
        x: 10,
        y: (info.statusBarHeight + 44) * info.pixelRatio + 10
      });
71 72 73 74
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventTouchstart')) && (await page.data('eventTap')) || (Date.now() - start > 500);
      });
75 76 77 78 79 80 81 82 83 84
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios') == false) {
        expect(await page.data('eventTouchstart')).toEqual({
          clientX: 1,
          clientY: 1
        });
        expect(await page.data('eventTap')).toEqual({
          clientX: 1,
          clientY: 1
        });
      }
85 86 87
      await page.setData({
        pointerEvents: 'auto'
      });
88 89
    });

90
    it('test event loading load', async () => {
91 92 93 94 95
      await page.callMethod('reload');
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoading')) || (Date.now() - start > 500);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
96
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
97 98 99 100 101 102 103
        const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
        if(
          platformInfo.indexOf('14.5') != -1 ||
          platformInfo.indexOf('13.7') != -1 ||
          platformInfo.indexOf('12.4') != -1
          ){
            expect(1).toBe(1)
lizhongyi_'s avatar
lizhongyi_ 已提交
104
            return
105
        }
lizhongyi_'s avatar
lizhongyi_ 已提交
106
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
107
          "tagName": "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
108 109 110 111 112
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
      }else {
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
113
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
114 115 116
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
117 118 119 120 121
      }
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoad')) || (Date.now() - start > 5000);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
122 123
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
         expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
124
           tagName: "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
125 126 127 128 129
           type: 'load',
           src: 'https://www.dcloud.io/'
         });
      }else {
        expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
130
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
131 132 133 134
          type: 'load',
          src: 'https://www.dcloud.io/'
        });
      }
135 136 137
    });

    it('test event error', async () => {
138 139 140 141 142
      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'
143 144 145
        });
        start = Date.now();
        await page.waitFor(async () => {
146
          return (await page.data('eventError')) || (Date.now() - start > 5000);
147
        });
lizhongyi_'s avatar
lizhongyi_ 已提交
148 149
        expect(await page.data('eventError')).toEqual({
          tagName: 'WEB-VIEW',
150 151 152 153 154 155 156 157
          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'
        });
      }
158 159 160
      await page.setData({
        autoTest: false
      });
161 162
    });

shutao-dc's avatar
shutao-dc 已提交
163
    it('checkNativeWebView', async () => {
164 165 166 167 168 169 170
      const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
      if(
        platformInfo.indexOf('14.5') != -1 ||
        platformInfo.indexOf('13.7') != -1 ||
        platformInfo.indexOf('12.4') != -1
        ){
          expect(1).toBe(1)
lizhongyi_'s avatar
lizhongyi_ 已提交
171
          return
172
      }
173
      await page.waitFor(300);
174
      const has = await page.callMethod('checkNativeWebView')
175 176
      expect(has).toBe(true)
    })
DCloud-WZF's avatar
DCloud-WZF 已提交
177 178 179 180 181 182
  } else {
    // TODO: web 端暂不支持
    it('web', async () => {
      expect(1).toBe(1)
    })
  }
lizhongyi_'s avatar
lizhongyi_ 已提交
183
});