feat: added unit tests for laboratory runs related lambdas (#664) #606
This file contains hidden or 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
| # ~~ Generated by projen. To modify, edit .projenrc.ts and run "pnpm dlx projen". | |
| name: cicd-release-quality | |
| on: | |
| push: | |
| branches: | |
| - development | |
| jobs: | |
| build-deploy-back-end: | |
| name: Build & Deploy Back-End | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: write | |
| actions: read | |
| environment: quality | |
| env: | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
| AWS_REGION: ${{ secrets.AWS_REGION }} | |
| ENV_TYPE: ${{ vars.ENV_TYPE }} | |
| ENV_NAME: ${{ vars.ENV_NAME }} | |
| APP_DOMAIN_NAME: ${{ vars.APP_DOMAIN_NAME }} | |
| AWS_HOSTED_ZONE_ID: ${{ secrets.AWS_HOSTED_ZONE_ID }} | |
| AWS_CERTIFICATE_ARN: ${{ secrets.AWS_CERTIFICATE_ARN }} | |
| JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} | |
| SYSTEM_ADMIN_EMAIL: ${{ vars.SYSTEM_ADMIN_EMAIL }} | |
| SYSTEM_ADMIN_PASSWORD: ${{ secrets.SYSTEM_ADMIN_PASSWORD }} | |
| ORG_ADMIN_EMAIL: ${{ vars.ORG_ADMIN_EMAIL }} | |
| ORG_ADMIN_PASSWORD: ${{ secrets.ORG_ADMIN_PASSWORD }} | |
| LAB_MANAGER_EMAIL: ${{ vars.LAB_MANAGER_EMAIL }} | |
| LAB_MANAGER_PASSWORD: ${{ secrets.LAB_MANAGER_PASSWORD }} | |
| LAB_TECHNICIAN_EMAIL: ${{ vars.LAB_TECHNICIAN_EMAIL }} | |
| LAB_TECHNICIAN_PASSWORD: ${{ secrets.LAB_TECHNICIAN_PASSWORD }} | |
| TEST_ACCESS_TOKEN: ${{ secrets.TEST_ACCESS_TOKEN }} | |
| TEST_S3_URL: ${{ secrets.TEST_S3_URL }} | |
| TEST_WORKSPACE_ID: ${{ secrets.TEST_WORKSPACE_ID }} | |
| TEST_INVITE_EMAIL: ${{ vars.TEST_INVITE_EMAIL }} | |
| SLACK_E2E_TEST_WEBHOOK_URL: ${{ vars.SLACK_E2E_TEST_WEBHOOK_URL }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9.15.0 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20.15.0 | |
| cache: pnpm | |
| - name: Nx cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: node_modules/.cache/nx | |
| fail-on-cache-miss: false | |
| key: nx-${{ github.repository_id }}-${{ github.sha }} | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Derive SHAs for nx affected commands | |
| uses: nrwl/nx-set-shas@v4 | |
| with: | |
| main-branch-name: main | |
| - name: Configure AWS Credentials | |
| id: configure_iam_credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GitHub_to_AWS_via_FederatedOIDC | |
| role-session-name: GitHub_to_AWS_via_FederatedOIDC | |
| role-duration-seconds: 3600 | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| audience: sts.amazonaws.com | |
| - name: Run CI/CD Build & Deploy Back-End | |
| run: pnpm run cicd-build-deploy-back-end | |
| build-deploy-front-end: | |
| name: Build & Deploy Front-End | |
| needs: build-deploy-back-end | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: write | |
| actions: read | |
| environment: quality | |
| env: | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
| AWS_REGION: ${{ secrets.AWS_REGION }} | |
| ENV_TYPE: ${{ vars.ENV_TYPE }} | |
| ENV_NAME: ${{ vars.ENV_NAME }} | |
| APP_DOMAIN_NAME: ${{ vars.APP_DOMAIN_NAME }} | |
| AWS_HOSTED_ZONE_ID: ${{ secrets.AWS_HOSTED_ZONE_ID }} | |
| AWS_CERTIFICATE_ARN: ${{ secrets.AWS_CERTIFICATE_ARN }} | |
| JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} | |
| SYSTEM_ADMIN_EMAIL: ${{ vars.SYSTEM_ADMIN_EMAIL }} | |
| SYSTEM_ADMIN_PASSWORD: ${{ secrets.SYSTEM_ADMIN_PASSWORD }} | |
| ORG_ADMIN_EMAIL: ${{ vars.ORG_ADMIN_EMAIL }} | |
| ORG_ADMIN_PASSWORD: ${{ secrets.ORG_ADMIN_PASSWORD }} | |
| LAB_MANAGER_EMAIL: ${{ vars.LAB_MANAGER_EMAIL }} | |
| LAB_MANAGER_PASSWORD: ${{ secrets.LAB_MANAGER_PASSWORD }} | |
| LAB_TECHNICIAN_EMAIL: ${{ vars.LAB_TECHNICIAN_EMAIL }} | |
| LAB_TECHNICIAN_PASSWORD: ${{ secrets.LAB_TECHNICIAN_PASSWORD }} | |
| TEST_ACCESS_TOKEN: ${{ secrets.TEST_ACCESS_TOKEN }} | |
| TEST_S3_URL: ${{ secrets.TEST_S3_URL }} | |
| TEST_WORKSPACE_ID: ${{ secrets.TEST_WORKSPACE_ID }} | |
| TEST_INVITE_EMAIL: ${{ vars.TEST_INVITE_EMAIL }} | |
| SLACK_E2E_TEST_WEBHOOK_URL: ${{ vars.SLACK_E2E_TEST_WEBHOOK_URL }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9.15.0 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20.15.0 | |
| cache: pnpm | |
| - name: Nx cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: node_modules/.cache/nx | |
| fail-on-cache-miss: false | |
| key: nx-${{ github.repository_id }}-${{ github.sha }} | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Derive SHAs for nx affected commands | |
| uses: nrwl/nx-set-shas@v4 | |
| with: | |
| main-branch-name: main | |
| - name: Configure AWS Credentials | |
| id: configure_iam_credentials | |
| uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/GitHub_to_AWS_via_FederatedOIDC | |
| role-session-name: GitHub_to_AWS_via_FederatedOIDC | |
| role-duration-seconds: 3600 | |
| aws-region: ${{ secrets.AWS_REGION }} | |
| audience: sts.amazonaws.com | |
| - name: Run CI/CD Build & Deploy Front-End | |
| run: pnpm cicd-build-deploy-front-end | |
| run-e2e-tests: | |
| name: Run E2E Tests | |
| needs: build-deploy-front-end | |
| runs-on: ubuntu-latest | |
| permissions: | |
| id-token: write | |
| contents: write | |
| actions: read | |
| environment: quality | |
| env: | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} | |
| AWS_REGION: ${{ secrets.AWS_REGION }} | |
| ENV_TYPE: ${{ vars.ENV_TYPE }} | |
| ENV_NAME: ${{ vars.ENV_NAME }} | |
| APP_DOMAIN_NAME: ${{ vars.APP_DOMAIN_NAME }} | |
| AWS_HOSTED_ZONE_ID: ${{ secrets.AWS_HOSTED_ZONE_ID }} | |
| AWS_CERTIFICATE_ARN: ${{ secrets.AWS_CERTIFICATE_ARN }} | |
| JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }} | |
| SYSTEM_ADMIN_EMAIL: ${{ vars.SYSTEM_ADMIN_EMAIL }} | |
| SYSTEM_ADMIN_PASSWORD: ${{ secrets.SYSTEM_ADMIN_PASSWORD }} | |
| ORG_ADMIN_EMAIL: ${{ vars.ORG_ADMIN_EMAIL }} | |
| ORG_ADMIN_PASSWORD: ${{ secrets.ORG_ADMIN_PASSWORD }} | |
| LAB_MANAGER_EMAIL: ${{ vars.LAB_MANAGER_EMAIL }} | |
| LAB_MANAGER_PASSWORD: ${{ secrets.LAB_MANAGER_PASSWORD }} | |
| LAB_TECHNICIAN_EMAIL: ${{ vars.LAB_TECHNICIAN_EMAIL }} | |
| LAB_TECHNICIAN_PASSWORD: ${{ secrets.LAB_TECHNICIAN_PASSWORD }} | |
| TEST_ACCESS_TOKEN: ${{ secrets.TEST_ACCESS_TOKEN }} | |
| TEST_S3_URL: ${{ secrets.TEST_S3_URL }} | |
| TEST_WORKSPACE_ID: ${{ secrets.TEST_WORKSPACE_ID }} | |
| TEST_INVITE_EMAIL: ${{ vars.TEST_INVITE_EMAIL }} | |
| SLACK_E2E_TEST_WEBHOOK_URL: ${{ vars.SLACK_E2E_TEST_WEBHOOK_URL }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: 9.15.0 | |
| - name: Setup node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: 20.15.0 | |
| cache: pnpm | |
| - name: Nx cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: node_modules/.cache/nx | |
| fail-on-cache-miss: false | |
| key: nx-${{ github.repository_id }}-${{ github.sha }} | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Derive SHAs for nx affected commands | |
| uses: nrwl/nx-set-shas@v4 | |
| with: | |
| main-branch-name: main | |
| - name: Clear Playwright Cache | |
| run: rm -rf /home/runner/.cache/ms-playwright | |
| - name: Install Playwright + Chromium Only and Slack Reporter | |
| run: pnpm add -Dw @playwright/test && pnpm add -Dw playwright-slack-report && npx playwright install chromium | |
| - name: Run E2E Tests | |
| run: pnpm run test-e2e | |
| continue-on-error: true | |
| working-directory: packages/front-end | |
| - name: Always Succeed Step | |
| if: failure() | |
| run: echo "E2E tests failed, but we are allowing the pipeline to succeed." |