web-view.test.js 5.8 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 104 105 106 107
        const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
        if(
          platformInfo.indexOf('14.5') != -1 ||
          platformInfo.indexOf('13.7') != -1 ||
          platformInfo.indexOf('12.4') != -1
          ){
          it('ios 14.5 13.7 12.4 测试异常', () => {
            expect(1).toBe(1)
          })
          return
        }
lizhongyi_'s avatar
lizhongyi_ 已提交
108
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
109
          "tagName": "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
110 111 112 113 114
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
      }else {
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
115
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
116 117 118
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
119 120 121 122 123
      }
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoad')) || (Date.now() - start > 5000);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
124 125
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
         expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
126
           tagName: "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
127 128 129 130 131
           type: 'load',
           src: 'https://www.dcloud.io/'
         });
      }else {
        expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
132
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
133 134 135 136
          type: 'load',
          src: 'https://www.dcloud.io/'
        });
      }
137 138 139
    });

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

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