MCPcopy Create free account
hub / github.com/garris/BackstopJS / delegateScenarios

Function delegateScenarios

core/util/createBitmaps.js:87–155  ·  view source on GitHub ↗
(config)

Source from the content-addressed store, hash-verified

85}
86
87function delegateScenarios (config) {
88 const scenarios = [];
89 const scenarioViews = [];
90
91 config.viewports = config.viewports.map(saveViewportIndexes);
92
93 // casper.each(scenarios, function (casper, scenario, i) {
94 config.scenarios.forEach(function (scenario, i) {
95 // var scenarioLabelSafe = makeSafe(scenario.label);
96 scenario.sIndex = i;
97 scenario.selectors = scenario.selectors || [];
98 if (scenario.viewports) {
99 scenario.viewports = scenario.viewports.map(saveViewportIndexes);
100 }
101 scenarios.push(scenario);
102
103 if (!config.isReference && _.has(scenario, 'variants')) {
104 scenario.variants.forEach(function (variant) {
105 // var variantLabelSafe = makeSafe(variant.label);
106 variant._parent = scenario;
107 scenarios.push(scenario);
108 });
109 }
110 });
111
112 let scenarioViewId = 0;
113 scenarios.forEach(function (scenario) {
114 let desiredViewportsForScenario = config.viewports;
115
116 if (scenario.viewports && scenario.viewports.length > 0) {
117 desiredViewportsForScenario = scenario.viewports;
118 }
119
120 desiredViewportsForScenario.forEach(function (viewport) {
121 scenarioViews.push({
122 scenario,
123 viewport,
124 config,
125 id: scenarioViewId++
126 });
127 });
128 });
129
130 const asyncCaptureLimit = config.asyncCaptureLimit === 0 ? 1 : config.asyncCaptureLimit || CONCURRENCY_DEFAULT;
131
132 if (config.engine.startsWith('puppet')) {
133 return pMap(scenarioViews, runPuppet, { concurrency: asyncCaptureLimit });
134 } else if (config.engine.startsWith('play')) {
135 return new Promise((resolve, reject) => {
136 createPlaywrightBrowser(config).then(browser => {
137 console.log('Browser created');
138
139 for (const view of scenarioViews) {
140 view._playwrightBrowser = browser;
141 }
142
143 pMap(scenarioViews, runPlaywright, { concurrency: asyncCaptureLimit }).then(out => {
144 disposePlaywrightBrowser(browser).then(() => resolve(out));

Callers 1

createBitmaps.jsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected