UNPKG

@testplane/storybook

Version:

Testplane plugin that enables runtime screenshot storybook tests autogeneration

54 lines 2.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.waitStorybookDataJson = void 0; const constants_1 = require("../../constants"); const logger_1 = __importDefault(require("../../logger")); const waitStorybookDataJson = async (storybookJsonUrls, waitStorybookJsonTimeout, fetch = globalThis.fetch) => { let isSuccess = false; let isError = false; const timeoutPromise = new Promise((_, reject) => { setTimeout(() => { if (!isSuccess) { isError = true; reject(new Error([ `Couldn't obtain stories JSON data in ${waitStorybookJsonTimeout}ms`, 'If you are using Storybook v6, please make sure you have set "features.buildStoriesJson" to "true" in your "./.storybook/main.js" file.', `If your storybook dev server can't start in ${waitStorybookJsonTimeout}ms, you can increase "waitStorybookJsonTimeout" value in the config`, ].join("\n"))); } }, waitStorybookJsonTimeout).unref(); }); const storybookReadyPromise = new Promise(resolve => { const waitForResource = (resourceUrl) => { const tryToFetch = () => { const signal = AbortSignal.timeout(constants_1.STORYBOOK_SERVER_REQUEST_TIMEOUT); fetch(resourceUrl, { signal }) .then(res => res.text()) .then(text => JSON.parse(text)) .then(data => { if (!isError && !isSuccess) { isSuccess = true; resolve(data); } }) .catch((err) => { if (!isError && !isSuccess) { setTimeout(tryToFetch, constants_1.STORYBOOK_SERVER_CHECK_INTERVAL); const errorMessage = err && err.cause && (err.cause.code || err.cause); if (errorMessage && errorMessage !== "ECONNREFUSED") { logger_1.default.warn("Fetching stories json failed:", errorMessage); } } }); }; tryToFetch(); }; storybookJsonUrls.forEach(waitForResource); }); return Promise.race([timeoutPromise, storybookReadyPromise]); }; exports.waitStorybookDataJson = waitStorybookDataJson; //# sourceMappingURL=wait-storybook-data-json.js.map