diff --git a/.github/actions/merge-playwright-json-reports/action.yml b/.github/actions/merge-playwright-json-reports/action.yml new file mode 100644 index 00000000000..9a9f5407a71 --- /dev/null +++ b/.github/actions/merge-playwright-json-reports/action.yml @@ -0,0 +1,37 @@ +name: 'Merge Playwright Reports' +description: 'Merge Playwright reports from different browsers and shards' +inputs: + working-directory: + description: 'Package directory where Playwright was run (e.g., packages/atomic)' + required: true + artifact-pattern: + description: Glob-like pattern used to match the names of downloaded Playwright blob report artifacts (e.g., blob-report-shard-*)' + required: true + upload-artifact-name: + description: 'Name for the uploaded artifact' + required: true + output-folder: + description: 'Folder where final merged report will be generated' + required: false + default: '' + +runs: + using: composite + steps: + - name: Download blob reports from GitHub Actions Artifacts + uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 + with: + path: ${{ inputs.working-directory }}/all-blob-reports + pattern: ${{ inputs.artifact-pattern }} + merge-multiple: true + - name: Merge into JSON Report + run: npx playwright merge-reports --reporter json ./all-blob-reports > merged-json-report.json + working-directory: ${{ inputs.working-directory }} + shell: bash + + - name: Upload JSON report + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 + with: + name: ${{ inputs.upload-artifact-name }} + path: ${{ inputs.working-directory }}/merged-json-report.json + retention-days: 5 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e61997462e6..7dbe8cef6ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -605,7 +605,6 @@ jobs: e2e-quantic: name: "Run Quantic E2E tests" needs: affected - if: contains(needs.affected.outputs.projects, '@coveo/quantic') uses: ./.github/workflows/e2e-quantic.yml secrets: SFDX_AUTH_CLIENT_ID: ${{ secrets.SFDX_AUTH_CLIENT_ID }} diff --git a/.github/workflows/e2e-quantic.yml b/.github/workflows/e2e-quantic.yml index fa6eb67a823..2e80f3ca350 100644 --- a/.github/workflows/e2e-quantic.yml +++ b/.github/workflows/e2e-quantic.yml @@ -73,12 +73,51 @@ jobs: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 - uses: ./.github/actions/setup - - name: Merge Playwright reports + - name: Merge Playwright HTML reports uses: ./.github/actions/merge-playwright-reports with: working-directory: packages/quantic artifact-pattern: quantic-blob-report-* upload-artifact-name: quantic-playwright-report + - name: Merge Playwright JSON reports + uses: ./.github/actions/merge-playwright-json-reports + with: + working-directory: packages/quantic + artifact-pattern: quantic-blob-report-* + upload-artifact-name: quantic-playwright-report-json + Publish-Dashboard: + name: Create playwright-dashboard page + if: (success() || failure()) + # if: (success() || failure()) && github.event_name == 'schedule' && github.ref == 'refs/heads/master' + needs: [merge-quantic-playwright-reports] + runs-on: ubuntu-latest + steps: + - name: Harden the runner (Audit all outbound calls) + uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1 + with: + egress-policy: audit + + - name: Download artifact + uses: actions/download-artifact@v4 + + - name: Publish google chart + uses: coveo-platform/actions/playwright-dashboard@playwright-dashboard-v1 + with: + project_name: "quantic-regression" + artifact_name: quantic-playwright-report-json + json_report_name: merged-json-report.json + filter_report_by_branch: "SFINT-6399" + filter_report_by_event_type: "pull_request" + days_in_past: "30" + + - name: Upload Playwright report and charts to S3 + run: | + aws s3 cp $GITHUB_WORKSPACE/quantic-playwright-report \ + s3://playwright-dashboard-bucket/quantic-regression/quantic-regression-reports/${{ github.run_id }}/ \ + --recursive || true + + aws s3 cp $GITHUB_WORKSPACE/quantic-regression_chart.html \ + s3://playwright-dashboard-bucket/quantic-regression/quantic-regression_chart.html e2e-quantic-cleanup: if: cancelled() || failure() || success() needs: