@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
JavaScript
;
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;