UNPKG

testplane

Version:

Tests framework based on mocha and wdio

68 lines 3.48 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSourceCodeFile = exports.formatErrorSnippet = exports.formatFileNameHeader = exports.shouldNotAddCodeSnippet = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const code_frame_1 = require("@babel/code-frame"); const utils_1 = require("../browser/stacktrace/utils"); const constants_1 = require("./constants"); const assert_view_error_1 = require("../browser/commands/assert-view/errors/assert-view-error"); const base_state_error_1 = require("../browser/commands/assert-view/errors/base-state-error"); const fs_1 = require("../utils/fs"); const shouldNotAddCodeSnippet = (err) => { if (!err) { return true; } const isScreenshotError = [assert_view_error_1.AssertViewError, base_state_error_1.BaseStateError].some(errorClass => err instanceof errorClass); return isScreenshotError; }; exports.shouldNotAddCodeSnippet = shouldNotAddCodeSnippet; const trimAsyncPrefix = (fileName) => { const asyncPrefix = "async "; return fileName.startsWith(asyncPrefix) ? fileName.slice(asyncPrefix.length) : fileName; }; const formatFileNameHeader = (fileName, opts) => { const lineNumberWidth = String(opts.line - opts.linesAbove).length; const offsetWidth = String(opts.line + opts.linesBelow).length; const filePath = (0, fs_1.softFileURLToPath)(trimAsyncPrefix(fileName)); const relativeFileName = path_1.default.isAbsolute(filePath) ? path_1.default.relative(process.cwd(), filePath) : filePath; const lineNumberOffset = ".".repeat(lineNumberWidth).padStart(offsetWidth); const offset = ` ${lineNumberOffset} |`; const grayBegin = "\x1B[90m"; const grayEnd = "\x1B[39m"; return [offset + ` // ${relativeFileName}`, offset].map(line => grayBegin + line + grayEnd + "\n").join(""); }; exports.formatFileNameHeader = formatFileNameHeader; const formatErrorSnippet = (error, { file, source, location }) => { const linesAbove = constants_1.SNIPPET_LINES_ABOVE; const linesBelow = constants_1.SNIPPET_LINES_BELOW; const formattedFileNameHeader = (0, exports.formatFileNameHeader)(file, { linesAbove, linesBelow, line: location.line }); const snippet = formattedFileNameHeader + (0, code_frame_1.codeFrameColumns)(source, { start: location }, { linesAbove, linesBelow, message: (0, utils_1.getErrorTitle)(error), highlightCode: true, forceColor: true, }); return `\n${snippet}\n`; }; exports.formatErrorSnippet = formatErrorSnippet; const getSourceCodeFile = async (fileName) => { const filePath = (0, fs_1.softFileURLToPath)(trimAsyncPrefix(fileName)); if (path_1.default.isAbsolute(filePath)) { return fs_extra_1.default.readFile(filePath, "utf8"); } const response = await fetch(filePath); const responseText = await response.text(); if (responseText.includes(constants_1.JS_SOURCE_MAP_URL_COMMENT) || !response.headers.has("SourceMap")) { return responseText; } const sourceMapUrl = response.headers.get("SourceMap"); return responseText + "\n" + constants_1.JS_SOURCE_MAP_URL_COMMENT + sourceMapUrl; }; exports.getSourceCodeFile = getSourceCodeFile; //# sourceMappingURL=utils.js.map