mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
ecca0d8036
The 3-minute timeout was too tight with the added docker compose pull step for downloading third-party images. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
647 lines
20 KiB
YAML
647 lines
20 KiB
YAML
name: "Tests"
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
COMPOSE_FILE: docker-compose.yml
|
|
IMAGE: appwrite-dev
|
|
CACHE_KEY: appwrite-dev-${{ github.event.pull_request.head.sha }}
|
|
|
|
on:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
inputs:
|
|
response_format:
|
|
description: 'Response format version to test (e.g., 1.5.0, 1.4.0)'
|
|
required: false
|
|
type: string
|
|
default: ''
|
|
|
|
jobs:
|
|
check_database_changes:
|
|
name: Check if utopia-php/database changed
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
database_changed: ${{ steps.check.outputs.database_changed }}
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Fetch base branch
|
|
run: git fetch origin ${{ github.event.pull_request.base.ref }}
|
|
|
|
- name: Check for utopia-php/database changes
|
|
id: check
|
|
run: |
|
|
if git diff origin/${{ github.event.pull_request.base.ref }} HEAD -- composer.lock | grep -q '"name": "utopia-php/database"'; then
|
|
echo "Database version changed, going to run all mode tests."
|
|
echo "database_changed=true" >> "$GITHUB_ENV"
|
|
echo "database_changed=true" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "database_changed=false" >> "$GITHUB_ENV"
|
|
echo "database_changed=false" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
setup:
|
|
name: Setup & Build Appwrite Image
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v4
|
|
|
|
- name: Build Appwrite
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: .
|
|
push: false
|
|
tags: ${{ env.IMAGE }}
|
|
load: true
|
|
cache-from: type=gha
|
|
cache-to: type=gha,mode=max
|
|
outputs: type=docker,dest=/tmp/${{ env.IMAGE }}.tar
|
|
target: development
|
|
build-args: |
|
|
DEBUG=false
|
|
TESTING=true
|
|
VERSION=dev
|
|
|
|
- name: Cache Docker Image
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
|
|
unit_test:
|
|
name: Unit Test
|
|
runs-on: ubuntu-latest
|
|
needs: setup
|
|
permissions:
|
|
contents: read
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Environment Variables
|
|
run: docker compose exec -T appwrite vars
|
|
|
|
- name: Run Unit Tests
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/unit
|
|
|
|
e2e_general_test:
|
|
name: E2E General Test
|
|
runs-on: ubuntu-latest
|
|
needs: setup
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Wait for Open Runtimes
|
|
timeout-minutes: 3
|
|
run: |
|
|
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
|
|
echo "Waiting for Executor to come online"
|
|
sleep 1
|
|
done
|
|
|
|
- name: Run General Tests
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec -T
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/e2e/General --debug
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Logs ==="
|
|
docker compose logs
|
|
|
|
e2e_service_test:
|
|
name: E2E Service Test
|
|
runs-on: ubuntu-latest
|
|
needs: setup
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
db_adapter: [
|
|
MARIADB,
|
|
POSTGRESQL,
|
|
MONGODB
|
|
]
|
|
service: [
|
|
Account,
|
|
Avatars,
|
|
Console,
|
|
Databases,
|
|
Functions,
|
|
FunctionsSchedule,
|
|
GraphQL,
|
|
Health,
|
|
Locale,
|
|
Projects,
|
|
Realtime,
|
|
Sites,
|
|
Proxy,
|
|
Storage,
|
|
Tokens,
|
|
Teams,
|
|
Users,
|
|
Webhooks,
|
|
VCS,
|
|
Messaging,
|
|
Migrations
|
|
]
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Set DB Adapter environment
|
|
id: set-db-env
|
|
run: |
|
|
DB_ADAPTER_LOWER=$(echo "${{ matrix.db_adapter }}" | tr 'A-Z' 'a-z')
|
|
echo "COMPOSE_PROFILES=${DB_ADAPTER_LOWER}" >> $GITHUB_ENV
|
|
|
|
if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then
|
|
echo "_APP_DB_ADAPTER=mariadb" >> $GITHUB_ENV
|
|
echo "_APP_DB_HOST=mariadb" >> $GITHUB_ENV
|
|
echo "_APP_DB_PORT=3306" >> $GITHUB_ENV
|
|
elif [ "${{ matrix.db_adapter }}" = "MONGODB" ]; then
|
|
echo "_APP_DB_ADAPTER=mongodb" >> $GITHUB_ENV
|
|
echo "_APP_DB_HOST=mongodb" >> $GITHUB_ENV
|
|
echo "_APP_DB_PORT=27017" >> $GITHUB_ENV
|
|
elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then
|
|
echo "_APP_DB_ADAPTER=postgresql" >> $GITHUB_ENV
|
|
echo "_APP_DB_HOST=postgresql" >> $GITHUB_ENV
|
|
echo "_APP_DB_PORT=5432" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_BROWSER_HOST: http://invalid-browser/v1
|
|
_APP_DATABASE_SHARED_TABLES: ""
|
|
_APP_DATABASE_SHARED_TABLES_V1: ""
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Wait for Open Runtimes
|
|
timeout-minutes: 3
|
|
run: |
|
|
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
|
|
echo "Waiting for Executor to come online"
|
|
sleep 1
|
|
done
|
|
|
|
- name: Run ${{ matrix.service }} tests with Project table mode
|
|
timeout-minutes: 20
|
|
run: |
|
|
SERVICE_PATH="/usr/src/code/tests/e2e/Services/${{ matrix.service }}"
|
|
|
|
# Services that rely on sequential test method execution (shared static state)
|
|
FUNCTIONAL_FLAG="--functional"
|
|
case "${{ matrix.service }}" in
|
|
Databases|Functions|Realtime) FUNCTIONAL_FLAG="" ;;
|
|
esac
|
|
|
|
docker compose exec -T \
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
|
|
appwrite vendor/bin/paratest --processes $(nproc) $FUNCTIONAL_FLAG "$SERVICE_PATH" --exclude-group abuseEnabled --exclude-group screenshots --exclude-group ciIgnore --log-junit tests/e2e/Services/${{ matrix.service }}/junit.xml
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Logs ==="
|
|
docker compose logs
|
|
|
|
e2e_shared_mode_test:
|
|
name: E2E Shared Mode Service Test
|
|
runs-on: ubuntu-latest
|
|
needs: [ setup, check_database_changes ]
|
|
if: needs.check_database_changes.outputs.database_changed == 'true'
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
service:
|
|
[
|
|
Account,
|
|
Avatars,
|
|
Console,
|
|
Databases,
|
|
Functions,
|
|
FunctionsSchedule,
|
|
GraphQL,
|
|
Health,
|
|
Locale,
|
|
Projects,
|
|
Realtime,
|
|
Sites,
|
|
Proxy,
|
|
Storage,
|
|
Teams,
|
|
Users,
|
|
Webhooks,
|
|
VCS,
|
|
Messaging,
|
|
Migrations,
|
|
Tokens
|
|
]
|
|
tables-mode: [
|
|
'Shared V1',
|
|
'Shared V2',
|
|
]
|
|
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_DATABASE_SHARED_TABLES: database_db_main
|
|
_APP_DATABASE_SHARED_TABLES_V1: ${{ matrix.tables-mode == 'Shared V1' && 'database_db_main' || '' }}
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Wait for Open Runtimes
|
|
timeout-minutes: 3
|
|
run: |
|
|
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
|
|
echo "Waiting for Executor to come online"
|
|
sleep 1
|
|
done
|
|
|
|
- name: Run ${{ matrix.service }} tests with ${{ matrix.tables-mode }} table mode
|
|
timeout-minutes: 20
|
|
run: |
|
|
SERVICE_PATH="/usr/src/code/tests/e2e/Services/${{ matrix.service }}"
|
|
|
|
# Services that rely on sequential test method execution (shared static state)
|
|
FUNCTIONAL_FLAG="--functional"
|
|
case "${{ matrix.service }}" in
|
|
Databases|Functions|Realtime) FUNCTIONAL_FLAG="" ;;
|
|
esac
|
|
|
|
docker compose exec -T \
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
|
|
appwrite vendor/bin/paratest --processes $(nproc) $FUNCTIONAL_FLAG "$SERVICE_PATH" --exclude-group abuseEnabled --exclude-group screenshots --exclude-group ciIgnore --log-junit tests/e2e/Services/${{ matrix.service }}/junit.xml
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Worker Builds Logs ==="
|
|
docker compose logs appwrite-worker-builds
|
|
echo "=== OpenRuntimes Executor Logs ==="
|
|
docker compose logs openruntimes-executor
|
|
|
|
e2e_abuse_enabled:
|
|
name: E2E Service Test (Abuse enabled)
|
|
runs-on: ubuntu-latest
|
|
needs: setup
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_OPTIONS_ABUSE: enabled
|
|
_APP_DATABASE_SHARED_TABLES: ""
|
|
_APP_DATABASE_SHARED_TABLES_V1: ""
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Run Projects tests in dedicated table mode
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec -T
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Worker Builds Logs ==="
|
|
docker compose logs appwrite-worker-builds
|
|
echo "=== OpenRuntimes Executor Logs ==="
|
|
docker compose logs openruntimes-executor
|
|
|
|
e2e_abuse_enabled_shared_mode:
|
|
name: E2E Shared Mode Service Test (Abuse enabled)
|
|
runs-on: ubuntu-latest
|
|
needs: [ setup, check_database_changes ]
|
|
if: needs.check_database_changes.outputs.database_changed == 'true'
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
tables-mode: [
|
|
'Shared V1',
|
|
'Shared V2',
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_OPTIONS_ABUSE: enabled
|
|
_APP_DATABASE_SHARED_TABLES: database_db_main
|
|
_APP_DATABASE_SHARED_TABLES_V1: ${{ matrix.tables-mode == 'Shared V1' && 'database_db_main' || '' }}
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Run Projects tests in ${{ matrix.tables-mode }} table mode
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec -T
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=abuseEnabled
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Worker Builds Logs ==="
|
|
docker compose logs appwrite-worker-builds
|
|
echo "=== OpenRuntimes Executor Logs ==="
|
|
docker compose logs openruntimes-executor
|
|
|
|
e2e_screenshots:
|
|
name: E2E Service Test (Site Screenshots)
|
|
runs-on: ubuntu-latest
|
|
needs: setup
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_DATABASE_SHARED_TABLES: ""
|
|
_APP_DATABASE_SHARED_TABLES_V1: ""
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Wait for Open Runtimes
|
|
timeout-minutes: 3
|
|
run: |
|
|
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
|
|
echo "Waiting for Executor to come online"
|
|
sleep 1
|
|
done
|
|
|
|
- name: Run Site tests with browser connected in dedicated table mode
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec -T
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Worker Builds Logs ==="
|
|
docker compose logs appwrite-worker-builds
|
|
echo "=== OpenRuntimes Executor Logs ==="
|
|
docker compose logs openruntimes-executor
|
|
|
|
e2e_screenshots_shared_mode:
|
|
name: E2E Shared Mode Service Test (Site Screenshots)
|
|
runs-on: ubuntu-latest
|
|
needs: [ setup, check_database_changes ]
|
|
if: needs.check_database_changes.outputs.database_changed == 'true'
|
|
permissions:
|
|
contents: read
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
tables-mode: [
|
|
'Shared V1',
|
|
'Shared V2',
|
|
]
|
|
steps:
|
|
- name: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: Load Cache
|
|
uses: actions/cache@v5
|
|
with:
|
|
key: ${{ env.CACHE_KEY }}
|
|
path: /tmp/${{ env.IMAGE }}.tar
|
|
fail-on-cache-miss: true
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v4
|
|
with:
|
|
username: ${{ vars.DOCKERHUB_USERNAME }}
|
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
|
|
- name: Load and Start Appwrite
|
|
timeout-minutes: 10
|
|
env:
|
|
_APP_DATABASE_SHARED_TABLES: database_db_main
|
|
_APP_DATABASE_SHARED_TABLES_V1: ${{ matrix.tables-mode == 'Shared V1' && 'database_db_main' || '' }}
|
|
run: |
|
|
docker load --input /tmp/${{ env.IMAGE }}.tar
|
|
docker compose pull --quiet --ignore-buildable
|
|
docker compose up -d
|
|
until docker compose exec -T appwrite doctor > /dev/null 2>&1; do
|
|
echo "Waiting for Appwrite to be ready..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Wait for Open Runtimes
|
|
timeout-minutes: 3
|
|
run: |
|
|
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
|
|
echo "Waiting for Executor to come online"
|
|
sleep 1
|
|
done
|
|
|
|
- name: Run Site tests with browser connected in ${{ matrix.tables-mode }} table mode
|
|
timeout-minutes: 15
|
|
run: >-
|
|
docker compose exec -T
|
|
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}"
|
|
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
|
|
|
|
- name: Failure Logs
|
|
if: failure()
|
|
run: |
|
|
echo "=== Appwrite Worker Builds Logs ==="
|
|
docker compose logs appwrite-worker-builds
|
|
echo "=== OpenRuntimes Executor Logs ==="
|
|
docker compose logs openruntimes-executor
|