@buddy-works/unit-tests
Version:
Universal test results collector for Jest, Jasmine, Mocha, Cypress, Playwright, and Vitest that sends results to Buddy Works API in real-time
56 lines (55 loc) • 2.66 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const session_manager_1 = __importDefault(require("../../core/session-manager"));
const reporter_1 = __importDefault(require("../../reporters/mocha/reporter"));
const logger_1 = __importDefault(require("../../utils/logger"));
class BuddyCypressReporter extends reporter_1.default {
static async closeSession() {
await session_manager_1.default.closeSession();
}
async onStart() {
logger_1.default.debug('Cypress spec file started');
try {
const existingSessionId = session_manager_1.default.sessionId || process.env.BUDDY_SESSION_ID;
if (existingSessionId) {
logger_1.default.debug(`Reusing existing session: ${existingSessionId}`);
if (!session_manager_1.default.sessionId) {
session_manager_1.default.sessionId = existingSessionId;
}
}
else {
logger_1.default.debug('Creating new session for Cypress');
await session_manager_1.default.getOrCreateSession('cypress');
}
logger_1.default.debug('Session ready for Cypress spec file');
}
catch (error) {
logger_1.default.error('Error preparing session for Cypress spec file', error);
session_manager_1.default.markFrameworkError();
}
}
async onEnd() {
logger_1.default.debug('Cypress spec file completed');
if (this.pendingSubmissions.size > 0) {
logger_1.default.debug(`Waiting for ${String(this.pendingSubmissions.size)} pending test submissions to complete`);
const maxWaitTime = 10000;
const startTime = Date.now();
while (this.pendingSubmissions.size > 0 && Date.now() - startTime < maxWaitTime) {
await new Promise((resolve) => setTimeout(resolve, 100));
}
if (this.pendingSubmissions.size > 0) {
logger_1.default.warn(`Timed out waiting for ${String(this.pendingSubmissions.size)} test submissions`);
session_manager_1.default.markFrameworkError();
}
else {
logger_1.default.debug('All test submissions completed');
}
}
logger_1.default.debug('Cypress spec file completed, keeping session open for other spec files');
}
}
BuddyCypressReporter.displayName = 'BuddyCypressReporter';
exports.default = BuddyCypressReporter;
;