playwright-testrail-sync
Version:
TestRail Integration for Playwright with comprehensive logging and error handling
77 lines • 2.54 kB
JavaScript
;
/**
* TestRail uploader
* Handles TestRail API upload operations
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.uploadResultsToTestRail = uploadResultsToTestRail;
exports.getTestResultForCase = getTestResultForCase;
/**
* Upload results to TestRail
*/
async function uploadResultsToTestRail(runId, testResults, options, apiClient, logger, state) {
if (!runId) {
logger.error("No TestRail run ID available for uploading results");
return;
}
try {
logger.verboseApiCall("TestRail Uploading results to TestRail", {
runId,
resultCount: testResults.length,
});
await apiClient.addResultsForCases(runId, testResults);
logger.verboseApiCall("TestRail Results uploaded successfully", {
runId,
resultCount: testResults.length,
url: `${options.testRail.host}/index.php?/runs/view/${runId}`,
});
}
catch (error) {
logger.verboseApiCall("Failed to upload results to TestRail", error);
const errorMessage = error.message ||
error.error ||
error.response?.data?.error ||
"Unknown error";
state.errors.push(`Failed to upload results: ${errorMessage}`);
}
}
/**
* Get test result ID for a specific case
*/
async function getTestResultForCase(caseId, runId, apiClient, logger) {
try {
logger.debug("Getting test result for case", {
caseId,
runId,
});
const results = await apiClient.get(`/get_results_for_case/${runId}/${caseId}`);
logger.debug("TestRail API response", { caseId, results });
// TestRail returns results in a nested structure: { results: [...] }
const actualResults = results?.results || results;
if (actualResults &&
Array.isArray(actualResults) &&
actualResults.length > 0) {
logger.debug("Found test result", {
caseId,
resultId: actualResults[0].id,
});
return actualResults[0];
}
else {
logger.verbose("No test results found for case", {
caseId,
results,
});
return null;
}
}
catch (error) {
logger.error("Failed to get test result for case", {
caseId,
runId,
error: error.message,
});
return null;
}
}
//# sourceMappingURL=testrail-uploader.js.map