Executing test QA on UK-Export-Finance/estore-api π #1060
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# eStore 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/set-timezone@v2.0 | |
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/set-timezone@v2.0 | |
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/set-timezone@v2.0 | |
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 }} | |
API_KEY: ${{ secrets.API_KEY }} | |
GRAPH_BASE_URL: ${{ secrets.GRAPH_BASE_URL }} | |
GRAPH_AUTHENTICATION_TENANT_ID: ${{ secrets.GRAPH_AUTHENTICATION_TENANT_ID }} | |
GRAPH_AUTHENTICATION_CLIENT_ID: ${{ secrets.GRAPH_AUTHENTICATION_CLIENT_ID }} | |
GRAPH_AUTHENTICATION_CLIENT_SECRET: ${{ secrets.GRAPH_AUTHENTICATION_CLIENT_SECRET }} | |
SHAREPOINT_BASE_URL: ${{ secrets.SHAREPOINT_BASE_URL }} | |
SHAREPOINT_MAIN_SITE_NAME: ${{ secrets.SHAREPOINT_MAIN_SITE_NAME }} | |
SHAREPOINT_TFIS_SITE_NAME: ${{ secrets.SHAREPOINT_TFIS_SITE_NAME }} | |
SHAREPOINT_SC_SITE_NAME: ${{ secrets.SHAREPOINT_SC_SITE_NAME}} | |
SHAREPOINT_SC_CASE_SITES_LIST_ID: ${{ secrets.SHAREPOINT_SC_CASE_SITES_LIST_ID }} | |
SHAREPOINT_TFIS_FACILITY_LIST_ID: ${{ secrets.SHAREPOINT_TFIS_FACILITY_LIST_ID }} | |
SHAREPOINT_TFIS_FACILITY_LIST_TITLE: ${{ secrets.SHAREPOINT_TFIS_FACILITY_LIST_TITLE }} | |
SHAREPOINT_TFIS_FACILITY_HIDDEN_LIST_TERM_STORE_ID: ${{ secrets.SHAREPOINT_TFIS_FACILITY_HIDDEN_LIST_TERM_STORE_ID }} | |
SHAREPOINT_TFIS_SITE_ID: ${{ secrets.SHAREPOINT_TFIS_SITE_ID }} | |
SHAREPOINT_TFIS_DEAL_LIST_ID: ${{ secrets.SHAREPOINT_TFIS_DEAL_LIST_ID }} | |
SHAREPOINT_TFIS_TERM_STORE: ${{ secrets.SHAREPOINT_TFIS_TERM_STORE }} | |
SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_FIELD_NAME: ${{ secrets.SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_FIELD_NAME }} | |
SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_APPLICATION: ${{ secrets.SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_APPLICATION }} | |
SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_FINANCIAL_STATEMENT: ${{ secrets.SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_FINANCIAL_STATEMENT }} | |
SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_BUSINESS_INFORMATION: ${{ secrets.SHAREPOINT_ESTORE_DOCUMENT_TYPE_ID_BUSINESS_INFORMATION }} | |
SHAREPOINT_TFIS_CASE_SITES_LIST_ID: ${{ secrets.SHAREPOINT_TFIS_CASE_SITES_LIST_ID }} | |
SHAREPOINT_TAXONOMY_HIDDEN_LIST_TERM_STORE_LIST_ID: ${{ secrets.SHAREPOINT_TAXONOMY_HIDDEN_LIST_TERM_STORE_LIST_ID }} | |
SHAREPOINT_ECMS_DOCUMENT_CONTENT_TYPE_ID: ${{ secrets.SHAREPOINT_ECMS_DOCUMENT_CONTENT_TYPE_ID }} | |
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 }} | |
DTFS_STORAGE_ACCOUNT_NAME: ${{ secrets.DTFS_STORAGE_ACCOUNT_NAME }} | |
DTFS_STORAGE_ACCOUNT_KEY: ${{ secrets.DTFS_STORAGE_ACCOUNT_KEY }} | |
DTFS_STORAGE_DEAL_DOCUMENTS_FOLDER_PATH: ${{ secrets.DTFS_STORAGE_DEAL_DOCUMENTS_FOLDER_PATH }} | |
DTFS_STORAGE_EXAMPLE_FILE_NAME: ${{ secrets.DTFS_STORAGE_EXAMPLE_FILE_NAME }} | |
DTFS_STORAGE_EXAMPLE_FILE_LOCATION_PATH: ${{ secrets.DTFS_STORAGE_EXAMPLE_FILE_LOCATION_PATH }} | |
CUSTODIAN_BASE_URL: ${{ secrets.CUSTODIAN_BASE_URL }} | |
CUSTODIAN_API_KEY_HEADER_NAME: ${{ secrets.CUSTODIAN_API_KEY_HEADER_NAME }} | |
CUSTODIAN_API_KEY_HEADER_VALUE: ${{ secrets.CUSTODIAN_API_KEY_HEADER_VALUE }} | |
CUSTODIAN_MAX_REDIRECTS: ${{ secrets.CUSTODIAN_MAX_REDIRECTS }} | |
CUSTODIAN_TIMEOUT: ${{ secrets.CUSTODIAN_TIMEOUT }} | |
CUSTODIAN_BUYER_TEMPLATE_ID: ${{ secrets.CUSTODIAN_BUYER_TEMPLATE_ID }} | |
CUSTODIAN_BUYER_TYPE_GUID: ${{ secrets.CUSTODIAN_BUYER_TYPE_GUID }} | |
CUSTODIAN_DEAL_TEMPLATE_ID: ${{ secrets.CUSTODIAN_DEAL_TEMPLATE_ID }} | |
CUSTODIAN_DEAL_TYPE_GUID: ${{ secrets.CUSTODIAN_DEAL_TYPE_GUID }} | |
CUSTODIAN_FACILITY_TEMPLATE_ID: ${{ secrets.CUSTODIAN_FACILITY_TEMPLATE_ID }} | |
CUSTODIAN_FACILITY_TYPE_GUID: ${{ secrets.CUSTODIAN_FACILITY_TYPE_GUID }} | |
run: docker compose up --build -d | |
- name: Execute | |
working-directory: ./ | |
run: npm run e2e-test |