@applitools/dom-capture
Advanced tools
Comparing version 3.0.4 to 3.1.1
@@ -143,2 +143,41 @@ var _captureDom = (function (exports) { | ||
const bgImageRe = /url\((?!['"]?:)['"]?([^'"\)]*)['"]?\)/; | ||
function getBackgroundImageUrl(cssText) { | ||
const match = cssText ? cssText.match(bgImageRe) : undefined; | ||
return match ? match[1] : match; | ||
} | ||
var getBackgroundImageUrl_1 = getBackgroundImageUrl; | ||
/* global window */ | ||
const psetTimeout = t => | ||
new Promise(res => { | ||
setTimeout(res, t); | ||
}); | ||
async function getImageSizes({bgImages, timeout = 5000, Image = window.Image}) { | ||
return (await Promise.all( | ||
Array.from(bgImages).map(url => | ||
Promise.race([ | ||
new Promise(resolve => { | ||
const img = new Image(); | ||
img.onload = () => resolve({url, width: img.naturalWidth, height: img.naturalHeight}); | ||
img.onerror = () => resolve(); | ||
img.src = url; | ||
}), | ||
psetTimeout(timeout), | ||
]), | ||
), | ||
)).reduce((images, curr) => { | ||
if (curr) { | ||
images[curr.url] = {width: curr.width, height: curr.height}; | ||
} | ||
return images; | ||
}, {}); | ||
} | ||
var getImageSizes_1 = getImageSizes; | ||
async function captureFrame( | ||
@@ -192,2 +231,7 @@ {styleProps, rectProps, ignoredTagNames} = defaultDomProps, | ||
const bgImage = getBackgroundImageUrl_1(computedStyle.getPropertyValue('background-image')); | ||
if (bgImage) { | ||
bgImages.add(bgImage); | ||
} | ||
return { | ||
@@ -232,3 +276,5 @@ tagName, | ||
const start = Date.now(); | ||
const bgImages = new Set(); | ||
const ret = await captureNode(doc.documentElement); | ||
ret.images = await getImageSizes_1({bgImages}); | ||
console.log('[captureFrame]', Date.now() - start); | ||
@@ -235,0 +281,0 @@ return ret; |
{ | ||
"name": "@applitools/dom-capture", | ||
"version": "3.0.4", | ||
"version": "3.1.1", | ||
"main": "index.js", | ||
@@ -11,2 +11,3 @@ "license": "MIT", | ||
"build": "rollup -c rollup.config.js", | ||
"build:watch": "rollup -c rollup.config.js --watch", | ||
"prepublishOnly": "npm run build && npm version patch" | ||
@@ -13,0 +14,0 @@ }, |
@@ -5,2 +5,5 @@ /* global window, document */ | ||
const defaultDomProps = require('./defaultDomProps'); | ||
const getBackgroundImageUrl = require('./getBackgroundImageUrl'); | ||
const getImageSizes = require('./getImageSizes'); | ||
async function captureFrame( | ||
@@ -54,2 +57,7 @@ {styleProps, rectProps, ignoredTagNames} = defaultDomProps, | ||
const bgImage = getBackgroundImageUrl(computedStyle.getPropertyValue('background-image')); | ||
if (bgImage) { | ||
bgImages.add(bgImage); | ||
} | ||
return { | ||
@@ -94,3 +102,5 @@ tagName, | ||
const start = Date.now(); | ||
const bgImages = new Set(); | ||
const ret = await captureNode(doc.documentElement); | ||
ret.images = await getImageSizes({bgImages}); | ||
console.log('[captureFrame]', Date.now() - start); | ||
@@ -97,0 +107,0 @@ return ret; |
19390
13
570