Skip to content

refactor(website): fold .outlineButton CSS class into the Button outline variant #10783

refactor(website): fold .outlineButton CSS class into the Button outline variant

refactor(website): fold .outlineButton CSS class into the Button outline variant #10783

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/