@azure/microsoft-playwright-testing
Version:
Package to integrate your Playwright test suite with Microsoft Playwright Testing service
107 lines • 5.11 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.CIInfoProvider = exports.CI_PROVIDERS = void 0;
var CI_PROVIDERS;
(function (CI_PROVIDERS) {
CI_PROVIDERS["GITHUB"] = "GITHUB";
CI_PROVIDERS["ADO"] = "ADO";
CI_PROVIDERS["DEFAULT"] = "DEFAULT";
// Add more CI providers as needed
})(CI_PROVIDERS || (exports.CI_PROVIDERS = CI_PROVIDERS = {}));
class CIInfoProvider {
static isGitHubActions() {
return process.env["GITHUB_ACTIONS"] === "true";
}
static getCIProvider() {
if (CIInfoProvider.isGitHubActions()) {
return CI_PROVIDERS.GITHUB;
}
else if (CIInfoProvider.isAzureDevOps()) {
return CI_PROVIDERS.ADO;
}
else {
return CI_PROVIDERS.DEFAULT;
}
}
static getCIInfo() {
var _a, _b, _c, _d, _e, _f, _g, _h;
const ciProvider = CIInfoProvider.getCIProvider();
if (ciProvider === CI_PROVIDERS.GITHUB) {
// Logic to get GitHub Actions CIInfo
return {
provider: CI_PROVIDERS.GITHUB,
repo: process.env["GITHUB_REPOSITORY_ID"] || null,
branch: this.getGHBranchName() || null,
author: process.env["GITHUB_ACTOR"] || null,
commitId: process.env["GITHUB_SHA"] || null,
revisionUrl: process.env["GITHUB_SERVER_URL"]
? `${process.env["GITHUB_SERVER_URL"]}/${process.env["GITHUB_REPOSITORY"]}/commit/${process.env["GITHUB_SHA"]}`
: null,
runId: process.env["GITHUB_RUN_ID"] || null,
runAttempt: process.env["GITHUB_RUN_ATTEMPT"]
? parseInt(process.env["GITHUB_RUN_ATTEMPT"], 10)
: null,
jobId: process.env["GITHUB_JOB"] || null,
};
}
else if (ciProvider === CI_PROVIDERS.ADO) {
// Logic to get Azure DevOps CIInfo
return {
provider: CI_PROVIDERS.ADO,
repo: process.env["BUILD_REPOSITORY_ID"] || null,
branch: process.env["BUILD_SOURCEBRANCH"] || null,
author: process.env["BUILD_REQUESTEDFOR"] || null,
commitId: process.env["BUILD_SOURCEVERSION"] || null,
revisionUrl: process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"]
? `${process.env["SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"]}${process.env["SYSTEM_TEAMPROJECT"]}/_git/${process.env["BUILD_REPOSITORY_NAME"]}/commit/${process.env["BUILD_SOURCEVERSION"]}`
: null,
runId: this.getADORunId() || null,
runAttempt: process.env["RELEASE_ATTEMPTNUMBER"]
? parseInt(process.env["RELEASE_ATTEMPTNUMBER"], 10)
: parseInt((_a = process.env["SYSTEM_JOBATTEMPT"]) !== null && _a !== void 0 ? _a : "", 10),
jobId: process.env["RELEASE_DEPLOYMENTID"]
? process.env["RELEASE_DEPLOYMENTID"]
: process.env["SYSTEM_JOBID"] || null,
};
}
else {
// Handle unsupported CI provider
return {
provider: CI_PROVIDERS.DEFAULT,
repo: (_b = process.env["REPO"]) !== null && _b !== void 0 ? _b : null,
branch: (_c = process.env["BRANCH"]) !== null && _c !== void 0 ? _c : null,
author: (_d = process.env["AUTHOR"]) !== null && _d !== void 0 ? _d : null,
commitId: (_e = process.env["COMMIT_ID"]) !== null && _e !== void 0 ? _e : null,
revisionUrl: (_f = process.env["REVISION_URL"]) !== null && _f !== void 0 ? _f : null,
runId: (_g = process.env["RUN_ID"]) !== null && _g !== void 0 ? _g : null,
runAttempt: process.env["RUN_ATTEMPT"] ? parseInt(process.env["RUN_ATTEMPT"], 10) : null,
jobId: (_h = process.env["JOB_ID"]) !== null && _h !== void 0 ? _h : null,
};
}
}
static isAzureDevOps() {
return (process.env["AZURE_HTTP_USER_AGENT"] !== undefined && process.env["TF_BUILD"] !== undefined);
}
static getADORunId() {
if (process.env["RELEASE_DEFINITIONID"] && process.env["RELEASE_DEPLOYMENTID"]) {
return `${process.env["RELEASE_DEFINITIONID"]}-${process.env["RELEASE_DEPLOYMENTID"]}`;
}
else if (process.env["SYSTEM_DEFINITIONID"] && process.env["SYSTEM_JOBID"]) {
return `${process.env["SYSTEM_DEFINITIONID"]}-${process.env["SYSTEM_JOBID"]}`;
}
return null;
}
static getGHBranchName() {
if (process.env["GITHUB_EVENT_NAME"] === "pull_request" ||
process.env["GITHUB_EVENT_NAME"] === "pull_request_target") {
return process.env["GITHUB_HEAD_REF"];
}
else {
return process.env["GITHUB_REF_NAME"];
}
}
}
exports.CIInfoProvider = CIInfoProvider;
//# sourceMappingURL=cIInfoProvider.js.map