@alphabin/trx
Version:
TRX reporter for Playwright tests with Azure Blob Storage upload support
128 lines (127 loc) • 4.16 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SystemCollector = void 0;
const os_1 = __importDefault(require("os"));
const exec_util_1 = require("../utils/exec.util");
const logger_util_1 = __importDefault(require("../utils/logger.util"));
/**
* Collector for system metadata
*/
class SystemCollector {
/**
* Collects system metadata
*/
async collect() {
try {
// Get hostname
const hostname = this.getHostname();
// Get CPU information
const cpu = await this.getCpuInfo();
// Get memory information
const memory = this.getMemoryInfo();
// Get OS info
const osInfo = `${process.platform} ${process.arch}`;
// Get Node.js version
const nodejs = process.version;
// Get Playwright version
let playwright = 'unknown';
try {
// Try to require from peer dep or dev dep
// eslint-disable-next-line @typescript-eslint/no-var-requires
playwright = require('@playwright/test/package.json').version;
}
catch {
// fallback
}
// Get browser info from env
const browser = process.env.BROWSER || process.env.PLAYWRIGHT_BROWSER || 'unknown';
const browserVersion = process.env.BROWSER_VERSION || 'unknown';
return {
hostname,
cpu,
memory,
os: osInfo,
nodejs,
playwright,
browser,
browserVersion
};
}
catch (error) {
logger_util_1.default.error('Failed to collect system metadata', error);
return {};
}
}
/**
* Gets the hostname
*/
getHostname() {
try {
return os_1.default.hostname() || 'unknown';
}
catch (error) {
logger_util_1.default.debug('Failed to get hostname', error);
return 'unknown';
}
}
/**
* Gets CPU information
*/
async getCpuInfo() {
try {
const cpus = os_1.default.cpus();
const count = cpus.length;
// Get CPU model from the first core
let model = count > 0 ? cpus[0].model : 'unknown';
// On Linux, try to get a more detailed CPU model using lscpu
if (process.platform === 'linux') {
try {
const lscpuOutput = await (0, exec_util_1.execCommand)('lscpu | grep "Model name" | cut -d ":" -f 2');
if (lscpuOutput) {
model = lscpuOutput.trim();
}
}
catch (error) {
// Fallback to the OS-provided model
logger_util_1.default.debug('Failed to get detailed CPU info from lscpu', error);
}
}
return {
count,
model
};
}
catch (error) {
logger_util_1.default.debug('Failed to get CPU info', error);
return {
count: 0,
model: 'unknown'
};
}
}
/**
* Gets memory information
*/
getMemoryInfo() {
try {
const totalMemoryBytes = os_1.default.totalmem();
// Convert to human-readable format (GB)
const totalMemoryGB = Math.round(totalMemoryBytes / (1024 * 1024 * 1024) * 10) / 10;
const total = `${totalMemoryGB}GB`;
return {
total
};
}
catch (error) {
logger_util_1.default.debug('Failed to get memory info', error);
return {
total: 'unknown'
};
}
}
}
exports.SystemCollector = SystemCollector;
exports.default = SystemCollector;