Skip to content

Commit 96c8c99

Browse files
authored
Merge pull request #8 from pinanks/DOT-939
DOT-939
2 parents 0f0bc6c + 2a5db37 commit 96c8c99

File tree

1 file changed

+27
-3
lines changed

1 file changed

+27
-3
lines changed

commands/utils/dom.js

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,24 @@ async function sendDoM(storybookUrl, stories, storybookConfig, options) {
2525
const browserless = await browser.createContext()
2626
const html = await browserless.html(storyInfo.url)
2727

28-
dom = new JSDOM(html);
29-
for(element of dom.window.document.querySelectorAll('img')) {
28+
dom = new JSDOM(html, {
29+
url: storybookUrl,
30+
resources: 'usable'
31+
});
32+
clone = new JSDOM(html);
33+
34+
// Serialize DOM
35+
for(element of clone.window.document.querySelectorAll('img')) {
3036
let image = new URL(element.getAttribute('src'), storybookUrl).href;
3137
let format = path.extname(image).replace(/^./, '');
3238
format = format === 'svg' ? 'svg+xml' : format
3339
let imageAsBase64 = await getBase64(image);
3440
element.setAttribute('src', 'data:image/'+format+';base64,'+imageAsBase64);
3541
}
42+
await serializeCSSOM(dom, clone);
43+
3644
try {
37-
fs.writeFileSync('doms/' + storyId + '.html', dom.serialize());
45+
fs.writeFileSync('doms/' + storyId + '.html', clone.serialize());
3846
} catch (err) {
3947
console.error(err);
4048
}
@@ -164,4 +172,20 @@ function getBase64(url) {
164172
});
165173
}
166174

175+
async function serializeCSSOM(dom, clone) {
176+
return new Promise(resolve => {
177+
dom.window.addEventListener("load", () => {
178+
console.log(dom.window.document.styleSheets.length);
179+
for (let styleSheet of dom.window.document.styleSheets) {
180+
let style = clone.window.document.createElement('style');
181+
style.type = 'text/css';
182+
style.innerHTML = Array.from(styleSheet.cssRules)
183+
.map(cssRule => cssRule.cssText).join('\n');
184+
clone.window.document.head.appendChild(style);
185+
}
186+
resolve();
187+
});
188+
});
189+
}
190+
167191
module.exports = { sendDoM };

0 commit comments

Comments
 (0)