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

Function delegateSelectors

core/util/runPuppet.js:307–384  ·  view source on GitHub ↗
(
  page,
  browser,
  scenario,
  viewport,
  variantOrScenarioLabelSafe,
  scenarioLabelSafe,
  config,
  selectors,
  selectorMap,
  logger
)

Source from the content-addressed store, hash-verified

305
306// TODO: Should be in engineTools
307async function delegateSelectors (
308 page,
309 browser,
310 scenario,
311 viewport,
312 variantOrScenarioLabelSafe,
313 scenarioLabelSafe,
314 config,
315 selectors,
316 selectorMap,
317 logger
318) {
319 const compareConfig = { testPairs: [] };
320 let captureDocument = false;
321 let captureViewport = false;
322 const captureList = [];
323 const captureJobs = [];
324
325 selectors.forEach(function (selector, selectorIndex) {
326 const testPair = engineTools.generateTestPair(config, scenario, viewport, variantOrScenarioLabelSafe, scenarioLabelSafe, selectorIndex, selector);
327 const filePath = config.isReference ? testPair.reference : testPair.test;
328 const logFilePath = config.isReference ? testPair.referenceLog : testPair.testLog;
329
330 if (!config.isReference) {
331 compareConfig.testPairs.push(testPair);
332 }
333
334 selectorMap[selector].filePath = filePath;
335 selectorMap[selector].logFilePath = logFilePath;
336 if (selector === BODY_SELECTOR || selector === DOCUMENT_SELECTOR) {
337 captureDocument = selector;
338 } else if (selector === VIEWPORT_SELECTOR) {
339 captureViewport = selector;
340 } else {
341 captureList.push(selector);
342 }
343 });
344
345 if (captureDocument) {
346 captureJobs.push(function () { return captureScreenshot(page, browser, captureDocument, selectorMap, config, [], viewport, logger); });
347 }
348 // TODO: push captureViewport into captureList (instead of calling captureScreenshot()) to improve perf.
349 if (captureViewport) {
350 captureJobs.push(function () { return captureScreenshot(page, browser, captureViewport, selectorMap, config, [], viewport, logger); });
351 }
352 if (captureList.length) {
353 captureJobs.push(function () { return captureScreenshot(page, browser, null, selectorMap, config, captureList, viewport, logger); });
354 }
355
356 return new Promise(function (resolve, reject) {
357 let job = null;
358 const errors = [];
359 const next = function () {
360 if (captureJobs.length === 0) {
361 if (errors.length === 0) {
362 resolve();
363 } else {
364 reject(errors);

Callers 1

processScenarioViewFunction · 0.70

Calls 2

captureScreenshotFunction · 0.70
nextFunction · 0.70

Tested by

no test coverage detected