const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isAndroid = platformInfo.startsWith('android')
const isIOS = platformInfo.startsWith('ios')
const isMP = platformInfo.startsWith('mp')
const isWeb = platformInfo.startsWith('web')
const isHarmony = platformInfo.startsWith('harmony')
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
const PAGE_PATH = '/pages/component/picker-view/picker-view'
let page, pickerViewEl;
describe('PickerView.uvue', () => {
beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH)
await page.waitFor(1000)
await page.callMethod('setEventCallbackNum', 0)
pickerViewEl = await page.$('.picker-view')
})
async function toScreenshot(imgName) {
const image = await program.screenshot({
fullPage: true
});
expect(image).toSaveImageSnapshot({
customSnapshotIdentifier() {
return imgName
}
})
await page.waitFor(500);
}
it('value', async () => {
await page.callMethod('setValue')
await page.waitFor(1500)
const newValue1 = await pickerViewEl.property('value')
expect(newValue1.toString()).toEqual('0,1,30')
if (isAndroid || isIOS) {
const res = await page.data('result')
await page.waitFor(500)
expect(res).toEqual([ 0, 1, 30 ])
}
await page.callMethod('setValue1')
await page.waitFor(1500)
const newValue2 = await pickerViewEl.property('value')
expect(newValue2.toString()).toEqual('10,10,10')
if (isAndroid || isIOS) {
const res = await page.data('result')
await page.waitFor(500)
expect(res).toEqual([10, 10, 10])
}
})
it('length', async () => {
const els = await page.$$('.picker-view')
expect(els.length).toBe(1)
const els1 = await page.$$('.picker-view-column')
expect(els1.length).toBe(3)
})
if (!isHarmony && !isIOS) {
it('indicator-style', async () => {
const indicatorStyle = "height: 50px;border:#ff5500 solid 1px;background:rgba(182, 179, 255, 0.4);"
await page.callMethod('setIndicatorStyle',true)
await page.waitFor(500)
expect(await pickerViewEl.attribute(isMP ? 'indicator-style' : 'indicatorStyle')).toBe(indicatorStyle)
await toScreenshot('picker-view-indicator-style')
await page.callMethod('setIndicatorStyle',false)
})
}
if (isWeb || isMP) {
it('indicator-class', async () => {
await page.callMethod('setIndicatorClass',true)
expect(await pickerViewEl.attribute(isMP ? 'indicator-class': 'indicatorClass')).toBe("indicator-test")
await toScreenshot('picker-view-web-indicator-class')
await page.callMethod('setIndicatorClass',false)
})
it('mask-style', async () => {
const maskStyle = "background-image: linear-gradient(to bottom, #d8e5ff, rgba(216, 229, 255, 0));"
await page.callMethod('setMaskStyle',true)
expect(await pickerViewEl.attribute(isMP ? 'mask-style' : 'maskStyle')).toBe(maskStyle)
await toScreenshot('picker-view-web-mask-style')
})
it('mask-class', async () => {
await page.callMethod('setMaskClass',true)
expect(await pickerViewEl.attribute(isMP ? 'mask-class' : 'maskClass')).toBe("mask-test")
await toScreenshot('picker-view-web-mask-class')
})
return
}
if (!isAppWebView && !isMP && !isHarmony) {
it('mask-top-bottom-style', async () => {
const linearToTop = "background-image: linear-gradient(to bottom, #f4ff73, rgba(216, 229, 255, 0));"
const linearToBottom = "background-image: linear-gradient(to top, #f4ff73, rgba(216, 229, 255, 0));"
await page.callMethod('setMaskTopStyle',true)
await page.callMethod('setMaskBottomStyle',true)
await page.waitFor(500)
expect(await pickerViewEl.attribute('mask-top-style')).toBe(linearToTop)
expect(await pickerViewEl.attribute('mask-bottom-style')).toBe(linearToBottom)
await page.waitFor(2000)
await toScreenshot('picker-view-app-mask-top-bottom-style')
})
it('reopen-picker-view-page', async () => {
page = await program.switchTab('/pages/tabBar/component')
await page.waitFor(500)
page = await program.navigateTo(PAGE_PATH)
await page.waitFor(500)
const {
year,
month,
day
} = await page.data()
expect(year).toEqual(2018)
expect(month).toEqual(1)
expect(day).toEqual(12)
})
it('trigger UniPickerViewChangeEvent', async () => {
await page.callMethod('setEventCallbackNum', 0)
await page.callMethod('setValue')
await page.waitFor(1500)
const eventCallbackNum = await page.callMethod('getEventCallbackNum')
expect(eventCallbackNum).toBe(9)
})
}
})