UNPKG

@mmisty/cypress-allure-adapter

Version:

cypress allure adapter to generate allure results during tests execution (Allure TestOps compatible)

124 lines (123 loc) 4.9 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.existsSync = exports.fileExistsAsync = exports.removeFileAsync = exports.copyFileAsync = exports.readFileAsync = exports.appendFileAsync = exports.writeFileAsync = exports.mkdirAsync = void 0; const promises_1 = require("fs/promises"); const fs_1 = require("fs"); Object.defineProperty(exports, "existsSync", { enumerable: true, get: function () { return fs_1.existsSync; } }); const debug_1 = __importDefault(require("debug")); const common_1 = require("../common"); const debug = (0, debug_1.default)('cypress-allure:fs-async'); const log = (...args) => { debug(args); }; /** * Async filesystem operations to prevent blocking Cypress node events */ const mkdirAsync = (dir_1, ...args_1) => __awaiter(void 0, [dir_1, ...args_1], void 0, function* (dir, options = {}) { var _a; if ((0, fs_1.existsSync)(dir)) { return; } for (let i = 0; i < 5; i++) { try { yield (0, promises_1.mkdir)(dir, { recursive: (_a = options.recursive) !== null && _a !== void 0 ? _a : true }); return; } catch (err) { if (err.code === 'EEXIST') { return; } log(`Could not create dir (attempt ${i + 1}): ${err.message}`); // Small delay before retry yield new Promise(resolve => setTimeout(resolve, 50)); } } }); exports.mkdirAsync = mkdirAsync; const writeFileAsync = (filePath, content) => __awaiter(void 0, void 0, void 0, function* () { try { yield (0, promises_1.writeFile)(filePath, content); log(`Wrote file: ${filePath}`); } catch (err) { (0, common_1.logWithPackage)('error', `Failed to write file ${filePath}: ${err.message}`); throw err; } }); exports.writeFileAsync = writeFileAsync; const appendFileAsync = (filePath, content) => __awaiter(void 0, void 0, void 0, function* () { try { yield (0, promises_1.appendFile)(filePath, content); log(`Appended to file: ${filePath}`); } catch (err) { (0, common_1.logWithPackage)('error', `Failed to append to file ${filePath}: ${err.message}`); throw err; } }); exports.appendFileAsync = appendFileAsync; const readFileAsync = (filePath) => __awaiter(void 0, void 0, void 0, function* () { try { const content = yield (0, promises_1.readFile)(filePath); log(`Read file: ${filePath}`); return content; } catch (err) { (0, common_1.logWithPackage)('error', `Failed to read file ${filePath}: ${err.message}`); throw err; } }); exports.readFileAsync = readFileAsync; const copyFileAsync = (from_1, to_1, ...args_1) => __awaiter(void 0, [from_1, to_1, ...args_1], void 0, function* (from, to, removeSource = false) { log(`Copy file ${from} to ${to}`); try { yield (0, promises_1.copyFile)(from, to); log(`Copied ${from} to ${to}`); if (removeSource && from !== to) { try { yield (0, promises_1.rm)(from); } catch (rmErr) { // Ignore removal errors log(`Could not remove source file ${from}: ${rmErr.message}`); } } } catch (err) { (0, common_1.logWithPackage)('error', `Failed to copy ${from} to ${to}: ${err.message}`); throw err; } }); exports.copyFileAsync = copyFileAsync; const removeFileAsync = (filePath) => __awaiter(void 0, void 0, void 0, function* () { try { yield (0, promises_1.rm)(filePath, { recursive: true, force: true }); log(`Removed: ${filePath}`); } catch (err) { log(`Could not remove ${filePath}: ${err.message}`); } }); exports.removeFileAsync = removeFileAsync; const fileExistsAsync = (filePath) => __awaiter(void 0, void 0, void 0, function* () { try { yield (0, promises_1.stat)(filePath); return true; } catch (_a) { return false; } }); exports.fileExistsAsync = fileExistsAsync;