watch-post-effect.test.js 7.1 KB
Newer Older
1 2
const PAGE_PATH = '/pages/composition-api/reactivity/watch-post-effect/watch-post-effect'

3 4
describe('watchPostEffect', () => {
  const isWeb = process.env.uniTestPlatformInfo.startsWith('web')
雪洛's avatar
雪洛 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
  let page = null
  beforeAll(async () => {
    page = await program.reLaunch(PAGE_PATH)
    await page.waitFor('view')
  })
  it('count', async () => {
    const count = await page.$('#count')
    expect(await count.text()).toBe('count: 0')

    // watch
    const watchCountRes = await page.$('#watch-count-res')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 0, count ref text: count: 0')

    // track
    const watchCountTrackNum = await page.$('#watch-count-track-num')
21 22
    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
23
    } else if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
24 25 26 27 28
      // TODO: 确认 IOS 的差异是否正常
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 8')
    } else {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
    }
雪洛's avatar
雪洛 已提交
29 30

    const watchCountCleanupRes = await page.$('#watch-count-cleanup-res')
雪洛's avatar
雪洛 已提交
31 32 33
    // TODO web端自动化测试text方法应使用textContent获取内容来保留空格,目前text方法未保留首尾空格
    expect(await watchCountCleanupRes.text()).toBe(isWeb ? 'watch count cleanup result:' :
      'watch count cleanup result: ')
雪洛's avatar
雪洛 已提交
34 35 36 37 38 39 40 41 42 43 44

    // watch count and obj.num
    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 0, obj.num: 0')

    const incrementBtn = await page.$('#increment-btn')
    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 1')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 1, count ref text: count: 1')
45 46 47

    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
48
    } else if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
49 50 51 52 53
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 16')
    } else {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 6')
    }

雪洛's avatar
雪洛 已提交
54 55 56 57 58 59 60 61 62
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 1')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 1, obj.num: 0')

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 2')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text: count: 2')
63 64 65

    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
66
    } else if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
67 68 69 70 71
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 24')
    } else {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 9')
    }

雪洛's avatar
雪洛 已提交
72 73 74 75 76 77 78 79 80 81 82 83 84
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 2, obj.num: 0')

    // stop watch
    const stopWatchCountBtn = await page.$('#stop-watch-count-btn')
    await stopWatchCountBtn.tap()

    await incrementBtn.tap()

    expect(await count.text()).toBe('count: 3')
    expect(await watchCountRes.text()).toBe(
      'watch count result: count: 2, count ref text: count: 2')
85 86 87

    if (process.env.uniTestPlatformInfo.startsWith('android')) {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 3')
88
    } else if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
89 90 91 92 93
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 24')
    } else {
      expect(await watchCountTrackNum.text()).toBe('watch count track number: 9')
    }

雪洛's avatar
雪洛 已提交
94 95 96 97 98 99 100 101 102 103 104 105
    expect(await watchCountCleanupRes.text()).toBe('watch count cleanup result: watch count cleanup: 2')

    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 0')
  })
  it('obj', async () => {
    const objStr = await page.$('#obj-str')
    expect(await objStr.text()).toBe('obj.str: num: 0')
    const objNum = await page.$('#obj-num')
    expect(await objNum.text()).toBe('obj.num: 0')
    const objBool = await page.$('#obj-bool')
    expect(await objBool.text()).toBe('obj.bool: false')
    const objArr = await page.$('#obj-arr')
106
    expect(await objArr.text()).toBe('obj.arr: [0]')
雪洛's avatar
雪洛 已提交
107 108

    const watchObjRes = await page.$('#watch-obj-res')
雪洛's avatar
雪洛 已提交
109
    // TODO web端和安卓端JSON.stringify对属性的排序不一致
110
    if (process.env.uniTestPlatformInfo.startsWith('web') || process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
111 112 113 114 115 116 117 118
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":0,"str":"num: 0","bool":false,"arr":[0]}'
      )
    } else {
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"arr":[0],"bool":false,"num":0,"str":"num: 0"}'
      )
    }
雪洛's avatar
雪洛 已提交
119 120 121
    const watchObjStrRes = await page.$('#watch-obj-str-res')
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 0, obj.str ref text: obj.str: num: 0')
122 123 124 125 126

    // trigger
    const watchObjStrTriggerNum = await page.$('#watch-obj-str-trigger-num')
    expect(await watchObjStrTriggerNum.text()).toBe('watch obj.str trigger number: 0')

雪洛's avatar
雪洛 已提交
127 128 129 130 131 132 133 134 135
    const watchObjArrRes = await page.$('#watch-obj-arr-res')
    expect(await watchObjArrRes.text()).toBe('watch obj.arr result: arr: [0]')

    const updateObjBtn = await page.$('#update-obj-btn')
    await updateObjBtn.tap()

    expect(await objStr.text()).toBe('obj.str: num: 1')
    expect(await objNum.text()).toBe('obj.num: 1')
    expect(await objBool.text()).toBe('obj.bool: true')
136 137
    expect(await objArr.text()).toBe('obj.arr: [0,1]')

138
    if (process.env.uniTestPlatformInfo.startsWith('web') || process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) {
139 140 141 142 143
      expect(await watchObjRes.text()).toBe(
        'watch obj result: obj: {"num":1,"str":"num: 1","bool":true,"arr":[0,1]}'
      )
    } else {
      expect(await watchObjRes.text()).toBe(
144
        'watch obj result: obj: {"arr":[0,1],"bool":true,"num":1,"str":"num: 1"}'
145 146
      )
    }
雪洛's avatar
雪洛 已提交
147 148
    expect(await watchObjStrRes.text()).toBe(
      'watch obj.str result: str: num: 1, obj.str ref text: obj.str: num: 1')
149 150 151

    expect(await watchObjStrTriggerNum.text()).toBe('watch obj.str trigger number: 1')

DCloud-WZF's avatar
DCloud-WZF 已提交
152
    expect(await watchObjArrRes.text()).toBe(
雪洛's avatar
雪洛 已提交
153
      'watch obj.arr result: arr: [0,1]')
雪洛's avatar
雪洛 已提交
154 155 156 157

    const watchCountAndObjNumRes = await page.$('#watch-count-obj-num-res')
    expect(await watchCountAndObjNumRes.text()).toBe('watch count and obj.num result: count: 3, obj.num: 1')
  })
158
})