jest.setTimeout(50000);
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 isMP = platformInfo.startsWith('mp')
const isAppWebView = process.env.UNI_AUTOMATOR_APP_WEBVIEW == 'true'
let pageIndex = 0
const pages = [
'/pages/component/view/view',
'/pages/component/swiper/swiper',
'/pages/component/text/text',
'/pages/component/rich-text/rich-text',
'/pages/component/progress/progress',
'/pages/component/button/button',
'/pages/component/button/buttonstatus',
'/pages/component/radio/radio',
'/pages/component/checkbox/checkbox',
'/pages/component/textarea/textarea',
'/pages/component/slider/slider',
'/pages/component/slider/slider-in-swiper',
'/pages/component/switch/switch',
'/pages/component/navigator/navigator',
'/pages/component/navigator/navigate',
'/pages/component/navigator/redirect',
'/pages/component/unicloud-db/unicloud-db/contacts/add',
'/pages/component/global-events/global-events',
'/pages/component/global-events/transition-events',
'/pages/component/global-events/global-events-transform',
'/pages/API/get-app/get-app',
'/pages/API/get-launch-options-sync/get-launch-options-sync',
'/pages/API/navigator/new-page/new-page-3',
'/pages/API/navigator/new-page/onLoad',
'/pages/API/storage/storage',
'/pages/API/interceptor/interceptor',
'/pages/API/interceptor/page1',
'/pages/API/interceptor/page2',
'/pages/API/request/request',
'/pages/API/upload-file/upload-file',
'/pages/API/download-file/download-file',
'/pages/API/websocket/socketTask',
'/pages/API/unicloud/unicloud/cloud-object',
'/pages/API/unicloud/unicloud/database',
'/pages/API/unicloud/unicloud/cloud-storage',
'/pages/API/get-system-info/get-system-info',
'/pages/API/get-device-info/get-device-info',
'/pages/API/get-app-base-info/get-app-base-info',
'/pages/API/get-network-type/get-network-type',
'/pages/API/page-scroll-to/page-scroll-to',
'/pages/API/event-bus/event-bus',
'/pages/API/get-window-info/get-window-info',
'/pages/API/rpx2px/rpx2px',
'/pages/API/request-payment/request-payment/order-detail',
'/pages/CSS/background/background-color',
'/pages/CSS/border/border-color',
'/pages/CSS/border/border-top',
'/pages/CSS/border/border-bottom',
'/pages/CSS/border/border-left',
'/pages/CSS/border/border-right',
'/pages/CSS/border/border-radius',
'/pages/CSS/border/border-style',
'/pages/CSS/border/border-width',
'/pages/CSS/border/complex-border/complex-border',
'/pages/CSS/box-shadow/box-shadow',
'/pages/CSS/display/flex',
'/pages/CSS/display/none',
'/pages/CSS/flex/flex',
'/pages/CSS/flex/align-content',
'/pages/CSS/flex/align-items',
'/pages/CSS/flex/flex-basis',
'/pages/CSS/flex/flex-direction',
'/pages/CSS/flex/flex-flow',
'/pages/CSS/flex/flex-grow',
'/pages/CSS/flex/flex-shrink',
'/pages/CSS/flex/justify-content',
'/pages/CSS/layout/height',
'/pages/CSS/layout/min-height',
'/pages/CSS/layout/max-height',
'/pages/CSS/layout/min-width',
'/pages/CSS/layout/max-width',
'/pages/CSS/layout/position',
'/pages/CSS/layout/width',
'/pages/CSS/layout/visibility',
'/pages/CSS/margin/margin',
'/pages/CSS/margin/margin-top',
'/pages/CSS/margin/margin-bottom',
'/pages/CSS/margin/margin-left',
'/pages/CSS/margin/margin-right',
'/pages/CSS/padding/padding',
'/pages/CSS/padding/padding-top',
'/pages/CSS/padding/padding-bottom',
'/pages/CSS/padding/padding-left',
'/pages/CSS/padding/padding-right',
'/pages/CSS/text/color',
'/pages/CSS/text/font-style',
'/pages/CSS/text/font-weight',
'/pages/CSS/text/letter-spacing',
'/pages/CSS/text/line-height',
'/pages/CSS/text/text-align',
'/pages/CSS/text/text-overflow',
'/pages/CSS/text/text-decoration-line',
'/pages/CSS/text/text-shadow',
'/pages/CSS/text/white-space',
'/pages/CSS/pointer-events/pointer-events',
'/pages/CSS/overflow/overflow-visible-event',
'/pages/CSS/overflow/issue-21223',
'/pages/template/swiper-list/swiper-list',
'/pages/template/swiper-list2/swiper-list2',
'/pages/template/scroll-fold-nav/scroll-fold-nav',
'/pages/template/navbar-lite/navbar-lite',
'/pages/template/custom-tab-bar/custom-tab-bar',
]
if (!isIos) {
pages.push(
'/pages/API/get-battery-info/get-battery-info',
)
}
if(!isMP) {
pages.push(
'/uni_modules/uni-pay-x/pages/success/success',
'/uni_modules/uni-pay-x/pages/pay-desk/pay-desk'
)
if (!isAppWebView) {
pages.push(
'/pages/component/list-view/list-view',
)
}
}
if (!isAppWebView) {
if (isApp) {
pages.push(
'/pages/template/custom-refresher/custom-refresher',
'/pages/API/get-file-system-manager/get-file-system-manager',
'/pages/API/get-system-setting/get-system-setting',
'/pages/API/element-takesnapshot/element-takesnapshot',
'/pages/API/get-app-authorize-setting/get-app-authorize-setting',
'/pages/API/get-uni-verify-manager/get-uni-verify-manager',
'/pages/API/request-payment/request-payment',
'/pages/template/scroll-sticky/scroll-sticky',
)
}
if(isIos || isAndroid){
pages.push(
'/pages/API/theme-change/theme-change',
'/pages/API/facial-recognition-meta-info/facial-recognition-meta-info',
'/pages/API/env/env',
'/pages/API/element-draw/element-draw',
'/pages/API/share-with-system/share-with-system',
'/pages/template/test-uts-button/test-uts-button'
)
}
pages.push(
'/pages/API/request-payment/request-payment/request-payment-uni-pay',
'/pages/API/get-location/get-location',
)
}
if (isAndroid && !isAppWebView) {
pages.push(
'/pages/API/exit/exit',
'/pages/API/install-apk/install-apk',
'/pages/API/create-request-permission-listener/create-request-permission-listener',
'/pages/API/compress-image/compress-image',
)
}
if (isWeb) {
pages.push(
'/pages/component/movable-view/movable-view',
'/pages/component/label/label',
'/pages/component/picker/picker',
'/pages/API/make-phone-call/make-phone-call',
'/pages/component/canvas/canvas',
'/pages/template/browser-element/browser-element',
)
}
let page;
let windowInfo
function getWaitForTagName(pagePath) {
if (pagePath === '/pages/component/list-view/list-view-multiplex-input') {
return 'input'
}
if (pagePath === '/pages/component/list-view/list-view-multiplex-video') {
return 'video'
}
if (
pagePath === '/pages/component/global-events/transition-events' ||
pagePath === '/pages/API/env/env'
) {
return 'text'
}
if (
pagePath === '/pages/component/unicloud-db/unicloud-db/contacts/edit' ||
pagePath === '/pages/component/unicloud-db/unicloud-db/contacts/detail'
) {
return 'scroll-view'
}
if (pagePath === '/pages/API/get-file-system-manager/get-file-system-manager') {
return 'button'
}
if (pagePath === '/pages/template/custom-refresher/custom-refresher') {
return 'list-view'
}
return 'view'
}
const BATCH_SIZE = 20;
const pageBatches = [];
for (let i = 0; i < pages.length; i += BATCH_SIZE) {
pageBatches.push(pages.slice(i, i + BATCH_SIZE));
}
pageBatches.forEach((batch, batchIndex) => {
describe(`Page Screenshot Batch ${batchIndex + 1}`, () => {
let localPageIndex = 0;
beforeAll(async () => {
console.log(`Starting batch ${batchIndex + 1} with ${batch.length} pages`);
windowInfo = await program.callUniMethod('getWindowInfo');
});
afterAll(async () => {
console.log(`Finished batch ${batchIndex + 1}`);
});
test.each(batch)("%s", async () => {
const currentPagePath = batch[localPageIndex];
page = await program.reLaunch(currentPagePath);
await page.waitFor(getWaitForTagName(currentPagePath));
console.log("Taking screenshot: ", pageIndex, currentPagePath);
let fullPage = true;
const screenshotParams = {
fullPage
}
if (!fullPage && !isAppWebView) {
screenshotParams.offsetY = isApp ? `${windowInfo.safeAreaInsets.top + 44}` : '0'
}
const image = await program.screenshot(screenshotParams);
expect(image).toSaveImageSnapshot({
customSnapshotIdentifier() {
return `__pages_test__/${currentPagePath.replace(/\//g, "-").substring(1)}`
}
})
await page.waitFor(800);
localPageIndex++;
});
});
});