( page, browser, scenario, viewport, variantOrScenarioLabelSafe, scenarioLabelSafe, config, selectors, selectorMap, logger )
| 305 | |
| 306 | // TODO: Should be in engineTools |
| 307 | async 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); |
no test coverage detected