From 61f2157edfcc862fa43254f3af8a1f4e7ebf5916 Mon Sep 17 00:00:00 2001 From: sylvain senechal Date: Mon, 4 May 2026 15:16:58 +0200 Subject: [PATCH] generate cucumber dashboard Issue: ZENKO-5267 --- .github/actions/archive-artifacts/action.yaml | 15 +- .github/scripts/end2end/run-e2e-ctst.sh | 3 +- tests/functional/ctst/.gitignore | 3 +- .../ctst/reports/ctst-dashboard.html | 690 ++++++++++++++++++ 4 files changed, 708 insertions(+), 3 deletions(-) create mode 100644 tests/functional/ctst/reports/ctst-dashboard.html diff --git a/.github/actions/archive-artifacts/action.yaml b/.github/actions/archive-artifacts/action.yaml index aa1d9444d..83a0fd731 100644 --- a/.github/actions/archive-artifacts/action.yaml +++ b/.github/actions/archive-artifacts/action.yaml @@ -135,7 +135,10 @@ runs: # Archive test reports to artifacts set -exu mkdir -p /tmp/artifacts/data/${STAGE}/reports - cp -r ${{ inputs.junit-paths }} /tmp/artifacts/data/${STAGE}/reports/ 2>/dev/null || echo "No reports found" + cp -r ${{ inputs.junit-paths }} /tmp/artifacts/data/${STAGE}/reports/ 2>/dev/null || echo "No reports found" + cp "$(dirname "${{ inputs.junit-paths }}")/report.html" /tmp/artifacts/data/${STAGE}/reports/ 2>/dev/null || true + cp "$(dirname "${{ inputs.junit-paths }}")/report.ndjson" /tmp/artifacts/data/${STAGE}/reports/ 2>/dev/null || true + cp "$(dirname "${{ inputs.junit-paths }}")/ctst-dashboard.html" /tmp/artifacts/data/${STAGE}/reports/ 2>/dev/null || true env: STAGE: ${{ inputs.stage }} if: always() @@ -260,3 +263,13 @@ runs: password: ${{ inputs.password }} source: /tmp/artifacts if: always() + - name: Add dashboard link to job summary + shell: bash + run: | + BASE="${{ steps.setup-artifacts.outputs.link }}/data/${{ inputs.stage }}/reports" + echo "Cucumber custom dashboard: ${BASE}/ctst-dashboard.html" + echo "Cucumber official report: ${BASE}/report.html" + echo "### Test Reports" >> $GITHUB_STEP_SUMMARY + echo "- [Cucumber custom dashboard](${BASE}/ctst-dashboard.html)" >> $GITHUB_STEP_SUMMARY + echo "- [Cucumber official report](${BASE}/report.html)" >> $GITHUB_STEP_SUMMARY + if: always() && inputs.junit-paths != format('{0}/_reports/*.xml', github.workspace) diff --git a/.github/scripts/end2end/run-e2e-ctst.sh b/.github/scripts/end2end/run-e2e-ctst.sh index 097f8322b..0744fdd55 100755 --- a/.github/scripts/end2end/run-e2e-ctst.sh +++ b/.github/scripts/end2end/run-e2e-ctst.sh @@ -32,4 +32,5 @@ yarn cucumber-js \ --retry-tag-filter @Flaky \ --format pretty \ --format html:ctst/reports/report.html \ - --format junit:ctst/reports/report.xml + --format junit:ctst/reports/report.xml \ + --format message:ctst/reports/report.ndjson diff --git a/tests/functional/ctst/.gitignore b/tests/functional/ctst/.gitignore index 37f82c67a..2a1dc9ad3 100644 --- a/tests/functional/ctst/.gitignore +++ b/tests/functional/ctst/.gitignore @@ -1,5 +1,6 @@ node_modules *.log -reports/ +reports/* +!reports/ctst-dashboard.html sorbetctl zenko-drctl \ No newline at end of file diff --git a/tests/functional/ctst/reports/ctst-dashboard.html b/tests/functional/ctst/reports/ctst-dashboard.html new file mode 100644 index 000000000..f8fa7449e --- /dev/null +++ b/tests/functional/ctst/reports/ctst-dashboard.html @@ -0,0 +1,690 @@ + + + + + +CTST Test Dashboard + + + + + +
+
+ ⚠ All scenario durations are 0 — this may be a dry-run report. Timing charts will be empty. +
+
+
+
+

Execution timeline

+
+
+ +
+
+

Time by scenario total seconds per scenario across all runs

+
+ + + +
+
+
+
+
+
+

Slowest scenarios

+ +
+
+
+
+

+ Step duration breakdown + + + + + +

+
+
+
+
+ +
+ + + +