@zohodesk/testinglibrary 0.0.85-n20-experimental → 0.0.87-n20-experimental
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/build/core/playwright/builtInFixtures/actorContext.js +13 -10
- package/build/core/playwright/builtInFixtures/page.js +0 -1
- package/build/core/playwright/constants/failureTagConstants.js +3 -5
- package/build/core/playwright/helpers/failureTagClassifier.js +67 -137
- package/build/core/playwright/helpers/logCollector.js +4 -1
- package/build/core/playwright/helpers/runtimeLogAnnotator.js +140 -0
- package/build/core/playwright/patterns/codePatterns.js +1 -1
- package/build/core/playwright/patterns/environmentPatterns.js +1 -1
- package/build/core/playwright/patterns/toolPatterns.js +1 -9
- package/build/core/playwright/setup/qc-custom-reporter.js +1 -2
- package/build/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js +249 -67
- package/build/test/core/playwright/helpers/__tests__/logCollector.test.js +25 -1
- package/npm-shrinkwrap.json +39 -39
- package/package.json +1 -1
- package/unit_reports/unit-report.html +1 -1
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zohodesk/testinglibrary",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.87-n20-experimental",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@zohodesk/testinglibrary",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.87-n20-experimental",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
@@ -3970,9 +3970,9 @@
|
|
|
3970
3970
|
}
|
|
3971
3971
|
},
|
|
3972
3972
|
"node_modules/@sinclair/typebox": {
|
|
3973
|
-
"version": "0.34.
|
|
3974
|
-
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.
|
|
3975
|
-
"integrity": "sha512-
|
|
3973
|
+
"version": "0.34.52",
|
|
3974
|
+
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.52.tgz",
|
|
3975
|
+
"integrity": "sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw==",
|
|
3976
3976
|
"license": "MIT"
|
|
3977
3977
|
},
|
|
3978
3978
|
"node_modules/@sinonjs/commons": {
|
|
@@ -4345,9 +4345,9 @@
|
|
|
4345
4345
|
"license": "MIT"
|
|
4346
4346
|
},
|
|
4347
4347
|
"node_modules/@ungap/structured-clone": {
|
|
4348
|
-
"version": "1.3.
|
|
4349
|
-
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.
|
|
4350
|
-
"integrity": "sha512-
|
|
4348
|
+
"version": "1.3.3",
|
|
4349
|
+
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz",
|
|
4350
|
+
"integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==",
|
|
4351
4351
|
"license": "ISC"
|
|
4352
4352
|
},
|
|
4353
4353
|
"node_modules/@unrs/resolver-binding-android-arm-eabi": {
|
|
@@ -5518,9 +5518,9 @@
|
|
|
5518
5518
|
}
|
|
5519
5519
|
},
|
|
5520
5520
|
"node_modules/baseline-browser-mapping": {
|
|
5521
|
-
"version": "2.10.
|
|
5522
|
-
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.
|
|
5523
|
-
"integrity": "sha512-
|
|
5521
|
+
"version": "2.10.43",
|
|
5522
|
+
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.43.tgz",
|
|
5523
|
+
"integrity": "sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ==",
|
|
5524
5524
|
"license": "Apache-2.0",
|
|
5525
5525
|
"bin": {
|
|
5526
5526
|
"baseline-browser-mapping": "dist/cli.cjs"
|
|
@@ -5569,9 +5569,9 @@
|
|
|
5569
5569
|
}
|
|
5570
5570
|
},
|
|
5571
5571
|
"node_modules/browserslist": {
|
|
5572
|
-
"version": "4.28.
|
|
5573
|
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.
|
|
5574
|
-
"integrity": "sha512-
|
|
5572
|
+
"version": "4.28.6",
|
|
5573
|
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.6.tgz",
|
|
5574
|
+
"integrity": "sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw==",
|
|
5575
5575
|
"funding": [
|
|
5576
5576
|
{
|
|
5577
5577
|
"type": "opencollective",
|
|
@@ -5589,9 +5589,9 @@
|
|
|
5589
5589
|
"license": "MIT",
|
|
5590
5590
|
"dependencies": {
|
|
5591
5591
|
"baseline-browser-mapping": "^2.10.42",
|
|
5592
|
-
"caniuse-lite": "^1.0.
|
|
5593
|
-
"electron-to-chromium": "^1.5.
|
|
5594
|
-
"node-releases": "^2.0.
|
|
5592
|
+
"caniuse-lite": "^1.0.30001803",
|
|
5593
|
+
"electron-to-chromium": "^1.5.389",
|
|
5594
|
+
"node-releases": "^2.0.51",
|
|
5595
5595
|
"update-browserslist-db": "^1.2.3"
|
|
5596
5596
|
},
|
|
5597
5597
|
"bin": {
|
|
@@ -5695,9 +5695,9 @@
|
|
|
5695
5695
|
}
|
|
5696
5696
|
},
|
|
5697
5697
|
"node_modules/caniuse-lite": {
|
|
5698
|
-
"version": "1.0.
|
|
5699
|
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
|
5700
|
-
"integrity": "sha512-
|
|
5698
|
+
"version": "1.0.30001805",
|
|
5699
|
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001805.tgz",
|
|
5700
|
+
"integrity": "sha512-52noaS3DubycKSXaU30TwPGIp+POyQSUVa5jBEq3vkRkY0kjyb3LQgvhU6WGyCcyXqVLWO0Cw0Q6BSdD0kUfVA==",
|
|
5701
5701
|
"funding": [
|
|
5702
5702
|
{
|
|
5703
5703
|
"type": "opencollective",
|
|
@@ -6996,9 +6996,9 @@
|
|
|
6996
6996
|
}
|
|
6997
6997
|
},
|
|
6998
6998
|
"node_modules/electron-to-chromium": {
|
|
6999
|
-
"version": "1.5.
|
|
7000
|
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.
|
|
7001
|
-
"integrity": "sha512-
|
|
6999
|
+
"version": "1.5.392",
|
|
7000
|
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.392.tgz",
|
|
7001
|
+
"integrity": "sha512-1yQq3VQCZRwsnYc67Oc+1fge6Lwtn0hzi6zmEVkB61Zx21kTbwJAW4dFLadl5Rc1tKhG/kSpYXnfiAhu0f0a1g==",
|
|
7002
7002
|
"license": "ISC"
|
|
7003
7003
|
},
|
|
7004
7004
|
"node_modules/emittery": {
|
|
@@ -7265,9 +7265,9 @@
|
|
|
7265
7265
|
}
|
|
7266
7266
|
},
|
|
7267
7267
|
"node_modules/eslint": {
|
|
7268
|
-
"version": "10.
|
|
7269
|
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.
|
|
7270
|
-
"integrity": "sha512-
|
|
7268
|
+
"version": "10.7.0",
|
|
7269
|
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.7.0.tgz",
|
|
7270
|
+
"integrity": "sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==",
|
|
7271
7271
|
"license": "MIT",
|
|
7272
7272
|
"peer": true,
|
|
7273
7273
|
"workspaces": [
|
|
@@ -12385,21 +12385,21 @@
|
|
|
12385
12385
|
}
|
|
12386
12386
|
},
|
|
12387
12387
|
"node_modules/msw/node_modules/tldts": {
|
|
12388
|
-
"version": "7.4.
|
|
12389
|
-
"resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.
|
|
12390
|
-
"integrity": "sha512-
|
|
12388
|
+
"version": "7.4.8",
|
|
12389
|
+
"resolved": "https://registry.npmjs.org/tldts/-/tldts-7.4.8.tgz",
|
|
12390
|
+
"integrity": "sha512-htwgN/8KRB3z3vnC0BOETVh2m499g5GmyTK9Wq5JBLX3FNz6tSBveAd+fQhzy9hkjif8vy2jwDMR1sGhLtZl2A==",
|
|
12391
12391
|
"license": "MIT",
|
|
12392
12392
|
"dependencies": {
|
|
12393
|
-
"tldts-core": "^7.4.
|
|
12393
|
+
"tldts-core": "^7.4.8"
|
|
12394
12394
|
},
|
|
12395
12395
|
"bin": {
|
|
12396
12396
|
"tldts": "bin/cli.js"
|
|
12397
12397
|
}
|
|
12398
12398
|
},
|
|
12399
12399
|
"node_modules/msw/node_modules/tldts-core": {
|
|
12400
|
-
"version": "7.4.
|
|
12401
|
-
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.
|
|
12402
|
-
"integrity": "sha512-
|
|
12400
|
+
"version": "7.4.8",
|
|
12401
|
+
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.4.8.tgz",
|
|
12402
|
+
"integrity": "sha512-c1P7u0EhACHj7lPy4MJm8iTFEU8+nB0LCtddH0fhP7noaVoXAqafMtOOeX+ulpuPBqnrRgRhw494RICT3mbhnw==",
|
|
12403
12403
|
"license": "MIT"
|
|
12404
12404
|
},
|
|
12405
12405
|
"node_modules/msw/node_modules/tough-cookie": {
|
|
@@ -12484,9 +12484,9 @@
|
|
|
12484
12484
|
"license": "MIT"
|
|
12485
12485
|
},
|
|
12486
12486
|
"node_modules/node-releases": {
|
|
12487
|
-
"version": "2.0.
|
|
12488
|
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.
|
|
12489
|
-
"integrity": "sha512-
|
|
12487
|
+
"version": "2.0.51",
|
|
12488
|
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz",
|
|
12489
|
+
"integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==",
|
|
12490
12490
|
"license": "MIT",
|
|
12491
12491
|
"engines": {
|
|
12492
12492
|
"node": ">=18"
|
|
@@ -14962,9 +14962,9 @@
|
|
|
14962
14962
|
}
|
|
14963
14963
|
},
|
|
14964
14964
|
"node_modules/ws": {
|
|
14965
|
-
"version": "8.21.
|
|
14966
|
-
"resolved": "https://registry.npmjs.org/ws/-/ws-8.21.
|
|
14967
|
-
"integrity": "sha512
|
|
14965
|
+
"version": "8.21.1",
|
|
14966
|
+
"resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz",
|
|
14967
|
+
"integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==",
|
|
14968
14968
|
"license": "MIT",
|
|
14969
14969
|
"engines": {
|
|
14970
14970
|
"node": ">=10.0.0"
|
package/package.json
CHANGED
|
@@ -274,4 +274,4 @@ header {
|
|
|
274
274
|
font-size: 1rem;
|
|
275
275
|
padding: 0 0.5rem;
|
|
276
276
|
}
|
|
277
|
-
</style></head><body><main class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><section id="metadata-container"><div id="timestamp">Started: 2026-07-05 14:02:44</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (3)</div><div class="summary-passed ">3 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (41)</div><div class="summary-passed ">41 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></section><details id="suite-1" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js</div><div class="suite-time">0.428s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">returns flaky and skips log analysis for flaky outcome</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment when a document abort is present</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment for a network/cert failure</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags code when an app undefined-property error is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not tag a non-document (xhr) abort as environment</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags case and code when stderr reports DATA_GENERATION_ERROR</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags tool for a known tool pattern in base64 stdout</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags case and code when stderr matches a case pattern</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not tag tool for benign stdout/stderr</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not throw for malformed stdio chunk entries</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">leaves untagged when no environment or code pattern is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records the matching pattern for environment failures</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records the matching pattern for code failures from events</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records flaky outcome without a regex pattern</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records tool pattern from stdio</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records case pattern from stdio and implies code</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">keeps runtime-log code match when case also matches</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">implies code from case when no runtime log is present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">builds a small JSON attachment when tags are present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">returns null when no tags are present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">replaces an existing metadata attachment</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">places suffixed failure tags first, then existing tags</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">emits the flaky category as FLAKY without a suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">does not duplicate an already-present failure tag</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">formats case and code failure tags with suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">regex safety</div><div class="test-title">resets stateful regex for tool pattern checks</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></details><details id="suite-2" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/logCollector.test.js</div><div class="suite-time">0.049s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops ORB-blocked request failures (message pattern)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops known noisy third-party URLs (url pattern)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops noisy 4xx responses by URL (e.g. getHamburgerMenu)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops CORS console errors (message pattern)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops baseline pageerrors (Access is denied / enable* not a function)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">keeps a real application pageerror</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">flushes captured events to a jsonl file</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">returns null from flushToFile when no events were captured</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">keeps a document-navigation abort (real environment signal)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div></div></details><details id="suite-3" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/runtimeLogReader.test.js</div><div class="suite-time">0.043s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEventsForResult</div><div class="test-title">reads project-side runtime log for a failing result</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEventsForResult</div><div class="test-title">skips malformed jsonl lines</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEventsForResult</div><div class="test-title">returns an empty array when the runtime log file is missing</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEventsForResult</div><div class="test-title">returns an empty array when logsDir is missing</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEvents</div><div class="test-title">reads events from a jsonl file path</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">readRuntimeLogEvents</div><div class="test-title">returns an empty array for a missing file</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div></div></details></main></body></html>
|
|
277
|
+
</style></head><body><main class="jesthtml-content"><header><h1 id="title">Unit Report</h1></header><section id="metadata-container"><div id="timestamp">Started: 2026-07-14 22:41:32</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (2)</div><div class="summary-passed ">2 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (44)</div><div class="summary-passed ">44 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></section><details id="suite-1" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/logCollector.test.js</div><div class="suite-time">0.362s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops ORB-blocked request failures (message pattern)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops known noisy third-party URLs (url pattern)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops noisy 4xx responses by URL (e.g. getHamburgerMenu)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops CORS console errors (message pattern)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">drops baseline pageerrors (Access is denied / enable* not a function)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">keeps a real application pageerror</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">flushes captured events to a jsonl file</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">flushes ENVIRONMENT pattern annotation for document aborts</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">returns null from flushToFile when no events were captured</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">LogCollector baseline-noise stripping</div><div class="test-title">keeps a document-navigation abort (real environment signal)</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div></div></details><details id="suite-2" class="suite-container" open=""><summary class="suite-info"><div class="suite-path">/Users/muthu-19817/git/testing-framework/src/test/core/playwright/helpers/__tests__/failureTagClassifier.test.js</div><div class="suite-time">0.165s</div></summary><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">leaves retry-passed (flaky) outcomes untagged</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment when a document abort is present</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags environment for a network/cert failure</div><div class="test-status">passed</div><div class="test-duration">0.002s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags code when an app undefined-property error is present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">defaults to code (not environment) for a non-document xhr abort</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags case when stderr reports DATA_GENERATION_ERROR</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags tool for a known tool pattern in base64 stdout</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">tags case when stderr matches a case pattern</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">emits only the highest-priority tag (CODE) when CODE and ENVIRONMENT both match</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">defaults to code (not tool) for benign stdout/stderr</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">does not throw for malformed stdio chunk entries</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">defaults to code when a failure matches no pattern</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureTags</div><div class="test-title">leaves a passing spec untagged (no default code)</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records the matching pattern for environment failures</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records the matching pattern for code failures from events</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">defaults to code with no matches when events carry no recognised pattern</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records tool pattern from stdio</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records case pattern from stdio without implying code</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">resolves to CODE when a runtime-log code match outranks a stdio case match</div><div class="test-status">passed</div><div class="test-duration">0.003s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">keeps case as the tag and does not add code when no runtime log is present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">records every CODE pattern hit from the runtime log</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">keeps only winning CODE matches when CODE and ENVIRONMENT both match</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">dedupes identical winning-category matches</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">classifyFailureDetails</div><div class="test-title">dedupes annotated dual-match JSONL lines before classifying from disk</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">annotateRuntimeLogEvents</div><div class="test-title">adds pattern CODE on matching events and leaves unmatched events unchanged</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">annotateRuntimeLogEvents</div><div class="test-title">emits one line per matched category when an event hits CODE and ENVIRONMENT</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">builds a small JSON attachment when tags are present</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">returns null when no tags are present</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">failure tag metadata attachment</div><div class="test-title">replaces an existing metadata attachment</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">places suffixed failure tags first, then existing tags</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">formats all failure tags with suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">does not duplicate an already-present failure tag</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">mergeFailureTags</div><div class="test-title">formats case and code failure tags with suffix</div><div class="test-status">passed</div><div class="test-duration"> </div></div></div><div class="test-result passed"><div class="test-info"><div class="test-suitename">regex safety</div><div class="test-title">resets stateful regex for tool pattern checks</div><div class="test-status">passed</div><div class="test-duration">0.001s</div></div></div></div></details></main></body></html>
|