698 行
18 KiB
JavaScript
698 行
18 KiB
JavaScript
const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase()
|
|
const isMP = platformInfo.startsWith('mp')
|
|
const isHarmony = platformInfo.startsWith('harmony')
|
|
const isIos = platformInfo.startsWith('ios')
|
|
const isAndroid = platformInfo.startsWith('android')
|
|
const isApp = isIos || isAndroid || isHarmony
|
|
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
|
|
|
|
const PAGE_PATH = '/pages/API/modal/modal'
|
|
|
|
describe('modal', () => {
|
|
if(isMP) {
|
|
// 微信小程序截图无法截到弹框
|
|
it('not support', () => {
|
|
expect(1).toBe(1)
|
|
})
|
|
return
|
|
}
|
|
|
|
if (
|
|
isIos &&
|
|
(
|
|
platformInfo.indexOf('15.5') != -1 ||
|
|
platformInfo.indexOf('14.5') != -1 ||
|
|
platformInfo.indexOf('13.7') != -1 ||
|
|
platformInfo.indexOf('12.4') != -1
|
|
)
|
|
) {
|
|
// TODO: 排查 ios 不兼容版本 测试异常原因
|
|
it('ios 15.5 14.5 13.7 12.4 测试异常', () => {
|
|
expect(1).toBe(1)
|
|
})
|
|
return
|
|
}
|
|
|
|
let page;
|
|
let deviceShotOptions = {}
|
|
|
|
// 测试辅助函数
|
|
async function setPageData(newData) {
|
|
return await page.setData({ data: newData });
|
|
}
|
|
|
|
async function screenshot(isEditable) {
|
|
const image = await program.screenshot(deviceShotOptions);
|
|
if (!isEditable && !isAppWebView) {
|
|
expect(image).toMatchImageSnapshot({
|
|
failureThresholdType: 'percent',
|
|
failureThreshold: 0.002,
|
|
});
|
|
}
|
|
if (isEditable && isAppWebView) return;
|
|
|
|
expect(image).toSaveImageSnapshot();
|
|
}
|
|
|
|
beforeAll(async () => {
|
|
page = await program.reLaunch(PAGE_PATH)
|
|
await page.waitFor('view');
|
|
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
|
|
},
|
|
}
|
|
await page.waitFor(1000);
|
|
});
|
|
|
|
it("onload-modal-test", async () => {
|
|
await screenshot()
|
|
})
|
|
|
|
it("modal-test-current-0", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideAll = await page.$('#btn-modal-hide-all')
|
|
await btnModalButtonHideAll.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 0,
|
|
showCancelSelect: false,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
|
|
})
|
|
|
|
it("modal-test-current-1", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
await setPageData({
|
|
current: 1,
|
|
showCancelSelect: false,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: false,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-confirmText", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: true,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-confirmText-editable-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: true,
|
|
editableSelect: true,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot(true)
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
|
|
it("modal-test-current-2-showCancel-confirmText-editable-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: true,
|
|
editableSelect: true,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot(true)
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-editable-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: true,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot(true)
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: false,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-editable-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: false,
|
|
editableSelect: true,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot(true)
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(500);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: false,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-confirmText-placeholder", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: true,
|
|
editableSelect: false,
|
|
placeholderTextSelect: true,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-confirmText", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: true,
|
|
editableSelect: false,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot()
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-2-showCancel-cancelText-confirmText-editable", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
|
|
await setPageData({
|
|
current: 2,
|
|
showCancelSelect: true,
|
|
cancelTextSelect: true,
|
|
confirmTextSelect: true,
|
|
editableSelect: true,
|
|
placeholderTextSelect: false,
|
|
})
|
|
|
|
const btnModalButton = await page.$('#btn-modal-show')
|
|
await btnModalButton.tap()
|
|
await page.waitFor(600);
|
|
|
|
await screenshot(true);
|
|
|
|
await page.waitFor(2000);
|
|
})
|
|
|
|
it("modal-test-current-0-multi-time-show-hide-all", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
await setPageData({
|
|
current: 0,
|
|
})
|
|
/**
|
|
* 延迟3s 关闭
|
|
*/
|
|
const btnModalButtonHideAll = await page.$('#btn-modal-hide-all')
|
|
await btnModalButtonHideAll.tap()
|
|
await page.waitFor(500);
|
|
/**
|
|
* 等待1s 出现三个截图
|
|
*/
|
|
const btnModalButtonMultiTime = await page.$('#btn-modal-show-multitime')
|
|
await btnModalButtonMultiTime.tap()
|
|
await page.waitFor(1000);
|
|
|
|
await screenshot('modal-test-current-0-multi-time-show');
|
|
/**
|
|
* 等待2s 全部关闭全部
|
|
*/
|
|
await page.waitFor(2000);
|
|
await screenshot('modal-test-current-0-multi-time-show-hide-all');
|
|
})
|
|
|
|
it("modal-test-current-1-multi-time-show-hide-last", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await page.waitFor('view');
|
|
|
|
await setPageData({
|
|
current: 1,
|
|
})
|
|
/**
|
|
* 延迟3s 关闭最后一个
|
|
*/
|
|
const btnModalButtonHideLast = await page.$('#btn-modal-hide-last')
|
|
await btnModalButtonHideLast.tap()
|
|
await page.waitFor(500);
|
|
/**
|
|
* 等待1s 出现三个截图
|
|
*/
|
|
const btnModalButtonMultiTime = await page.$('#btn-modal-show-multitime')
|
|
await btnModalButtonMultiTime.tap()
|
|
await page.waitFor(1000);
|
|
|
|
await screenshot('modal-test-current-1-multi-time-show');
|
|
/**
|
|
* 等待2s 还剩下两个
|
|
*/
|
|
await page.waitFor(2000);
|
|
|
|
await screenshot('modal-test-current-1-multi-time-show-hide-last');
|
|
})
|
|
it("placeholderText-no_content-editable", async () => {
|
|
page = await program.reLaunch(PAGE_PATH+ '?onLoadShowModal=false')
|
|
await setPageData({
|
|
showCancelSelect: true,
|
|
emptyContent: true,
|
|
editableSelect: true,
|
|
placeholderTextSelect: true,
|
|
})
|
|
await page.waitFor(1000);
|
|
|
|
await page.callMethod('modalTap')
|
|
await page.waitFor(600);
|
|
await screenshot(true);
|
|
|
|
await page.callMethod('closeAllModal')
|
|
await page.waitFor(500);
|
|
})
|
|
|
|
it("no_placeholderText-no_content-editable", async () => {
|
|
await setPageData({
|
|
placeholderTextSelect: false,
|
|
})
|
|
await page.waitFor(1000);
|
|
|
|
await page.callMethod('modalTap')
|
|
await page.waitFor(600);
|
|
await screenshot(true);
|
|
|
|
await page.callMethod('closeAllModal')
|
|
await page.waitFor(500);
|
|
})
|
|
});
|