@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
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import hideRemoveElements from './hideRemoveElements.js';
|
|
4
|
+
describe('hideRemoveElements', () => {
|
|
5
|
+
it('should be able to hide elements and put them back again', () => {
|
|
6
|
+
document.body.innerHTML =
|
|
7
|
+
'<div>' +
|
|
8
|
+
' <span id="id-1">Hello</span>' +
|
|
9
|
+
' <span id="id-2">Hello</span>' +
|
|
10
|
+
' <div>' +
|
|
11
|
+
' <span id="id-3">Hello</span>' +
|
|
12
|
+
' <span id="id-4">Hello</span>' +
|
|
13
|
+
' </div>' +
|
|
14
|
+
'</div>';
|
|
15
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
16
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
17
|
+
hideRemoveElements({
|
|
18
|
+
hide: [document.querySelector('#id-1'), document.querySelector('#id-3')],
|
|
19
|
+
remove: [],
|
|
20
|
+
}, true);
|
|
21
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
22
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
23
|
+
hideRemoveElements({
|
|
24
|
+
hide: [document.querySelector('#id-1'), document.querySelector('#id-3')],
|
|
25
|
+
remove: [],
|
|
26
|
+
}, false);
|
|
27
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
28
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
29
|
+
});
|
|
30
|
+
it('should be able to hide elements and put them back again when an array of hidden elements is provided', () => {
|
|
31
|
+
document.body.innerHTML =
|
|
32
|
+
'<div>' +
|
|
33
|
+
' <span class="hide">Hello</span>' +
|
|
34
|
+
' <span class="hide">Hello</span>' +
|
|
35
|
+
' <div>' +
|
|
36
|
+
' <span id="id-3">Hello</span>' +
|
|
37
|
+
' <span class="hide">Hello</span>' +
|
|
38
|
+
' </div>' +
|
|
39
|
+
'</div>';
|
|
40
|
+
expect(document.querySelectorAll('.hide')[0].style.visibility).toMatchSnapshot();
|
|
41
|
+
expect(document.querySelectorAll('.hide')[1].style.visibility).toMatchSnapshot();
|
|
42
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
43
|
+
expect(document.querySelectorAll('.hide')[2].style.visibility).toMatchSnapshot();
|
|
44
|
+
hideRemoveElements({
|
|
45
|
+
hide: [[...document.querySelectorAll('.hide')]],
|
|
46
|
+
remove: [],
|
|
47
|
+
}, true);
|
|
48
|
+
expect(document.querySelectorAll('.hide')[0].style.visibility).toMatchSnapshot();
|
|
49
|
+
expect(document.querySelectorAll('.hide')[1].style.visibility).toMatchSnapshot();
|
|
50
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
51
|
+
expect(document.querySelectorAll('.hide')[2].style.visibility).toMatchSnapshot();
|
|
52
|
+
hideRemoveElements({
|
|
53
|
+
hide: [[...document.querySelectorAll('.hide')]],
|
|
54
|
+
remove: [],
|
|
55
|
+
}, false);
|
|
56
|
+
expect(document.querySelectorAll('.hide')[0].style.visibility).toMatchSnapshot();
|
|
57
|
+
expect(document.querySelectorAll('.hide')[1].style.visibility).toMatchSnapshot();
|
|
58
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
59
|
+
expect(document.querySelectorAll('.hide')[2].style.visibility).toMatchSnapshot();
|
|
60
|
+
});
|
|
61
|
+
it('should be able to remove elements and put them back again', () => {
|
|
62
|
+
document.body.innerHTML =
|
|
63
|
+
'<div>' +
|
|
64
|
+
' <span id="id-1">Hello</span>' +
|
|
65
|
+
' <span id="id-2">Hello</span>' +
|
|
66
|
+
' <div>' +
|
|
67
|
+
' <span id="id-3">Hello</span>' +
|
|
68
|
+
' <span id="id-4">Hello</span>' +
|
|
69
|
+
' </div>' +
|
|
70
|
+
'</div>';
|
|
71
|
+
expect(document.querySelector('#id-2').style.display).toMatchSnapshot();
|
|
72
|
+
expect(document.querySelector('#id-4').style.display).toMatchSnapshot();
|
|
73
|
+
hideRemoveElements({
|
|
74
|
+
hide: [],
|
|
75
|
+
remove: [document.querySelector('#id-2'), document.querySelector('#id-4')],
|
|
76
|
+
}, true);
|
|
77
|
+
expect(document.querySelector('#id-2').style.display).toMatchSnapshot();
|
|
78
|
+
expect(document.querySelector('#id-4').style.display).toMatchSnapshot();
|
|
79
|
+
hideRemoveElements({
|
|
80
|
+
remove: [document.querySelector('#id-2'), document.querySelector('#id-4')],
|
|
81
|
+
hide: [],
|
|
82
|
+
}, false);
|
|
83
|
+
expect(document.querySelector('#id-2').style.display).toMatchSnapshot();
|
|
84
|
+
expect(document.querySelector('#id-4').style.display).toMatchSnapshot();
|
|
85
|
+
});
|
|
86
|
+
it('should be able to remove elements and put them back again when an array of to be removed elements is provided', () => {
|
|
87
|
+
document.body.innerHTML =
|
|
88
|
+
'<div>' +
|
|
89
|
+
' <span class="remove">Hello</span>' +
|
|
90
|
+
' <span class="remove">Hello</span>' +
|
|
91
|
+
' <div>' +
|
|
92
|
+
' <span id="id-3">Hello</span>' +
|
|
93
|
+
' <span class="remove">Hello</span>' +
|
|
94
|
+
' </div>' +
|
|
95
|
+
'</div>';
|
|
96
|
+
expect(document.querySelectorAll('.remove')[0].style.display).toMatchSnapshot();
|
|
97
|
+
expect(document.querySelectorAll('.remove')[1].style.display).toMatchSnapshot();
|
|
98
|
+
expect(document.querySelector('#id-3').style.display).toMatchSnapshot();
|
|
99
|
+
expect(document.querySelectorAll('.remove')[2].style.display).toMatchSnapshot();
|
|
100
|
+
hideRemoveElements({
|
|
101
|
+
remove: [[...document.querySelectorAll('.remove')]],
|
|
102
|
+
hide: [],
|
|
103
|
+
}, true);
|
|
104
|
+
expect(document.querySelectorAll('.remove')[0].style.display).toMatchSnapshot();
|
|
105
|
+
expect(document.querySelectorAll('.remove')[1].style.display).toMatchSnapshot();
|
|
106
|
+
expect(document.querySelector('#id-3').style.display).toMatchSnapshot();
|
|
107
|
+
expect(document.querySelectorAll('.remove')[2].style.display).toMatchSnapshot();
|
|
108
|
+
hideRemoveElements({
|
|
109
|
+
remove: [[...document.querySelectorAll('.remove')]],
|
|
110
|
+
hide: [],
|
|
111
|
+
}, false);
|
|
112
|
+
expect(document.querySelectorAll('.remove')[0].style.display).toMatchSnapshot();
|
|
113
|
+
expect(document.querySelectorAll('.remove')[1].style.display).toMatchSnapshot();
|
|
114
|
+
expect(document.querySelector('#id-3').style.display).toMatchSnapshot();
|
|
115
|
+
expect(document.querySelectorAll('.remove')[2].style.display).toMatchSnapshot();
|
|
116
|
+
});
|
|
117
|
+
it('should be able to find and hide single element based on xpath', () => {
|
|
118
|
+
document.body.innerHTML =
|
|
119
|
+
'<div>' +
|
|
120
|
+
' <span id="id-1">Hello</span>' +
|
|
121
|
+
' <span id="id-2">Hello</span>' +
|
|
122
|
+
' <div>' +
|
|
123
|
+
' <span id="id-3">Hello</span>' +
|
|
124
|
+
' <span id="id-4">Hello</span>' +
|
|
125
|
+
' </div>' +
|
|
126
|
+
'</div>';
|
|
127
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
128
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
129
|
+
hideRemoveElements({
|
|
130
|
+
hide: [{ selector: "//span[@id='id-1']" }, { selector: "//span[@id='id-3']" }],
|
|
131
|
+
remove: [],
|
|
132
|
+
}, true);
|
|
133
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
134
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
135
|
+
});
|
|
136
|
+
it('should be able to find and hide elements based on xpath', () => {
|
|
137
|
+
document.body.innerHTML =
|
|
138
|
+
'<div>' +
|
|
139
|
+
' <span id="id-1">Hello</span>' +
|
|
140
|
+
' <span id="id-2">Hello</span>' +
|
|
141
|
+
' <div>' +
|
|
142
|
+
' <span id="id-3">Hello</span>' +
|
|
143
|
+
' <span id="id-4">Hello</span>' +
|
|
144
|
+
' </div>' +
|
|
145
|
+
'</div>';
|
|
146
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
147
|
+
expect(document.querySelector('#id-2').style.visibility).toMatchSnapshot();
|
|
148
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
149
|
+
expect(document.querySelector('#id-4').style.visibility).toMatchSnapshot();
|
|
150
|
+
hideRemoveElements({
|
|
151
|
+
hide: [[{ selector: '//span' }]],
|
|
152
|
+
remove: [],
|
|
153
|
+
}, true);
|
|
154
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
155
|
+
expect(document.querySelector('#id-2').style.visibility).toMatchSnapshot();
|
|
156
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
157
|
+
expect(document.querySelector('#id-4').style.visibility).toMatchSnapshot();
|
|
158
|
+
});
|
|
159
|
+
it('should be able to find and hide a single element based on a css selector', () => {
|
|
160
|
+
document.body.innerHTML =
|
|
161
|
+
'<div>' +
|
|
162
|
+
' <span id="id-1">Hello</span>' +
|
|
163
|
+
' <span id="id-2">Hello</span>' +
|
|
164
|
+
' <div>' +
|
|
165
|
+
' <span id="id-3">Hello</span>' +
|
|
166
|
+
' <span class="hide">Hello</span>' +
|
|
167
|
+
' </div>' +
|
|
168
|
+
'</div>';
|
|
169
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
170
|
+
expect(document.querySelector('#id-2').style.visibility).toMatchSnapshot();
|
|
171
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
172
|
+
expect(document.querySelector('.hide').style.visibility).toMatchSnapshot();
|
|
173
|
+
hideRemoveElements({
|
|
174
|
+
hide: [{ selector: '.hide' }],
|
|
175
|
+
remove: [],
|
|
176
|
+
}, true);
|
|
177
|
+
expect(document.querySelector('#id-1').style.visibility).toMatchSnapshot();
|
|
178
|
+
expect(document.querySelector('#id-2').style.visibility).toMatchSnapshot();
|
|
179
|
+
expect(document.querySelector('#id-3').style.visibility).toMatchSnapshot();
|
|
180
|
+
expect(document.querySelector('.hide').style.visibility).toMatchSnapshot();
|
|
181
|
+
});
|
|
182
|
+
it('should be able to find and hide elements based on a css selector', () => {
|
|
183
|
+
document.body.innerHTML =
|
|
184
|
+
'<div>' +
|
|
185
|
+
' <span class="hide">Hello</span>' +
|
|
186
|
+
' <span class="hide">Hello</span>' +
|
|
187
|
+
' <div>' +
|
|
188
|
+
' <span class="hide">Hello</span>' +
|
|
189
|
+
' <span class="hide">Hello</span>' +
|
|
190
|
+
' </div>' +
|
|
191
|
+
'</div>';
|
|
192
|
+
expect(document.querySelectorAll('.hide')).toMatchSnapshot();
|
|
193
|
+
hideRemoveElements({
|
|
194
|
+
hide: [[{ selector: '.hide' }, { selector: '.hide' }]],
|
|
195
|
+
remove: [],
|
|
196
|
+
}, true);
|
|
197
|
+
expect(document.querySelectorAll('.hide')).toMatchSnapshot();
|
|
198
|
+
});
|
|
199
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hide the scrollbars
|
|
3
|
+
*
|
|
4
|
+
* There is a `try/catch` for this issue
|
|
5
|
+
* https://github.com/wswebcreation/webdriver-image-comparison/issues/30
|
|
6
|
+
* Some browsers don't wrap XML into a body element, so this will fail
|
|
7
|
+
*/
|
|
8
|
+
export default function hideScrollBars(hide: boolean): void;
|
|
9
|
+
//# sourceMappingURL=hideScrollbars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hideScrollbars.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/hideScrollbars.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAM1D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hide the scrollbars
|
|
3
|
+
*
|
|
4
|
+
* There is a `try/catch` for this issue
|
|
5
|
+
* https://github.com/wswebcreation/webdriver-image-comparison/issues/30
|
|
6
|
+
* Some browsers don't wrap XML into a body element, so this will fail
|
|
7
|
+
*/
|
|
8
|
+
export default function hideScrollBars(hide) {
|
|
9
|
+
try {
|
|
10
|
+
document.body.style.overflow = hide ? 'hidden' : '';
|
|
11
|
+
}
|
|
12
|
+
catch (_e) {
|
|
13
|
+
// Do nothing
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hideScrollbars.test.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/hideScrollbars.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import hideScrollBars from './hideScrollbars.js';
|
|
4
|
+
describe('hideScrollBars', () => {
|
|
5
|
+
it('should be able to hide and show the scrollbars', () => {
|
|
6
|
+
expect(document.body.style.overflow).toMatchSnapshot();
|
|
7
|
+
hideScrollBars(true);
|
|
8
|
+
expect(document.body.style.overflow).toMatchSnapshot();
|
|
9
|
+
hideScrollBars(false);
|
|
10
|
+
expect(document.body.style.overflow).toMatchSnapshot();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectWebviewOverlay.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/injectWebviewOverlay.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAkC7D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inject an overlay on top of the webview with an event listener that stores the click position in the webview
|
|
3
|
+
*/
|
|
4
|
+
export function injectWebviewOverlay(isAndroid) {
|
|
5
|
+
if (document.querySelector('[data-test="ics-overlay"]')) {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const overlay = document.createElement('div');
|
|
9
|
+
const dpr = isAndroid ? window.devicePixelRatio : 1;
|
|
10
|
+
overlay.style.cssText = `
|
|
11
|
+
position: fixed; top: 0; left: 0; width: 100vw;
|
|
12
|
+
height: ${document.documentElement.clientHeight}px;
|
|
13
|
+
background: rgba(255, 165, 0, 0.5); z-index: 2147483647;
|
|
14
|
+
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
15
|
+
color: black; font-size: 36px; font-family: Arial, sans-serif; text-align: center;`;
|
|
16
|
+
overlay.dataset.test = 'ics-overlay';
|
|
17
|
+
const textContainer = document.createElement('div');
|
|
18
|
+
textContainer.innerText = 'This overlay is used to determine the position of the webview.';
|
|
19
|
+
overlay.appendChild(textContainer);
|
|
20
|
+
overlay.onclick = (event) => {
|
|
21
|
+
const { clientX: x, clientY: y } = event;
|
|
22
|
+
const data = {
|
|
23
|
+
x: Math.round(x * dpr),
|
|
24
|
+
y: Math.round(y * dpr),
|
|
25
|
+
width: Math.round(window.innerWidth * dpr),
|
|
26
|
+
height: Math.round(document.documentElement.clientHeight * dpr),
|
|
27
|
+
};
|
|
28
|
+
overlay.dataset.icsWebviewData = JSON.stringify(data);
|
|
29
|
+
textContainer.innerHTML = `
|
|
30
|
+
This overlay is used to determine the position of the webview.<br>
|
|
31
|
+
Clicked at: X: ${data.x}, Y: ${data.y}<br/>
|
|
32
|
+
Dimensions: Viewport width: ${data.width}, Viewport height: ${data.height}`;
|
|
33
|
+
};
|
|
34
|
+
document.body.appendChild(overlay);
|
|
35
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injectWebviewOverlay.test.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/injectWebviewOverlay.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest';
|
|
2
|
+
import { JSDOM } from 'jsdom';
|
|
3
|
+
import { injectWebviewOverlay } from './injectWebviewOverlay.js';
|
|
4
|
+
describe('injectWebviewOverlay', () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
|
|
7
|
+
pretendToBeVisual: true,
|
|
8
|
+
runScripts: 'dangerously',
|
|
9
|
+
});
|
|
10
|
+
global.window = dom.window;
|
|
11
|
+
global.document = dom.window.document;
|
|
12
|
+
Object.defineProperty(document.documentElement, 'clientHeight', {
|
|
13
|
+
value: 800,
|
|
14
|
+
configurable: true,
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(window, 'innerWidth', {
|
|
17
|
+
value: 400,
|
|
18
|
+
configurable: true,
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(window, 'devicePixelRatio', {
|
|
21
|
+
value: 2,
|
|
22
|
+
configurable: true,
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
it('should inject an overlay if not already present', () => {
|
|
26
|
+
expect(document.querySelector('[data-test="ics-overlay"]')).toBeNull();
|
|
27
|
+
injectWebviewOverlay(true);
|
|
28
|
+
const overlay = document.querySelector('[data-test="ics-overlay"]');
|
|
29
|
+
expect(overlay).toBeTruthy();
|
|
30
|
+
expect(overlay?.tagName).toBe('DIV');
|
|
31
|
+
expect(overlay?.style.position).toBe('fixed');
|
|
32
|
+
expect(overlay?.style.height).toContain('800px');
|
|
33
|
+
});
|
|
34
|
+
it('should not inject a second overlay if one already exists', () => {
|
|
35
|
+
injectWebviewOverlay(true);
|
|
36
|
+
injectWebviewOverlay(true);
|
|
37
|
+
const overlays = document.querySelectorAll('[data-test="ics-overlay"]');
|
|
38
|
+
expect(overlays.length).toBe(1);
|
|
39
|
+
});
|
|
40
|
+
it('should store click position and dimensions in dataset on click (Android DPR)', () => {
|
|
41
|
+
injectWebviewOverlay(true);
|
|
42
|
+
const overlay = document.querySelector('[data-test="ics-overlay"]');
|
|
43
|
+
const event = new window.MouseEvent('click', {
|
|
44
|
+
clientX: 50,
|
|
45
|
+
clientY: 100,
|
|
46
|
+
bubbles: true,
|
|
47
|
+
});
|
|
48
|
+
overlay.dispatchEvent(event);
|
|
49
|
+
const parsedData = JSON.parse(overlay.dataset.icsWebviewData);
|
|
50
|
+
expect(parsedData).toEqual({
|
|
51
|
+
x: 100,
|
|
52
|
+
y: 200,
|
|
53
|
+
width: 800,
|
|
54
|
+
height: 1600,
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
it('should use DPR = 1 for iOS (isAndroid = false)', () => {
|
|
58
|
+
injectWebviewOverlay(false);
|
|
59
|
+
const overlay = document.querySelector('[data-test="ics-overlay"]');
|
|
60
|
+
const event = new window.MouseEvent('click', {
|
|
61
|
+
clientX: 50,
|
|
62
|
+
clientY: 100,
|
|
63
|
+
bubbles: true,
|
|
64
|
+
});
|
|
65
|
+
overlay.dispatchEvent(event);
|
|
66
|
+
const parsedData = JSON.parse(overlay.dataset.icsWebviewData);
|
|
67
|
+
expect(parsedData).toEqual({
|
|
68
|
+
x: 50,
|
|
69
|
+
y: 100,
|
|
70
|
+
width: 400,
|
|
71
|
+
height: 800,
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeElementFromDom.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/removeElementFromDom.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAK7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removeElementFromDom.test.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/removeElementFromDom.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
import { describe, it, expect } from 'vitest';
|
|
3
|
+
import removeElementFromDom from './removeElementFromDom.js';
|
|
4
|
+
describe('removeElementFromDom', () => {
|
|
5
|
+
it('should be able to remove the custom css', () => {
|
|
6
|
+
const id = 'test';
|
|
7
|
+
const cssText = 'body:{width:100%}';
|
|
8
|
+
const head = document.head || document.getElementsByTagName('head')[0];
|
|
9
|
+
const style = document.createElement('style');
|
|
10
|
+
style.id = id;
|
|
11
|
+
style.appendChild(document.createTextNode(cssText));
|
|
12
|
+
head.appendChild(style);
|
|
13
|
+
expect(document.head.textContent).toMatchSnapshot();
|
|
14
|
+
removeElementFromDom(id);
|
|
15
|
+
expect(document.head.textContent).toMatchSnapshot();
|
|
16
|
+
});
|
|
17
|
+
it('should do nothing if custom css is not present', () => {
|
|
18
|
+
const id = 'test';
|
|
19
|
+
expect(document.head.textContent).toMatchSnapshot();
|
|
20
|
+
removeElementFromDom(id);
|
|
21
|
+
expect(document.head.textContent).toMatchSnapshot();
|
|
22
|
+
});
|
|
23
|
+
it('should do nothing if document.head is null', () => {
|
|
24
|
+
const id = 'test';
|
|
25
|
+
Object.defineProperty(document, 'head', { value: null });
|
|
26
|
+
removeElementFromDom(id);
|
|
27
|
+
expect(document.head).toBe(null);
|
|
28
|
+
});
|
|
29
|
+
it('should be able to remove an element from the body', () => {
|
|
30
|
+
document.body.innerHTML =
|
|
31
|
+
'<div>' +
|
|
32
|
+
' <span id="id-1">Hello</span>' +
|
|
33
|
+
' <span id="id-2">Hello</span>' +
|
|
34
|
+
' <div>' +
|
|
35
|
+
' <span id="id-3">Hello</span>' +
|
|
36
|
+
' <span id="id-4">Hello</span>' +
|
|
37
|
+
' </div>' +
|
|
38
|
+
'</div>';
|
|
39
|
+
expect(document.body).toMatchSnapshot();
|
|
40
|
+
removeElementFromDom('id-1');
|
|
41
|
+
expect(document.body).toMatchSnapshot();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
export interface ScreenDimensions {
|
|
2
|
+
dimensions: {
|
|
3
|
+
body: {
|
|
4
|
+
/**
|
|
5
|
+
* Mobile & Desktop: Total scrollable height of the body element, including content not visible on screen.
|
|
6
|
+
* Includes padding but not border, margin or horizontal scrollbar.
|
|
7
|
+
* Equal to clientHeight if no vertical scrolling is needed.
|
|
8
|
+
*/
|
|
9
|
+
scrollHeight?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Mobile & Desktop: Height of body element including padding and borders, but not margins.
|
|
12
|
+
* For document.body, represents total linear content height.
|
|
13
|
+
* Floated elements extending below other linear content are ignored.
|
|
14
|
+
*/
|
|
15
|
+
offsetHeight?: number;
|
|
16
|
+
};
|
|
17
|
+
html: {
|
|
18
|
+
/**
|
|
19
|
+
* Mobile & Desktop: Viewport width excluding scrollbars.
|
|
20
|
+
* Includes padding but not borders, margins, or vertical scrollbars.
|
|
21
|
+
*/
|
|
22
|
+
clientWidth?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Mobile & Desktop: Total scrollable width including overflow content.
|
|
25
|
+
* Includes padding but not borders, margins, or vertical scrollbars.
|
|
26
|
+
* Equal to clientWidth if no horizontal scrolling is needed.
|
|
27
|
+
*/
|
|
28
|
+
scrollWidth?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Mobile & Desktop: Viewport height excluding scrollbars.
|
|
31
|
+
* Includes padding but not borders, margins, or horizontal scrollbars.
|
|
32
|
+
*/
|
|
33
|
+
clientHeight?: number;
|
|
34
|
+
/**
|
|
35
|
+
* Mobile & Desktop: Total scrollable height including overflow content.
|
|
36
|
+
* Includes padding but not borders, margins, or horizontal scrollbars.
|
|
37
|
+
* Equal to clientHeight if no vertical scrolling is needed.
|
|
38
|
+
*/
|
|
39
|
+
scrollHeight?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Mobile & Desktop: Height of html element including padding and borders.
|
|
42
|
+
* For document.documentElement, represents total rendered height including overflow.
|
|
43
|
+
* Floated elements extending below other linear content are ignored.
|
|
44
|
+
*/
|
|
45
|
+
offsetHeight?: number;
|
|
46
|
+
};
|
|
47
|
+
window: {
|
|
48
|
+
/**
|
|
49
|
+
* Mobile: Viewport width (changes with zoom)
|
|
50
|
+
* Desktop: Viewport width including vertical scrollbar
|
|
51
|
+
*/
|
|
52
|
+
innerWidth?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Mobile: Viewport height (changes with zoom)
|
|
55
|
+
* Desktop: Viewport height including horizontal scrollbar
|
|
56
|
+
*/
|
|
57
|
+
innerHeight?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Mobile: True if device is in landscape orientation
|
|
60
|
+
* Desktop: Based on viewport aspect ratio using matchMedia
|
|
61
|
+
*/
|
|
62
|
+
isLandscape: boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Mobile: Full browser width including UI elements
|
|
65
|
+
* Desktop: Browser window width including window chrome/borders
|
|
66
|
+
*/
|
|
67
|
+
outerWidth?: number;
|
|
68
|
+
/**
|
|
69
|
+
* Mobile: Full browser height including UI elements
|
|
70
|
+
* Desktop: Browser window height including window chrome/borders
|
|
71
|
+
*/
|
|
72
|
+
outerHeight?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Mobile: Physical pixel ratio (typically >1 for high DPI screens)
|
|
75
|
+
* Desktop: Usually 1, or higher for high DPI displays
|
|
76
|
+
*/
|
|
77
|
+
devicePixelRatio?: number;
|
|
78
|
+
/**
|
|
79
|
+
* Mobile: Always false
|
|
80
|
+
* Desktop: Depending if the screen is emulated to a "mobile" device
|
|
81
|
+
*/
|
|
82
|
+
isEmulated: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Mobile: Physical screen width in CSS pixels
|
|
85
|
+
* Desktop: Monitor width in pixels
|
|
86
|
+
*/
|
|
87
|
+
screenWidth?: number;
|
|
88
|
+
/**
|
|
89
|
+
* Mobile: Physical screen height in CSS pixels
|
|
90
|
+
* Desktop: Monitor height in pixels
|
|
91
|
+
*/
|
|
92
|
+
screenHeight?: number;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=screenDimensions.interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenDimensions.interfaces.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/screenDimensions.interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC7B,UAAU,EAAE;QACR,IAAI,EAAE;YACF;;;;eAIG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB;;;;eAIG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;QACF,IAAI,EAAE;YACF;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB;;;;eAIG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB;;;eAGG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB;;;;eAIG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB;;;;eAIG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;QACF,MAAM,EAAE;YACJ;;;eAGG;YACH,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB;;;eAGG;YACH,WAAW,EAAE,OAAO,CAAC;YACrB;;;eAGG;YACH,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB;;;eAGG;YACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B;;;eAGG;YACH,UAAU,EAAE,OAAO,CAAC;YACpB;;;eAGG;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB;;;eAGG;YACH,YAAY,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACL,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollElementIntoView.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/scrollElementIntoView.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,GAAG,MAAM,CA+B3G"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scroll the element into the top of the viewport
|
|
3
|
+
*/
|
|
4
|
+
export default function scrollElementIntoView(element, addressBarShadowPadding) {
|
|
5
|
+
let currentPosition = 0;
|
|
6
|
+
const htmlNode = document.documentElement;
|
|
7
|
+
const bodyNode = document.body;
|
|
8
|
+
// Apply new global style
|
|
9
|
+
const styleTag = document.createElement('style');
|
|
10
|
+
styleTag.innerHTML = '* { scroll-behavior: unset !important; }';
|
|
11
|
+
document.head.appendChild(styleTag);
|
|
12
|
+
// Determine the current scroll position
|
|
13
|
+
if (htmlNode.scrollTop > 0) {
|
|
14
|
+
currentPosition = htmlNode.scrollTop;
|
|
15
|
+
}
|
|
16
|
+
else if (bodyNode.scrollTop > 0) {
|
|
17
|
+
currentPosition = bodyNode.scrollTop;
|
|
18
|
+
}
|
|
19
|
+
const { top } = element.getBoundingClientRect();
|
|
20
|
+
const yPosition = top - addressBarShadowPadding;
|
|
21
|
+
// Scroll to the position
|
|
22
|
+
if (htmlNode.scrollHeight > htmlNode.clientHeight) {
|
|
23
|
+
htmlNode.scrollTop = yPosition;
|
|
24
|
+
}
|
|
25
|
+
else if (bodyNode.scrollHeight > bodyNode.clientHeight) {
|
|
26
|
+
bodyNode.scrollTop = yPosition;
|
|
27
|
+
}
|
|
28
|
+
// Remove the injected style
|
|
29
|
+
document.head.removeChild(styleTag);
|
|
30
|
+
return currentPosition;
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scrollElementIntoView.test.d.ts","sourceRoot":"","sources":["../../src/clientSideScripts/scrollElementIntoView.test.ts"],"names":[],"mappings":""}
|