Replace CARTO raster tiles with OpenStreetMap vector tiles #2352
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
| name: E2E Tests | |
| on: | |
| push: | |
| branches: | |
| - dev | |
| - master | |
| pull_request: | |
| branches: | |
| - dev | |
| - master | |
| workflow_dispatch: | |
| env: | |
| NODE_OPTIONS: --max_old_space_size=6144 | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| prepare-dependencies: | |
| name: Prepare dependencies | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Prepare dependencies | |
| uses: ./.github/actions/prepare-dependencies | |
| prepare-container-dependencies: | |
| name: Prepare container dependencies | |
| runs-on: ubuntu-latest | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.62.1-noble | |
| options: --user 1001 | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Prepare dependencies | |
| uses: ./.github/actions/prepare-dependencies | |
| with: | |
| node-modules-cache-key: node-modules-container-v1 | |
| # ── Build the demo once and share it across test jobs via artifact ────────── | |
| build-demo: | |
| name: Build demo | |
| needs: prepare-dependencies | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| - name: Build demo | |
| uses: ./.github/actions/build | |
| with: | |
| target: build-demo-e2e | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| is-test: true | |
| - name: Upload demo build | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: demo-dist | |
| path: demo/dist/ | |
| if-no-files-found: error | |
| retention-days: 3 | |
| # ── Build the e2e test app and share it via artifact ──────────────────────── | |
| build-e2e-test-app: | |
| name: Build e2e test app | |
| needs: prepare-dependencies | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| - name: Build e2e test app | |
| uses: ./.github/actions/build | |
| with: | |
| target: build-e2e-test-app-e2e | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| is-test: true | |
| - name: Upload e2e test app build | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: e2e-test-app-dist | |
| path: test/e2e/app/dist/ | |
| if-no-files-found: error | |
| retention-days: 3 | |
| # ── Build the gallery and share it via artifact ───────────────────────────── | |
| build-gallery: | |
| name: Build gallery | |
| needs: prepare-dependencies | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| - name: Build gallery | |
| uses: ./.github/actions/build | |
| with: | |
| target: build-gallery | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| is-test: true | |
| - name: Upload gallery build | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: gallery-dist | |
| path: gallery/dist/ | |
| if-no-files-found: error | |
| retention-days: 3 | |
| # ── Run Playwright tests against Chromium ────────────────────────────────── | |
| e2e-demo: | |
| name: E2E demo (${{ matrix.shardIndex }}/${{ matrix.shardTotal }}) | |
| needs: | |
| - build-demo | |
| - prepare-container-dependencies | |
| runs-on: ubuntu-latest | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.62.1-noble | |
| options: --user 1001 --ipc=host | |
| defaults: | |
| run: | |
| shell: bash | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shardIndex: | |
| - 1 | |
| - 2 | |
| shardTotal: | |
| - 2 | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| node-modules-cache-key: node-modules-container-v1 | |
| - name: Download demo build | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: demo-dist | |
| path: demo/dist/ | |
| - name: Run Playwright demo tests | |
| run: yarn test:e2e:demo --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} | |
| timeout-minutes: 15 | |
| - name: Upload demo blob report | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: blob-report-demo-${{ matrix.shardIndex }} | |
| path: test/e2e/reports/demo/ | |
| if-no-files-found: warn | |
| retention-days: 3 | |
| e2e-app: | |
| name: E2E app (${{ matrix.shardIndex }}/${{ matrix.shardTotal }}) | |
| needs: | |
| - build-e2e-test-app | |
| - prepare-container-dependencies | |
| runs-on: ubuntu-latest | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.62.1-noble | |
| options: --user 1001 --ipc=host | |
| defaults: | |
| run: | |
| shell: bash | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shardIndex: | |
| - 1 | |
| - 2 | |
| - 3 | |
| - 4 | |
| shardTotal: | |
| - 4 | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| node-modules-cache-key: node-modules-container-v1 | |
| - name: Download e2e test app build | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: e2e-test-app-dist | |
| path: test/e2e/app/dist/ | |
| - name: Run Playwright app tests | |
| run: yarn test:e2e:app --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} | |
| timeout-minutes: 15 | |
| - name: Upload app blob report | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: blob-report-app-${{ matrix.shardIndex }} | |
| path: test/e2e/reports/app/ | |
| if-no-files-found: warn | |
| retention-days: 3 | |
| e2e-gallery: | |
| name: E2E gallery (${{ matrix.shardIndex }}/${{ matrix.shardTotal }}) | |
| needs: | |
| - build-gallery | |
| - prepare-container-dependencies | |
| runs-on: ubuntu-latest | |
| container: | |
| image: mcr.microsoft.com/playwright:v1.62.1-noble | |
| options: --user 1001 --ipc=host | |
| defaults: | |
| run: | |
| shell: bash | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shardIndex: | |
| - 1 | |
| - 2 | |
| - 3 | |
| - 4 | |
| shardTotal: | |
| - 4 | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| node-modules-cache-key: node-modules-container-v1 | |
| - name: Download gallery build | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: gallery-dist | |
| path: gallery/dist/ | |
| - name: Run Playwright gallery tests | |
| run: yarn test:e2e:gallery --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }} | |
| timeout-minutes: 15 | |
| - name: Upload gallery blob report | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: blob-report-gallery-${{ matrix.shardIndex }} | |
| path: test/e2e/reports/gallery/ | |
| if-no-files-found: warn | |
| retention-days: 3 | |
| report: | |
| name: Report | |
| needs: | |
| - e2e-demo | |
| - e2e-app | |
| - e2e-gallery | |
| runs-on: ubuntu-latest | |
| if: ${{ always() }} | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| steps: | |
| - name: Check out files from GitHub | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node with shared dependencies | |
| uses: ./.github/actions/setup | |
| with: | |
| node-modules-cache: true | |
| - name: Download demo blob reports | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| continue-on-error: true | |
| with: | |
| pattern: blob-report-demo-* | |
| path: test/e2e/reports/demo/ | |
| - name: Download app blob reports | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| continue-on-error: true | |
| with: | |
| pattern: blob-report-app-* | |
| path: test/e2e/reports/app/ | |
| - name: Download gallery blob reports | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| continue-on-error: true | |
| with: | |
| pattern: blob-report-gallery-* | |
| path: test/e2e/reports/gallery/ | |
| - name: Stage blobs for merge | |
| run: node test/e2e/collect-blob-reports.mjs | |
| - name: Merge blob reports | |
| run: npx playwright merge-reports -c test/e2e/playwright.merge.config.ts test/e2e/reports/blob | |
| - name: Upload merged HTML report | |
| id: upload-report | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: playwright-report | |
| path: test/e2e/reports/combined/ | |
| retention-days: 14 | |
| - name: Post report to PR | |
| if: >- | |
| github.event_name == 'pull_request' && | |
| (needs.e2e-demo.result == 'failure' || | |
| needs.e2e-app.result == 'failure' || | |
| needs.e2e-gallery.result == 'failure') | |
| uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 | |
| with: | |
| script: | | |
| const { default: postReportComment } = await import( | |
| `${process.env.GITHUB_WORKSPACE}/test/e2e/post-report-comment.mjs` | |
| ); | |
| await postReportComment({ github, context, core }); | |
| - name: Check suite results | |
| run: | | |
| failed=0 | |
| for suite in \ | |
| "demo:${{ needs.e2e-demo.result }}" \ | |
| "app:${{ needs.e2e-app.result }}" \ | |
| "gallery:${{ needs.e2e-gallery.result }}"; do | |
| name="${suite%%:*}" | |
| result="${suite#*:}" | |
| echo "E2E ${name}: ${result}" | |
| if [ "$result" != "success" ]; then | |
| failed=1 | |
| fi | |
| done | |
| exit "$failed" |