Skip to content

Executing test QA on UK-Export-Finance/tfs-api πŸš€ #1314

Executing test QA on UK-Export-Finance/tfs-api πŸš€

Executing test QA on UK-Export-Finance/tfs-api πŸš€ #1314

Workflow file for this run

# TFS-API Git Hub Actions
#####################################
# This GHA is responsible for initiating various test suites
# upon a PR creation. Following test suites are executed:
# 1. Unit tests (Jest)
# 2. API tests (Jest)
# 3. E2E tests (Jest)
name: Quality Assurance - Tests
run-name: Executing test QA on ${{ github.repository }} πŸš€
on:
pull_request:
branches: [main]
paths:
- ".github/workflows/test.yml"
- "src/**"
- "test/**"
- "Dockerfile"
- "docker-compose.yml"
- "package*"
- "tsconfig*"
- "jest.config.ts"
- "nest.cli.json"
env:
environment: "qa"
timezone: ${{ vars.TIMEZONE }}
jobs:
# 1. Setup test infrastructure
setup:
name: Infrastructure setup πŸ”§
runs-on: ubuntu-latest
outputs:
environment: ${{ env.environment }}
timezone: ${{ env.timezone }}
steps:
- name: Environment πŸ§ͺ
run: echo "Environment set to ${{ env.environment }}"
- name: Timezone 🌐
run: echo "Timezone set to ${{ env.timezone }}"
# 2. Unit tests
unit-tests:
name: Unit πŸ‘·
needs: setup
environment:
name: ${{ needs.setup.outputs.environment }}
runs-on: ubuntu-latest
steps:
- name: Timezone
uses: szenius/[email protected]
with:
timezoneLinux: ${{ needs.setup.outputs.timezone }}
- name: Repository
uses: actions/checkout@v4
- name: Node
uses: actions/setup-node@v4
with:
node-version: ${{ vars.NODE_VERSION }}
- name: Dependencies
working-directory: ./
run: npm ci --legacy-peer-deps
- name: Execute
working-directory: ./
run: npm run unit-test
# 3. API tests
api-tests:
name: API πŸ‘·
needs: setup
environment:
name: ${{ needs.setup.outputs.environment }}
runs-on: ubuntu-latest
steps:
- name: Timezone
uses: szenius/[email protected]
with:
timezoneLinux: ${{ needs.setup.outputs.timezone }}
- name: Repository
uses: actions/checkout@v4
- name: Node
uses: actions/setup-node@v4
with:
node-version: ${{ vars.NODE_VERSION }}
- name: Dependencies
working-directory: ./
run: npm ci --legacy-peer-deps
- name: Execute
working-directory: ./
run: npm run api-test
# 4. E2E tests
e2e-tests:
name: E2E πŸ§‘β€πŸ’»
needs: setup
environment:
name: ${{ needs.setup.outputs.environment }}
runs-on: ubuntu-latest
steps:
- name: Timezone
uses: szenius/[email protected]
with:
timezoneLinux: ${{ needs.setup.outputs.timezone }}
- name: Repository
uses: actions/checkout@v4
- name: Node
uses: actions/setup-node@v4
with:
node-version: ${{ vars.NODE_VERSION }}
- name: Dependencies
working-directory: ./
run: npm ci --legacy-peer-deps
- name: Docker
working-directory: ./
env:
PORT: ${{ secrets.PORT }}
NODE_ENV: ${{ secrets.NODE_ENV }}
TZ: ${{ secrets.TZ }}
LOG_LEVEL: ${{ vars.LOG_LEVEL }}
REDACT_LOGS: ${{ vars.REDACT_LOGS }}
SINGLE_LINE_LOG_FORMAT: ${{ vars.SINGLE_LINE_LOG_FORMAT }}
SWAGGER_USER: ${{ secrets.SWAGGER_USER }}
SWAGGER_PASSWORD: ${{ secrets.SWAGGER_PASSWORD }}
ACBS_BASE_URL: ${{ secrets.ACBS_BASE_URL }}
ACBS_MAX_REDIRECTS: ${{ secrets.ACBS_MAX_REDIRECTS }}
ACBS_TIMEOUT: ${{ secrets.ACBS_TIMEOUT }}
ACBS_USE_RETURN_EXCEPTION_HEADER: ${{ vars.ACBS_USE_RETURN_EXCEPTION_HEADER }}
ACBS_AUTHENTICATION_API_KEY: ${{ secrets.ACBS_AUTHENTICATION_API_KEY }}
ACBS_AUTHENTICATION_API_KEY_HEADER_NAME: ${{ secrets.ACBS_AUTHENTICATION_API_KEY_HEADER_NAME }}
ACBS_AUTHENTICATION_BASE_URL: ${{ secrets.ACBS_AUTHENTICATION_BASE_URL }}
ACBS_AUTHENTICATION_CLIENT_ID: ${{ secrets.ACBS_AUTHENTICATION_CLIENT_ID }}
ACBS_AUTHENTICATION_ID_TOKEN_CACHE_TTL_IN_MILLISECONDS: ${{ secrets.ACBS_AUTHENTICATION_ID_TOKEN_CACHE_TTL_IN_MILLISECONDS }}
ACBS_AUTHENTICATION_LOGIN_NAME: ${{ secrets.ACBS_AUTHENTICATION_LOGIN_NAME }}
ACBS_AUTHENTICATION_MAX_REDIRECTS: ${{ secrets.ACBS_AUTHENTICATION_MAX_REDIRECTS }}
ACBS_AUTHENTICATION_PASSWORD: ${{ secrets.ACBS_AUTHENTICATION_PASSWORD }}
ACBS_AUTHENTICATION_RETRY_DELAY_IN_MILLISECONDS: ${{ secrets.ACBS_AUTHENTICATION_RETRY_DELAY_IN_MILLISECONDS }}
ACBS_AUTHENTICATION_TIMEOUT: ${{ secrets.ACBS_AUTHENTICATION_TIMEOUT }}
ACBS_AUTHENTICATION_MAX_NUMBER_OF_RETRIES: ${{ secrets.ACBS_AUTHENTICATION_MAX_NUMBER_OF_RETRIES }}
API_KEY: ${{ secrets.API_KEY }}
APIM_MDM_URL: ${{ secrets.APIM_MDM_URL }}
APIM_MDM_KEY: ${{ secrets.APIM_MDM_KEY }}
APIM_MDM_VALUE: ${{ secrets.APIM_MDM_VALUE }}
APIM_MDM_MAX_REDIRECTS: ${{ secrets.APIM_MDM_MAX_REDIRECTS }}
APIM_MDM_TIMEOUT: ${{ secrets.APIM_MDM_TIMEOUT }}
run: docker compose up --build -d
- name: Execute
working-directory: ./
run: npm run e2e-test