Skip to content

notify users when they use more than 75 credits #28

notify users when they use more than 75 credits

notify users when they use more than 75 credits #28

Workflow file for this run

name: Test Cloud
on:
pull_request:
branches: [cloud]
# on demand
workflow_dispatch:
jobs:
test:
runs-on: ubuntu-latest
services:
postgres:
image: pgvector/pgvector:pg16
env:
POSTGRES_DB: test_db
POSTGRES_USER: test_user
POSTGRES_PASSWORD: test_password
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
gotenberg:
image: gotenberg/gotenberg:8
ports:
- 3000:3000
options: >-
--health-cmd "curl -f http://localhost:3000/health"
--health-interval 10s
--health-timeout 5s
--health-retries 5
redis:
image: "redis:alpine"
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libmagic1 poppler-utils xauth
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Python dependencies
working-directory: ./web
run: |
python -m pip install --upgrade pip
pip install -r requirements.in
- name: Install Node dependencies
working-directory: ./web
run: npm install
- name: Install Playwright
working-directory: ./web
run: |
playwright install
playwright install-deps chromium
- name: Run migrations and collect static files
working-directory: ./web
env:
DATABASE_URL: postgres://test_user:test_password@localhost:5432/test_db
EMBEDDINGS_URL: ${{ secrets.EMBEDDINGS_URL }}
EMBEDDINGS_URL_TOKEN: ${{ secrets.EMBEDDINGS_URL_TOKEN }}
AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_STORAGE_BUCKET_NAME: ${{ secrets.AWS_STORAGE_BUCKET_NAME }}
REDIS_URL: redis://localhost:6379/0
run: python manage.py migrate && python manage.py collectstatic --noinput --ignore css/style.css
- name: Start the server
working-directory: ./web
env:
DATABASE_URL: postgres://test_user:test_password@localhost:5432/test_db
EMBEDDINGS_URL: ${{ secrets.EMBEDDINGS_URL }}
EMBEDDINGS_URL_TOKEN: ${{ secrets.EMBEDDINGS_URL_TOKEN }}
AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_STORAGE_BUCKET_NAME: ${{ secrets.AWS_STORAGE_BUCKET_NAME }}
GOTENBERG_URL: http://localhost:3000
STRIPE_METER_ID: ${{ secrets.STRIPE_METER_ID }}
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
STRIPE_PUBLIC_KEY: ${{ secrets.STRIPE_PUBLIC_KEY }}
STRIPE_TEAM_PRICE_ID_RECURRENT: ${{ secrets.STRIPE_TEAM_PRICE_ID_RECURRENT }}
STRIPE_TEAM_PRICE_ID_USAGE: ${{ secrets.STRIPE_TEAM_PRICE_ID_USAGE }}
STRIPE_INDIVIDUAL_PRICE_ID_RECURRENT: ${{ secrets.STRIPE_INDIVIDUAL_PRICE_ID_RECURRENT }}
STRIPE_INDIVIDUAL_PRICE_ID_USAGE: ${{ secrets.STRIPE_INDIVIDUAL_PRICE_ID_USAGE }}
STRIPE_METER_EVENT: ${{ secrets.STRIPE_METER_EVENT }}
TEST_BASE_URL: http://localhost:8001
REDIS_URL: redis://localhost:6379/0
run: python manage.py runserver 8001 & sleep 10 && python manage.py populate_social_app
- name: Start Stripe CLI Webhook Listener
env:
STRIPE_API_KEY: ${{ secrets.STRIPE_API_KEY }}
STRIPE_DEVICE_NAME: ${{ secrets.STRIPE_DEVICE_NAME }}
run: |
docker run --rm -d \
-e STRIPE_API_KEY=$STRIPE_API_KEY \
-e STRIPE_DEVICE_NAME=$STRIPE_DEVICE_NAME \
--network host \
stripe/stripe-cli:latest listen --forward-to http://localhost:8001/stripe-webhook/ &
- name: Run UI tests
working-directory: ./web
env:
DATABASE_URL: postgres://test_user:test_password@localhost:5432/test_db
EMBEDDINGS_URL: ${{ secrets.EMBEDDINGS_URL }}
EMBEDDINGS_URL_TOKEN: ${{ secrets.EMBEDDINGS_URL_TOKEN }}
AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_STORAGE_BUCKET_NAME: ${{ secrets.AWS_STORAGE_BUCKET_NAME }}
GOTENBERG_URL: http://localhost:3000
STRIPE_METER_ID: ${{ secrets.STRIPE_METER_ID }}
STRIPE_SECRET_KEY: ${{ secrets.STRIPE_SECRET_KEY }}
STRIPE_PUBLIC_KEY: ${{ secrets.STRIPE_PUBLIC_KEY }}
STRIPE_TEAM_PRICE_ID_RECURRENT: ${{ secrets.STRIPE_TEAM_PRICE_ID_RECURRENT }}
STRIPE_TEAM_PRICE_ID_USAGE: ${{ secrets.STRIPE_TEAM_PRICE_ID_USAGE }}
STRIPE_INDIVIDUAL_PRICE_ID_RECURRENT: ${{ secrets.STRIPE_INDIVIDUAL_PRICE_ID_RECURRENT }}
STRIPE_INDIVIDUAL_PRICE_ID_USAGE: ${{ secrets.STRIPE_INDIVIDUAL_PRICE_ID_USAGE }}
STRIPE_METER_EVENT: ${{ secrets.STRIPE_METER_EVENT }}
TEST_BASE_URL: http://localhost:8001
REDIS_URL: redis://localhost:6379/0
run: pytest -c pytest-ui.ini --tracing=retain-on-failure
- name: Run Main Tests
working-directory: ./web
env:
DATABASE_URL: postgres://test_user:test_password@localhost:5432/test_db
EMBEDDINGS_URL: ${{ secrets.EMBEDDINGS_URL }}
EMBEDDINGS_URL_TOKEN: ${{ secrets.EMBEDDINGS_URL_TOKEN }}
AWS_S3_ACCESS_KEY_ID: ${{ secrets.AWS_S3_ACCESS_KEY_ID }}
AWS_S3_SECRET_ACCESS_KEY: ${{ secrets.AWS_S3_SECRET_ACCESS_KEY }}
AWS_STORAGE_BUCKET_NAME: ${{ secrets.AWS_STORAGE_BUCKET_NAME }}
SVIX_TOKEN: ${{ secrets.SVIX_TOKEN }}
GOTENBERG_URL: http://localhost:3000
REDIS_URL: redis://localhost:6379/0
run: pytest --cov-fail-under=50
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v3
with:
name: playwright-test-results
path: |
./web/test-results/
./web/playwright-report/
./web/pytest-logs.txt
retention-days: 3