Skip to content

Unit/E2E test of 30/merge by J-Hoplin #22

Unit/E2E test of 30/merge by J-Hoplin

Unit/E2E test of 30/merge by J-Hoplin #22

Workflow file for this run

name: CI-Unit-Test
on:
pull_request:
branches:
- dev
workflow_call:
inputs:
build_id:
required: true
type: number
deploy_target:
required: true
type: string
run-name: Unit/E2E test of ${{ github.ref_name }} by ${{ github.actor }}
jobs:
unit-testing:
runs-on: ubuntu-latest
steps:
# Checkout repository codes
- name: Repository Checkout
uses: actions/checkout@v4
# Setup environment for Node.js 18
- name: Node.js version 18 Environment setting
uses: actions/setup-node@v4
with:
node-version: 18
- name: Initialize .ci.env
run: |
touch .ci.env
echo "DATABASE_URL=${{ secrets.DATABASE_URL}}" >> .ci.env
echo "ADMIN_EMAIL=${{secrets.ADMIN_EMAIL}}" >> .ci.env
echo "ADMIN_PW=${{secrets.ADMIN_PW}}" >> .ci.env
echo "JWT_SECRET=${{secrets.JWT_SECRET}}" >> .ci.env
echo "JUDGE_SERVER_ENDPOINT=${{secrets.JUDGE_SERVER_ENDPOINT}}" >> .ci.env
echo "AWS_REGION"=${{secrets.AWS_REGION}}>> .ci.env
echo "AWS_ACCESS_ID=${{secrets.AWS_ACCESS_ID}}" >> .ci.env
echo "AWS_ACCESS_SECRET=${{secrets.AWS_ACCESS_SECRET}}" >> .ci.env
echo "AWS_SQS_QUEUE=${{secrets.AWS_SQS_QUEUE}}" >> .ci.env
echo "AWS_S3_BUCKET=${{secrets.AWS_S3_BUCKET}}" >> .ci.env
- name: Install Node.js Dependencies
run: npm install --force
- name: Install dotenv-cli for dotenv cli
run: npm install -g dotenv-cli
- name: Initialize Prisma Client
run: npm run ci:init
- id: unit-test-phase
name: Run Unit Test
continue-on-error: true
run: npm run ci:unit
- name: 'Discord Alert - Success'
if: steps.unit-test-phase.outcome == 'success'
uses: rjstone/discord-webhook-notify@v1
with:
severity: info
details: 'Unit Test Result: Success'
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
- name: 'Discord Alert - Failed'
if: steps.unit-test-phase.outcome != 'success'
uses: rjstone/discord-webhook-notify@v1
with:
severity: error
details: 'Unit Test Result: Fail'
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
e2e-testing:
needs: unit-testing
runs-on: ubuntu-latest
steps:
- name: Repository Checkout
uses: actions/checkout@v4
- name: Node.js version 18 Environment setting
uses: actions/setup-node@v4
with:
node-version: 18
- name: Initialize .ci.env
run: |
touch .ci.env
echo "DATABASE_URL=${{ secrets.DATABASE_URL}}" >> .ci.env
echo "ADMIN_EMAIL=${{secrets.ADMIN_EMAIL}}" >> .ci.env
echo "ADMIN_PW=${{secrets.ADMIN_PW}}" >> .ci.env
echo "JWT_SECRET=${{secrets.JWT_SECRET}}" >> .ci.env
echo "JUDGE_SERVER_ENDPOINT=${{secrets.JUDGE_SERVER_ENDPOINT}}" >> .ci.env
echo "AWS_REGION"=${{secrets.AWS_REGION}}>> .ci.env
echo "AWS_ACCESS_ID=${{secrets.AWS_ACCESS_ID}}" >> .ci.env
echo "AWS_ACCESS_SECRET=${{secrets.AWS_ACCESS_SECRET}}" >> .ci.env
echo "AWS_SQS_QUEUE=${{secrets.AWS_SQS_QUEUE}}" >> .ci.env
echo "AWS_S3_BUCKET=${{secrets.AWS_S3_BUCKET}}" >> .ci.env
- name: Install Node.js Dependencies
run: npm install --force
- name: Install dotenv-cli for dotenv cli
run: npm install -g dotenv-cli
- name: Initialize Prisma Client
run: npm run ci:init
- id: e2e-test-phase
name: Run E2E Test
continue-on-error: true
run: npm run ci:e2e
- name: 'Discord Alert - Success'
if: steps.e2e-test-phase.outcome == 'success'
uses: rjstone/discord-webhook-notify@v1
with:
severity: info
details: 'E2E Test Result: Success'
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
- name: 'Discord Alert - Fail'
if: steps.e2e-test-phase.outcome != 'success'
uses: rjstone/discord-webhook-notify@v1
with:
severity: error
details: 'E2E Test Result: Failed'
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}