name: E2E Self Hosted Test Suite on: workflow_call: inputs: snjs_image_tag: type: string default: latest description: The Docker image tag used for SNJS container suite: type: string default: all description: The test suite to run jobs: e2e: name: (Self Hosting) E2E Test Suite strategy: fail-fast: false matrix: service_proxy_type: [http, grpc] runs-on: ubuntu-latest services: snjs: image: standardnotes/snjs:${{ inputs.snjs_image_tag }} ports: - 9001:9001 steps: - uses: actions/checkout@v4 - name: Set up Node uses: actions/setup-node@v3 with: registry-url: 'https://registry.npmjs.org' node-version-file: '.nvmrc' - name: Install run: yarn install --immutable - name: Run Server run: docker compose -f docker-compose.ci.yml up -d env: DB_TYPE: mysql CACHE_TYPE: redis SERVICE_PROXY_TYPE: ${{ matrix.service_proxy_type }} - name: Output Server Logs to File run: docker compose -f docker-compose.ci.yml logs -f > logs/docker-compose.log 2>&1 & env: DB_TYPE: mysql CACHE_TYPE: redis SERVICE_PROXY_TYPE: ${{ matrix.service_proxy_type }} - 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 3600000 -f http://localhost:9001/mocha/test.html?suite=${{ inputs.suite }} - name: Archive failed run logs if: ${{ failure() }} uses: actions/upload-artifact@v3 with: name: self-hosted-failure-logs-${{ inputs.suite }} retention-days: 5 path: | logs/*.err logs/*.log