@taiga-ui/testing 4.47.0-canary.fa64a58 → 4.47.0-canary.fb0273b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, writeFileSync } from 'node:fs';
2
2
  import { tuiCombineSnapshots } from './combine-snapshots';
3
- const ROOT_PATH = 'projects/demo-cypress';
4
- const TEST_RESULTS_PATH = `${ROOT_PATH}/tests-results`;
3
+ const ROOT_PATH = process.env.ROOT_PATH ?? 'projects/demo-cypress';
4
+ const TEST_RESULTS_PATH = process.env.TEST_RESULTS_PATH ?? `${ROOT_PATH}/tests-results`;
5
5
  export async function tuiCombineCypressFailedScreenshots() {
6
6
  const reportSummary = readJSON(`${TEST_RESULTS_PATH}/report-summary.json`);
7
7
  if (!reportSummary) {
@@ -24,4 +24,4 @@ function readJSON(path) {
24
24
  return null;
25
25
  }
26
26
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1jeXByZXNzLWZhaWxlZC1zY3JlZW5zaG90cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvdmlzdWFsLXRlc3RpbmcvY29tYmluZS1jeXByZXNzLWZhaWxlZC1zY3JlZW5zaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxNQUFNLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztBQUMxQyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsU0FBUyxnQkFBZ0IsQ0FBQztBQWN2RCxNQUFNLENBQUMsS0FBSyxVQUFVLGtDQUFrQztJQUNwRCxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQVMsR0FBRyxpQkFBaUIsc0JBQXNCLENBQUMsQ0FBQztJQUVuRixJQUFJLENBQUMsYUFBYSxFQUFFO1FBQ2hCLE9BQU87S0FDVjtJQUVELE1BQU0sbUJBQW1CLEdBQUcsYUFBYSxDQUFDLE1BQU07U0FDM0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ25CLElBQUksRUFBRTtTQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRELEtBQUssTUFBTSxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBQyxJQUFJLG1CQUFtQixFQUFFO1FBQzlFLE1BQU0sTUFBTSxHQUFHLE1BQU0sbUJBQW1CLENBQ3BDLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsU0FBUyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQzNFLENBQUM7UUFFRixhQUFhLENBQUMsR0FBRyxpQkFBaUIsSUFBSSxJQUFJLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUNsRTtBQUNMLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBSSxJQUFZO0lBQzdCLElBQUk7UUFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0tBQ2xEO0lBQUMsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmN9IGZyb20gJ25vZGU6ZnMnO1xuXG5pbXBvcnQge3R1aUNvbWJpbmVTbmFwc2hvdHN9IGZyb20gJy4vY29tYmluZS1zbmFwc2hvdHMnO1xuXG5jb25zdCBST09UX1BBVEggPSAncHJvamVjdHMvZGVtby1jeXByZXNzJztcbmNvbnN0IFRFU1RfUkVTVUxUU19QQVRIID0gYCR7Uk9PVF9QQVRIfS90ZXN0cy1yZXN1bHRzYDtcblxuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIHN0YXR1czogJ2ZhaWwnIHwgJ3Bhc3MnO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBiYXNlbGluZVBhdGg6IHN0cmluZztcbiAgICBkaWZmUGF0aDogc3RyaW5nO1xuICAgIGNvbXBhcmlzb25QYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZXBvcnQge1xuICAgIHN1aXRlczogQXJyYXk8e3Rlc3RzOiBUZXN0UmVzdWx0W119Pjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHR1aUNvbWJpbmVDeXByZXNzRmFpbGVkU2NyZWVuc2hvdHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVwb3J0U3VtbWFyeSA9IHJlYWRKU09OPFJlcG9ydD4oYCR7VEVTVF9SRVNVTFRTX1BBVEh9L3JlcG9ydC1zdW1tYXJ5Lmpzb25gKTtcblxuICAgIGlmICghcmVwb3J0U3VtbWFyeSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmFpbGVkVGVzdFNuYXBzaG90cyA9IHJlcG9ydFN1bW1hcnkuc3VpdGVzXG4gICAgICAgIC5tYXAoKHgpID0+IHgudGVzdHMpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5zdGF0dXMgPT09ICdmYWlsJyAmJiB4LmRpZmZQYXRoKTtcblxuICAgIGZvciAoY29uc3Qge2Jhc2VsaW5lUGF0aCwgZGlmZlBhdGgsIGNvbXBhcmlzb25QYXRoLCBuYW1lfSBvZiBmYWlsZWRUZXN0U25hcHNob3RzKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHR1aUNvbWJpbmVTbmFwc2hvdHMoXG4gICAgICAgICAgICBbYmFzZWxpbmVQYXRoLCBkaWZmUGF0aCwgY29tcGFyaXNvblBhdGhdLm1hcCgoeCkgPT4gYCR7Uk9PVF9QQVRIfS8ke3h9YCksXG4gICAgICAgICk7XG5cbiAgICAgICAgd3JpdGVGaWxlU3luYyhgJHtURVNUX1JFU1VMVFNfUEFUSH0vJHtuYW1lfS5kaWZmLnBuZ2AsIGJ1ZmZlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkSlNPTjxUPihwYXRoOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1jeXByZXNzLWZhaWxlZC1zY3JlZW5zaG90cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvdmlzdWFsLXRlc3RpbmcvY29tYmluZS1jeXByZXNzLWZhaWxlZC1zY3JlZW5zaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSx1QkFBdUIsQ0FBQztBQUNuRSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksR0FBRyxTQUFTLGdCQUFnQixDQUFDO0FBY3hGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0NBQWtDO0lBQ3BELE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBUyxHQUFHLGlCQUFpQixzQkFBc0IsQ0FBQyxDQUFDO0lBRW5GLElBQUksQ0FBQyxhQUFhLEVBQUU7UUFDaEIsT0FBTztLQUNWO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyxhQUFhLENBQUMsTUFBTTtTQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDbkIsSUFBSSxFQUFFO1NBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFdEQsS0FBSyxNQUFNLEVBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFDLElBQUksbUJBQW1CLEVBQUU7UUFDOUUsTUFBTSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FDcEMsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxTQUFTLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDM0UsQ0FBQztRQUVGLGFBQWEsQ0FBQyxHQUFHLGlCQUFpQixJQUFJLElBQUksV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQ2xFO0FBQ0wsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFJLElBQVk7SUFDN0IsSUFBSTtRQUNBLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDbEQ7SUFBQyxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUM7S0FDZjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7dHVpQ29tYmluZVNuYXBzaG90c30gZnJvbSAnLi9jb21iaW5lLXNuYXBzaG90cyc7XG5cbmNvbnN0IFJPT1RfUEFUSCA9IHByb2Nlc3MuZW52LlJPT1RfUEFUSCA/PyAncHJvamVjdHMvZGVtby1jeXByZXNzJztcbmNvbnN0IFRFU1RfUkVTVUxUU19QQVRIID0gcHJvY2Vzcy5lbnYuVEVTVF9SRVNVTFRTX1BBVEggPz8gYCR7Uk9PVF9QQVRIfS90ZXN0cy1yZXN1bHRzYDtcblxuaW50ZXJmYWNlIFRlc3RSZXN1bHQge1xuICAgIHN0YXR1czogJ2ZhaWwnIHwgJ3Bhc3MnO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBiYXNlbGluZVBhdGg6IHN0cmluZztcbiAgICBkaWZmUGF0aDogc3RyaW5nO1xuICAgIGNvbXBhcmlzb25QYXRoOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBSZXBvcnQge1xuICAgIHN1aXRlczogQXJyYXk8e3Rlc3RzOiBUZXN0UmVzdWx0W119Pjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHR1aUNvbWJpbmVDeXByZXNzRmFpbGVkU2NyZWVuc2hvdHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVwb3J0U3VtbWFyeSA9IHJlYWRKU09OPFJlcG9ydD4oYCR7VEVTVF9SRVNVTFRTX1BBVEh9L3JlcG9ydC1zdW1tYXJ5Lmpzb25gKTtcblxuICAgIGlmICghcmVwb3J0U3VtbWFyeSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmFpbGVkVGVzdFNuYXBzaG90cyA9IHJlcG9ydFN1bW1hcnkuc3VpdGVzXG4gICAgICAgIC5tYXAoKHgpID0+IHgudGVzdHMpXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbHRlcigoeCkgPT4geC5zdGF0dXMgPT09ICdmYWlsJyAmJiB4LmRpZmZQYXRoKTtcblxuICAgIGZvciAoY29uc3Qge2Jhc2VsaW5lUGF0aCwgZGlmZlBhdGgsIGNvbXBhcmlzb25QYXRoLCBuYW1lfSBvZiBmYWlsZWRUZXN0U25hcHNob3RzKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHR1aUNvbWJpbmVTbmFwc2hvdHMoXG4gICAgICAgICAgICBbYmFzZWxpbmVQYXRoLCBkaWZmUGF0aCwgY29tcGFyaXNvblBhdGhdLm1hcCgoeCkgPT4gYCR7Uk9PVF9QQVRIfS8ke3h9YCksXG4gICAgICAgICk7XG5cbiAgICAgICAgd3JpdGVGaWxlU3luYyhgJHtURVNUX1JFU1VMVFNfUEFUSH0vJHtuYW1lfS5kaWZmLnBuZ2AsIGJ1ZmZlcik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZWFkSlNPTjxUPihwYXRoOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  import { readdirSync, writeFileSync } from 'node:fs';
2
2
  import { tuiCombineSnapshots } from './combine-snapshots';
3
- const FAILED_SCREENSHOTS_PATH = 'projects/demo-playwright/tests-results';
4
- const DIFF_IMAGE_POSTFIX = '-diff.png';
5
- const OUTPUT_DIFF_IMAGE_POSTFIX = '.diff.png';
3
+ const FAILED_SCREENSHOTS_PATH = process.env.FAILED_SCREENSHOTS_PATH ?? 'projects/demo-playwright/tests-results';
4
+ const DIFF_IMAGE_POSTFIX = process.env.DIFF_IMAGE_POSTFIX ?? '-diff.png';
5
+ const OUTPUT_DIFF_IMAGE_POSTFIX = process.env.OUTPUT_DIFF_IMAGE_POSTFIX ?? '.diff.png';
6
6
  const RETRY_COUNT = Number(process.env.RETRY_COUNT ?? 2);
7
7
  const REG_EXP = new RegExp(`retry${RETRY_COUNT}$|retry${RETRY_COUNT}/`);
8
8
  export async function tuiCombinePlaywrightFailedScreenshots(rootPath = FAILED_SCREENSHOTS_PATH) {
@@ -28,4 +28,4 @@ export async function tuiCombinePlaywrightFailedScreenshots(rootPath = FAILED_SC
28
28
  console.info(`Write new diff: ${path}`);
29
29
  }
30
30
  }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1wbGF5d3JpZ2h0LWZhaWxlZC1zY3JlZW5zaG90cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvdmlzdWFsLXRlc3RpbmcvY29tYmluZS1wbGF5d3JpZ2h0LWZhaWxlZC1zY3JlZW5zaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVuRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxNQUFNLHVCQUF1QixHQUFHLHdDQUF3QyxDQUFDO0FBQ3pFLE1BQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDO0FBQ3ZDLE1BQU0seUJBQXlCLEdBQUcsV0FBVyxDQUFDO0FBQzlDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLFdBQVcsVUFBVSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXhFLE1BQU0sQ0FBQyxLQUFLLFVBQVUscUNBQXFDLENBQ3ZELFFBQVEsR0FBRyx1QkFBdUI7SUFFbEMsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLFFBQVEsRUFBRTtRQUN0QyxhQUFhLEVBQUUsSUFBSTtLQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDWixDQUFDLENBQUMsV0FBVyxFQUFFO1FBQ1gsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUNwRCxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQ25DLENBQUM7SUFFRixLQUFLLE1BQU0sRUFBQyxJQUFJLEVBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtRQUM3RCxNQUFNLHFDQUFxQyxDQUFDLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7S0FDdEU7SUFFRCxNQUFNLFdBQVcsR0FBYSxXQUFXO1NBQ3BDLE1BQU0sQ0FDSCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0YsQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNWLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQ2xEO1NBQ0EsR0FBRyxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUU5RSxLQUFLLE1BQU0sU0FBUyxJQUFJLEtBQUssRUFBRTtRQUMzQixNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsRixNQUFNLElBQUksR0FBRyxHQUFHLFFBQVEsSUFBSSxhQUFhLEdBQUcseUJBQXlCLEVBQUUsQ0FBQztRQUN4RSxNQUFNLE1BQU0sR0FBRyxNQUFNLG1CQUFtQixDQUNwQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQzdELENBQ0osQ0FBQztRQUVGLGFBQWEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUMzQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3JlYWRkaXJTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdub2RlOmZzJztcblxuaW1wb3J0IHt0dWlDb21iaW5lU25hcHNob3RzfSBmcm9tICcuL2NvbWJpbmUtc25hcHNob3RzJztcblxuY29uc3QgRkFJTEVEX1NDUkVFTlNIT1RTX1BBVEggPSAncHJvamVjdHMvZGVtby1wbGF5d3JpZ2h0L3Rlc3RzLXJlc3VsdHMnO1xuY29uc3QgRElGRl9JTUFHRV9QT1NURklYID0gJy1kaWZmLnBuZyc7XG5jb25zdCBPVVRQVVRfRElGRl9JTUFHRV9QT1NURklYID0gJy5kaWZmLnBuZyc7XG5jb25zdCBSRVRSWV9DT1VOVCA9IE51bWJlcihwcm9jZXNzLmVudi5SRVRSWV9DT1VOVCA/PyAyKTtcbmNvbnN0IFJFR19FWFAgPSBuZXcgUmVnRXhwKGByZXRyeSR7UkVUUllfQ09VTlR9JHxyZXRyeSR7UkVUUllfQ09VTlR9L2ApO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHVpQ29tYmluZVBsYXl3cmlnaHRGYWlsZWRTY3JlZW5zaG90cyhcbiAgICByb290UGF0aCA9IEZBSUxFRF9TQ1JFRU5TSE9UU19QQVRILFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZmlsZXNPckRpcnMgPSByZWFkZGlyU3luYyhyb290UGF0aCwge1xuICAgICAgICB3aXRoRmlsZVR5cGVzOiB0cnVlLFxuICAgIH0pLmZpbHRlcigoeCkgPT5cbiAgICAgICAgeC5pc0RpcmVjdG9yeSgpXG4gICAgICAgICAgICA/IFJFR19FWFAuZXhlYyh4Lm5hbWUpIHx8IFJFR19FWFAuZXhlYyh4LnBhcmVudFBhdGgpXG4gICAgICAgICAgICA6IFJFR19FWFAuZXhlYyh4LnBhcmVudFBhdGgpLFxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHtuYW1lfSBvZiBmaWxlc09yRGlycy5maWx0ZXIoKHgpID0+IHguaXNEaXJlY3RvcnkoKSkpIHtcbiAgICAgICAgYXdhaXQgdHVpQ29tYmluZVBsYXl3cmlnaHRGYWlsZWRTY3JlZW5zaG90cyhgJHtyb290UGF0aH0vJHtuYW1lfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGltYWdlc1BhdGhzOiBzdHJpbmdbXSA9IGZpbGVzT3JEaXJzXG4gICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoeCkgPT5cbiAgICAgICAgICAgICAgICB4LmlzRmlsZSgpICYmXG4gICAgICAgICAgICAgICAgeC5uYW1lLmVuZHNXaXRoKCcucG5nJykgJiZcbiAgICAgICAgICAgICAgICAheC5uYW1lLmVuZHNXaXRoKE9VVFBVVF9ESUZGX0lNQUdFX1BPU1RGSVgpLFxuICAgICAgICApXG4gICAgICAgIC5tYXAoKHtuYW1lfSkgPT4gYCR7cm9vdFBhdGh9LyR7bmFtZX1gKTtcbiAgICBjb25zdCBkaWZmcyA9IGltYWdlc1BhdGhzLmZpbHRlcigocGF0aCkgPT4gcGF0aC5lbmRzV2l0aChESUZGX0lNQUdFX1BPU1RGSVgpKTtcblxuICAgIGZvciAoY29uc3QgZGlmZkltYWdlIG9mIGRpZmZzKSB7XG4gICAgICAgIGNvbnN0IGRpZmZJbWFnZU5hbWUgPSBkaWZmSW1hZ2Uuc3BsaXQoJy8nKS5wb3AoKSEucmVwbGFjZShESUZGX0lNQUdFX1BPU1RGSVgsICcnKTtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke3Jvb3RQYXRofS8ke2RpZmZJbWFnZU5hbWV9JHtPVVRQVVRfRElGRl9JTUFHRV9QT1NURklYfWA7XG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IHR1aUNvbWJpbmVTbmFwc2hvdHMoXG4gICAgICAgICAgICBpbWFnZXNQYXRocy5maWx0ZXIoKHBhdGgpID0+XG4gICAgICAgICAgICAgICAgcGF0aC5zdGFydHNXaXRoKGRpZmZJbWFnZS5yZXBsYWNlKERJRkZfSU1BR0VfUE9TVEZJWCwgJycpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgd3JpdGVGaWxlU3luYyhwYXRoLCBidWZmZXIpO1xuXG4gICAgICAgIGNvbnNvbGUuaW5mbyhgV3JpdGUgbmV3IGRpZmY6ICR7cGF0aH1gKTtcbiAgICB9XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1wbGF5d3JpZ2h0LWZhaWxlZC1zY3JlZW5zaG90cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlc3RpbmcvdmlzdWFsLXRlc3RpbmcvY29tYmluZS1wbGF5d3JpZ2h0LWZhaWxlZC1zY3JlZW5zaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGFBQWEsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVuRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxNQUFNLHVCQUF1QixHQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLHdDQUF3QyxDQUFDO0FBRXBGLE1BQU0sa0JBQWtCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxXQUFXLENBQUM7QUFFekUsTUFBTSx5QkFBeUIsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixJQUFJLFdBQVcsQ0FBQztBQUV2RixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUM7QUFFekQsTUFBTSxPQUFPLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxXQUFXLFVBQVUsV0FBVyxHQUFHLENBQUMsQ0FBQztBQUV4RSxNQUFNLENBQUMsS0FBSyxVQUFVLHFDQUFxQyxDQUN2RCxRQUFRLEdBQUcsdUJBQXVCO0lBRWxDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxRQUFRLEVBQUU7UUFDdEMsYUFBYSxFQUFFLElBQUk7S0FDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ1osQ0FBQyxDQUFDLFdBQVcsRUFBRTtRQUNYLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7UUFDcEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUFDO0lBRUYsS0FBSyxNQUFNLEVBQUMsSUFBSSxFQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUU7UUFDN0QsTUFBTSxxQ0FBcUMsQ0FBQyxHQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3RFO0lBRUQsTUFBTSxXQUFXLEdBQWEsV0FBVztTQUNwQyxNQUFNLENBQ0gsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNGLENBQUMsQ0FBQyxNQUFNLEVBQUU7UUFDVixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUNsRDtTQUNBLEdBQUcsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDNUMsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFFOUUsS0FBSyxNQUFNLFNBQVMsSUFBSSxLQUFLLEVBQUU7UUFDM0IsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbEYsTUFBTSxJQUFJLEdBQUcsR0FBRyxRQUFRLElBQUksYUFBYSxHQUFHLHlCQUF5QixFQUFFLENBQUM7UUFDeEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxtQkFBbUIsQ0FDcEMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUM3RCxDQUNKLENBQUM7UUFFRixhQUFhLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDLENBQUM7S0FDM0M7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtyZWFkZGlyU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnbm9kZTpmcyc7XG5cbmltcG9ydCB7dHVpQ29tYmluZVNuYXBzaG90c30gZnJvbSAnLi9jb21iaW5lLXNuYXBzaG90cyc7XG5cbmNvbnN0IEZBSUxFRF9TQ1JFRU5TSE9UU19QQVRIID1cbiAgICBwcm9jZXNzLmVudi5GQUlMRURfU0NSRUVOU0hPVFNfUEFUSCA/PyAncHJvamVjdHMvZGVtby1wbGF5d3JpZ2h0L3Rlc3RzLXJlc3VsdHMnO1xuXG5jb25zdCBESUZGX0lNQUdFX1BPU1RGSVggPSBwcm9jZXNzLmVudi5ESUZGX0lNQUdFX1BPU1RGSVggPz8gJy1kaWZmLnBuZyc7XG5cbmNvbnN0IE9VVFBVVF9ESUZGX0lNQUdFX1BPU1RGSVggPSBwcm9jZXNzLmVudi5PVVRQVVRfRElGRl9JTUFHRV9QT1NURklYID8/ICcuZGlmZi5wbmcnO1xuXG5jb25zdCBSRVRSWV9DT1VOVCA9IE51bWJlcihwcm9jZXNzLmVudi5SRVRSWV9DT1VOVCA/PyAyKTtcblxuY29uc3QgUkVHX0VYUCA9IG5ldyBSZWdFeHAoYHJldHJ5JHtSRVRSWV9DT1VOVH0kfHJldHJ5JHtSRVRSWV9DT1VOVH0vYCk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0dWlDb21iaW5lUGxheXdyaWdodEZhaWxlZFNjcmVlbnNob3RzKFxuICAgIHJvb3RQYXRoID0gRkFJTEVEX1NDUkVFTlNIT1RTX1BBVEgsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBmaWxlc09yRGlycyA9IHJlYWRkaXJTeW5jKHJvb3RQYXRoLCB7XG4gICAgICAgIHdpdGhGaWxlVHlwZXM6IHRydWUsXG4gICAgfSkuZmlsdGVyKCh4KSA9PlxuICAgICAgICB4LmlzRGlyZWN0b3J5KClcbiAgICAgICAgICAgID8gUkVHX0VYUC5leGVjKHgubmFtZSkgfHwgUkVHX0VYUC5leGVjKHgucGFyZW50UGF0aClcbiAgICAgICAgICAgIDogUkVHX0VYUC5leGVjKHgucGFyZW50UGF0aCksXG4gICAgKTtcblxuICAgIGZvciAoY29uc3Qge25hbWV9IG9mIGZpbGVzT3JEaXJzLmZpbHRlcigoeCkgPT4geC5pc0RpcmVjdG9yeSgpKSkge1xuICAgICAgICBhd2FpdCB0dWlDb21iaW5lUGxheXdyaWdodEZhaWxlZFNjcmVlbnNob3RzKGAke3Jvb3RQYXRofS8ke25hbWV9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VzUGF0aHM6IHN0cmluZ1tdID0gZmlsZXNPckRpcnNcbiAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICh4KSA9PlxuICAgICAgICAgICAgICAgIHguaXNGaWxlKCkgJiZcbiAgICAgICAgICAgICAgICB4Lm5hbWUuZW5kc1dpdGgoJy5wbmcnKSAmJlxuICAgICAgICAgICAgICAgICF4Lm5hbWUuZW5kc1dpdGgoT1VUUFVUX0RJRkZfSU1BR0VfUE9TVEZJWCksXG4gICAgICAgIClcbiAgICAgICAgLm1hcCgoe25hbWV9KSA9PiBgJHtyb290UGF0aH0vJHtuYW1lfWApO1xuICAgIGNvbnN0IGRpZmZzID0gaW1hZ2VzUGF0aHMuZmlsdGVyKChwYXRoKSA9PiBwYXRoLmVuZHNXaXRoKERJRkZfSU1BR0VfUE9TVEZJWCkpO1xuXG4gICAgZm9yIChjb25zdCBkaWZmSW1hZ2Ugb2YgZGlmZnMpIHtcbiAgICAgICAgY29uc3QgZGlmZkltYWdlTmFtZSA9IGRpZmZJbWFnZS5zcGxpdCgnLycpLnBvcCgpIS5yZXBsYWNlKERJRkZfSU1BR0VfUE9TVEZJWCwgJycpO1xuICAgICAgICBjb25zdCBwYXRoID0gYCR7cm9vdFBhdGh9LyR7ZGlmZkltYWdlTmFtZX0ke09VVFBVVF9ESUZGX0lNQUdFX1BPU1RGSVh9YDtcbiAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgdHVpQ29tYmluZVNuYXBzaG90cyhcbiAgICAgICAgICAgIGltYWdlc1BhdGhzLmZpbHRlcigocGF0aCkgPT5cbiAgICAgICAgICAgICAgICBwYXRoLnN0YXJ0c1dpdGgoZGlmZkltYWdlLnJlcGxhY2UoRElGRl9JTUFHRV9QT1NURklYLCAnJykpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcblxuICAgICAgICB3cml0ZUZpbGVTeW5jKHBhdGgsIGJ1ZmZlcik7XG5cbiAgICAgICAgY29uc29sZS5pbmZvKGBXcml0ZSBuZXcgZGlmZjogJHtwYXRofWApO1xuICAgIH1cbn1cbiJdfQ==
@@ -21,8 +21,8 @@ async function tuiCombineSnapshots(imagesPaths) {
21
21
  return canvas.toBuffer('image/png');
22
22
  }
23
23
 
24
- const ROOT_PATH = 'projects/demo-cypress';
25
- const TEST_RESULTS_PATH = `${ROOT_PATH}/tests-results`;
24
+ const ROOT_PATH = process.env.ROOT_PATH ?? 'projects/demo-cypress';
25
+ const TEST_RESULTS_PATH = process.env.TEST_RESULTS_PATH ?? `${ROOT_PATH}/tests-results`;
26
26
  async function tuiCombineCypressFailedScreenshots() {
27
27
  const reportSummary = readJSON(`${TEST_RESULTS_PATH}/report-summary.json`);
28
28
  if (!reportSummary) {
@@ -46,9 +46,9 @@ function readJSON(path) {
46
46
  }
47
47
  }
48
48
 
49
- const FAILED_SCREENSHOTS_PATH = 'projects/demo-playwright/tests-results';
50
- const DIFF_IMAGE_POSTFIX = '-diff.png';
51
- const OUTPUT_DIFF_IMAGE_POSTFIX = '.diff.png';
49
+ const FAILED_SCREENSHOTS_PATH = process.env.FAILED_SCREENSHOTS_PATH ?? 'projects/demo-playwright/tests-results';
50
+ const DIFF_IMAGE_POSTFIX = process.env.DIFF_IMAGE_POSTFIX ?? '-diff.png';
51
+ const OUTPUT_DIFF_IMAGE_POSTFIX = process.env.OUTPUT_DIFF_IMAGE_POSTFIX ?? '.diff.png';
52
52
  const RETRY_COUNT = Number(process.env.RETRY_COUNT ?? 2);
53
53
  const REG_EXP = new RegExp(`retry${RETRY_COUNT}$|retry${RETRY_COUNT}/`);
54
54
  async function tuiCombinePlaywrightFailedScreenshots(rootPath = FAILED_SCREENSHOTS_PATH) {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-testing-visual-testing.mjs","sources":["../../../projects/testing/visual-testing/combine-snapshots.ts","../../../projects/testing/visual-testing/combine-cypress-failed-screenshots.ts","../../../projects/testing/visual-testing/combine-playwright-failed-screenshots.ts","../../../projects/testing/visual-testing/taiga-ui-testing-visual-testing.ts"],"sourcesContent":["// @ts-nocheck It is used in CI only!\n/**\n * Canvas has difficult installation guide for ARM CPU, including an Apple M1 or M2\n * (not friendly for our external contributors).\n * https://github.com/Automattic/node-canvas/issues/1511\n */\nimport {createCanvas, loadImage} from 'canvas';\n\nexport async function tuiCombineSnapshots(\n imagesPaths: string[],\n): Promise<NodeJS.ArrayBufferView> {\n const images = await Promise.all(imagesPaths.map(loadImage));\n const totalWidth = images.reduce((acc: number, {width}) => acc + width, 0);\n const maxHeight = Math.max(...images.map(({height}) => height));\n const canvas = createCanvas(totalWidth, maxHeight);\n const ctx = canvas.getContext('2d');\n\n let prevWidth = 0;\n\n images.forEach((image) => {\n ctx.drawImage(image, prevWidth, 0);\n prevWidth += image.width;\n });\n\n return canvas.toBuffer('image/png');\n}\n","import {readFileSync, writeFileSync} from 'node:fs';\n\nimport {tuiCombineSnapshots} from './combine-snapshots';\n\nconst ROOT_PATH = 'projects/demo-cypress';\nconst TEST_RESULTS_PATH = `${ROOT_PATH}/tests-results`;\n\ninterface TestResult {\n status: 'fail' | 'pass';\n name: string;\n baselinePath: string;\n diffPath: string;\n comparisonPath: string;\n}\n\ninterface Report {\n suites: Array<{tests: TestResult[]}>;\n}\n\nexport async function tuiCombineCypressFailedScreenshots(): Promise<void> {\n const reportSummary = readJSON<Report>(`${TEST_RESULTS_PATH}/report-summary.json`);\n\n if (!reportSummary) {\n return;\n }\n\n const failedTestSnapshots = reportSummary.suites\n .map((x) => x.tests)\n .flat()\n .filter((x) => x.status === 'fail' && x.diffPath);\n\n for (const {baselinePath, diffPath, comparisonPath, name} of failedTestSnapshots) {\n const buffer = await tuiCombineSnapshots(\n [baselinePath, diffPath, comparisonPath].map((x) => `${ROOT_PATH}/${x}`),\n );\n\n writeFileSync(`${TEST_RESULTS_PATH}/${name}.diff.png`, buffer);\n }\n}\n\nfunction readJSON<T>(path: string): T | null {\n try {\n return JSON.parse(readFileSync(path, 'utf-8'));\n } catch {\n return null;\n }\n}\n","import {readdirSync, writeFileSync} from 'node:fs';\n\nimport {tuiCombineSnapshots} from './combine-snapshots';\n\nconst FAILED_SCREENSHOTS_PATH = 'projects/demo-playwright/tests-results';\nconst DIFF_IMAGE_POSTFIX = '-diff.png';\nconst OUTPUT_DIFF_IMAGE_POSTFIX = '.diff.png';\nconst RETRY_COUNT = Number(process.env.RETRY_COUNT ?? 2);\nconst REG_EXP = new RegExp(`retry${RETRY_COUNT}$|retry${RETRY_COUNT}/`);\n\nexport async function tuiCombinePlaywrightFailedScreenshots(\n rootPath = FAILED_SCREENSHOTS_PATH,\n): Promise<void> {\n const filesOrDirs = readdirSync(rootPath, {\n withFileTypes: true,\n }).filter((x) =>\n x.isDirectory()\n ? REG_EXP.exec(x.name) || REG_EXP.exec(x.parentPath)\n : REG_EXP.exec(x.parentPath),\n );\n\n for (const {name} of filesOrDirs.filter((x) => x.isDirectory())) {\n await tuiCombinePlaywrightFailedScreenshots(`${rootPath}/${name}`);\n }\n\n const imagesPaths: string[] = filesOrDirs\n .filter(\n (x) =>\n x.isFile() &&\n x.name.endsWith('.png') &&\n !x.name.endsWith(OUTPUT_DIFF_IMAGE_POSTFIX),\n )\n .map(({name}) => `${rootPath}/${name}`);\n const diffs = imagesPaths.filter((path) => path.endsWith(DIFF_IMAGE_POSTFIX));\n\n for (const diffImage of diffs) {\n const diffImageName = diffImage.split('/').pop()!.replace(DIFF_IMAGE_POSTFIX, '');\n const path = `${rootPath}/${diffImageName}${OUTPUT_DIFF_IMAGE_POSTFIX}`;\n const buffer = await tuiCombineSnapshots(\n imagesPaths.filter((path) =>\n path.startsWith(diffImage.replace(DIFF_IMAGE_POSTFIX, '')),\n ),\n );\n\n writeFileSync(path, buffer);\n\n console.info(`Write new diff: ${path}`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-testing-visual-testing.mjs","sources":["../../../projects/testing/visual-testing/combine-snapshots.ts","../../../projects/testing/visual-testing/combine-cypress-failed-screenshots.ts","../../../projects/testing/visual-testing/combine-playwright-failed-screenshots.ts","../../../projects/testing/visual-testing/taiga-ui-testing-visual-testing.ts"],"sourcesContent":["// @ts-nocheck It is used in CI only!\n/**\n * Canvas has difficult installation guide for ARM CPU, including an Apple M1 or M2\n * (not friendly for our external contributors).\n * https://github.com/Automattic/node-canvas/issues/1511\n */\nimport {createCanvas, loadImage} from 'canvas';\n\nexport async function tuiCombineSnapshots(\n imagesPaths: string[],\n): Promise<NodeJS.ArrayBufferView> {\n const images = await Promise.all(imagesPaths.map(loadImage));\n const totalWidth = images.reduce((acc: number, {width}) => acc + width, 0);\n const maxHeight = Math.max(...images.map(({height}) => height));\n const canvas = createCanvas(totalWidth, maxHeight);\n const ctx = canvas.getContext('2d');\n\n let prevWidth = 0;\n\n images.forEach((image) => {\n ctx.drawImage(image, prevWidth, 0);\n prevWidth += image.width;\n });\n\n return canvas.toBuffer('image/png');\n}\n","import {readFileSync, writeFileSync} from 'node:fs';\n\nimport {tuiCombineSnapshots} from './combine-snapshots';\n\nconst ROOT_PATH = process.env.ROOT_PATH ?? 'projects/demo-cypress';\nconst TEST_RESULTS_PATH = process.env.TEST_RESULTS_PATH ?? `${ROOT_PATH}/tests-results`;\n\ninterface TestResult {\n status: 'fail' | 'pass';\n name: string;\n baselinePath: string;\n diffPath: string;\n comparisonPath: string;\n}\n\ninterface Report {\n suites: Array<{tests: TestResult[]}>;\n}\n\nexport async function tuiCombineCypressFailedScreenshots(): Promise<void> {\n const reportSummary = readJSON<Report>(`${TEST_RESULTS_PATH}/report-summary.json`);\n\n if (!reportSummary) {\n return;\n }\n\n const failedTestSnapshots = reportSummary.suites\n .map((x) => x.tests)\n .flat()\n .filter((x) => x.status === 'fail' && x.diffPath);\n\n for (const {baselinePath, diffPath, comparisonPath, name} of failedTestSnapshots) {\n const buffer = await tuiCombineSnapshots(\n [baselinePath, diffPath, comparisonPath].map((x) => `${ROOT_PATH}/${x}`),\n );\n\n writeFileSync(`${TEST_RESULTS_PATH}/${name}.diff.png`, buffer);\n }\n}\n\nfunction readJSON<T>(path: string): T | null {\n try {\n return JSON.parse(readFileSync(path, 'utf-8'));\n } catch {\n return null;\n }\n}\n","import {readdirSync, writeFileSync} from 'node:fs';\n\nimport {tuiCombineSnapshots} from './combine-snapshots';\n\nconst FAILED_SCREENSHOTS_PATH =\n process.env.FAILED_SCREENSHOTS_PATH ?? 'projects/demo-playwright/tests-results';\n\nconst DIFF_IMAGE_POSTFIX = process.env.DIFF_IMAGE_POSTFIX ?? '-diff.png';\n\nconst OUTPUT_DIFF_IMAGE_POSTFIX = process.env.OUTPUT_DIFF_IMAGE_POSTFIX ?? '.diff.png';\n\nconst RETRY_COUNT = Number(process.env.RETRY_COUNT ?? 2);\n\nconst REG_EXP = new RegExp(`retry${RETRY_COUNT}$|retry${RETRY_COUNT}/`);\n\nexport async function tuiCombinePlaywrightFailedScreenshots(\n rootPath = FAILED_SCREENSHOTS_PATH,\n): Promise<void> {\n const filesOrDirs = readdirSync(rootPath, {\n withFileTypes: true,\n }).filter((x) =>\n x.isDirectory()\n ? REG_EXP.exec(x.name) || REG_EXP.exec(x.parentPath)\n : REG_EXP.exec(x.parentPath),\n );\n\n for (const {name} of filesOrDirs.filter((x) => x.isDirectory())) {\n await tuiCombinePlaywrightFailedScreenshots(`${rootPath}/${name}`);\n }\n\n const imagesPaths: string[] = filesOrDirs\n .filter(\n (x) =>\n x.isFile() &&\n x.name.endsWith('.png') &&\n !x.name.endsWith(OUTPUT_DIFF_IMAGE_POSTFIX),\n )\n .map(({name}) => `${rootPath}/${name}`);\n const diffs = imagesPaths.filter((path) => path.endsWith(DIFF_IMAGE_POSTFIX));\n\n for (const diffImage of diffs) {\n const diffImageName = diffImage.split('/').pop()!.replace(DIFF_IMAGE_POSTFIX, '');\n const path = `${rootPath}/${diffImageName}${OUTPUT_DIFF_IMAGE_POSTFIX}`;\n const buffer = await tuiCombineSnapshots(\n imagesPaths.filter((path) =>\n path.startsWith(diffImage.replace(DIFF_IMAGE_POSTFIX, '')),\n ),\n );\n\n writeFileSync(path, buffer);\n\n console.info(`Write new diff: ${path}`);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/testing",
3
- "version": "4.47.0-canary.fa64a58",
3
+ "version": "4.47.0-canary.fb0273b",
4
4
  "description": "Utils functions for testing Taiga UI packages",
5
5
  "peerDependencies": {
6
6
  "@taiga-ui/cdk": "^4.47.0",