文件
OmniCard/mpuniapp/pages/API/toast/toast.test.js

167 行
5.0 KiB
JavaScript

jest.setTimeout(30000)
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
const isAndroid = platformInfo.startsWith('android')
const isIos = platformInfo.startsWith('ios')
const isHarmony = platformInfo.startsWith('harmony')
const isApp = isAndroid || isIos || isHarmony
const isWeb = platformInfo.startsWith('web')
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
const isMP = platformInfo.startsWith('mp')
describe('API-toast', () => {
if ( isMP) {
it('skip', async () => {
expect(1).toBe(1);
});
return;
}
const PAGE_PATH = '/pages/API/toast/toast'
let page;
let deviceShotOptions = {}
beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH)
await page.waitFor("view");
await page.waitFor(1000);
const windowInfo = await program.callUniMethod('getWindowInfo');
let topSafeArea = windowInfo.safeAreaInsets.top;
if (isAppWebView) {
if (isIos) {
topSafeArea = 59
if (platformInfo.includes('26')) {
topSafeArea = 62
}
} else if (isAndroid) {
topSafeArea = 24
windowInfo.safeArea.bottom = 867
if (platformInfo.startsWith('android 5')) {
topSafeArea = 25
}if (platformInfo.startsWith('android 6')) {
windowInfo.safeArea.bottom = 592
}if (platformInfo.startsWith('android 8')) {
windowInfo.safeArea.bottom = 534
} else if (platformInfo.startsWith('android 11')) {
topSafeArea = 52
} else if (platformInfo.startsWith('android 12')) {
topSafeArea = 24
windowInfo.safeArea.bottom = 716
} else if (platformInfo.startsWith('android 13') || platformInfo.startsWith('android 15')) {
topSafeArea = 49
windowInfo.safeArea.bottom = 891
} else if (platformInfo.startsWith('android 14')) {
windowInfo.safeArea.bottom = 891
}
} else if (isHarmony) {
topSafeArea = 39
if (platformInfo.includes('nova_12')) {
topSafeArea = 35
}
}
}
const top = topSafeArea + 44
const bottom = Math.min(top + windowInfo.windowHeight, windowInfo.safeArea.bottom)
const left = windowInfo.safeArea.left
const right = windowInfo.safeArea.right - 10
deviceShotOptions = {
deviceShot: true,
area: {
x: left,
y: top,
width: right - left,
height: bottom - top
},
}
});
async function screenShot(imgName) {
const image = await program.screenshot(deviceShotOptions);
const options = {customSnapshotIdentifier() {
return imgName
}
}
if (!isAppWebView) {
expect(image).toMatchImageSnapshot({ ...options,
failureThresholdType: 'percent',
failureThreshold: 0.002,
});
}
expect(image).toSaveImageSnapshot(options)
await page.waitFor(500);
}
it("onload-toast-test", async () => {
await screenShot('toast-onload')
await page.waitFor(2000);
})
it("icon-toast-test", async () => {
const icons = await page.$$('.radio-icon')
for (let i = 0; i < icons.length; i++) {
await icons[i].tap()
await page.waitFor(500);
await page.callMethod('toast1Tap')
await page.waitFor(500);
const iconText = await icons[i].text()
const iconValue = await icons[i].attribute('value')
const isLoadingIcon = iconValue == 'loading' || iconText.includes('加载')
await screenShot(`${iconText}-toast`)
}
})
it("icon=none-mask=true-toast-test", async () => {
await page.setData({data:{maskSelect: true}})
await page.callMethod('toast3Tap')
await page.waitFor(300);
await screenShot('icon=none-mask=true-toast-image')
})
it("image-toast-test", async () => {
await page.setData({data:{imageSelect: true}})
await page.waitFor(300);
await page.callMethod('toast1Tap')
await page.waitFor(500);
await screenShot('toast-image')
})
it("duration-toast-test", async () => {
await page.setData({data:{intervalSelect: 4000}})
await page.callMethod('toast1Tap')
await page.waitFor(2000);
await screenShot('toast-duration-2000')
await page.waitFor(1000);
await page.callMethod('hideToast')
await page.waitFor(300);
await screenShot('toast-duration-end')
})
if(isWeb){
return
}
it("position-toast-test", async () => {
if (isIos) {
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)
return
}
}
const positions = await page.$$('.radio-position')
for (let i = 0;i < positions.length;i++) {
// 等待上一个 toast 消失
await page.waitFor(2000);
await positions[i].tap()
const positionsText = await positions[i].attribute('value')
await page.callMethod('toast2Tap')
await page.waitFor(500);
await screenShot(`toast-position-${positionsText}`)
}
})
});