сhore(ci): improve e2e nightly report#2245
Open
universal-itengineer wants to merge 20 commits intomainfrom
Open
сhore(ci): improve e2e nightly report#2245universal-itengineer wants to merge 20 commits intomainfrom
universal-itengineer wants to merge 20 commits intomainfrom
Conversation
5497087 to
32d79af
Compare
danilrwx
requested changes
Apr 27, 2026
f8b5531 to
35d8060
Compare
35d8060 to
89e55d7
Compare
Signed-off-by: Nikita Korolev <[email protected]> move scripts to folder Signed-off-by: Nikita Korolev <[email protected]> use treds for send messages Signed-off-by: Nikita Korolev <[email protected]> fix Signed-off-by: Nikita Korolev <[email protected]> refactor js scripts report Signed-off-by: Nikita Korolev <[email protected]> upd scripts Signed-off-by: Nikita Korolev <[email protected]> refactor gen report Signed-off-by: Nikita Korolev <[email protected]> refactor flow and js report Signed-off-by: Nikita Korolev <[email protected]> fix report, add skipped to report Signed-off-by: Nikita Korolev <[email protected]> refactor and fix ci Signed-off-by: Nikita Korolev <[email protected]> change pickLatestMatchingFile to findSingleMatchingFile Signed-off-by: Nikita Korolev <[email protected]> add jsdoc Signed-off-by: Nikita Korolev <[email protected]> use json report instead of junit xml Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]> fix report when rerun test job, rm magic envs Signed-off-by: Nikita Korolev <[email protected]>
89e55d7 to
5abc8fe
Compare
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
diafour
reviewed
May 5, 2026
diafour
reviewed
May 5, 2026
diafour
reviewed
May 5, 2026
diafour
reviewed
May 5, 2026
diafour
reviewed
May 5, 2026
Signed-off-by: Nikita Korolev <[email protected]>
nevermarine
requested changes
May 5, 2026
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
2ad071f to
8097f16
Compare
Signed-off-by: Nikita Korolev <[email protected]>
nevermarine
requested changes
May 6, 2026
| * @returns {string} Extracted storage type, or an empty string when not parseable. | ||
| */ | ||
| function clusterKeyFromFilename(reportFile) { | ||
| const match = path.basename(reportFile).match(/^e2e_report_([^_.]+)/); |
Collaborator
There was a problem hiding this comment.
can we move this regex to a const? I see a lot of this e2e_report.*.json flying around in code, maybe we can get rid of these magic strings?
| * threadMessages: string[] | ||
| * }>} Rendered messages. | ||
| */ | ||
| async function renderMessengerReport({ core, reportsDir }) { |
Collaborator
There was a problem hiding this comment.
Why have an argument reportsDir if we call renderMessengerReport only once and it doesn't pass this parameter?
diafour
reviewed
May 7, 2026
Co-authored-by: Ivan Mikheykin <[email protected]> Signed-off-by: Nikita Korolev <[email protected]>
Co-authored-by: Maksim Fedotov <[email protected]> Signed-off-by: Nikita Korolev <[email protected]>
Signed-off-by: Nikita Korolev <[email protected]>
3ebd18a to
5cf1899
Compare
Signed-off-by: Nikita Korolev <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Refactor report aggregation from "nested E2E tests" results: use JS code to aggregate JSON reports from Ginkgo instead of shell-based XML reports aggregation. JS code is more maintainable and covered with unit tests.
The change introduces two public report entrypoints:
cluster-report.js, which builds one comprehensivee2e_report_<storage>.jsonartifact per cluster from workflow stage results and an optional raw Ginkgo JSON report;messenger-report.js, which reads the generated cluster artifacts, renders the consolidated nested-cluster E2E summary, and optionally publishes the main message and failed-tests thread to Loop.Supporting code is split by responsibility under
report/shared/andreport/messenger/so the workflow-facing entrypoints stay easy to find while the implementation remains modular.The reusable pipeline now passes report configuration explicitly to the cluster report builder, uploads final report artifacts with overwrite enabled for job reruns, and keeps the final report contract self-contained. The matrix workflow downloads those final artifacts and no longer relies on hardcoded fallback environment variables to reconstruct cluster state.
Additional unit tests, linting configuration, JSDoc annotations, and local report wrappers were added or updated for the new reporting flow.
Why do we need it, and what problem does it solve?
The previous implementation built E2E summaries with large inline shell scripts in workflows. That approach was hard to maintain, hard to test, and fragile when artifacts were missing or when failures happened before the E2E stage.
This change moves the reporting flow into tested JavaScript modules and uses a single final JSON report per cluster as the contract between workflow stages. That makes report generation easier to validate, easier to evolve, and less dependent on brittle shell parsing.
It also improves failure handling by preserving cluster setup status separately from E2E test status, distinguishing test failures from setup failures, supporting missing or invalid Ginkgo reports explicitly, and deriving failed-test metrics from the parsed Ginkgo JSON report.
As a result, nested-cluster E2E reporting becomes more reliable and maintainable for successful runs, failed runs, cancelled runs, and rerun test jobs.
What is the expected result?
e2e_report_<storage>.jsonartifact for each cluster.clusterStatus,testStatus, metrics, failed tests, branch metadata, and workflow run links.Checklist
Changelog entries