167 行
5.0 KiB
JavaScript
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}`)
|
|
}
|
|
})
|
|
});
|