@flakiness/sdk 1.0.2 → 1.1.0-alpha.0
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/lib/browser.js
CHANGED
|
@@ -171,7 +171,7 @@ function computeTestId(test, suiteId) {
|
|
|
171
171
|
});
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
174
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.25.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/flakinessReport.js
|
|
175
175
|
var FlakinessReport;
|
|
176
176
|
((FlakinessReport22) => {
|
|
177
177
|
FlakinessReport22.CATEGORY_PLAYWRIGHT = "playwright";
|
|
@@ -179,7 +179,7 @@ var FlakinessReport;
|
|
|
179
179
|
FlakinessReport22.CATEGORY_JUNIT = "junit";
|
|
180
180
|
})(FlakinessReport || (FlakinessReport = {}));
|
|
181
181
|
|
|
182
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
182
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.25.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/schema.js
|
|
183
183
|
import z from "zod/v4";
|
|
184
184
|
var Schema;
|
|
185
185
|
((Schema2) => {
|
|
@@ -284,7 +284,9 @@ var Schema;
|
|
|
284
284
|
samples: z.array(Schema2.SystemUtilizationSample)
|
|
285
285
|
});
|
|
286
286
|
Schema2.UtilizationTelemetry = z.tuple([Schema2.DurationMS, z.number().min(0).max(100)]);
|
|
287
|
+
Schema2.FlakinessProject = z.string();
|
|
287
288
|
Schema2.Report = z.object({
|
|
289
|
+
flakinessProject: Schema2.FlakinessProject.optional(),
|
|
288
290
|
category: z.string().min(1).max(100),
|
|
289
291
|
commitId: Schema2.CommitId,
|
|
290
292
|
relatedCommitIds: z.array(Schema2.CommitId).optional(),
|
package/lib/index.js
CHANGED
|
@@ -775,7 +775,7 @@ function computeTestId(test, suiteId) {
|
|
|
775
775
|
});
|
|
776
776
|
}
|
|
777
777
|
|
|
778
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
778
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.25.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/flakinessReport.js
|
|
779
779
|
var FlakinessReport;
|
|
780
780
|
((FlakinessReport22) => {
|
|
781
781
|
FlakinessReport22.CATEGORY_PLAYWRIGHT = "playwright";
|
|
@@ -783,7 +783,7 @@ var FlakinessReport;
|
|
|
783
783
|
FlakinessReport22.CATEGORY_JUNIT = "junit";
|
|
784
784
|
})(FlakinessReport || (FlakinessReport = {}));
|
|
785
785
|
|
|
786
|
-
// node_modules/.pnpm/@flakiness+flakiness-report@0.
|
|
786
|
+
// node_modules/.pnpm/@flakiness+flakiness-report@0.25.0_zod@4.3.5/node_modules/@flakiness/flakiness-report/lib/schema.js
|
|
787
787
|
import z from "zod/v4";
|
|
788
788
|
var Schema;
|
|
789
789
|
((Schema2) => {
|
|
@@ -888,7 +888,9 @@ var Schema;
|
|
|
888
888
|
samples: z.array(Schema2.SystemUtilizationSample)
|
|
889
889
|
});
|
|
890
890
|
Schema2.UtilizationTelemetry = z.tuple([Schema2.DurationMS, z.number().min(0).max(100)]);
|
|
891
|
+
Schema2.FlakinessProject = z.string();
|
|
891
892
|
Schema2.Report = z.object({
|
|
893
|
+
flakinessProject: Schema2.FlakinessProject.optional(),
|
|
892
894
|
category: z.string().min(1).max(100),
|
|
893
895
|
commitId: Schema2.CommitId,
|
|
894
896
|
relatedCommitIds: z.array(Schema2.CommitId).optional(),
|
|
@@ -936,6 +938,39 @@ function stripAnsi(str) {
|
|
|
936
938
|
import assert2 from "assert";
|
|
937
939
|
import fs4 from "fs";
|
|
938
940
|
import { URL as URL2 } from "url";
|
|
941
|
+
|
|
942
|
+
// src/_githubOIDC.ts
|
|
943
|
+
var GithubOIDC = class _GithubOIDC {
|
|
944
|
+
constructor(_requestUrl, _requestToken) {
|
|
945
|
+
this._requestUrl = _requestUrl;
|
|
946
|
+
this._requestToken = _requestToken;
|
|
947
|
+
}
|
|
948
|
+
static initializeFromEnv() {
|
|
949
|
+
const requestUrl = process.env.ACTIONS_ID_TOKEN_REQUEST_URL;
|
|
950
|
+
const requestToken = process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;
|
|
951
|
+
return requestUrl && requestToken ? new _GithubOIDC(requestUrl, requestToken) : void 0;
|
|
952
|
+
}
|
|
953
|
+
async fetchToken(audience) {
|
|
954
|
+
const url = new URL(this._requestUrl);
|
|
955
|
+
url.searchParams.set("audience", audience);
|
|
956
|
+
const response = await fetch(url, {
|
|
957
|
+
headers: {
|
|
958
|
+
"Authorization": `bearer ${this._requestToken}`,
|
|
959
|
+
"Accept": "application/json; api-version=2.0"
|
|
960
|
+
}
|
|
961
|
+
});
|
|
962
|
+
if (!response.ok) {
|
|
963
|
+
const body = await response.text().catch(() => "");
|
|
964
|
+
throw new Error(`Failed to request GitHub OIDC token: ${response.status} ${body}`);
|
|
965
|
+
}
|
|
966
|
+
const json = await response.json();
|
|
967
|
+
if (!json.value)
|
|
968
|
+
throw new Error("GitHub OIDC token response did not contain a token value.");
|
|
969
|
+
return json.value;
|
|
970
|
+
}
|
|
971
|
+
};
|
|
972
|
+
|
|
973
|
+
// src/uploadReport.ts
|
|
939
974
|
async function createFileAttachment(contentType, filePath) {
|
|
940
975
|
return {
|
|
941
976
|
type: "file",
|
|
@@ -953,9 +988,28 @@ async function createDataAttachment(contentType, data) {
|
|
|
953
988
|
};
|
|
954
989
|
}
|
|
955
990
|
async function uploadReport(report, attachments, options) {
|
|
956
|
-
|
|
957
|
-
const flakinessEndpoint = options?.flakinessEndpoint ?? process.env["FLAKINESS_ENDPOINT"] ?? "https://flakiness.io";
|
|
991
|
+
let flakinessAccessToken = options?.flakinessAccessToken ?? process.env["FLAKINESS_ACCESS_TOKEN"];
|
|
958
992
|
const logger = options?.logger ?? console;
|
|
993
|
+
const githubOIDC = GithubOIDC.initializeFromEnv();
|
|
994
|
+
if (!flakinessAccessToken && githubOIDC) {
|
|
995
|
+
if (!report.flakinessProject) {
|
|
996
|
+
const reason = "`flakinessProject` is not configured to upload using Github OIDC.";
|
|
997
|
+
if (process.env.CI)
|
|
998
|
+
logger.warn(`[flakiness.io] \u26A0 Skipping upload: ${reason}`);
|
|
999
|
+
return { status: "skipped", reason };
|
|
1000
|
+
}
|
|
1001
|
+
try {
|
|
1002
|
+
flakinessAccessToken = await githubOIDC.fetchToken(report.flakinessProject);
|
|
1003
|
+
if (!flakinessAccessToken)
|
|
1004
|
+
throw new Error("token is empty");
|
|
1005
|
+
} catch (e) {
|
|
1006
|
+
const errorMessage = e.message || String(e);
|
|
1007
|
+
logger.error(`[flakiness.io] \u2715 Unexpected error while fetching Github OIDC token: ${errorMessage}`);
|
|
1008
|
+
if (options?.throwOnFailure)
|
|
1009
|
+
throw e;
|
|
1010
|
+
return { status: "failed", error: errorMessage };
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
959
1013
|
if (!flakinessAccessToken) {
|
|
960
1014
|
const reason = "No FLAKINESS_ACCESS_TOKEN found";
|
|
961
1015
|
if (process.env.CI)
|
|
@@ -963,6 +1017,7 @@ async function uploadReport(report, attachments, options) {
|
|
|
963
1017
|
return { status: "skipped", reason };
|
|
964
1018
|
}
|
|
965
1019
|
try {
|
|
1020
|
+
const flakinessEndpoint = options?.flakinessEndpoint ?? process.env["FLAKINESS_ENDPOINT"] ?? "https://flakiness.io";
|
|
966
1021
|
const upload = new ReportUpload(report, attachments, { flakinessAccessToken, flakinessEndpoint });
|
|
967
1022
|
const uploadResult = await upload.upload();
|
|
968
1023
|
if (!uploadResult.success) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flakiness/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.1.0-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"author": "Degu Labs, Inc",
|
|
26
26
|
"license": "MIT",
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@flakiness/flakiness-report": "^0.
|
|
28
|
+
"@flakiness/flakiness-report": "^0.25.0",
|
|
29
29
|
"@types/debug": "^4.1.12",
|
|
30
30
|
"@types/node": "^25.0.3",
|
|
31
31
|
"esbuild": "^0.27.0",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"typescript": "^5.6.2"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@flakiness/flakiness-report": "^0.
|
|
37
|
+
"@flakiness/flakiness-report": "^0.25.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"chalk": "^5.6.2",
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class GithubOIDC {
|
|
2
|
+
private _requestUrl;
|
|
3
|
+
private _requestToken;
|
|
4
|
+
static initializeFromEnv(): GithubOIDC | undefined;
|
|
5
|
+
constructor(_requestUrl: string, _requestToken: string);
|
|
6
|
+
fetchToken(audience: string): Promise<string>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=_githubOIDC.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_githubOIDC.d.ts","sourceRoot":"","sources":["../../src/_githubOIDC.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IAQnB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,aAAa;IARvB,MAAM,CAAC,iBAAiB,IAAI,UAAU,GAAC,SAAS;gBAOtC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM;IAKzB,UAAU,CAAC,QAAQ,EAAE,MAAM;CAsBlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uploadReport.d.ts","sourceRoot":"","sources":["../../src/uploadReport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"uploadReport.d.ts","sourceRoot":"","sources":["../../src/uploadReport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,iEAAiE;IACjE,IAAI,EAAE,QAAQ,CAAC;IACf,4EAA4E;IAC5E,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;IACjC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;IACjC,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;CACd,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOzG;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAOrG;AAED,KAAK,YAAY,GACb;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,UAAU,MAAM;IACd,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,eAAe,CAAC,MAAM,EAC9B,WAAW,EAAE,UAAU,EAAE,EACzB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAqDvB"}
|