UNPKG

@applitools/eyes-storybook

Version:
57 lines (50 loc) 1.67 kB
'use strict'; const throat = require('throat'); const {storyToCheckSettings, storyToOpenSettings} = require('./transformSettings'); function makeRenderStory({ logger, openEyes, performance, timeItAsync, storyDataGap, appName, serverSettings, }) { const throttle = throat(storyDataGap); return function renderStory({story, snapshots, url}) { const baselineName = story.baselineName; const title = story.storyTitle; logger.log(`running story ${title} with baseline ${baselineName}`); const openParams = storyToOpenSettings({story, appName, serverSettings}); const checkParams = storyToCheckSettings({story, url}); return timeItAsync(baselineName, async () => { const eyes = await openEyes({settings: openParams}); return new Promise((resolve, reject) => { throttle(async () => { try { if (snapshots) { await eyes.checkAndClose({ target: snapshots, settings: checkParams, }); const results = await eyes.getResults(); resolve(results); } else { await eyes.abort({settings: {environments: checkParams.environments}}); reject( new Error(`Failed to get story data for ${openParams.testName}, test was aborted`), ); } } catch (err) { reject(err); } }); }); }).then(onDoneStory); function onDoneStory(results) { logger.log('finished story', baselineName, 'in', performance[baselineName]); return results; } }; } module.exports = makeRenderStory;