let pageIndex = 0 const pages = [ // component '/pages/component/button/button', '/pages/component/checkbox/checkbox', '/pages/component/general-attribute/general-attribute', '/pages/component/general-event/general-event', '/pages/component/image/image-format', // '/pages/component/image/image-large', // 截图过大 // '/pages/component/image/image-mode', // 判断CPU类型,单独测试例截图 // '/pages/component/image/image-path', // 网络资源加载,单独测试例截图 '/pages/component/image/image', // '/pages/component/input/input', // 自动获取焦点,单独测试例截图 // '/pages/component/list-view/list-view', '/pages/component/navigator/navigate', '/pages/component/navigator/navigator', '/pages/component/navigator/redirect', // '/pages/component/picker-view/picker-view', //动态内容 '/pages/component/progress/progress', '/pages/component/radio/radio', '/pages/component/rich-text/rich-text-complex', '/pages/component/rich-text/rich-text-tags', '/pages/component/rich-text/rich-text', '/pages/component/slider/slider', '/pages/component/slider-100/slider-100', '/pages/component/swiper/swiper', '/pages/component/switch/switch', '/pages/component/text/text-props', '/pages/component/text/text', '/pages/component/textarea/textarea', // '/pages/component/video/video', '/pages/component/view/view', // '/pages/component/web-view/web-view', // 动态内容 // '/pages/component/web-view-local/web-view-local', // 依赖加载完成回调,单独测试例截图 '/pages/component/general-event/transition-event', // CSS '/pages/CSS/background/background-color', '/pages/CSS/border/complex-border/complex-border', '/pages/CSS/border/border-bottom', '/pages/CSS/border/border-color', '/pages/CSS/border/border-left', '/pages/CSS/border/border-radius', '/pages/CSS/border/border-right', '/pages/CSS/border/border-style', '/pages/CSS/border/border-top', '/pages/CSS/border/border-width', '/pages/CSS/border/border', '/pages/CSS/border/dynamic-border', // '/pages/CSS/box-shadow/box-shadow', '/pages/CSS/display/flex', '/pages/CSS/display/none', '/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/flex', '/pages/CSS/flex/justify-content', '/pages/CSS/layout/height', '/pages/CSS/layout/max-height', '/pages/CSS/layout/max-width', '/pages/CSS/layout/min-height', '/pages/CSS/layout/min-width', '/pages/CSS/layout/position', '/pages/CSS/layout/visibility', '/pages/CSS/layout/width', '/pages/CSS/layout/z-index', '/pages/CSS/margin/margin-bottom', '/pages/CSS/margin/margin-left', '/pages/CSS/margin/margin-right', '/pages/CSS/margin/margin-top', '/pages/CSS/margin/margin', '/pages/CSS/padding/padding-bottom', '/pages/CSS/padding/padding-left', '/pages/CSS/padding/padding-right', '/pages/CSS/padding/padding-top', '/pages/CSS/padding/padding', '/pages/CSS/text/color', // '/pages/CSS/text/font-family', // 网络资源加载,单独测试例截图 '/pages/CSS/text/font-size', '/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-decoration-line', '/pages/CSS/text/text-overflow', '/pages/CSS/transform/rotate', '/pages/CSS/transform/scale', '/pages/CSS/transform/translate', // '/pages/CSS/transition/transition', '/pages/CSS/pointer-events/pointer-events', // tabBar //改动频繁,不再测试 // '/pages/tabBar/API', // '/pages/tabBar/component', // '/pages/tabBar/CSS', // '/pages/tabBar/template', // template // '/pages/template/calendar/calendar', // 动态内容 // '/pages/template/custom-refresher/custom-refresher', // '/pages/template/custom-tab-bar/custom-tab-bar', // '/pages/template/drop-card/drop-card', // '/pages/template/half-screen/half-screen', // '/pages/template/list-news/list-news', // 网络资源加载,单独测试例截图 // '/pages/template/long-list/long-list', // 动态内容 // '/pages/template/navbar-lite/navbar-lite', // '/pages/template/pull-zoom-image/pull-zoom-image', // '/pages/template/scroll-fold-nav/scroll-fold-nav', // '/pages/template/scroll-sticky/scroll-sticky', // '/pages/template/swiper-list/swiper-list', // '/pages/template/swiper-list2/swiper-list2', // '/pages/template/swiper-vertical-video/swiper-vertical-video' // api // '/pages/API/element-draw/element-draw', ] const platformInfo = process.env.uniTestPlatformInfo.toLocaleLowerCase() if ((platformInfo.startsWith('android') || platformInfo.startsWith('ios')) && !process.env.UNI_AUTOMATOR_APP_WEBVIEW) { // 规避 web 端不支持页面 pages.push( "/pages/component/list-view/list-view", "/pages/CSS/transition/transition", '/pages/template/swiper-list/swiper-list', '/pages/template/swiper-list2/swiper-list2', '/pages/API/element-draw/element-draw', '/pages/template/navbar-lite/navbar-lite', '/pages/template/pull-zoom-image/pull-zoom-image', '/pages/template/scroll-fold-nav/scroll-fold-nav', '/pages/template/scroll-sticky/scroll-sticky', '/pages/template/custom-refresher/custom-refresher', '/pages/template/custom-tab-bar/custom-tab-bar', '/pages/template/half-screen/half-screen', '/pages/component/scroll-view/scroll-view-custom-refresher-props', '/pages/component/scroll-view/scroll-view-refresher-props', ) } // 设置position: fixed的页面不能截取完整内容 const notFullPages = [ '/pages/CSS/layout/position', '/pages/CSS/layout/z-index' ] let page; let windowInfo async function getWindowInfo() { const windowInfoPage = await program.reLaunch('/pages/API/get-window-info/get-window-info') await windowInfoPage.waitFor(600); return await windowInfoPage.callMethod('jest_getWindowInfo') } describe("page screenshot test", () => { beforeAll(async () => { console.log("page screenshot test start"); }); beforeEach(async () => { page = await program.reLaunch(pages[pageIndex]); await page.waitFor(1000); }); afterEach(() => { pageIndex++; }); afterAll(() => { console.log("page screenshot test finish"); }); test.each(pages)("%s", async () => { console.log("Taking screenshot: ", pageIndex, pages[pageIndex]); let fullPage = true; if (notFullPages.includes(pages[pageIndex])) { fullPage = false; } const screenshotParams = { fullPage } if (!fullPage && !process.env.UNI_AUTOMATOR_APP_WEBVIEW) { if (!windowInfo) { windowInfo = await getWindowInfo() page = await program.reLaunch(pages[pageIndex]); await page.waitFor(1000); } let offsetY = '0' if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('android')) { offsetY = `${windowInfo.statusBarHeight + 44}` } if (process.env.uniTestPlatformInfo.toLocaleLowerCase().startsWith('ios')) { offsetY = `${windowInfo.safeAreaInsets.top + 44}` } screenshotParams.offsetY = offsetY } const image = await program.screenshot(screenshotParams); expect(image).toSaveImageSnapshot({ customSnapshotIdentifier() { return `__pages_test__/${pages[pageIndex].replace(/\//g, "-").substring(1)}` } }) await page.waitFor(500); }); });