Files
standardnotes-server/.github/workflows/common-e2e.yml
2023-02-07 07:15:20 +01:00

108 lines
3.1 KiB
YAML

name: Reusable Run E2E Test Suite Workflow
on:
workflow_call:
secrets:
DOCKER_USERNAME:
required: true
DOCKER_PASSWORD:
required: true
AWS_ACCESS_KEY_ID:
required: true
AWS_SECRET_ACCESS_KEY:
required: true
jobs:
e2e:
runs-on: ubuntu-latest
services:
snjs:
image: standardnotes/snjs
ports:
- 9001:9001
db:
image: mysql:8
env:
MYSQL_DATABASE: standard_notes_db
MYSQL_USER: std_notes_user
MYSQL_PASSWORD: changeme123
MYSQL_ROOT_PASSWORD: changeme123
ports:
- 3306:3306
options: >-
--name "db"
cache:
image: redis:6.0-alpine
ports:
- 6379:6379
options: >-
--name "cache"
mock-event-publisher:
image: standardnotes/mock-event-publisher
ports:
- 3124:3000
env:
LOG_LEVEL: debug
NODE_ENV: production
VERSION: snjs-test
SNS_TOPIC_ARN: arn:aws:sns:us-east-1:000000000000:payments-local-topic
SNS_ENDPOINT: http://localstack:4566
SNS_DISABLE_SSL: true
SNS_SECRET_ACCESS_KEY: x
SNS_ACCESS_KEY_ID: x
SNS_AWS_REGION: us-east-1
NEW_RELIC_ENABLED: false
options: >-
--name "mock-event-publisher"
steps:
- uses: actions/checkout@v3
- name: Set up Node
uses: actions/setup-node@v3
with:
registry-url: 'https://registry.npmjs.org'
node-version-file: '.nvmrc'
- name: Build Docker image for E2E testing
run: docker build . -t standardnotes/server:${{ github.sha }}
- name: Create Docker Network
run: docker network create -d bridge e2e-network
- name: Connect external containers to e2e network
run: |
docker network connect --alias mock-event-publisher e2e-network mock-event-publisher
docker network connect --alias db e2e-network db
docker network connect --alias cache e2e-network cache
- name: Run Server
run: docker run -v $(pwd)/logs:/var/lib/server/logs --network e2e-network -d -p 3123:3000 standardnotes/server:${{ github.sha }}
env:
EXPOSED_PORT: 3123
EXPOSED_FILES_SERVER_PORT: 3125
PUBLIC_FILES_SERVER_URL: http://db:3125
DB_HOST: db
DB_PORT: 3306
DB_USERNAME: std_notes_user
DB_PASSWORD: changeme123
DB_DATABASE: standard_notes_db
REDIS_PORT: 6379
REDIS_HOST: cache
AUTH_SERVER_ACCESS_TOKEN_AGE: 4
AUTH_SERVER_REFRESH_TOKEN_AGE: 10
AUTH_SERVER_EPHEMERAL_SESSION_AGE: 300
SYNCING_SERVER_REVISIONS_FREQUENCY: 5
AUTH_SERVER_LOG_LEVEL: debug
SYNCING_SERVER_LOG_LEVEL: debug
FILES_SERVER_LOG_LEVEL: debug
REVISIONS_SERVER_LOG_LEVEL: debug
API_GATEWAY_LOG_LEVEL: debug
- name: Wait for server to start
run: docker/is-available.sh http://localhost:3123 $(pwd)/logs
- name: Run E2E Test Suite
run: yarn dlx mocha-headless-chrome --timeout 1200000 -f http://localhost:9001/mocha/test.html