@wdio/image-comparison-core 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +82 -0
- package/LICENSE +21 -0
- package/README.md +12 -0
- package/assets/ios/ipadair4th.ipadair5th-bottom.png +0 -0
- package/assets/ios/ipadair4th.ipadair5th-top.png +0 -0
- package/assets/ios/ipadmini6th-bottom.png +0 -0
- package/assets/ios/ipadmini6th-top.png +0 -0
- package/assets/ios/ipadpro11-bottom.png +0 -0
- package/assets/ios/ipadpro11-top.png +0 -0
- package/assets/ios/ipadpro129-bottom.png +0 -0
- package/assets/ios/ipadpro129-top.png +0 -0
- package/assets/ios/iphone11promax-bottom.png +0 -0
- package/assets/ios/iphone11promax-top.png +0 -0
- package/assets/ios/iphone12.iphone12pro-top.png +0 -0
- package/assets/ios/iphone12.iphone12pro.iphone13.iphone13pro.iphone14-bottom.png +0 -0
- package/assets/ios/iphone12mini-top.png +0 -0
- package/assets/ios/iphone12mini.iphone13mini-bottom.png +0 -0
- package/assets/ios/iphone12promax-top.png +0 -0
- package/assets/ios/iphone12promax.iphone13promax.iphone14plus-bottom.png +0 -0
- package/assets/ios/iphone13.iphone13pro.iphone14-top.png +0 -0
- package/assets/ios/iphone13mini-top.png +0 -0
- package/assets/ios/iphone13promax.iphone14plus-top.png +0 -0
- package/assets/ios/iphone14pro-bottom.png +0 -0
- package/assets/ios/iphone14pro-top.png +0 -0
- package/assets/ios/iphone14promax-bottom.png +0 -0
- package/assets/ios/iphone14promax-top.png +0 -0
- package/assets/ios/iphone15-bottom.png +0 -0
- package/assets/ios/iphone15-top.png +0 -0
- package/assets/ios/iphonex.iphonexs.iphone11pro-bottom.png +0 -0
- package/assets/ios/iphonex.iphonexs.iphone11pro-top.png +0 -0
- package/assets/ios/iphonexr.iphone11-bottom.png +0 -0
- package/assets/ios/iphonexr.iphone11-top.png +0 -0
- package/assets/ios/iphonexsmax-bottom.png +0 -0
- package/assets/ios/iphonexsmax-top.png +0 -0
- package/dist/base.d.ts +18 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.interfaces.d.ts +200 -0
- package/dist/base.interfaces.d.ts.map +1 -0
- package/dist/base.interfaces.js +1 -0
- package/dist/base.js +58 -0
- package/dist/base.test.d.ts +2 -0
- package/dist/base.test.d.ts.map +1 -0
- package/dist/base.test.js +45 -0
- package/dist/clientSideScripts/checkMetaTag.d.ts +2 -0
- package/dist/clientSideScripts/checkMetaTag.d.ts.map +1 -0
- package/dist/clientSideScripts/checkMetaTag.js +9 -0
- package/dist/clientSideScripts/checkMetaTag.test.d.ts +2 -0
- package/dist/clientSideScripts/checkMetaTag.test.d.ts.map +1 -0
- package/dist/clientSideScripts/checkMetaTag.test.js +25 -0
- package/dist/clientSideScripts/customCss.interfaces.d.ts +8 -0
- package/dist/clientSideScripts/customCss.interfaces.d.ts.map +1 -0
- package/dist/clientSideScripts/customCss.interfaces.js +1 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.d.ts +8 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.d.ts.map +1 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.interfaces.d.ts +4 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.interfaces.d.ts.map +1 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.interfaces.js +1 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.js +275 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.test.d.ts +2 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.test.d.ts.map +1 -0
- package/dist/clientSideScripts/drawTabbableOnCanvas.test.js +251 -0
- package/dist/clientSideScripts/elementPosition.interfaces.d.ts +3 -0
- package/dist/clientSideScripts/elementPosition.interfaces.d.ts.map +1 -0
- package/dist/clientSideScripts/elementPosition.interfaces.js +1 -0
- package/dist/clientSideScripts/getBoundingClientRect.d.ts +6 -0
- package/dist/clientSideScripts/getBoundingClientRect.d.ts.map +1 -0
- package/dist/clientSideScripts/getBoundingClientRect.js +12 -0
- package/dist/clientSideScripts/getBoundingClientRect.test.d.ts +2 -0
- package/dist/clientSideScripts/getBoundingClientRect.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getBoundingClientRect.test.js +28 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.d.ts +5 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.d.ts.map +1 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.js +48 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.test.d.ts +2 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getDocumentScrollHeight.test.js +30 -0
- package/dist/clientSideScripts/getElementPositionTopDom.d.ts +6 -0
- package/dist/clientSideScripts/getElementPositionTopDom.d.ts.map +1 -0
- package/dist/clientSideScripts/getElementPositionTopDom.js +11 -0
- package/dist/clientSideScripts/getElementPositionTopDom.test.d.ts +2 -0
- package/dist/clientSideScripts/getElementPositionTopDom.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getElementPositionTopDom.test.js +11 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.d.ts +14 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.d.ts.map +1 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.js +19 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.test.d.ts +2 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getElementPositionTopScreenNativeMobile.test.js +52 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.d.ts +6 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.d.ts.map +1 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.js +17 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.test.d.ts +2 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getMobileWebviewClickAndDimensions.test.js +47 -0
- package/dist/clientSideScripts/getScreenDimensions.d.ts +6 -0
- package/dist/clientSideScripts/getScreenDimensions.d.ts.map +1 -0
- package/dist/clientSideScripts/getScreenDimensions.js +104 -0
- package/dist/clientSideScripts/getScreenDimensions.test.d.ts +2 -0
- package/dist/clientSideScripts/getScreenDimensions.test.d.ts.map +1 -0
- package/dist/clientSideScripts/getScreenDimensions.test.js +161 -0
- package/dist/clientSideScripts/hideRemoveElements.d.ts +8 -0
- package/dist/clientSideScripts/hideRemoveElements.d.ts.map +1 -0
- package/dist/clientSideScripts/hideRemoveElements.js +60 -0
- package/dist/clientSideScripts/hideRemoveElements.test.d.ts +2 -0
- package/dist/clientSideScripts/hideRemoveElements.test.d.ts.map +1 -0
- package/dist/clientSideScripts/hideRemoveElements.test.js +199 -0
- package/dist/clientSideScripts/hideScrollbars.d.ts +9 -0
- package/dist/clientSideScripts/hideScrollbars.d.ts.map +1 -0
- package/dist/clientSideScripts/hideScrollbars.js +15 -0
- package/dist/clientSideScripts/hideScrollbars.test.d.ts +2 -0
- package/dist/clientSideScripts/hideScrollbars.test.d.ts.map +1 -0
- package/dist/clientSideScripts/hideScrollbars.test.js +12 -0
- package/dist/clientSideScripts/injectWebviewOverlay.d.ts +5 -0
- package/dist/clientSideScripts/injectWebviewOverlay.d.ts.map +1 -0
- package/dist/clientSideScripts/injectWebviewOverlay.js +35 -0
- package/dist/clientSideScripts/injectWebviewOverlay.test.d.ts +2 -0
- package/dist/clientSideScripts/injectWebviewOverlay.test.d.ts.map +1 -0
- package/dist/clientSideScripts/injectWebviewOverlay.test.js +74 -0
- package/dist/clientSideScripts/removeElementFromDom.d.ts +5 -0
- package/dist/clientSideScripts/removeElementFromDom.d.ts.map +1 -0
- package/dist/clientSideScripts/removeElementFromDom.js +9 -0
- package/dist/clientSideScripts/removeElementFromDom.test.d.ts +2 -0
- package/dist/clientSideScripts/removeElementFromDom.test.d.ts.map +1 -0
- package/dist/clientSideScripts/removeElementFromDom.test.js +43 -0
- package/dist/clientSideScripts/screenDimensions.interfaces.d.ts +96 -0
- package/dist/clientSideScripts/screenDimensions.interfaces.d.ts.map +1 -0
- package/dist/clientSideScripts/screenDimensions.interfaces.js +1 -0
- package/dist/clientSideScripts/scrollElementIntoView.d.ts +5 -0
- package/dist/clientSideScripts/scrollElementIntoView.d.ts.map +1 -0
- package/dist/clientSideScripts/scrollElementIntoView.js +31 -0
- package/dist/clientSideScripts/scrollElementIntoView.test.d.ts +2 -0
- package/dist/clientSideScripts/scrollElementIntoView.test.d.ts.map +1 -0
- package/dist/clientSideScripts/scrollElementIntoView.test.js +79 -0
- package/dist/clientSideScripts/scrollToPosition.d.ts +5 -0
- package/dist/clientSideScripts/scrollToPosition.d.ts.map +1 -0
- package/dist/clientSideScripts/scrollToPosition.js +25 -0
- package/dist/clientSideScripts/scrollToPosition.test.d.ts +2 -0
- package/dist/clientSideScripts/scrollToPosition.test.d.ts.map +1 -0
- package/dist/clientSideScripts/scrollToPosition.test.js +72 -0
- package/dist/clientSideScripts/setCustomCss.d.ts +6 -0
- package/dist/clientSideScripts/setCustomCss.d.ts.map +1 -0
- package/dist/clientSideScripts/setCustomCss.js +36 -0
- package/dist/clientSideScripts/setCustomCss.test.d.ts +2 -0
- package/dist/clientSideScripts/setCustomCss.test.d.ts.map +1 -0
- package/dist/clientSideScripts/setCustomCss.test.js +68 -0
- package/dist/clientSideScripts/statusAddressToolBarOffsets.interfaces.d.ts +11 -0
- package/dist/clientSideScripts/statusAddressToolBarOffsets.interfaces.d.ts.map +1 -0
- package/dist/clientSideScripts/statusAddressToolBarOffsets.interfaces.js +1 -0
- package/dist/clientSideScripts/toggleTextTransparency.d.ts +5 -0
- package/dist/clientSideScripts/toggleTextTransparency.d.ts.map +1 -0
- package/dist/clientSideScripts/toggleTextTransparency.js +16 -0
- package/dist/clientSideScripts/toggleTextTransparency.test.d.ts +2 -0
- package/dist/clientSideScripts/toggleTextTransparency.test.d.ts.map +1 -0
- package/dist/clientSideScripts/toggleTextTransparency.test.js +35 -0
- package/dist/clientSideScripts/waitForFonts.d.ts +8 -0
- package/dist/clientSideScripts/waitForFonts.d.ts.map +1 -0
- package/dist/clientSideScripts/waitForFonts.js +20 -0
- package/dist/clientSideScripts/waitForFonts.test.d.ts +2 -0
- package/dist/clientSideScripts/waitForFonts.test.d.ts.map +1 -0
- package/dist/clientSideScripts/waitForFonts.test.js +37 -0
- package/dist/commands/check.interfaces.d.ts +35 -0
- package/dist/commands/check.interfaces.d.ts.map +1 -0
- package/dist/commands/check.interfaces.js +1 -0
- package/dist/commands/checkAppElement.d.ts +7 -0
- package/dist/commands/checkAppElement.d.ts.map +1 -0
- package/dist/commands/checkAppElement.js +44 -0
- package/dist/commands/checkAppElement.test.d.ts +2 -0
- package/dist/commands/checkAppElement.test.d.ts.map +1 -0
- package/dist/commands/checkAppElement.test.js +241 -0
- package/dist/commands/checkAppScreen.d.ts +7 -0
- package/dist/commands/checkAppScreen.d.ts.map +1 -0
- package/dist/commands/checkAppScreen.js +73 -0
- package/dist/commands/checkAppScreen.test.d.ts +2 -0
- package/dist/commands/checkAppScreen.test.d.ts.map +1 -0
- package/dist/commands/checkAppScreen.test.js +295 -0
- package/dist/commands/checkElement.d.ts +7 -0
- package/dist/commands/checkElement.d.ts.map +1 -0
- package/dist/commands/checkElement.js +10 -0
- package/dist/commands/checkElement.test.d.ts +2 -0
- package/dist/commands/checkElement.test.d.ts.map +1 -0
- package/dist/commands/checkElement.test.js +66 -0
- package/dist/commands/checkFullPageScreen.d.ts +7 -0
- package/dist/commands/checkFullPageScreen.d.ts.map +1 -0
- package/dist/commands/checkFullPageScreen.js +56 -0
- package/dist/commands/checkFullPageScreen.test.d.ts +2 -0
- package/dist/commands/checkFullPageScreen.test.d.ts.map +1 -0
- package/dist/commands/checkFullPageScreen.test.js +259 -0
- package/dist/commands/checkScreen.d.ts +7 -0
- package/dist/commands/checkScreen.d.ts.map +1 -0
- package/dist/commands/checkScreen.js +10 -0
- package/dist/commands/checkScreen.test.d.ts +2 -0
- package/dist/commands/checkScreen.test.d.ts.map +1 -0
- package/dist/commands/checkScreen.test.js +62 -0
- package/dist/commands/checkTabbablePage.d.ts +7 -0
- package/dist/commands/checkTabbablePage.d.ts.map +1 -0
- package/dist/commands/checkTabbablePage.js +28 -0
- package/dist/commands/checkTabbablePage.test.d.ts +2 -0
- package/dist/commands/checkTabbablePage.test.d.ts.map +1 -0
- package/dist/commands/checkTabbablePage.test.js +200 -0
- package/dist/commands/checkWebElement.d.ts +7 -0
- package/dist/commands/checkWebElement.d.ts.map +1 -0
- package/dist/commands/checkWebElement.js +52 -0
- package/dist/commands/checkWebElement.test.d.ts +2 -0
- package/dist/commands/checkWebElement.test.d.ts.map +1 -0
- package/dist/commands/checkWebElement.test.js +278 -0
- package/dist/commands/checkWebScreen.d.ts +7 -0
- package/dist/commands/checkWebScreen.d.ts.map +1 -0
- package/dist/commands/checkWebScreen.js +50 -0
- package/dist/commands/checkWebScreen.test.d.ts +2 -0
- package/dist/commands/checkWebScreen.test.d.ts.map +1 -0
- package/dist/commands/checkWebScreen.test.js +227 -0
- package/dist/commands/element.interfaces.d.ts +27 -0
- package/dist/commands/element.interfaces.d.ts.map +1 -0
- package/dist/commands/element.interfaces.js +1 -0
- package/dist/commands/fullPage.interfaces.d.ts +38 -0
- package/dist/commands/fullPage.interfaces.d.ts.map +1 -0
- package/dist/commands/fullPage.interfaces.js +1 -0
- package/dist/commands/save.interfaces.d.ts +27 -0
- package/dist/commands/save.interfaces.d.ts.map +1 -0
- package/dist/commands/save.interfaces.js +1 -0
- package/dist/commands/saveAppElement.d.ts +7 -0
- package/dist/commands/saveAppElement.d.ts.map +1 -0
- package/dist/commands/saveAppElement.js +30 -0
- package/dist/commands/saveAppElement.test.d.ts +2 -0
- package/dist/commands/saveAppElement.test.d.ts.map +1 -0
- package/dist/commands/saveAppElement.test.js +199 -0
- package/dist/commands/saveAppScreen.d.ts +7 -0
- package/dist/commands/saveAppScreen.d.ts.map +1 -0
- package/dist/commands/saveAppScreen.js +43 -0
- package/dist/commands/saveAppScreen.test.d.ts +2 -0
- package/dist/commands/saveAppScreen.test.d.ts.map +1 -0
- package/dist/commands/saveAppScreen.test.js +221 -0
- package/dist/commands/saveElement.d.ts +7 -0
- package/dist/commands/saveElement.d.ts.map +1 -0
- package/dist/commands/saveElement.js +10 -0
- package/dist/commands/saveElement.test.d.ts +2 -0
- package/dist/commands/saveElement.test.d.ts.map +1 -0
- package/dist/commands/saveElement.test.js +62 -0
- package/dist/commands/saveFullPageScreen.d.ts +7 -0
- package/dist/commands/saveFullPageScreen.d.ts.map +1 -0
- package/dist/commands/saveFullPageScreen.js +60 -0
- package/dist/commands/saveFullPageScreen.test.d.ts +2 -0
- package/dist/commands/saveFullPageScreen.test.d.ts.map +1 -0
- package/dist/commands/saveFullPageScreen.test.js +293 -0
- package/dist/commands/saveScreen.d.ts +7 -0
- package/dist/commands/saveScreen.d.ts.map +1 -0
- package/dist/commands/saveScreen.js +10 -0
- package/dist/commands/saveScreen.test.d.ts +2 -0
- package/dist/commands/saveScreen.test.d.ts.map +1 -0
- package/dist/commands/saveScreen.test.js +47 -0
- package/dist/commands/saveTabbablePage.d.ts +7 -0
- package/dist/commands/saveTabbablePage.d.ts.map +1 -0
- package/dist/commands/saveTabbablePage.js +20 -0
- package/dist/commands/saveTabbablePage.test.d.ts +2 -0
- package/dist/commands/saveTabbablePage.test.d.ts.map +1 -0
- package/dist/commands/saveTabbablePage.test.js +74 -0
- package/dist/commands/saveWebElement.d.ts +7 -0
- package/dist/commands/saveWebElement.d.ts.map +1 -0
- package/dist/commands/saveWebElement.js +53 -0
- package/dist/commands/saveWebElement.test.d.ts +2 -0
- package/dist/commands/saveWebElement.test.d.ts.map +1 -0
- package/dist/commands/saveWebElement.test.js +253 -0
- package/dist/commands/saveWebScreen.d.ts +7 -0
- package/dist/commands/saveWebScreen.d.ts.map +1 -0
- package/dist/commands/saveWebScreen.js +48 -0
- package/dist/commands/saveWebScreen.test.d.ts +2 -0
- package/dist/commands/saveWebScreen.test.d.ts.map +1 -0
- package/dist/commands/saveWebScreen.test.js +222 -0
- package/dist/commands/screen.interfaces.d.ts +16 -0
- package/dist/commands/screen.interfaces.d.ts.map +1 -0
- package/dist/commands/screen.interfaces.js +1 -0
- package/dist/commands/tabbable.interfaces.d.ts +29 -0
- package/dist/commands/tabbable.interfaces.d.ts.map +1 -0
- package/dist/commands/tabbable.interfaces.js +1 -0
- package/dist/helpers/afterScreenshot.d.ts +7 -0
- package/dist/helpers/afterScreenshot.d.ts.map +1 -0
- package/dist/helpers/afterScreenshot.interfaces.d.ts +46 -0
- package/dist/helpers/afterScreenshot.interfaces.d.ts.map +1 -0
- package/dist/helpers/afterScreenshot.interfaces.js +1 -0
- package/dist/helpers/afterScreenshot.js +55 -0
- package/dist/helpers/afterScreenshot.test.d.ts +2 -0
- package/dist/helpers/afterScreenshot.test.d.ts.map +1 -0
- package/dist/helpers/afterScreenshot.test.js +241 -0
- package/dist/helpers/beforeScreenshot.d.ts +6 -0
- package/dist/helpers/beforeScreenshot.d.ts.map +1 -0
- package/dist/helpers/beforeScreenshot.interfaces.d.ts +15 -0
- package/dist/helpers/beforeScreenshot.interfaces.d.ts.map +1 -0
- package/dist/helpers/beforeScreenshot.interfaces.js +1 -0
- package/dist/helpers/beforeScreenshot.js +79 -0
- package/dist/helpers/beforeScreenshot.test.d.ts +2 -0
- package/dist/helpers/beforeScreenshot.test.d.ts.map +1 -0
- package/dist/helpers/beforeScreenshot.test.js +261 -0
- package/dist/helpers/compare.interfaces.d.ts +16 -0
- package/dist/helpers/compare.interfaces.d.ts.map +1 -0
- package/dist/helpers/compare.interfaces.js +1 -0
- package/dist/helpers/constants.d.ts +108 -0
- package/dist/helpers/constants.d.ts.map +1 -0
- package/dist/helpers/constants.interfaces.d.ts +30 -0
- package/dist/helpers/constants.interfaces.d.ts.map +1 -0
- package/dist/helpers/constants.interfaces.js +11 -0
- package/dist/helpers/constants.js +436 -0
- package/dist/helpers/options.d.ts +64 -0
- package/dist/helpers/options.d.ts.map +1 -0
- package/dist/helpers/options.interfaces.d.ts +363 -0
- package/dist/helpers/options.interfaces.d.ts.map +1 -0
- package/dist/helpers/options.interfaces.js +1 -0
- package/dist/helpers/options.js +184 -0
- package/dist/helpers/options.test.d.ts +2 -0
- package/dist/helpers/options.test.d.ts.map +1 -0
- package/dist/helpers/options.test.js +428 -0
- package/dist/helpers/utils.d.ts +134 -0
- package/dist/helpers/utils.d.ts.map +1 -0
- package/dist/helpers/utils.interfaces.d.ts +254 -0
- package/dist/helpers/utils.interfaces.d.ts.map +1 -0
- package/dist/helpers/utils.interfaces.js +1 -0
- package/dist/helpers/utils.js +566 -0
- package/dist/helpers/utils.test.d.ts +2 -0
- package/dist/helpers/utils.test.d.ts.map +1 -0
- package/dist/helpers/utils.test.js +900 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/methods/compareReport.interfaces.d.ts +109 -0
- package/dist/methods/compareReport.interfaces.d.ts.map +1 -0
- package/dist/methods/compareReport.interfaces.js +1 -0
- package/dist/methods/createCompareReport.d.ts +7 -0
- package/dist/methods/createCompareReport.d.ts.map +1 -0
- package/dist/methods/createCompareReport.js +61 -0
- package/dist/methods/createCompareReport.test.d.ts +2 -0
- package/dist/methods/createCompareReport.test.d.ts.map +1 -0
- package/dist/methods/createCompareReport.test.js +236 -0
- package/dist/methods/elementPosition.d.ts +18 -0
- package/dist/methods/elementPosition.d.ts.map +1 -0
- package/dist/methods/elementPosition.interfaces.d.ts +14 -0
- package/dist/methods/elementPosition.interfaces.d.ts.map +1 -0
- package/dist/methods/elementPosition.interfaces.js +1 -0
- package/dist/methods/elementPosition.js +34 -0
- package/dist/methods/images.d.ts +69 -0
- package/dist/methods/images.d.ts.map +1 -0
- package/dist/methods/images.executeImageCompare.test.d.ts +2 -0
- package/dist/methods/images.executeImageCompare.test.d.ts.map +1 -0
- package/dist/methods/images.executeImageCompare.test.js +770 -0
- package/dist/methods/images.interfaces.d.ts +214 -0
- package/dist/methods/images.interfaces.d.ts.map +1 -0
- package/dist/methods/images.interfaces.js +1 -0
- package/dist/methods/images.js +428 -0
- package/dist/methods/images.test.d.ts +2 -0
- package/dist/methods/images.test.d.ts.map +1 -0
- package/dist/methods/images.test.js +1465 -0
- package/dist/methods/instanceData.d.ts +6 -0
- package/dist/methods/instanceData.d.ts.map +1 -0
- package/dist/methods/instanceData.interfaces.d.ts +57 -0
- package/dist/methods/instanceData.interfaces.d.ts.map +1 -0
- package/dist/methods/instanceData.interfaces.js +1 -0
- package/dist/methods/instanceData.js +42 -0
- package/dist/methods/instanceData.test.d.ts +2 -0
- package/dist/methods/instanceData.test.d.ts.map +1 -0
- package/dist/methods/instanceData.test.js +224 -0
- package/dist/methods/processDiffPixels.d.ts +59 -0
- package/dist/methods/processDiffPixels.d.ts.map +1 -0
- package/dist/methods/processDiffPixels.js +242 -0
- package/dist/methods/processDiffPixels.test.d.ts +2 -0
- package/dist/methods/processDiffPixels.test.d.ts.map +1 -0
- package/dist/methods/processDiffPixels.test.js +122 -0
- package/dist/methods/rectangles.d.ts +51 -0
- package/dist/methods/rectangles.d.ts.map +1 -0
- package/dist/methods/rectangles.interfaces.d.ts +146 -0
- package/dist/methods/rectangles.interfaces.d.ts.map +1 -0
- package/dist/methods/rectangles.interfaces.js +1 -0
- package/dist/methods/rectangles.js +266 -0
- package/dist/methods/rectangles.test.d.ts +2 -0
- package/dist/methods/rectangles.test.d.ts.map +1 -0
- package/dist/methods/rectangles.test.js +853 -0
- package/dist/methods/screenshots.d.ts +37 -0
- package/dist/methods/screenshots.d.ts.map +1 -0
- package/dist/methods/screenshots.interfaces.d.ts +203 -0
- package/dist/methods/screenshots.interfaces.d.ts.map +1 -0
- package/dist/methods/screenshots.interfaces.js +1 -0
- package/dist/methods/screenshots.js +394 -0
- package/dist/methods/screenshots.test.d.ts +2 -0
- package/dist/methods/screenshots.test.d.ts.map +1 -0
- package/dist/methods/screenshots.test.js +656 -0
- package/dist/methods/takeElementScreenshots.d.ts +3 -0
- package/dist/methods/takeElementScreenshots.d.ts.map +1 -0
- package/dist/methods/takeElementScreenshots.js +104 -0
- package/dist/methods/takeElementScreenshots.test.d.ts +2 -0
- package/dist/methods/takeElementScreenshots.test.d.ts.map +1 -0
- package/dist/methods/takeElementScreenshots.test.js +314 -0
- package/dist/methods/takeFullPageScreenshots.d.ts +3 -0
- package/dist/methods/takeFullPageScreenshots.d.ts.map +1 -0
- package/dist/methods/takeFullPageScreenshots.js +56 -0
- package/dist/methods/takeFullPageScreenshots.test.d.ts +2 -0
- package/dist/methods/takeFullPageScreenshots.test.d.ts.map +1 -0
- package/dist/methods/takeFullPageScreenshots.test.js +72 -0
- package/dist/methods/takeWebScreenshots.d.ts +3 -0
- package/dist/methods/takeWebScreenshots.d.ts.map +1 -0
- package/dist/methods/takeWebScreenshots.js +41 -0
- package/dist/methods/takeWebScreenshots.test.d.ts +2 -0
- package/dist/methods/takeWebScreenshots.test.d.ts.map +1 -0
- package/dist/methods/takeWebScreenshots.test.js +149 -0
- package/dist/mocks/image.d.ts +4 -0
- package/dist/mocks/image.d.ts.map +1 -0
- package/dist/mocks/image.js +3 -0
- package/dist/mocks/mocks.d.ts +745 -0
- package/dist/mocks/mocks.d.ts.map +1 -0
- package/dist/mocks/mocks.js +392 -0
- package/dist/resemble/compare.interfaces.d.ts +136 -0
- package/dist/resemble/compare.interfaces.d.ts.map +1 -0
- package/dist/resemble/compare.interfaces.js +1 -0
- package/dist/resemble/compareImages.d.ts +3 -0
- package/dist/resemble/compareImages.d.ts.map +1 -0
- package/dist/resemble/compareImages.js +21 -0
- package/dist/resemble/resemble.jimp.cjs +981 -0
- package/dist/resemble/resemble.jimp.d.cts +46 -0
- package/dist/resemble/resemble.jimp.d.cts.map +1 -0
- package/package.json +47 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# @wdio/image-comparison-core
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 1326e99: ## 💥 Major Release: New @wdio/image-comparison-core Package
|
|
8
|
+
|
|
9
|
+
### 🏗️ Architectural Refactor
|
|
10
|
+
|
|
11
|
+
This release introduces a **completely new core architecture** with the dedicated `@wdio/image-comparison-core` package, replacing the generic `webdriver-image-comparison` module with a WDIO-specific solution.
|
|
12
|
+
|
|
13
|
+
#### What was the problem?
|
|
14
|
+
|
|
15
|
+
- The old `webdriver-image-comparison` package was designed for generic webdriver usage
|
|
16
|
+
- Complex integration between generic and WDIO-specific code
|
|
17
|
+
- Limited test coverage (~58%) making maintenance difficult
|
|
18
|
+
- Mixed responsibilities between core logic and service integration
|
|
19
|
+
|
|
20
|
+
#### What changed?
|
|
21
|
+
|
|
22
|
+
✅ **New dedicated core package**: `@wdio/image-comparison-core` - purpose-built for WebdriverIO
|
|
23
|
+
✅ **Cleaner architecture**: Modular design with clear separation of concerns
|
|
24
|
+
✅ **Enhanced test coverage**: Improved from ~58% to ~90% across all metrics
|
|
25
|
+
✅ **Better maintainability**: Organized codebase with comprehensive TypeScript interfaces
|
|
26
|
+
✅ **WDIO-specific dependencies**: Only depends on `@wdio/logger`, `@wdio/types`, etc.
|
|
27
|
+
|
|
28
|
+
### 🧪 Testing Improvements
|
|
29
|
+
|
|
30
|
+
- **100% branch coverage** on critical decision points
|
|
31
|
+
- **Comprehensive unit tests** for all major functions
|
|
32
|
+
- **Optimized mocks** for complex scenarios
|
|
33
|
+
- **Better test isolation** and reliability
|
|
34
|
+
|
|
35
|
+
| Before/After | % Stmts | % Branch | % Funcs | % Lines |
|
|
36
|
+
| ------------------ | ------- | -------- | ------- | ------- |
|
|
37
|
+
| **Previous** | 58.59 | 91.4 | 80.71 | 58.59 |
|
|
38
|
+
| **After refactor** | 90.55 | 96.38 | 93.99 | 90.55 |
|
|
39
|
+
|
|
40
|
+
### 🔧 Service Integration
|
|
41
|
+
|
|
42
|
+
The `@wdio/visual-service` now imports from the new `@wdio/image-comparison-core` package while maintaining the same public API and functionality for users.
|
|
43
|
+
|
|
44
|
+
### 📈 Performance & Quality
|
|
45
|
+
|
|
46
|
+
- **Modular architecture**: Easier to maintain and extend
|
|
47
|
+
- **Type safety**: Comprehensive TypeScript coverage
|
|
48
|
+
- **Clean exports**: Well-defined public API
|
|
49
|
+
- **Internal interfaces**: Proper separation of concerns
|
|
50
|
+
|
|
51
|
+
### 🔄 Backward Compatibility
|
|
52
|
+
|
|
53
|
+
✅ **No breaking changes** for end users
|
|
54
|
+
✅ **Same public API** maintained
|
|
55
|
+
✅ **Existing configurations** continue to work
|
|
56
|
+
✅ **All existing functionality** preserved
|
|
57
|
+
|
|
58
|
+
### 🎯 Future Benefits
|
|
59
|
+
|
|
60
|
+
This refactor sets the foundation for:
|
|
61
|
+
|
|
62
|
+
- Easier addition of new features
|
|
63
|
+
- Better bug fixing capabilities
|
|
64
|
+
- Enhanced mobile and native app support
|
|
65
|
+
- More reliable MultiRemote functionality
|
|
66
|
+
|
|
67
|
+
### 📦 Dependency Updates
|
|
68
|
+
|
|
69
|
+
- Updated most dependencies to their latest versions
|
|
70
|
+
- Improved security with latest package versions
|
|
71
|
+
- Better compatibility with current WebdriverIO ecosystem
|
|
72
|
+
- Enhanced performance through updated dependencies
|
|
73
|
+
- Remove unused packages
|
|
74
|
+
|
|
75
|
+
***
|
|
76
|
+
|
|
77
|
+
**Note**: This is an architectural improvement that modernizes the codebase while maintaining full backward compatibility. All existing functionality remains unchanged for users.
|
|
78
|
+
|
|
79
|
+
***
|
|
80
|
+
## Committers: 1
|
|
81
|
+
|
|
82
|
+
- Wim Selles ([@wswebcreation](https://github.com/wswebcreation))
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 OpenJS Foundation
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
WebdriverIO Image Comparison Core
|
|
2
|
+
==========================
|
|
3
|
+
|
|
4
|
+
## Installation
|
|
5
|
+
|
|
6
|
+
The easiest way is to keep `@wdio/image-comparison-core` as a dev-dependency in your `package.json`, via:
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install @wdio/image-comparison-core --save-dev
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Instructions on how to get started can be found in the [visual testing](https://webdriver.io/docs/visual-testing) docs on the WebdriverIO project page.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/base.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Folders } from './base.interfaces.js';
|
|
2
|
+
import type { ClassOptions, DefaultOptions } from './helpers/options.interfaces.js';
|
|
3
|
+
export default class BaseClass {
|
|
4
|
+
defaultOptions: DefaultOptions;
|
|
5
|
+
folders: Folders;
|
|
6
|
+
constructor(options: ClassOptions);
|
|
7
|
+
/**
|
|
8
|
+
* Setup the folder structure for screenshots
|
|
9
|
+
* @private
|
|
10
|
+
*/
|
|
11
|
+
private _setupFolders;
|
|
12
|
+
/**
|
|
13
|
+
* Clear the runtime folders (actual and diff)
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
private _clearRuntimeFolders;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAInF,MAAM,CAAC,OAAO,OAAO,SAAS;IAC1B,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,OAAO,CAAA;gBAEJ,OAAO,EAAE,YAAY;IAajC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB/B"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
export interface Folders {
|
|
2
|
+
/** The actual folder where the current screenshots need to be saved */
|
|
3
|
+
actualFolder: string;
|
|
4
|
+
/** The baseline folder where the baseline screenshots can be found */
|
|
5
|
+
baselineFolder: string;
|
|
6
|
+
/** The diff folder where the differences are saved */
|
|
7
|
+
diffFolder: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FolderPaths {
|
|
10
|
+
/** The actual folder path where the current screenshots need to be saved */
|
|
11
|
+
actualFolderPath: string;
|
|
12
|
+
/** The baseline folder path where the baseline screenshots can be found */
|
|
13
|
+
baselineFolderPath: string;
|
|
14
|
+
/** The diff folder path where the differences are saved */
|
|
15
|
+
diffFolderPath: string;
|
|
16
|
+
}
|
|
17
|
+
export interface FilePaths {
|
|
18
|
+
/** The actual file path where the current screenshots need to be saved */
|
|
19
|
+
actualFilePath: string;
|
|
20
|
+
/** The baseline file path where the baseline screenshots can be found */
|
|
21
|
+
baselineFilePath: string;
|
|
22
|
+
/** The diff file path where the difference is saved */
|
|
23
|
+
diffFilePath: string;
|
|
24
|
+
}
|
|
25
|
+
export interface BaseWebScreenshotOptions {
|
|
26
|
+
/**
|
|
27
|
+
* Disable the blinking cursor
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
disableBlinkingCursor?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Disable all CSS animations
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
disableCSSAnimation?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Make all text transparent to focus on layout
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
enableLayoutTesting?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Use legacy screenshot method instead of BiDi protocol
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
enableLegacyScreenshotMethod?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Hide all scrollbars
|
|
48
|
+
* @default true
|
|
49
|
+
*/
|
|
50
|
+
hideScrollBars?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Elements to hide before taking screenshot
|
|
53
|
+
* @default []
|
|
54
|
+
*/
|
|
55
|
+
hideElements?: HTMLElement[];
|
|
56
|
+
/**
|
|
57
|
+
* Elements to remove before taking screenshot
|
|
58
|
+
* @default []
|
|
59
|
+
*/
|
|
60
|
+
removeElements?: HTMLElement[];
|
|
61
|
+
/**
|
|
62
|
+
* Wait for fonts to be loaded
|
|
63
|
+
* @default true
|
|
64
|
+
*/
|
|
65
|
+
waitForFontsLoaded?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface BaseMobileWebScreenshotOptions {
|
|
68
|
+
/**
|
|
69
|
+
* Padding for the address bar shadow
|
|
70
|
+
* @default 6
|
|
71
|
+
*/
|
|
72
|
+
addressBarShadowPadding?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Padding for the tool bar shadow
|
|
75
|
+
* @default 6
|
|
76
|
+
*/
|
|
77
|
+
toolBarShadowPadding?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface BaseImageCompareOptions {
|
|
80
|
+
/**
|
|
81
|
+
* Compare images and discard alpha
|
|
82
|
+
* @default false
|
|
83
|
+
*/
|
|
84
|
+
ignoreAlpha?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Compare images and discard anti aliasing
|
|
87
|
+
* @default false
|
|
88
|
+
*/
|
|
89
|
+
ignoreAntialiasing?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Compare images in black and white mode
|
|
92
|
+
* @default false
|
|
93
|
+
*/
|
|
94
|
+
ignoreColors?: boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Compare with reduced color sensitivity
|
|
97
|
+
* @default false
|
|
98
|
+
*/
|
|
99
|
+
ignoreLess?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Compare with maximum sensitivity
|
|
102
|
+
* @default false
|
|
103
|
+
*/
|
|
104
|
+
ignoreNothing?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Return raw mismatch percentage without rounding
|
|
107
|
+
* @default false
|
|
108
|
+
*/
|
|
109
|
+
rawMisMatchPercentage?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* Return all comparison data
|
|
112
|
+
* @default false
|
|
113
|
+
*/
|
|
114
|
+
returnAllCompareData?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Save images only above this mismatch tolerance
|
|
117
|
+
* @default 0
|
|
118
|
+
*/
|
|
119
|
+
saveAboveTolerance?: number;
|
|
120
|
+
/**
|
|
121
|
+
* Scale images to same size before comparison
|
|
122
|
+
* @default false
|
|
123
|
+
*/
|
|
124
|
+
scaleImagesToSameSize?: boolean;
|
|
125
|
+
}
|
|
126
|
+
export interface BaseMobileBlockOutOptions {
|
|
127
|
+
/**
|
|
128
|
+
* Block out the side bar
|
|
129
|
+
* @default false
|
|
130
|
+
*/
|
|
131
|
+
blockOutSideBar?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Block out the status bar
|
|
134
|
+
* @default false
|
|
135
|
+
*/
|
|
136
|
+
blockOutStatusBar?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Block out the tool bar
|
|
139
|
+
* @default false
|
|
140
|
+
*/
|
|
141
|
+
blockOutToolBar?: boolean;
|
|
142
|
+
}
|
|
143
|
+
export interface BaseDeviceInfo {
|
|
144
|
+
/**
|
|
145
|
+
* The name of the browser
|
|
146
|
+
* @default ''
|
|
147
|
+
*/
|
|
148
|
+
browserName: string;
|
|
149
|
+
/**
|
|
150
|
+
* The name of the device
|
|
151
|
+
* @default ''
|
|
152
|
+
*/
|
|
153
|
+
deviceName: string;
|
|
154
|
+
/**
|
|
155
|
+
* The device pixel ratio
|
|
156
|
+
* @default 1
|
|
157
|
+
*/
|
|
158
|
+
devicePixelRatio: number;
|
|
159
|
+
/**
|
|
160
|
+
* Whether the device is Android
|
|
161
|
+
* @default false
|
|
162
|
+
*/
|
|
163
|
+
isAndroid: boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Whether the device is iOS
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
168
|
+
isIOS: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Whether the device is mobile
|
|
171
|
+
* @default false
|
|
172
|
+
*/
|
|
173
|
+
isMobile: boolean;
|
|
174
|
+
}
|
|
175
|
+
export interface BaseCoordinates {
|
|
176
|
+
/** The x-coordinate */
|
|
177
|
+
x: number;
|
|
178
|
+
/** The y-coordinate */
|
|
179
|
+
y: number;
|
|
180
|
+
}
|
|
181
|
+
export interface BaseDimensions {
|
|
182
|
+
/** The width */
|
|
183
|
+
width: number;
|
|
184
|
+
/** The height */
|
|
185
|
+
height: number;
|
|
186
|
+
}
|
|
187
|
+
/** Base rectangle interface combining coordinates and dimensions */
|
|
188
|
+
export interface BaseRectangle extends BaseCoordinates, BaseDimensions {
|
|
189
|
+
}
|
|
190
|
+
export interface BaseBoundingBox {
|
|
191
|
+
/** The bottom coordinate */
|
|
192
|
+
bottom: number;
|
|
193
|
+
/** The right coordinate */
|
|
194
|
+
right: number;
|
|
195
|
+
/** The left coordinate */
|
|
196
|
+
left: number;
|
|
197
|
+
/** The top coordinate */
|
|
198
|
+
top: number;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=base.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.interfaces.d.ts","sourceRoot":"","sources":["../src/base.interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/base.js
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { join, normalize } from 'node:path';
|
|
2
|
+
import { rmSync } from 'node:fs';
|
|
3
|
+
import logger from '@wdio/logger';
|
|
4
|
+
import { defaultOptions } from './helpers/options.js';
|
|
5
|
+
import { FOLDERS } from './helpers/constants.js';
|
|
6
|
+
const log = logger('@wdio/visual-service:@wdio/image-comparison-core');
|
|
7
|
+
export default class BaseClass {
|
|
8
|
+
defaultOptions;
|
|
9
|
+
folders;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
// Determine default options
|
|
12
|
+
this.defaultOptions = defaultOptions(options);
|
|
13
|
+
// Setup folder structure
|
|
14
|
+
this.folders = this._setupFolders(options);
|
|
15
|
+
// Clear runtime folders if requested
|
|
16
|
+
if (options.clearRuntimeFolder) {
|
|
17
|
+
this._clearRuntimeFolders();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Setup the folder structure for screenshots
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
_setupFolders(options) {
|
|
25
|
+
const baselineFolder = typeof options.baselineFolder === 'function'
|
|
26
|
+
? options.baselineFolder(options)
|
|
27
|
+
: normalize(options.baselineFolder || FOLDERS.DEFAULT.BASE);
|
|
28
|
+
const baseFolder = typeof options.screenshotPath === 'function'
|
|
29
|
+
? options.screenshotPath(options)
|
|
30
|
+
: normalize(options.screenshotPath || FOLDERS.DEFAULT.SCREENSHOTS);
|
|
31
|
+
return {
|
|
32
|
+
actualFolder: join(baseFolder, FOLDERS.ACTUAL),
|
|
33
|
+
baselineFolder,
|
|
34
|
+
diffFolder: join(baseFolder, FOLDERS.DIFF),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clear the runtime folders (actual and diff)
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
_clearRuntimeFolders() {
|
|
42
|
+
log.info('\x1b[33m\n##############################\n!!CLEARING RUNTIME FOLDERS!!\n##############################\x1b[0m');
|
|
43
|
+
try {
|
|
44
|
+
rmSync(this.folders.actualFolder, { recursive: true, force: true });
|
|
45
|
+
log.debug(`Cleared actual folder: ${this.folders.actualFolder}`);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
log.warn(`Failed to clear actual folder ${this.folders.actualFolder}:`, error);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
rmSync(this.folders.diffFolder, { recursive: true, force: true });
|
|
52
|
+
log.debug(`Cleared diff folder: ${this.folders.diffFolder}`);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
log.warn(`Failed to clear diff folder ${this.folders.diffFolder}:`, error);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.test.d.ts","sourceRoot":"","sources":["../src/base.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { rmSync } from 'node:fs';
|
|
3
|
+
import BaseClass from './base.js';
|
|
4
|
+
vi.mock('node:fs', () => ({
|
|
5
|
+
...vi.importActual('node:fs'),
|
|
6
|
+
rmSync: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
describe('BaseClass', () => {
|
|
9
|
+
it('initializes default options correctly', () => {
|
|
10
|
+
const options = {};
|
|
11
|
+
const instance = new BaseClass(options);
|
|
12
|
+
expect(instance.defaultOptions).toMatchSnapshot();
|
|
13
|
+
});
|
|
14
|
+
it('initializes folders with default values', () => {
|
|
15
|
+
const instance = new BaseClass({});
|
|
16
|
+
expect(instance.folders.actualFolder).toMatchSnapshot();
|
|
17
|
+
expect(instance.folders.baselineFolder).toMatchSnapshot();
|
|
18
|
+
expect(instance.folders.diffFolder).toMatchSnapshot();
|
|
19
|
+
});
|
|
20
|
+
it('initializes folders with custom values', () => {
|
|
21
|
+
const options = {
|
|
22
|
+
baselineFolder: 'custom/baseline',
|
|
23
|
+
screenshotPath: 'custom/screenshots',
|
|
24
|
+
};
|
|
25
|
+
const instance = new BaseClass(options);
|
|
26
|
+
expect(instance.folders.baselineFolder).toBe('custom/baseline');
|
|
27
|
+
expect(instance.folders.actualFolder).toContain('custom/screenshots');
|
|
28
|
+
});
|
|
29
|
+
it('handles functional baselineFolder and screenshotPath', () => {
|
|
30
|
+
const options = {
|
|
31
|
+
baselineFolder: () => 'functional/baseline',
|
|
32
|
+
screenshotPath: () => 'functional/screenshots',
|
|
33
|
+
};
|
|
34
|
+
const instance = new BaseClass(options);
|
|
35
|
+
expect(instance.folders.baselineFolder).toBe('functional/baseline');
|
|
36
|
+
expect(instance.folders.actualFolder).toContain('functional/screenshots');
|
|
37
|
+
});
|
|
38
|
+
it('clears runtime folders if clearRuntimeFolder is true', () => {
|
|
39
|
+
const options = {
|
|
40
|
+
clearRuntimeFolder: true,
|
|
41
|
+
};
|
|
42
|
+
new BaseClass(options);
|
|
43
|
+
expect(rmSync).toHaveBeenCalledTimes(2);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkMetaTag.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/checkMetaTag.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,SAQ3B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function checkMetaTag() {
|
|
2
|
+
const meta = document.querySelector("meta[name='viewport']");
|
|
3
|
+
if (!meta) {
|
|
4
|
+
const newMeta = document.createElement('meta');
|
|
5
|
+
newMeta.name = 'viewport';
|
|
6
|
+
newMeta.content = 'width=device-width, initial-scale=1';
|
|
7
|
+
document.head.appendChild(newMeta);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkMetaTag.test.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/checkMetaTag.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
3
|
+
import { checkMetaTag } from './checkMetaTag.js';
|
|
4
|
+
describe('checkMetaTag', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
document.head.innerHTML = '';
|
|
7
|
+
});
|
|
8
|
+
it('should add a viewport meta tag when not present', () => {
|
|
9
|
+
expect(document.querySelector('meta[name="viewport"]')).toBeNull();
|
|
10
|
+
checkMetaTag();
|
|
11
|
+
const meta = document.querySelector('meta[name="viewport"]');
|
|
12
|
+
expect(meta).not.toBeNull();
|
|
13
|
+
expect(meta?.content).toBe('width=device-width, initial-scale=1');
|
|
14
|
+
});
|
|
15
|
+
it('should not add a viewport meta tag if one already exists', () => {
|
|
16
|
+
const existing = document.createElement('meta');
|
|
17
|
+
existing.name = 'viewport';
|
|
18
|
+
existing.content = 'custom';
|
|
19
|
+
document.head.appendChild(existing);
|
|
20
|
+
checkMetaTag();
|
|
21
|
+
const metas = Array.from(document.querySelectorAll('meta[name="viewport"]'));
|
|
22
|
+
expect(metas.length).toBe(1);
|
|
23
|
+
expect(metas[0].content).toBe('custom');
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customCss.interfaces.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/customCss.interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IAEvB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mBAAmB,EAAE,OAAO,CAAC;IAE7B,qBAAqB,EAAE,OAAO,CAAC;IAE/B,EAAE,EAAE,MAAM,CAAC;IAEX,cAAc,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TabbableOptions } from '../commands/tabbable.interfaces.js';
|
|
2
|
+
/**
|
|
3
|
+
* This method is based on this blog post
|
|
4
|
+
* https://vivrichards.co.uk/accessibility/automating-page-tab-flows-using-visual-testing-and-javascript
|
|
5
|
+
* by Viv Richards and optimized for using Canvas
|
|
6
|
+
*/
|
|
7
|
+
export default function drawTabbableOnCanvas(drawOptions: TabbableOptions): void;
|
|
8
|
+
//# sourceMappingURL=drawTabbableOnCanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawTabbableOnCanvas.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/drawTabbableOnCanvas.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA8B,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAErG;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,WAAW,EAAE,eAAe,QAyTxE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawTabbableOnCanvas.interfaces.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/drawTabbableOnCanvas.interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,MAAM,WAAW,iBAAkB,SAAQ,eAAe;CAAE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|