@empiricalrun/playwright-utils 0.52.0 → 0.53.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/CHANGELOG.md +12 -0
- package/README.md +0 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -1
- package/dist/inbox-client.d.ts.map +1 -1
- package/dist/inbox-client.js +8 -4
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/overlay-tests/cache.spec.js +2 -1
- package/dist/overlay-tests/click.spec.js +6 -3
- package/dist/reporter/attachment-cleanup-test-reporter.d.ts.map +1 -1
- package/dist/reporter/attachment-cleanup-test-reporter.js +2 -1
- package/dist/reporter/attachment-cleanup.d.ts.map +1 -1
- package/dist/reporter/attachment-cleanup.js +17 -8
- package/dist/reporter/blob-utils.d.ts.map +1 -1
- package/dist/reporter/blob-utils.js +4 -2
- package/dist/reporter/empirical-reporter.d.ts.map +1 -1
- package/dist/reporter/empirical-reporter.js +12 -6
- package/dist/reporter/harness.d.ts +9 -0
- package/dist/reporter/harness.d.ts.map +1 -1
- package/dist/reporter/harness.js +58 -5
- package/dist/reporter/ibr-utils.d.ts.map +1 -1
- package/dist/reporter/ibr-utils.js +4 -2
- package/dist/reporter/incremental-blob-reporter.d.ts.map +1 -1
- package/dist/reporter/incremental-blob-reporter.js +6 -3
- package/dist/reporter/lifecycle-events.d.ts.map +1 -1
- package/dist/reporter/lifecycle-events.js +2 -1
- package/dist/reporter/test-case-sync-reporter.d.ts +12 -0
- package/dist/reporter/test-case-sync-reporter.d.ts.map +1 -0
- package/dist/reporter/test-case-sync-reporter.js +28 -0
- package/dist/reporter/test-case-sync.d.ts +28 -0
- package/dist/reporter/test-case-sync.d.ts.map +1 -0
- package/dist/reporter/test-case-sync.js +134 -0
- package/dist/reporter/uploader.d.ts.map +1 -1
- package/dist/reporter/uploader.js +2 -1
- package/dist/reporter/util.d.ts.map +1 -1
- package/dist/reporter/util.js +12 -6
- package/dist/test/expect/visual.d.ts.map +1 -1
- package/dist/test/expect/visual.js +5 -3
- package/dist/test/expect/webhook.d.ts.map +1 -1
- package/dist/test/expect/webhook.js +2 -1
- package/dist/test/index.d.ts +0 -2
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +4 -7
- package/dist/test/scripts/pw-locator-patch/dismiss-overlays/utils.d.ts.map +1 -1
- package/dist/test/scripts/pw-locator-patch/dismiss-overlays/utils.js +2 -1
- package/dist/webhook.d.ts.map +1 -1
- package/dist/webhook.js +4 -2
- package/package.json +10 -4
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/postgres.d.ts +0 -22
- package/dist/postgres.d.ts.map +0 -1
- package/dist/postgres.js +0 -146
- package/docs/postgres.md +0 -78
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @empiricalrun/playwright-utils
|
|
2
2
|
|
|
3
|
+
## 0.53.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3848c83: chore: remove postgres related fixtures
|
|
8
|
+
|
|
9
|
+
## 0.52.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- b17c77d: feat: new custom reporter for dependency groups
|
|
14
|
+
|
|
3
15
|
## 0.52.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5D,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,KAAK,OAAO,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAE9C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,CAAC,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,EACV,IAAI,EACJ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAmB,GACpB,EAAE;QACD,IAAI,EAAE,IAAI,CAAC;QACX,WAAW,EAAE,CAAC,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IAQK,eAAe;IAIf,YAAY,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAkC/C,MAAM,CAAC,qBAAqB,CAC1B,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAC5B,KAAK,EAAE,WAAW,GACjB,MAAM,GAAG,SAAS;YAyBP,qBAAqB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAI5D,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,KAAK,OAAO,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAE9C,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,qBAAa,SAAS,CAAC,CAAC,SAAS,OAAO,CAAC,EAAE,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,CAAC,CAAC;IACf,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;gBACxD,EACV,IAAI,EACJ,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,OAAmB,GACpB,EAAE;QACD,IAAI,EAAE,IAAI,CAAC;QACX,WAAW,EAAE,CAAC,CAAC;QACf,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACpE,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB;IAQK,eAAe;IAIf,YAAY,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAkC/C,MAAM,CAAC,qBAAqB,CAC1B,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,EAC5B,KAAK,EAAE,WAAW,GACjB,MAAM,GAAG,SAAS;YAyBP,qBAAqB;YAuCrB,aAAa;IA6B3B,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;WAIxC,eAAe,CAC1B,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC;CAoB5B"}
|
package/dist/auth/index.js
CHANGED
|
@@ -86,8 +86,9 @@ class AuthStore {
|
|
|
86
86
|
const tmp = await page.context().newPage();
|
|
87
87
|
try {
|
|
88
88
|
for (const origin of authState.origins) {
|
|
89
|
-
if (!origin.localStorage?.length)
|
|
89
|
+
if (!origin.localStorage?.length) {
|
|
90
90
|
continue;
|
|
91
|
+
}
|
|
91
92
|
await tmp.goto(origin.origin, {
|
|
92
93
|
waitUntil: "domcontentloaded",
|
|
93
94
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox-client.d.ts","sourceRoot":"","sources":["../src/inbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,IAAI,GAAG;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAmBF,KAAK,kBAAkB,GAAG;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,kBAAkB;IAK9B,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;YASR,cAAc;
|
|
1
|
+
{"version":3,"file":"inbox-client.d.ts","sourceRoot":"","sources":["../src/inbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,KAAK,IAAI,GAAG;IACV,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAmBF,KAAK,kBAAkB,GAAG;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,kBAAkB;IAK9B,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;YASR,cAAc;IA0D5B,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,YAAY;CAgBrB"}
|
package/dist/inbox-client.js
CHANGED
|
@@ -23,12 +23,15 @@ class InboxClient {
|
|
|
23
23
|
to: address,
|
|
24
24
|
received_after: receivedAfter.toISOString(),
|
|
25
25
|
});
|
|
26
|
-
if (filter?.from)
|
|
26
|
+
if (filter?.from) {
|
|
27
27
|
params.set("from", filter.from);
|
|
28
|
-
|
|
28
|
+
}
|
|
29
|
+
if (filter?.subject) {
|
|
29
30
|
params.set("subject", filter.subject);
|
|
30
|
-
|
|
31
|
+
}
|
|
32
|
+
if (filter?.body) {
|
|
31
33
|
params.set("body", filter.body);
|
|
34
|
+
}
|
|
32
35
|
const path = `/api/messages?${params.toString()}`;
|
|
33
36
|
let result;
|
|
34
37
|
try {
|
|
@@ -90,8 +93,9 @@ class InboxClient {
|
|
|
90
93
|
const codes = [];
|
|
91
94
|
const codeRegex = /\b(\d{4,8})\b/g;
|
|
92
95
|
for (const content of [text, html]) {
|
|
93
|
-
if (!content)
|
|
96
|
+
if (!content) {
|
|
94
97
|
continue;
|
|
98
|
+
}
|
|
95
99
|
let match;
|
|
96
100
|
while ((match = codeRegex.exec(content)) !== null) {
|
|
97
101
|
if (!codes.includes(match[1])) {
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,cAAc,SAAS,CAAC;AACxB,cAAc,MAAM,CAAC;AACrB,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -28,5 +28,4 @@ Object.defineProperty(exports, "getProxyConfig", { enumerable: true, get: functi
|
|
|
28
28
|
__exportStar(require("./email"), exports);
|
|
29
29
|
__exportStar(require("./kv"), exports);
|
|
30
30
|
__exportStar(require("./playwright-extensions"), exports);
|
|
31
|
-
__exportStar(require("./postgres"), exports);
|
|
32
31
|
__exportStar(require("./webhook"), exports);
|
|
@@ -25,8 +25,9 @@ fixtures_1.test.beforeEach(async ({ page }) => {
|
|
|
25
25
|
});
|
|
26
26
|
fixtures_1.test.afterEach(() => {
|
|
27
27
|
// Delete overlay cache
|
|
28
|
-
if (fs_1.default.existsSync(cache_1.CACHE_FILE))
|
|
28
|
+
if (fs_1.default.existsSync(cache_1.CACHE_FILE)) {
|
|
29
29
|
fs_1.default.unlinkSync(cache_1.CACHE_FILE);
|
|
30
|
+
}
|
|
30
31
|
});
|
|
31
32
|
(0, fixtures_1.test)("overlay dismiss should not trigger recursively when executing from cache", async ({ page, server, }) => {
|
|
32
33
|
// Set up cache with a bad value: click on "Target" to dimiss the glass pane
|
|
@@ -12,22 +12,25 @@ fixtures_1.test.beforeEach(async ({ page }) => {
|
|
|
12
12
|
});
|
|
13
13
|
fixtures_1.test.afterAll(async () => {
|
|
14
14
|
// Delete overlay cache
|
|
15
|
-
if (fs_1.default.existsSync(cache_1.CACHE_FILE))
|
|
15
|
+
if (fs_1.default.existsSync(cache_1.CACHE_FILE)) {
|
|
16
16
|
fs_1.default.unlinkSync(cache_1.CACHE_FILE);
|
|
17
|
+
}
|
|
17
18
|
});
|
|
18
19
|
function getCacheDataWithDom({ dom }) {
|
|
19
20
|
const cacheData = JSON.parse(fs_1.default.readFileSync(cache_1.CACHE_FILE, "utf8"));
|
|
20
21
|
return cacheData.data.find(({ element }) => {
|
|
21
|
-
if (dom)
|
|
22
|
+
if (dom) {
|
|
22
23
|
return element.dom.includes(dom);
|
|
24
|
+
}
|
|
23
25
|
return false;
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
28
|
function getCacheDataWithTextContent({ textContent }) {
|
|
27
29
|
const cacheData = JSON.parse(fs_1.default.readFileSync(cache_1.CACHE_FILE, "utf8"));
|
|
28
30
|
return cacheData.data.find(({ element }) => {
|
|
29
|
-
if (textContent)
|
|
31
|
+
if (textContent) {
|
|
30
32
|
return element.textContent.includes(textContent);
|
|
33
|
+
}
|
|
31
34
|
return false;
|
|
32
35
|
});
|
|
33
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-cleanup-test-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/attachment-cleanup-test-reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment-cleanup-test-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/attachment-cleanup-test-reporter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AA0CnC,cAAM,6BAA8B,YAAW,QAAQ;IACrD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,mBAAmB,CAAgB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAkC;;IAYhD,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IA2BvC,KAAK,CAAC,OAAO,EAAE,UAAU;CA0BhC;AAED,eAAe,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-cleanup.d.ts","sourceRoot":"","sources":["../../src/reporter/attachment-cleanup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachment-cleanup.d.ts","sourceRoot":"","sources":["../../src/reporter/attachment-cleanup.ts"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAA+C;IACpE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,UAAU,GAAE,MAAmC;IAY3D;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;IAmBlD;;;OAGG;IACH,YAAY,CAAC,cAAc,EAAE,MAAM;IAWnC,OAAO,CAAC,MAAM;IA4Bd,OAAO,CAAC,cAAc;IAStB,UAAU;IAUV,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAE3C;IAED,IAAI,KAAK;;;;;;;;;MAWR;CACF"}
|
|
@@ -11,18 +11,21 @@ function getDefaultDiskLimitBytes() {
|
|
|
11
11
|
const raw = process.env.ATTACHMENT_CLEANUP_LIMIT_BYTES;
|
|
12
12
|
if (raw != null) {
|
|
13
13
|
const parsed = Number(raw);
|
|
14
|
-
if (Number.isSafeInteger(parsed) && parsed > 0)
|
|
14
|
+
if (Number.isSafeInteger(parsed) && parsed > 0) {
|
|
15
15
|
return parsed;
|
|
16
|
+
}
|
|
16
17
|
logger_1.logger.warn(`[AttachmentCleanup] Invalid ATTACHMENT_CLEANUP_LIMIT_BYTES=${raw}, using default`);
|
|
17
18
|
}
|
|
18
19
|
return 10 * 1024 * 1024 * 1024; // 10 GB
|
|
19
20
|
}
|
|
20
21
|
const DISK_LOG_INTERVAL_MS = 30_000;
|
|
21
22
|
function formatBytes(bytes) {
|
|
22
|
-
if (bytes < 1024 * 1024)
|
|
23
|
+
if (bytes < 1024 * 1024) {
|
|
23
24
|
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
24
|
-
|
|
25
|
+
}
|
|
26
|
+
if (bytes < 1024 * 1024 * 1024) {
|
|
25
27
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
28
|
+
}
|
|
26
29
|
return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
|
|
27
30
|
}
|
|
28
31
|
function getDiskUsage() {
|
|
@@ -39,8 +42,9 @@ function getDiskUsage() {
|
|
|
39
42
|
function getDiskBreakdown() {
|
|
40
43
|
try {
|
|
41
44
|
const output = (0, child_process_1.execSync)("du -sh test-results/.playwright-artifacts-* test-results/ blob-report/ playwright-report/ /tmp/playwright-artifacts-* 2>/dev/null | sort -rh", { encoding: "utf8", timeout: 8000, cwd: "/app/source-repo" }).trim();
|
|
42
|
-
if (!output)
|
|
45
|
+
if (!output) {
|
|
43
46
|
return "none";
|
|
47
|
+
}
|
|
44
48
|
const lines = output
|
|
45
49
|
.split("\n")
|
|
46
50
|
.map((l) => l.replace("test-results/", "").replace(/\t/g, " "));
|
|
@@ -89,7 +93,9 @@ class AttachmentCleanup {
|
|
|
89
93
|
_onEvict = null;
|
|
90
94
|
constructor(limitBytes = getDefaultDiskLimitBytes()) {
|
|
91
95
|
this._limitBytes = limitBytes;
|
|
92
|
-
|
|
96
|
+
// logger.debug(
|
|
97
|
+
// `[AttachmentCleanup] Initialized with limit: ${formatBytes(limitBytes)}`,
|
|
98
|
+
// );
|
|
93
99
|
this._diskLogTimer = setInterval(() => {
|
|
94
100
|
this._logDiskStatus();
|
|
95
101
|
}, DISK_LOG_INTERVAL_MS);
|
|
@@ -102,10 +108,12 @@ class AttachmentCleanup {
|
|
|
102
108
|
*/
|
|
103
109
|
register(attachment) {
|
|
104
110
|
try {
|
|
105
|
-
if (!attachment.path)
|
|
111
|
+
if (!attachment.path) {
|
|
106
112
|
return;
|
|
107
|
-
|
|
113
|
+
}
|
|
114
|
+
if (this._pending.has(attachment.path)) {
|
|
108
115
|
return;
|
|
116
|
+
}
|
|
109
117
|
const stat = fs_1.default.statSync(attachment.path);
|
|
110
118
|
const sizeBytes = stat.size;
|
|
111
119
|
this._pending.set(attachment.path, sizeBytes);
|
|
@@ -123,8 +131,9 @@ class AttachmentCleanup {
|
|
|
123
131
|
*/
|
|
124
132
|
markUploaded(attachmentPath) {
|
|
125
133
|
const size = this._pending.get(attachmentPath);
|
|
126
|
-
if (size === undefined)
|
|
134
|
+
if (size === undefined) {
|
|
127
135
|
return;
|
|
136
|
+
}
|
|
128
137
|
this._pending.delete(attachmentPath);
|
|
129
138
|
this._uploaded.push({ path: attachmentPath, size });
|
|
130
139
|
this._uploadedCount++;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blob-utils.d.ts","sourceRoot":"","sources":["../../src/reporter/blob-utils.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,aAAa,CAEf;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"blob-utils.d.ts","sourceRoot":"","sources":["../../src/reporter/blob-utils.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,aAAa,CAEf;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAwEjC"}
|
|
@@ -28,8 +28,9 @@ async function patchBlobZip(zipPath, attachmentUrlMap) {
|
|
|
28
28
|
retryCounters.set(testId, retryIndex + 1);
|
|
29
29
|
testRetryMap.set(event.params.result.id, retryIndex);
|
|
30
30
|
for (const attachment of event.params.result?.attachments ?? []) {
|
|
31
|
-
if (!attachment.path)
|
|
31
|
+
if (!attachment.path) {
|
|
32
32
|
continue;
|
|
33
|
+
}
|
|
33
34
|
const key = makeAttachmentKey(testId, retryIndex, attachment.name);
|
|
34
35
|
const url = attachmentUrlMap.get(key);
|
|
35
36
|
if (url) {
|
|
@@ -42,8 +43,9 @@ async function patchBlobZip(zipPath, attachmentUrlMap) {
|
|
|
42
43
|
const resultId = event.params.resultId;
|
|
43
44
|
const retryIndex = testRetryMap.get(resultId) ?? retryCounters.get(testId) ?? 0;
|
|
44
45
|
for (const attachment of event.params.attachments ?? []) {
|
|
45
|
-
if (!attachment.path)
|
|
46
|
+
if (!attachment.path) {
|
|
46
47
|
continue;
|
|
48
|
+
}
|
|
47
49
|
const key = makeAttachmentKey(testId, retryIndex, attachment.name);
|
|
48
50
|
const url = attachmentUrlMap.get(key);
|
|
49
51
|
if (url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAuBnC,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,oBAAoB,CAG1B;IACF,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,kBAAkB,CAA2B;;IAMrD,OAAO,CAAC,6BAA6B,
|
|
1
|
+
{"version":3,"file":"empirical-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/empirical-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,2BAA2B,CAAC;AAuBnC,cAAM,iBAAkB,YAAW,QAAQ;IACzC,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,oBAAoB,CAG1B;IACF,OAAO,CAAC,sBAAsB,CAAuB;IACrD,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,kBAAkB,CAA2B;;IAMrD,OAAO,CAAC,6BAA6B,CAuCnC;IAEF,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU;IAmItC,KAAK,CAAC,MAAM,EAAE,UAAU;IAuG9B,OAAO,CAAC,qBAAqB;YAkBf,gBAAgB;YAOhB,iBAAiB;CAqChC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -27,8 +27,9 @@ class EmpiricalReporter {
|
|
|
27
27
|
this._uploader = (0, uploader_1.getUploader)();
|
|
28
28
|
}
|
|
29
29
|
enqueTestAttachmentUploadTask = async (attachment) => {
|
|
30
|
-
if (!this._uploader)
|
|
30
|
+
if (!this._uploader) {
|
|
31
31
|
return;
|
|
32
|
+
}
|
|
32
33
|
if (!attachment.path) {
|
|
33
34
|
logger_1.logger.warn(`[Empirical Reporter] Skipping attachment without path: ${attachment.name}`);
|
|
34
35
|
return;
|
|
@@ -48,10 +49,12 @@ class EmpiricalReporter {
|
|
|
48
49
|
}
|
|
49
50
|
};
|
|
50
51
|
onTestEnd(test, result) {
|
|
51
|
-
if ((0, reporter_state_1.isFinalized)())
|
|
52
|
+
if ((0, reporter_state_1.isFinalized)()) {
|
|
52
53
|
return;
|
|
53
|
-
|
|
54
|
+
}
|
|
55
|
+
if (!this._uploader) {
|
|
54
56
|
return;
|
|
57
|
+
}
|
|
55
58
|
if (!process.env.TEST_RUN_GITHUB_ACTION_ID) {
|
|
56
59
|
logger_1.logger.debug("[Empirical Reporter] TEST_RUN_GITHUB_ACTION_ID is not set");
|
|
57
60
|
return;
|
|
@@ -154,10 +157,12 @@ class EmpiricalReporter {
|
|
|
154
157
|
}
|
|
155
158
|
}
|
|
156
159
|
async onEnd(result) {
|
|
157
|
-
if ((0, reporter_state_1.isFinalized)())
|
|
160
|
+
if ((0, reporter_state_1.isFinalized)()) {
|
|
158
161
|
return;
|
|
159
|
-
|
|
162
|
+
}
|
|
163
|
+
if (!this._uploader) {
|
|
160
164
|
return;
|
|
165
|
+
}
|
|
161
166
|
logger_1.logger.info(`[Empirical Reporter] Test run completed with status: ${result.status}`);
|
|
162
167
|
logger_1.logger.debug(`[Empirical Reporter] State: cwd=${this._currentWorkingDir}, hasSharding=${this._hasSharding}`);
|
|
163
168
|
const startTime = Date.now();
|
|
@@ -237,8 +242,9 @@ class EmpiricalReporter {
|
|
|
237
242
|
}
|
|
238
243
|
}
|
|
239
244
|
async _uploadBlobReport(blobDir) {
|
|
240
|
-
if (!this._uploader)
|
|
245
|
+
if (!this._uploader) {
|
|
241
246
|
return;
|
|
247
|
+
}
|
|
242
248
|
const uploadStartTime = Date.now();
|
|
243
249
|
try {
|
|
244
250
|
const files = await fs_1.default.promises.readdir(blobDir);
|
|
@@ -3,6 +3,10 @@ export interface IBRTestContext {
|
|
|
3
3
|
blobDir: string;
|
|
4
4
|
zipPath: string;
|
|
5
5
|
}
|
|
6
|
+
export interface TestCaseSyncTestContext {
|
|
7
|
+
tempDir: string;
|
|
8
|
+
outputPath: string;
|
|
9
|
+
}
|
|
6
10
|
export declare function sleep(ms: number): Promise<void>;
|
|
7
11
|
/**
|
|
8
12
|
* Sets up a temp directory with the IBR fixture files.
|
|
@@ -12,6 +16,10 @@ export declare function setupFixture(suite: string): Promise<{
|
|
|
12
16
|
ctx: IBRTestContext;
|
|
13
17
|
cleanup: () => Promise<void>;
|
|
14
18
|
}>;
|
|
19
|
+
export declare function setupTestCaseSyncFixture(suite: string): Promise<{
|
|
20
|
+
ctx: TestCaseSyncTestContext;
|
|
21
|
+
cleanup: () => Promise<void>;
|
|
22
|
+
}>;
|
|
15
23
|
/**
|
|
16
24
|
* Cleans blob artifacts from a previous run inside the same temp dir.
|
|
17
25
|
*/
|
|
@@ -31,6 +39,7 @@ export declare function runPlaywrightWithSigint(ctx: IBRTestContext, opts: {
|
|
|
31
39
|
workers: number;
|
|
32
40
|
waitFor: WaitFor;
|
|
33
41
|
}): Promise<RunResult>;
|
|
42
|
+
export declare function runPlaywrightList(ctx: TestCaseSyncTestContext): Promise<RunResult>;
|
|
34
43
|
export interface BlobEvent {
|
|
35
44
|
method: string;
|
|
36
45
|
params?: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/reporter/harness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../src/reporter/harness.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACzD,GAAG,EAAE,cAAc,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAaD;AAqCD,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,GAAG,EAAE,uBAAuB,CAAC;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAaD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,cAAc,CAAC;AAOtD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC1C,OAAO,CAAC,SAAS,CAAC,CAiDpB;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,SAAS,CAAC,CA6BpB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,SAAS,EAAE,CAAC,CAUtB"}
|
package/dist/reporter/harness.js
CHANGED
|
@@ -5,8 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.sleep = sleep;
|
|
7
7
|
exports.setupFixture = setupFixture;
|
|
8
|
+
exports.setupTestCaseSyncFixture = setupTestCaseSyncFixture;
|
|
8
9
|
exports.cleanBlobArtifacts = cleanBlobArtifacts;
|
|
9
10
|
exports.runPlaywrightWithSigint = runPlaywrightWithSigint;
|
|
11
|
+
exports.runPlaywrightList = runPlaywrightList;
|
|
10
12
|
exports.readBlobEvents = readBlobEvents;
|
|
11
13
|
const zip_1 = require("@empiricalrun/r2-uploader/zip");
|
|
12
14
|
const child_process_1 = require("child_process");
|
|
@@ -15,6 +17,7 @@ const os_1 = __importDefault(require("os"));
|
|
|
15
17
|
const path_1 = __importDefault(require("path"));
|
|
16
18
|
const TEST_DATA_DIR = path_1.default.resolve(__dirname, "../../test-data");
|
|
17
19
|
const REPORTER_PATH = path_1.default.resolve(__dirname, "../../dist/reporter/incremental-blob-reporter.js");
|
|
20
|
+
const TEST_CASE_SYNC_REPORTER_PATH = path_1.default.resolve(__dirname, "../../dist/reporter/test-case-sync-reporter.js");
|
|
18
21
|
const PLAYWRIGHT_BIN = path_1.default.resolve(__dirname, "../../node_modules/.bin/playwright");
|
|
19
22
|
async function sleep(ms) {
|
|
20
23
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -24,27 +27,52 @@ async function sleep(ms) {
|
|
|
24
27
|
* Returns a context object and a cleanup function.
|
|
25
28
|
*/
|
|
26
29
|
async function setupFixture(suite) {
|
|
30
|
+
const { tempDir, cleanup } = await setupReporterFixture({
|
|
31
|
+
suite,
|
|
32
|
+
reporterPath: REPORTER_PATH,
|
|
33
|
+
tempPrefix: "incr-blob-test-",
|
|
34
|
+
});
|
|
35
|
+
const blobDir = path_1.default.join(tempDir, "blob-report-incremental");
|
|
36
|
+
const zipPath = path_1.default.join(blobDir, "incremental-report-1.zip");
|
|
37
|
+
return {
|
|
38
|
+
ctx: { tempDir, blobDir, zipPath },
|
|
39
|
+
cleanup,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function setupReporterFixture({ suite, reporterPath, tempPrefix, }) {
|
|
27
43
|
const fixtureDir = path_1.default.join(TEST_DATA_DIR, suite);
|
|
28
|
-
const tempDir = await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(),
|
|
44
|
+
const tempDir = await fs_1.default.promises.mkdtemp(path_1.default.join(os_1.default.tmpdir(), tempPrefix));
|
|
29
45
|
const files = await fs_1.default.promises.readdir(fixtureDir);
|
|
30
46
|
for (const file of files) {
|
|
31
47
|
const src = path_1.default.join(fixtureDir, file);
|
|
32
48
|
const dest = path_1.default.join(tempDir, file);
|
|
33
49
|
if (file === "playwright.config.ts") {
|
|
34
50
|
const content = await fs_1.default.promises.readFile(src, "utf8");
|
|
35
|
-
await fs_1.default.promises.writeFile(dest, content.replace("__REPORTER_PATH__",
|
|
51
|
+
await fs_1.default.promises.writeFile(dest, content.replace("__REPORTER_PATH__", reporterPath));
|
|
36
52
|
}
|
|
37
53
|
else {
|
|
38
54
|
await fs_1.default.promises.copyFile(src, dest);
|
|
39
55
|
}
|
|
40
56
|
}
|
|
41
|
-
const blobDir = path_1.default.join(tempDir, "blob-report-incremental");
|
|
42
|
-
const zipPath = path_1.default.join(blobDir, "incremental-report-1.zip");
|
|
43
57
|
return {
|
|
44
|
-
|
|
58
|
+
tempDir,
|
|
45
59
|
cleanup: () => fs_1.default.promises.rm(tempDir, { recursive: true, force: true }),
|
|
46
60
|
};
|
|
47
61
|
}
|
|
62
|
+
async function setupTestCaseSyncFixture(suite) {
|
|
63
|
+
const { tempDir, cleanup } = await setupReporterFixture({
|
|
64
|
+
suite,
|
|
65
|
+
reporterPath: TEST_CASE_SYNC_REPORTER_PATH,
|
|
66
|
+
tempPrefix: "test-case-sync-",
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
ctx: {
|
|
70
|
+
tempDir,
|
|
71
|
+
outputPath: path_1.default.join(tempDir, "test-case-sync.json"),
|
|
72
|
+
},
|
|
73
|
+
cleanup,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
48
76
|
/**
|
|
49
77
|
* Cleans blob artifacts from a previous run inside the same temp dir.
|
|
50
78
|
*/
|
|
@@ -108,6 +136,31 @@ async function runPlaywrightWithSigint(ctx, opts) {
|
|
|
108
136
|
});
|
|
109
137
|
return { stdout, stderr };
|
|
110
138
|
}
|
|
139
|
+
async function runPlaywrightList(ctx) {
|
|
140
|
+
const child = (0, child_process_1.spawn)(PLAYWRIGHT_BIN, ["test", "--list"], {
|
|
141
|
+
cwd: ctx.tempDir,
|
|
142
|
+
env: {
|
|
143
|
+
...process.env,
|
|
144
|
+
EMPIRICAL_TEST_CASE_SYNC_OUTPUT: ctx.outputPath,
|
|
145
|
+
},
|
|
146
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
147
|
+
});
|
|
148
|
+
let stdout = "";
|
|
149
|
+
let stderr = "";
|
|
150
|
+
child.stdout?.on("data", (data) => {
|
|
151
|
+
stdout += data.toString();
|
|
152
|
+
});
|
|
153
|
+
child.stderr?.on("data", (data) => {
|
|
154
|
+
stderr += data.toString();
|
|
155
|
+
});
|
|
156
|
+
const exitCode = await new Promise((resolve) => {
|
|
157
|
+
child.on("close", (code) => resolve(code));
|
|
158
|
+
});
|
|
159
|
+
if (exitCode !== 0) {
|
|
160
|
+
throw new Error(`playwright test --list failed with exit code ${exitCode}\n${stderr}`);
|
|
161
|
+
}
|
|
162
|
+
return { stdout, stderr };
|
|
163
|
+
}
|
|
111
164
|
/**
|
|
112
165
|
* Reads `report.jsonl` from the blob zip and returns parsed events.
|
|
113
166
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibr-utils.d.ts","sourceRoot":"","sources":["../../src/reporter/ibr-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAO3E,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,CAAC;AAIF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAChD,WAAW,EAAE,CAOf;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1B,IAAI,EAAE,QAAQ,GACb,MAAM,CAOR;AAID,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAIF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC;CACvC,CAAC;AAIF,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAc3E;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAsBvE;AAMD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ibr-utils.d.ts","sourceRoot":"","sources":["../../src/reporter/ibr-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAO3E,MAAM,MAAM,WAAW,GAAG;IACxB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACvC,CAAC;AAIF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAChD,WAAW,EAAE,CAOf;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC1B,IAAI,EAAE,QAAQ,GACb,MAAM,CAOR;AAID,KAAK,YAAY,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAIF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE,CAAC;CACvC,CAAC;AAIF,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAc3E;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAsBvE;AAMD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAC5B,SAAS,GAAG,IAAI,CAqBlB;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAK7D;AAED,wBAAgB,aAAa,CAC3B,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxB;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAoBf"}
|
|
@@ -107,8 +107,9 @@ function filterSuiteByCompletedTests(suite, completedTestIds) {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
|
-
if (filteredEntries.length === 0)
|
|
110
|
+
if (filteredEntries.length === 0) {
|
|
111
111
|
return null;
|
|
112
|
+
}
|
|
112
113
|
return { ...suite, entries: filteredEntries };
|
|
113
114
|
}
|
|
114
115
|
function hasValidReport(reportLines) {
|
|
@@ -133,8 +134,9 @@ function toResourcePath(absolutePath) {
|
|
|
133
134
|
return `resources/${hash}${ext}`;
|
|
134
135
|
}
|
|
135
136
|
function embedAttachment(attachmentPath, resultId, stagingDir) {
|
|
136
|
-
if (!attachmentPath || !fs_1.default.existsSync(attachmentPath))
|
|
137
|
+
if (!attachmentPath || !fs_1.default.existsSync(attachmentPath)) {
|
|
137
138
|
return null;
|
|
139
|
+
}
|
|
138
140
|
if (!isLocalTesting()) {
|
|
139
141
|
return null;
|
|
140
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental-blob-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/incremental-blob-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAwBnC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,cAAM,uBAAwB,YAAW,QAAQ;IAC/C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,WAAW,CAIjB;IACF,OAAO,CAAC,UAAU,CAGhB;IACF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAGN;IACd,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAA8B;;IAetD,OAAO,CAAC,cAAc,CAA6B;IAEnD,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,qBAAqB;YASf,uBAAuB;IAqErC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,8BAA8B;
|
|
1
|
+
{"version":3,"file":"incremental-blob-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/incremental-blob-reporter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAwBnC;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,cAAM,uBAAwB,YAAW,QAAQ;IAC/C,OAAO,CAAC,kBAAkB,CAAyB;IACnD,OAAO,CAAC,WAAW,CAIjB;IACF,OAAO,CAAC,UAAU,CAGhB;IACF,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAGN;IACd,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,gBAAgB,CAA8B;;IAetD,OAAO,CAAC,cAAc,CAA6B;IAEnD,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,qBAAqB;YASf,uBAAuB;IAqErC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,KAAK,QAAQ,GAKnB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,aAAa,GAExB;IAED,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;YAUP,SAAS;IAwBvB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAgB/C,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAIrD,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IAyBnD,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAYrE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI;IAY7D,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB9C;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5D,aAAa,IAAI,OAAO;CAGzB;AAID,wBAAgB,0BAA0B,IAAI,uBAAuB,GAAG,IAAI,CAE3E;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,uBAAuB,GAChC,IAAI,CAEN;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -148,8 +148,9 @@ class IncrementalBlobReporter {
|
|
|
148
148
|
this._reportLines = this._reportLines.filter((line) => {
|
|
149
149
|
const parsed = JSON.parse(line);
|
|
150
150
|
const resultId = parsed.params?.resultId ?? parsed.params?.result?.id;
|
|
151
|
-
if (!resultId)
|
|
151
|
+
if (!resultId) {
|
|
152
152
|
return true;
|
|
153
|
+
}
|
|
153
154
|
return this._completedResultIds.has(resultId);
|
|
154
155
|
});
|
|
155
156
|
}
|
|
@@ -157,8 +158,9 @@ class IncrementalBlobReporter {
|
|
|
157
158
|
for (let i = 0; i < this._reportLines.length; i++) {
|
|
158
159
|
const line = this._reportLines[i];
|
|
159
160
|
const parsed = JSON.parse(line);
|
|
160
|
-
if (parsed.method !== "onProject")
|
|
161
|
+
if (parsed.method !== "onProject") {
|
|
161
162
|
continue;
|
|
163
|
+
}
|
|
162
164
|
const project = parsed.params.project;
|
|
163
165
|
const filteredSuites = project.suites
|
|
164
166
|
.map((suite) => (0, ibr_utils_1.filterSuiteByCompletedTests)(suite, this._completedTestIds))
|
|
@@ -181,8 +183,9 @@ class IncrementalBlobReporter {
|
|
|
181
183
|
fs_1.default.mkdirSync(this._outputDir, { recursive: true });
|
|
182
184
|
}
|
|
183
185
|
_appendEvent(event) {
|
|
184
|
-
if ((0, reporter_state_1.isFinalized)())
|
|
186
|
+
if ((0, reporter_state_1.isFinalized)()) {
|
|
185
187
|
return false;
|
|
188
|
+
}
|
|
186
189
|
this._reportLines.push(JSON.stringify(event));
|
|
187
190
|
return true;
|
|
188
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-events.d.ts","sourceRoot":"","sources":["../../src/reporter/lifecycle-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAgBnC,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"lifecycle-events.d.ts","sourceRoot":"","sources":["../../src/reporter/lifecycle-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAgBnC,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,MAAM,EACzB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,SAAS,EAAE,CAqDb;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,KAAK,EACnB,iBAAiB,EAAE,MAAM,GACxB,SAAS,CA+BX;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,SAAS,CAeX;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,UAAU,EAAE,MAAM,GACjB,SAAS,EAAE,CAqDb;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAC/B,SAAS,CAsBX;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,SAAS,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,GAC/B,SAAS,CAuBX;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAW7D"}
|
|
@@ -52,8 +52,9 @@ function buildOnBeginEvents(config, suite, currentWorkingDir, shardIndex, totalS
|
|
|
52
52
|
// 3. onProject for each project
|
|
53
53
|
for (const projectSuite of suite.suites) {
|
|
54
54
|
const project = config.projects.find((p) => p.name === projectSuite.title);
|
|
55
|
-
if (!project)
|
|
55
|
+
if (!project) {
|
|
56
56
|
continue;
|
|
57
|
+
}
|
|
57
58
|
events.push(buildOnProjectEvent(config, project, projectSuite, currentWorkingDir));
|
|
58
59
|
}
|
|
59
60
|
// 4. onBegin (empty params per Playwright format)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FullConfig, Reporter, Suite } from "@playwright/test/reporter";
|
|
2
|
+
interface TestCaseSyncReporterOptions {
|
|
3
|
+
outputFile?: string;
|
|
4
|
+
}
|
|
5
|
+
declare class TestCaseSyncReporter implements Reporter {
|
|
6
|
+
private readonly outputFile;
|
|
7
|
+
constructor(options?: TestCaseSyncReporterOptions);
|
|
8
|
+
printsToStdio(): boolean;
|
|
9
|
+
onBegin(config: FullConfig, suite: Suite): void;
|
|
10
|
+
}
|
|
11
|
+
export default TestCaseSyncReporter;
|
|
12
|
+
//# sourceMappingURL=test-case-sync-reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-case-sync-reporter.d.ts","sourceRoot":"","sources":["../../src/reporter/test-case-sync-reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAK7E,UAAU,2BAA2B;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,cAAM,oBAAqB,YAAW,QAAQ;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,OAAO,GAAE,2BAAgC;IAOrD,aAAa,IAAI,OAAO;IAIxB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CAOhD;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const test_case_sync_1 = require("./test-case-sync");
|
|
9
|
+
class TestCaseSyncReporter {
|
|
10
|
+
outputFile;
|
|
11
|
+
constructor(options = {}) {
|
|
12
|
+
this.outputFile =
|
|
13
|
+
options.outputFile ||
|
|
14
|
+
process.env.EMPIRICAL_TEST_CASE_SYNC_OUTPUT ||
|
|
15
|
+
"test-case-sync.json";
|
|
16
|
+
}
|
|
17
|
+
printsToStdio() {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
onBegin(config, suite) {
|
|
21
|
+
const manifest = (0, test_case_sync_1.collectTestCaseSyncManifest)(config, suite);
|
|
22
|
+
fs_1.default.mkdirSync(path_1.default.dirname(path_1.default.resolve(this.outputFile)), {
|
|
23
|
+
recursive: true,
|
|
24
|
+
});
|
|
25
|
+
fs_1.default.writeFileSync(this.outputFile, JSON.stringify(manifest, null, 2));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = TestCaseSyncReporter;
|