refactor(website): fold .outlineButton CSS class into the Button outline variant
#10783
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: Integration tests | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| subcomponent: | |
| description: 'Which test suite to run' | |
| required: false | |
| default: 'all' | |
| type: choice | |
| options: | |
| - all | |
| - chromium | |
| - firefox | |
| - cli | |
| pull_request: | |
| paths: | |
| - "backend/**" | |
| - "keycloak/**" | |
| - "kubernetes/**" | |
| - "preprocessing/**" | |
| - "website/**" | |
| - "deploy.py" | |
| - "integration-tests/**" | |
| - ".github/scripts/**" | |
| - ".github/workflows/**" | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| setup: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| matrix: ${{ steps.set-matrix.outputs.matrix }} | |
| steps: | |
| - id: set-matrix | |
| run: | | |
| if [ "${{ github.event_name }}" != "workflow_dispatch" ] || [ "${{ inputs.subcomponent }}" == "all" ]; then | |
| echo 'matrix=["chromium","firefox","cli"]' >> $GITHUB_OUTPUT | |
| else | |
| echo 'matrix=["${{ inputs.subcomponent }}"]' >> $GITHUB_OUTPUT | |
| fi | |
| integration-tests: | |
| needs: setup | |
| permissions: | |
| packages: read | |
| contents: read | |
| checks: read | |
| actions: read # Required by workflow-telemetry-action | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| browser: ${{ fromJSON(needs.setup.outputs.matrix) }} | |
| timeout-minutes: 45 | |
| env: | |
| sha: ${{ github.event.pull_request.head.sha || github.sha }} | |
| wait_timeout: ${{ github.ref == 'refs/heads/main' && 900 || 600 }} | |
| steps: | |
| - name: Shorten sha | |
| run: echo "sha=${sha::7}" >> $GITHUB_ENV | |
| - name: Get runner IP | |
| run: curl -4 ifconfig.me | |
| - name: Collect Workflow Telemetry | |
| uses: ycfreeman/workflow-telemetry-action@cad169ff11f718319d5468b0a67a238db000ef3f | |
| - name: Checkout repository | |
| uses: actions/checkout@v6 | |
| - name: Install k3d | |
| run: | | |
| for i in {1..5}; do | |
| curl https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | DEBUG=true bash && break || sleep $((i * 2)) | |
| done | |
| k3d version | |
| - uses: azure/setup-helm@v5 | |
| with: | |
| version: v3.18.3 | |
| - name: Create k3d cluster | |
| run: | | |
| ./deploy.py --verbose cluster --bind-all | |
| - name: Deploy with Helm | |
| run: | | |
| ./deploy.py --verbose helm \ | |
| --branch ${{ github.ref_name }} \ | |
| --sha ${{ env.sha }} \ | |
| --for-e2e \ | |
| --enablePreprocessing \ | |
| --use-localhost-ip | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: ./integration-tests/.nvmrc | |
| - name: Cache .npm | |
| uses: actions/cache@v5 | |
| with: | |
| path: ~/.npm | |
| key: ${{ runner.os }}-node-${{ hashFiles('integration-tests/**/package-lock.json') }} | |
| - name: Install dependencies | |
| run: cd integration-tests && npm ci | |
| - name: Install Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.13' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v7 | |
| - name: Install CLI | |
| run: cd cli && uv sync && uv build && uv pip install --system dist/*.whl | |
| - name: Install keyring backend for CLI | |
| run: uv pip install --system keyrings.alt | |
| # Firefox's readonly-setup is also done with Chromium | |
| - name: Install Playwright Browsers and System Dependencies | |
| run: cd integration-tests && npx playwright install --with-deps --only-shell chromium ${{ matrix.browser == 'firefox' && 'firefox' || '' }} | |
| - name: Wait for the pods to be ready | |
| run: ./.github/scripts/wait_for_pods_to_be_ready.py --timeout ${{ env.wait_timeout }} | |
| - name: Sleep for 10 secs | |
| run: sleep 10 | |
| - name: Run Integration test | |
| env: | |
| BROWSER: ${{ matrix.browser == 'cli' && 'chromium' || matrix.browser }} | |
| TEST_SUITE: ${{ matrix.browser == 'cli' && 'cli' || 'browser' }} | |
| run: | | |
| set -o pipefail | |
| cd integration-tests && npx playwright test --workers=2 --reporter=list,html 2>&1 | tee output.txt | |
| EXIT_CODE=$? | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| sed -n '/Running [0-9]\+ tests/,$p' output.txt >> $GITHUB_STEP_SUMMARY | |
| echo '```' >> $GITHUB_STEP_SUMMARY | |
| exit $EXIT_CODE | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: playwright-report-${{ matrix.browser }} | |
| path: integration-tests/playwright-report/ | |
| retention-days: 30 | |
| - name: List running pods | |
| if: ${{ !cancelled() }} | |
| run: kubectl get pods --all-namespaces | |
| - name: Describe pods | |
| if: ${{ !cancelled() }} | |
| run: | | |
| mkdir -p pod_descriptions | |
| kubectl describe pods -l app=loculus | tee pod_descriptions/describe_pods.txt | |
| - name: Upload pod descriptions | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: pod-descriptions-${{ matrix.browser }} | |
| path: pod_descriptions/ | |
| - name: Show events | |
| if: ${{ !cancelled() }} | |
| run: kubectl get events | |
| - name: Save logs from all containers to file | |
| if: ${{ !cancelled() }} | |
| run: ./.github/scripts/collect_kubernetes_logs.sh | |
| - name: Upload Kubernetes logs | |
| if: ${{ !cancelled() }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: kubernetes-logs-${{ matrix.browser }} | |
| path: kubernetes_logs/ |