web-view.test.js 5.0 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 97
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
98
          "tagName": "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
99 100 101 102 103
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
      }else {
        expect(await page.data('eventLoading')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
104
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
105 106 107
          type: 'loading',
          src: 'https://www.dcloud.io/'
        });
108 109 110 111 112
      }
      start = Date.now();
      await page.waitFor(async () => {
        return (await page.data('eventLoad')) || (Date.now() - start > 5000);
      });
lizhongyi_'s avatar
lizhongyi_ 已提交
113 114
      if(process.env.uniTestPlatformInfo.toLowerCase().startsWith('ios')) {
         expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
115
           tagName: "WEB-VIEW",
lizhongyi_'s avatar
lizhongyi_ 已提交
116 117 118 119 120
           type: 'load',
           src: 'https://www.dcloud.io/'
         });
      }else {
        expect(await page.data('eventLoad')).toEqual({
lizhongyi_'s avatar
lizhongyi_ 已提交
121
          tagName: 'WEB-VIEW',
lizhongyi_'s avatar
lizhongyi_ 已提交
122 123 124 125
          type: 'load',
          src: 'https://www.dcloud.io/'
        });
      }
126 127 128
    });

    it('test event error', async () => {
129 130 131 132 133
      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'
134 135 136
        });
        start = Date.now();
        await page.waitFor(async () => {
137
          return (await page.data('eventError')) || (Date.now() - start > 5000);
138
        });
lizhongyi_'s avatar
lizhongyi_ 已提交
139 140
        expect(await page.data('eventError')).toEqual({
          tagName: 'WEB-VIEW',
141 142 143 144 145 146 147 148
          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'
        });
      }
149 150 151
      await page.setData({
        autoTest: false
      });
152 153
    });

shutao-dc's avatar
shutao-dc 已提交
154
    it('checkNativeWebView', async () => {
155
      await page.waitFor(300);
156
      const has = await page.callMethod('checkNativeWebView')
157 158
      expect(has).toBe(true)
    })
DCloud-WZF's avatar
DCloud-WZF 已提交
159 160 161 162 163 164
  } else {
    // TODO: web 端暂不支持
    it('web', async () => {
      expect(1).toBe(1)
    })
  }
lizhongyi_'s avatar
lizhongyi_ 已提交
165
});