@testream/jest-reporter 0.5.2 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var e={580:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});const i=r(896);const o=r(928);class GenerateCtrfReport{constructor(e,t,r){var o,n,s,a,u,l,d,p,c,f,m,h,_,b,v,R,T,y,I;this.reporterName="jest-ctrf-json-reporter";this.defaultOutputFile="ctrf-report.json";this.defaultOutputDir="ctrf";this.filename=this.defaultOutputFile;this.reporterConfigOptions={outputFile:(o=t===null||t===void 0?void 0:t.outputFile)!==null&&o!==void 0?o:this.defaultOutputFile,outputDir:(n=t===null||t===void 0?void 0:t.outputDir)!==null&&n!==void 0?n:this.defaultOutputDir,minimal:(s=t===null||t===void 0?void 0:t.minimal)!==null&&s!==void 0?s:false,testType:(a=t.testType)!==null&&a!==void 0?a:"unit",appName:(u=t===null||t===void 0?void 0:t.appName)!==null&&u!==void 0?u:undefined,appVersion:(l=t===null||t===void 0?void 0:t.appVersion)!==null&&l!==void 0?l:undefined,osPlatform:(d=t===null||t===void 0?void 0:t.osPlatform)!==null&&d!==void 0?d:undefined,osRelease:(p=t===null||t===void 0?void 0:t.osRelease)!==null&&p!==void 0?p:undefined,osVersion:(c=t===null||t===void 0?void 0:t.osVersion)!==null&&c!==void 0?c:undefined,buildName:(f=t===null||t===void 0?void 0:t.buildName)!==null&&f!==void 0?f:undefined,buildNumber:(m=t===null||t===void 0?void 0:t.buildNumber)!==null&&m!==void 0?m:undefined,buildUrl:(h=t===null||t===void 0?void 0:t.buildUrl)!==null&&h!==void 0?h:undefined,repositoryName:(_=t===null||t===void 0?void 0:t.repositoryName)!==null&&_!==void 0?_:undefined,repositoryUrl:(b=t===null||t===void 0?void 0:t.repositoryUrl)!==null&&b!==void 0?b:undefined,branchName:(v=t===null||t===void 0?void 0:t.branchName)!==null&&v!==void 0?v:undefined,testEnvironment:(R=t===null||t===void 0?void 0:t.testEnvironment)!==null&&R!==void 0?R:undefined};this.ctrfReport={results:{tool:{name:"jest"},summary:{tests:0,passed:0,failed:0,pending:0,skipped:0,other:0,start:0,stop:0},tests:[]}};this.ctrfEnvironment={};if(((T=this.reporterConfigOptions)===null||T===void 0?void 0:T.outputFile)!==undefined)this.setFilename(this.reporterConfigOptions.outputFile);if(!i.existsSync((y=this.reporterConfigOptions.outputDir)!==null&&y!==void 0?y:this.defaultOutputDir)){i.mkdirSync((I=this.reporterConfigOptions.outputDir)!==null&&I!==void 0?I:this.defaultOutputDir,{recursive:true})}}onRunStart(){var e;this.ctrfReport.results.summary.start=Date.now();this.setEnvironmentDetails((e=this.reporterConfigOptions)!==null&&e!==void 0?e:{});if(this.hasEnvironmentDetails(this.ctrfEnvironment)){this.ctrfReport.results.environment=this.ctrfEnvironment}}onTestStart(){}onTestResult(e,t){this.updateCtrfTestResultsFromTestResult(t);this.updateTotalsFromTestResult(t)}onRunComplete(){this.ctrfReport.results.summary.stop=Date.now();this.writeReportToFile(this.ctrfReport)}setFilename(e){if(e.endsWith(".json")){this.filename=e}else{this.filename=`${e}.json`}}updateCtrfTestResultsFromTestResult(e){e.testResults.forEach((t=>{var r,i,o,n;const s={name:t.fullName,duration:(r=t.duration)!==null&&r!==void 0?r:0,status:this.mapStatus(t.status)};if(this.reporterConfigOptions.minimal===false){s.message=this.extractFailureDetails(t).message;s.trace=this.extractFailureDetails(t).trace;s.rawStatus=t.status;s.type=(i=this.reporterConfigOptions.testType)!==null&&i!==void 0?i:"unit";s.filePath=e.testFilePath;s.retries=((o=t.invocations)!==null&&o!==void 0?o:1)-1;s.flaky=t.status==="passed"&&((n=t.invocations)!==null&&n!==void 0?n:1)-1>0;s.suite=this.buildSuitePath(e,t)}this.ctrfReport.results.tests.push(s)}))}extractFailureDetails(e){var t;const r=/^\s{4}at/mu;const i=/\x1b\[\d+m/gmu;if(e.status==="failed"&&e.failureMessages!==undefined){const o={};if(e.failureMessages!==undefined){const t=e.failureMessages.join("\n");const n=t.match(r);o.message=t.slice(0,n===null||n===void 0?void 0:n.index).replace(i,"");o.trace=t.slice(n===null||n===void 0?void 0:n.index).split("\n").map((e=>e.trim())).join("\n")}if(e.failureDetails!==undefined){o.trace=(t=o.trace)===null||t===void 0?void 0:t.concat("\n\n",e.failureDetails.join("\n"))}return o}return{}}updateTotalsFromTestResult(e){e.testResults.forEach((e=>{const t=this.mapStatus(e.status);this.ctrfReport.results.summary[t]++;this.ctrfReport.results.summary.tests++}))}mapStatus(e){switch(e){case"passed":return"passed";case"failed":return"failed";case"skipped":return"skipped";case"pending":return"pending";case"todo":case"disabled":case"focused":default:return"other"}}setEnvironmentDetails(e){if(e.appName!==undefined){this.ctrfEnvironment.appName=e.appName}if(e.appVersion!==undefined){this.ctrfEnvironment.appVersion=e.appVersion}if(e.osPlatform!==undefined){this.ctrfEnvironment.osPlatform=e.osPlatform}if(e.osRelease!==undefined){this.ctrfEnvironment.osRelease=e.osRelease}if(e.osVersion!==undefined){this.ctrfEnvironment.osVersion=e.osVersion}if(e.buildName!==undefined){this.ctrfEnvironment.buildName=e.buildName}if(e.buildNumber!==undefined){this.ctrfEnvironment.buildNumber=e.buildNumber}if(e.buildUrl!==undefined){this.ctrfEnvironment.buildUrl=e.buildUrl}if(e.repositoryName!==undefined){this.ctrfEnvironment.repositoryName=e.repositoryName}if(e.repositoryUrl!==undefined){this.ctrfEnvironment.repositoryUrl=e.repositoryUrl}if(e.branchName!==undefined){this.ctrfEnvironment.branchName=e.branchName}if(e.testEnvironment!==undefined){this.ctrfEnvironment.testEnvironment=e.testEnvironment}}hasEnvironmentDetails(e){return Object.keys(e).length>0}buildSuitePath(e,t){var r;const i=(r=e.testFilePath.split("/").pop())!==null&&r!==void 0?r:"";const o=[i,...t.ancestorTitles];return o.join(" > ")}writeReportToFile(e){var t;const r=o.join((t=this.reporterConfigOptions.outputDir)!==null&&t!==void 0?t:this.defaultOutputDir,this.filename);const n=JSON.stringify(e,null,2);try{i.writeFileSync(r,n+"\n");console.log(`${this.reporterName}: successfully written ctrf json to %s/%s`,this.reporterConfigOptions.outputDir,this.filename)}catch(e){console.error(`Error writing ctrf json report:, ${String(e)}`)}}}t["default"]=GenerateCtrfReport},764:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=r(580);Object.defineProperty(t,"default",{enumerable:true,get:function(){return i.default}})},406:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.detectCIContext=detectCIContext;function detectCIContext(){const e=process.env;if(e.GITHUB_ACTIONS==="true"){return{branch:e.GITHUB_HEAD_REF||e.GITHUB_REF_NAME||e.GITHUB_REF?.replace("refs/heads/",""),commitSha:e.GITHUB_SHA,repositoryUrl:e.GITHUB_SERVER_URL&&e.GITHUB_REPOSITORY?`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}`:undefined,buildNumber:e.GITHUB_RUN_NUMBER,buildUrl:e.GITHUB_SERVER_URL&&e.GITHUB_REPOSITORY&&e.GITHUB_RUN_ID?`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}/actions/runs/${e.GITHUB_RUN_ID}`:undefined}}if(e.GITLAB_CI==="true"){return{branch:e.CI_COMMIT_BRANCH||e.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,commitSha:e.CI_COMMIT_SHA,repositoryUrl:e.CI_PROJECT_URL,buildNumber:e.CI_PIPELINE_IID,buildUrl:e.CI_PIPELINE_URL}}if(e.TF_BUILD==="True"){return{branch:e.BUILD_SOURCEBRANCH?.replace("refs/heads/",""),commitSha:e.BUILD_SOURCEVERSION,repositoryUrl:e.BUILD_REPOSITORY_URI,buildNumber:e.BUILD_BUILDNUMBER,buildUrl:e.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI&&e.SYSTEM_TEAMPROJECT&&e.BUILD_BUILDID?`${e.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${e.SYSTEM_TEAMPROJECT}/_build/results?buildId=${e.BUILD_BUILDID}`:undefined}}if(e.CIRCLECI==="true"){return{branch:e.CIRCLE_BRANCH,commitSha:e.CIRCLE_SHA1,repositoryUrl:e.CIRCLE_REPOSITORY_URL,buildNumber:e.CIRCLE_BUILD_NUM,buildUrl:e.CIRCLE_BUILD_URL}}if(e.JENKINS_URL){return{branch:e.GIT_BRANCH?.replace("origin/",""),commitSha:e.GIT_COMMIT,repositoryUrl:e.GIT_URL,buildNumber:e.BUILD_NUMBER,buildUrl:e.BUILD_URL}}if(e.BITBUCKET_BUILD_NUMBER){return{branch:e.BITBUCKET_BRANCH,commitSha:e.BITBUCKET_COMMIT,repositoryUrl:e.BITBUCKET_GIT_HTTP_ORIGIN,buildNumber:e.BITBUCKET_BUILD_NUMBER,buildUrl:e.BITBUCKET_REPO_FULL_NAME&&e.BITBUCKET_BUILD_NUMBER?`https://bitbucket.org/${e.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${e.BITBUCKET_BUILD_NUMBER}`:undefined}}return{}}},827:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},322:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){if(i===undefined)i=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,i,o)}:function(e,t,r,i){if(i===undefined)i=r;e[i]=t[r]});var o=this&&this.__exportStar||function(e,t){for(var r in e)if(r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r))i(t,e,r)};Object.defineProperty(t,"__esModule",{value:true});t.uploadArtifacts=t.uploadTestRun=t.detectCIContext=void 0;o(r(827),t);var n=r(406);Object.defineProperty(t,"detectCIContext",{enumerable:true,get:function(){return n.detectCIContext}});var s=r(969);Object.defineProperty(t,"uploadTestRun",{enumerable:true,get:function(){return s.uploadTestRun}});Object.defineProperty(t,"uploadArtifacts",{enumerable:true,get:function(){return s.uploadArtifacts}})},969:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.uploadTestRun=uploadTestRun;t.uploadArtifacts=uploadArtifacts;const i="https://test-manager-backend.fly.dev";async function uploadTestRun(e){const{report:t,apiKey:r,apiUrl:o=i}=e;if(!t.reportId){t.reportId=crypto.randomUUID()}const n={report:t,reportId:t.reportId,commitSha:e.commitSha,branch:e.branch,repositoryUrl:e.repositoryUrl,buildName:e.buildName,buildNumber:e.buildNumber,buildUrl:e.buildUrl,testEnvironment:e.testEnvironment,appName:e.appName,appVersion:e.appVersion,testType:e.testType};console.log("Uploading test results...");let s;try{s=await fetch(`${o}/api/v1/ingest`,{method:"POST",headers:{"X-API-KEY":r,"Content-Type":"application/json"},body:JSON.stringify(n)})}catch(e){const r=e instanceof Error?e.message:String(e);return{success:false,reportId:t.reportId,error:`Connection failed: ${r}`}}if(s.status===409){console.warn("Report already exists (workflow may have been re-run)");return{success:true,reportId:t.reportId,summary:{passed:t.results.summary.passed,failed:t.results.summary.failed,skipped:t.results.summary.skipped,total:t.results.summary.tests},alreadyExists:true}}if(!s.ok){const e=await s.text();return{success:false,reportId:t.reportId,error:`Upload failed (HTTP ${s.status}): ${e}`}}const a=await s.json();console.log(`✓ Test results uploaded successfully`);console.log(` Report ID: ${a.reportId}`);console.log(` Test Run ID: ${a.testRunId}`);console.log(` Tests: ${a.summary.passed}/${a.summary.total} passed`);return{success:true,reportId:a.reportId,testRunId:a.testRunId,summary:{passed:a.summary.passed,failed:a.summary.failed,skipped:a.summary.skipped,total:a.summary.total},testResults:a.testResults}}async function uploadArtifacts(e){const{reportId:t,apiKey:r,testResults:o,apiUrl:n=i}=e;let s=0;for(const e of o){for(const i of e.attachments){try{const o=await uploadSingleArtifact({testResultId:e.testResultId,attachment:i,reportId:t,apiKey:r,apiUrl:n});if(o)s++}catch(e){const t=e instanceof Error?e.message:String(e);console.error(`Failed to upload artifact ${i.name}: ${t}`)}}}if(s>0){console.log(`✓ Uploaded ${s} artifact(s)`)}return s}async function uploadSingleArtifact(e){const{testResultId:t,attachment:i,reportId:o,apiKey:n,apiUrl:s}=e;const a=await Promise.resolve().then(r.t.bind(r,943,23));const u=await Promise.resolve().then(r.t.bind(r,928,23));const l=u.resolve(i.path);try{await a.access(l)}catch{console.warn(`Artifact not found: ${u.basename(l)}`);return false}let d;try{d=await a.readFile(l)}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Failed to read file: ${t}`)}const p=new Blob([d],{type:i.contentType});const c=new FormData;c.append("testResultId",t);c.append("ctrfAttachmentName",i.name);c.append("file",p,u.basename(l));const f=`${s}/api/v1/artifacts/${o}`;const m=await fetch(f,{method:"POST",headers:{"X-API-KEY":n},body:c});if(!m.ok){const e=await m.text();throw new Error(`HTTP ${m.status}: ${e}`)}return true}},665:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){if(i===undefined)i=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,i,o)}:function(e,t,r,i){if(i===undefined)i=r;e[i]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var n=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),n=0;n<r.length;n++)if(r[n]!=="default")i(t,e,r[n]);o(t,e);return t}}();var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.TestreamJestReporter=void 0;const a=s(r(764));const u=n(r(943));const l=n(r(928));const d=r(322);const p=r(10);class TestreamJestReporter{constructor(e,t={apiKey:"",uploadEnabled:true},r={}){this.outputDir="ctrf";this.outputFile="ctrf-report.json";this.config={uploadEnabled:true,failOnUploadError:false,...t};const i={outputDir:this.outputDir,outputFile:this.outputFile};if(this.config.testEnvironment)i.testEnvironment=this.config.testEnvironment;if(this.config.appName)i.appName=this.config.appName;if(this.config.appVersion)i.appVersion=this.config.appVersion;if(this.config.buildName)i.buildName=this.config.buildName;if(this.config.buildNumber)i.buildNumber=this.config.buildNumber;if(this.config.buildUrl)i.buildUrl=this.config.buildUrl;if(this.config.testType)i.testType=this.config.testType;if(this.config.branch)i.branchName=this.config.branch;if(this.config.commitSha)i.commit=this.config.commitSha;this.ctrfReporter=new a.default(e,i,r)}onRunStart(e,t){if(this.ctrfReporter.onRunStart){return this.ctrfReporter.onRunStart()}}onTestStart(e){if(this.ctrfReporter.onTestStart){return this.ctrfReporter.onTestStart()}}onTestResult(e,t,r){if(this.ctrfReporter.onTestResult){return this.ctrfReporter.onTestResult(e,t)}}async onRunComplete(e,t){if(this.ctrfReporter.onRunComplete){await this.ctrfReporter.onRunComplete()}const r=await this.readCTRFReport();if(!r){console.error("Failed to read CTRF report, skipping upload");return}console.info(`CTRF report written to: ${l.join(this.outputDir,this.outputFile)}`);if(this.config.uploadEnabled&&this.config.apiKey){await this.uploadReport(r)}}async readCTRFReport(){const e=l.join(this.outputDir,this.outputFile);try{const t=await u.readFile(e,"utf-8");const r=JSON.parse(t);r.results.tool.name="jest";return r}catch(t){console.error(`Failed to read CTRF report from ${e}: ${t instanceof Error?t.message:String(t)}`);return null}}async uploadReport(e){const t=(0,d.detectCIContext)();const r=this.config.branch||t.branch;const i=this.config.commitSha||t.commitSha;const o=this.config.repositoryUrl||t.repositoryUrl;const n=this.config.buildNumber||t.buildNumber;const s=this.config.buildUrl||t.buildUrl;const a=await(0,p.uploadToApi)({report:e,apiKey:this.config.apiKey,branch:r,commitSha:i,repositoryUrl:o,buildName:this.config.buildName,buildNumber:n,buildUrl:s,testEnvironment:this.config.testEnvironment,appName:this.config.appName,appVersion:this.config.appVersion,testType:this.config.testType});if(!a.success&&this.config.failOnUploadError){throw new Error(`Upload failed: ${a.error}`)}}}t.TestreamJestReporter=TestreamJestReporter;t["default"]=TestreamJestReporter},10:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.detectGitContext=void 0;t.uploadToApi=uploadToApi;const i=r(322);async function uploadToApi(e){return(0,i.uploadTestRun)({report:e.report,apiKey:e.apiKey,commitSha:e.commitSha,branch:e.branch,repositoryUrl:e.repositoryUrl,buildName:e.buildName,buildNumber:e.buildNumber,buildUrl:e.buildUrl,testEnvironment:e.testEnvironment,appName:e.appName,appVersion:e.appVersion,testType:e.testType})}t.detectGitContext=i.detectCIContext},896:e=>{e.exports=require("fs")},943:e=>{e.exports=require("fs/promises")},928:e=>{e.exports=require("path")}};var t={};function __nccwpck_require__(r){var i=t[r];if(i!==undefined){return i.exports}var o=t[r]={exports:{}};var n=true;try{e[r].call(o.exports,o,o.exports,__nccwpck_require__);n=false}finally{if(n)delete t[r]}return o.exports}(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(r,i){if(i&1)r=this(r);if(i&8)return r;if(typeof r==="object"&&r){if(i&4&&r.__esModule)return r;if(i&16&&typeof r.then==="function")return r}var o=Object.create(null);__nccwpck_require__.r(o);var n={};t=t||[null,e({}),e([]),e(e)];for(var s=i&2&&r;typeof s=="object"&&!~t.indexOf(s);s=e(s)){Object.getOwnPropertyNames(s).forEach((e=>n[e]=()=>r[e]))}n["default"]=()=>r;__nccwpck_require__.d(o,n);return o}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r={};(()=>{var e=r;Object.defineProperty(e,"__esModule",{value:true});e.TestreamJestReporter=e["default"]=void 0;var t=__nccwpck_require__(665);Object.defineProperty(e,"default",{enumerable:true,get:function(){return t.TestreamJestReporter}});var i=__nccwpck_require__(665);Object.defineProperty(e,"TestreamJestReporter",{enumerable:true,get:function(){return i.TestreamJestReporter}})})();module.exports=r})();
|
|
1
|
+
(()=>{"use strict";var e={580:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});const i=r(896);const o=r(928);class GenerateCtrfReport{constructor(e,t,r){var o,n,s,a,u,l,d,p,c,f,m,h,_,b,v,R,y,T,I;this.reporterName="jest-ctrf-json-reporter";this.defaultOutputFile="ctrf-report.json";this.defaultOutputDir="ctrf";this.filename=this.defaultOutputFile;this.reporterConfigOptions={outputFile:(o=t===null||t===void 0?void 0:t.outputFile)!==null&&o!==void 0?o:this.defaultOutputFile,outputDir:(n=t===null||t===void 0?void 0:t.outputDir)!==null&&n!==void 0?n:this.defaultOutputDir,minimal:(s=t===null||t===void 0?void 0:t.minimal)!==null&&s!==void 0?s:false,testType:(a=t.testType)!==null&&a!==void 0?a:"unit",appName:(u=t===null||t===void 0?void 0:t.appName)!==null&&u!==void 0?u:undefined,appVersion:(l=t===null||t===void 0?void 0:t.appVersion)!==null&&l!==void 0?l:undefined,osPlatform:(d=t===null||t===void 0?void 0:t.osPlatform)!==null&&d!==void 0?d:undefined,osRelease:(p=t===null||t===void 0?void 0:t.osRelease)!==null&&p!==void 0?p:undefined,osVersion:(c=t===null||t===void 0?void 0:t.osVersion)!==null&&c!==void 0?c:undefined,buildName:(f=t===null||t===void 0?void 0:t.buildName)!==null&&f!==void 0?f:undefined,buildNumber:(m=t===null||t===void 0?void 0:t.buildNumber)!==null&&m!==void 0?m:undefined,buildUrl:(h=t===null||t===void 0?void 0:t.buildUrl)!==null&&h!==void 0?h:undefined,repositoryName:(_=t===null||t===void 0?void 0:t.repositoryName)!==null&&_!==void 0?_:undefined,repositoryUrl:(b=t===null||t===void 0?void 0:t.repositoryUrl)!==null&&b!==void 0?b:undefined,branchName:(v=t===null||t===void 0?void 0:t.branchName)!==null&&v!==void 0?v:undefined,testEnvironment:(R=t===null||t===void 0?void 0:t.testEnvironment)!==null&&R!==void 0?R:undefined};this.ctrfReport={results:{tool:{name:"jest"},summary:{tests:0,passed:0,failed:0,pending:0,skipped:0,other:0,start:0,stop:0},tests:[]}};this.ctrfEnvironment={};if(((y=this.reporterConfigOptions)===null||y===void 0?void 0:y.outputFile)!==undefined)this.setFilename(this.reporterConfigOptions.outputFile);if(!i.existsSync((T=this.reporterConfigOptions.outputDir)!==null&&T!==void 0?T:this.defaultOutputDir)){i.mkdirSync((I=this.reporterConfigOptions.outputDir)!==null&&I!==void 0?I:this.defaultOutputDir,{recursive:true})}}onRunStart(){var e;this.ctrfReport.results.summary.start=Date.now();this.setEnvironmentDetails((e=this.reporterConfigOptions)!==null&&e!==void 0?e:{});if(this.hasEnvironmentDetails(this.ctrfEnvironment)){this.ctrfReport.results.environment=this.ctrfEnvironment}}onTestStart(){}onTestResult(e,t){this.updateCtrfTestResultsFromTestResult(t);this.updateTotalsFromTestResult(t)}onRunComplete(){this.ctrfReport.results.summary.stop=Date.now();this.writeReportToFile(this.ctrfReport)}setFilename(e){if(e.endsWith(".json")){this.filename=e}else{this.filename=`${e}.json`}}updateCtrfTestResultsFromTestResult(e){e.testResults.forEach((t=>{var r,i,o,n;const s={name:t.fullName,duration:(r=t.duration)!==null&&r!==void 0?r:0,status:this.mapStatus(t.status)};if(this.reporterConfigOptions.minimal===false){s.message=this.extractFailureDetails(t).message;s.trace=this.extractFailureDetails(t).trace;s.rawStatus=t.status;s.type=(i=this.reporterConfigOptions.testType)!==null&&i!==void 0?i:"unit";s.filePath=e.testFilePath;s.retries=((o=t.invocations)!==null&&o!==void 0?o:1)-1;s.flaky=t.status==="passed"&&((n=t.invocations)!==null&&n!==void 0?n:1)-1>0;s.suite=this.buildSuitePath(e,t)}this.ctrfReport.results.tests.push(s)}))}extractFailureDetails(e){var t;const r=/^\s{4}at/mu;const i=/\x1b\[\d+m/gmu;if(e.status==="failed"&&e.failureMessages!==undefined){const o={};if(e.failureMessages!==undefined){const t=e.failureMessages.join("\n");const n=t.match(r);o.message=t.slice(0,n===null||n===void 0?void 0:n.index).replace(i,"");o.trace=t.slice(n===null||n===void 0?void 0:n.index).split("\n").map((e=>e.trim())).join("\n")}if(e.failureDetails!==undefined){o.trace=(t=o.trace)===null||t===void 0?void 0:t.concat("\n\n",e.failureDetails.join("\n"))}return o}return{}}updateTotalsFromTestResult(e){e.testResults.forEach((e=>{const t=this.mapStatus(e.status);this.ctrfReport.results.summary[t]++;this.ctrfReport.results.summary.tests++}))}mapStatus(e){switch(e){case"passed":return"passed";case"failed":return"failed";case"skipped":return"skipped";case"pending":return"pending";case"todo":case"disabled":case"focused":default:return"other"}}setEnvironmentDetails(e){if(e.appName!==undefined){this.ctrfEnvironment.appName=e.appName}if(e.appVersion!==undefined){this.ctrfEnvironment.appVersion=e.appVersion}if(e.osPlatform!==undefined){this.ctrfEnvironment.osPlatform=e.osPlatform}if(e.osRelease!==undefined){this.ctrfEnvironment.osRelease=e.osRelease}if(e.osVersion!==undefined){this.ctrfEnvironment.osVersion=e.osVersion}if(e.buildName!==undefined){this.ctrfEnvironment.buildName=e.buildName}if(e.buildNumber!==undefined){this.ctrfEnvironment.buildNumber=e.buildNumber}if(e.buildUrl!==undefined){this.ctrfEnvironment.buildUrl=e.buildUrl}if(e.repositoryName!==undefined){this.ctrfEnvironment.repositoryName=e.repositoryName}if(e.repositoryUrl!==undefined){this.ctrfEnvironment.repositoryUrl=e.repositoryUrl}if(e.branchName!==undefined){this.ctrfEnvironment.branchName=e.branchName}if(e.testEnvironment!==undefined){this.ctrfEnvironment.testEnvironment=e.testEnvironment}}hasEnvironmentDetails(e){return Object.keys(e).length>0}buildSuitePath(e,t){var r;const i=(r=e.testFilePath.split("/").pop())!==null&&r!==void 0?r:"";const o=[i,...t.ancestorTitles];return o.join(" > ")}writeReportToFile(e){var t;const r=o.join((t=this.reporterConfigOptions.outputDir)!==null&&t!==void 0?t:this.defaultOutputDir,this.filename);const n=JSON.stringify(e,null,2);try{i.writeFileSync(r,n+"\n");console.log(`${this.reporterName}: successfully written ctrf json to %s/%s`,this.reporterConfigOptions.outputDir,this.filename)}catch(e){console.error(`Error writing ctrf json report:, ${String(e)}`)}}}t["default"]=GenerateCtrfReport},764:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var i=r(580);Object.defineProperty(t,"default",{enumerable:true,get:function(){return i.default}})},406:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true});t.detectCIContext=detectCIContext;function detectCIContext(){const e=process.env;if(e.GITHUB_ACTIONS==="true"){return{branch:e.GITHUB_HEAD_REF||e.GITHUB_REF_NAME||e.GITHUB_REF?.replace("refs/heads/",""),commitSha:e.GITHUB_SHA,repositoryUrl:e.GITHUB_SERVER_URL&&e.GITHUB_REPOSITORY?`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}`:undefined,buildNumber:e.GITHUB_RUN_NUMBER,buildUrl:e.GITHUB_SERVER_URL&&e.GITHUB_REPOSITORY&&e.GITHUB_RUN_ID?`${e.GITHUB_SERVER_URL}/${e.GITHUB_REPOSITORY}/actions/runs/${e.GITHUB_RUN_ID}`:undefined}}if(e.GITLAB_CI==="true"){return{branch:e.CI_COMMIT_BRANCH||e.CI_MERGE_REQUEST_SOURCE_BRANCH_NAME,commitSha:e.CI_COMMIT_SHA,repositoryUrl:e.CI_PROJECT_URL,buildNumber:e.CI_PIPELINE_IID,buildUrl:e.CI_PIPELINE_URL}}if(e.TF_BUILD==="True"){return{branch:e.BUILD_SOURCEBRANCH?.replace("refs/heads/",""),commitSha:e.BUILD_SOURCEVERSION,repositoryUrl:e.BUILD_REPOSITORY_URI,buildNumber:e.BUILD_BUILDNUMBER,buildUrl:e.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI&&e.SYSTEM_TEAMPROJECT&&e.BUILD_BUILDID?`${e.SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${e.SYSTEM_TEAMPROJECT}/_build/results?buildId=${e.BUILD_BUILDID}`:undefined}}if(e.CIRCLECI==="true"){return{branch:e.CIRCLE_BRANCH,commitSha:e.CIRCLE_SHA1,repositoryUrl:e.CIRCLE_REPOSITORY_URL,buildNumber:e.CIRCLE_BUILD_NUM,buildUrl:e.CIRCLE_BUILD_URL}}if(e.JENKINS_URL){return{branch:e.GIT_BRANCH?.replace("origin/",""),commitSha:e.GIT_COMMIT,repositoryUrl:e.GIT_URL,buildNumber:e.BUILD_NUMBER,buildUrl:e.BUILD_URL}}if(e.BITBUCKET_BUILD_NUMBER){return{branch:e.BITBUCKET_BRANCH,commitSha:e.BITBUCKET_COMMIT,repositoryUrl:e.BITBUCKET_GIT_HTTP_ORIGIN,buildNumber:e.BITBUCKET_BUILD_NUMBER,buildUrl:e.BITBUCKET_REPO_FULL_NAME&&e.BITBUCKET_BUILD_NUMBER?`https://bitbucket.org/${e.BITBUCKET_REPO_FULL_NAME}/pipelines/results/${e.BITBUCKET_BUILD_NUMBER}`:undefined}}return{}}},827:(e,t)=>{Object.defineProperty(t,"__esModule",{value:true})},322:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){if(i===undefined)i=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,i,o)}:function(e,t,r,i){if(i===undefined)i=r;e[i]=t[r]});var o=this&&this.__exportStar||function(e,t){for(var r in e)if(r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r))i(t,e,r)};Object.defineProperty(t,"__esModule",{value:true});t.uploadArtifacts=t.uploadTestRun=t.detectCIContext=void 0;o(r(827),t);var n=r(406);Object.defineProperty(t,"detectCIContext",{enumerable:true,get:function(){return n.detectCIContext}});var s=r(969);Object.defineProperty(t,"uploadTestRun",{enumerable:true,get:function(){return s.uploadTestRun}});Object.defineProperty(t,"uploadArtifacts",{enumerable:true,get:function(){return s.uploadArtifacts}})},969:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.uploadTestRun=uploadTestRun;t.uploadArtifacts=uploadArtifacts;const i="https://test-manager-backend.fly.dev";async function uploadTestRun(e){const{report:t,apiKey:r,apiUrl:o=i}=e;if(!t.reportId){t.reportId=crypto.randomUUID()}const n={report:t,reportId:t.reportId,commitSha:e.commitSha,branch:e.branch,repositoryUrl:e.repositoryUrl,buildName:e.buildName,buildNumber:e.buildNumber,buildUrl:e.buildUrl,testEnvironment:e.testEnvironment,appName:e.appName,appVersion:e.appVersion,testType:e.testType};console.log("Uploading test results...");let s;try{s=await fetch(`${o}/api/v1/ingest`,{method:"POST",headers:{"X-API-KEY":r,"Content-Type":"application/json"},body:JSON.stringify(n)})}catch(e){const r=e instanceof Error?e.message:String(e);return{success:false,reportId:t.reportId,error:`Connection failed: ${r}`}}if(s.status===409){console.warn("Report already exists (workflow may have been re-run)");return{success:true,reportId:t.reportId,summary:{passed:t.results.summary.passed,failed:t.results.summary.failed,skipped:t.results.summary.skipped,total:t.results.summary.tests},alreadyExists:true}}if(!s.ok){const e=await s.text();return{success:false,reportId:t.reportId,error:`Upload failed (HTTP ${s.status}): ${e}`}}const a=await s.json();console.log(`✓ Test results uploaded successfully`);console.log(` Report ID: ${a.reportId}`);console.log(` Test Run ID: ${a.testRunId}`);console.log(` Tests: ${a.summary.passed}/${a.summary.total} passed`);return{success:true,reportId:a.reportId,testRunId:a.testRunId,summary:{passed:a.summary.passed,failed:a.summary.failed,skipped:a.summary.skipped,total:a.summary.total},testResults:a.testResults}}async function uploadArtifacts(e){const{reportId:t,apiKey:r,testResults:o,apiUrl:n=i}=e;let s=0;for(const e of o){for(const i of e.attachments){try{const o=await uploadSingleArtifact({testResultId:e.testResultId,attachment:i,reportId:t,apiKey:r,apiUrl:n});if(o)s++}catch(e){const t=e instanceof Error?e.message:String(e);console.error(`Failed to upload artifact ${i.name}: ${t}`)}}}if(s>0){console.log(`✓ Uploaded ${s} artifact(s)`)}return s}async function uploadSingleArtifact(e){const{testResultId:t,attachment:i,reportId:o,apiKey:n,apiUrl:s}=e;const a=await Promise.resolve().then(r.t.bind(r,943,23));const u=await Promise.resolve().then(r.t.bind(r,928,23));const l=u.resolve(i.path);try{await a.access(l)}catch{console.warn(`Artifact not found: ${u.basename(l)}`);return false}let d;try{d=await a.readFile(l)}catch(e){const t=e instanceof Error?e.message:String(e);throw new Error(`Failed to read file: ${t}`)}const p=new Blob([new Uint8Array(d)],{type:i.contentType});const c=new FormData;c.append("testResultId",t);c.append("ctrfAttachmentName",i.name);c.append("file",p,u.basename(l));const f=`${s}/api/v1/artifacts/${o}`;const m=await fetch(f,{method:"POST",headers:{"X-API-KEY":n},body:c});if(!m.ok){const e=await m.text();throw new Error(`HTTP ${m.status}: ${e}`)}return true}},665:function(e,t,r){var i=this&&this.__createBinding||(Object.create?function(e,t,r,i){if(i===undefined)i=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,i,o)}:function(e,t,r,i){if(i===undefined)i=r;e[i]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var n=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r))t[t.length]=r;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=ownKeys(e),n=0;n<r.length;n++)if(r[n]!=="default")i(t,e,r[n]);o(t,e);return t}}();var s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});t.TestreamJestReporter=void 0;const a=s(r(764));const u=n(r(943));const l=n(r(928));const d=r(322);const p=r(10);class TestreamJestReporter{constructor(e,t={apiKey:"",uploadEnabled:true},r={}){this.outputDir="ctrf";this.outputFile="ctrf-report.json";this.config={uploadEnabled:true,failOnUploadError:false,...t};const i={outputDir:this.outputDir,outputFile:this.outputFile};if(this.config.testEnvironment)i.testEnvironment=this.config.testEnvironment;if(this.config.appName)i.appName=this.config.appName;if(this.config.appVersion)i.appVersion=this.config.appVersion;if(this.config.buildName)i.buildName=this.config.buildName;if(this.config.buildNumber)i.buildNumber=this.config.buildNumber;if(this.config.buildUrl)i.buildUrl=this.config.buildUrl;if(this.config.testType)i.testType=this.config.testType;if(this.config.branch)i.branchName=this.config.branch;if(this.config.commitSha)i.commit=this.config.commitSha;this.ctrfReporter=new a.default(e,i,r)}onRunStart(e,t){if(this.ctrfReporter.onRunStart){return this.ctrfReporter.onRunStart()}}onTestStart(e){if(this.ctrfReporter.onTestStart){return this.ctrfReporter.onTestStart()}}onTestResult(e,t,r){if(this.ctrfReporter.onTestResult){return this.ctrfReporter.onTestResult(e,t)}}async onRunComplete(e,t){if(this.ctrfReporter.onRunComplete){await this.ctrfReporter.onRunComplete()}const r=await this.readCTRFReport();if(!r){console.error("Failed to read CTRF report, skipping upload");return}console.info(`CTRF report written to: ${l.join(this.outputDir,this.outputFile)}`);if(this.config.uploadEnabled&&this.config.apiKey){await this.uploadReport(r)}}async readCTRFReport(){const e=l.join(this.outputDir,this.outputFile);try{const t=await u.readFile(e,"utf-8");const r=JSON.parse(t);r.results.tool.name="jest";return r}catch(t){console.error(`Failed to read CTRF report from ${e}: ${t instanceof Error?t.message:String(t)}`);return null}}async uploadReport(e){const t=(0,d.detectCIContext)();const r=this.config.branch||t.branch;const i=this.config.commitSha||t.commitSha;const o=this.config.repositoryUrl||t.repositoryUrl;const n=this.config.buildNumber||t.buildNumber;const s=this.config.buildUrl||t.buildUrl;const a=await(0,p.uploadToApi)({report:e,apiKey:this.config.apiKey,branch:r,commitSha:i,repositoryUrl:o,buildName:this.config.buildName,buildNumber:n,buildUrl:s,testEnvironment:this.config.testEnvironment,appName:this.config.appName,appVersion:this.config.appVersion,testType:this.config.testType});if(!a.success&&this.config.failOnUploadError){throw new Error(`Upload failed: ${a.error}`)}}}t.TestreamJestReporter=TestreamJestReporter;t["default"]=TestreamJestReporter},10:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:true});t.detectGitContext=void 0;t.uploadToApi=uploadToApi;const i=r(322);async function uploadToApi(e){return(0,i.uploadTestRun)({report:e.report,apiKey:e.apiKey,commitSha:e.commitSha,branch:e.branch,repositoryUrl:e.repositoryUrl,buildName:e.buildName,buildNumber:e.buildNumber,buildUrl:e.buildUrl,testEnvironment:e.testEnvironment,appName:e.appName,appVersion:e.appVersion,testType:e.testType})}t.detectGitContext=i.detectCIContext},896:e=>{e.exports=require("fs")},943:e=>{e.exports=require("fs/promises")},928:e=>{e.exports=require("path")}};var t={};function __nccwpck_require__(r){var i=t[r];if(i!==undefined){return i.exports}var o=t[r]={exports:{}};var n=true;try{e[r].call(o.exports,o,o.exports,__nccwpck_require__);n=false}finally{if(n)delete t[r]}return o.exports}(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(r,i){if(i&1)r=this(r);if(i&8)return r;if(typeof r==="object"&&r){if(i&4&&r.__esModule)return r;if(i&16&&typeof r.then==="function")return r}var o=Object.create(null);__nccwpck_require__.r(o);var n={};t=t||[null,e({}),e([]),e(e)];for(var s=i&2&&r;typeof s=="object"&&!~t.indexOf(s);s=e(s)){Object.getOwnPropertyNames(s).forEach((e=>n[e]=()=>r[e]))}n["default"]=()=>r;__nccwpck_require__.d(o,n);return o}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r={};(()=>{var e=r;Object.defineProperty(e,"__esModule",{value:true});e.TestreamJestReporter=e["default"]=void 0;var t=__nccwpck_require__(665);Object.defineProperty(e,"default",{enumerable:true,get:function(){return t.TestreamJestReporter}});var i=__nccwpck_require__(665);Object.defineProperty(e,"TestreamJestReporter",{enumerable:true,get:function(){return i.TestreamJestReporter}})})();module.exports=r})();
|