From fa2b90d4bf77e80a5f766ad87c808a15b1fd688a Mon Sep 17 00:00:00 2001 From: leehk Date: Mon, 21 Apr 2025 10:24:04 +0800 Subject: [PATCH] update --- .github/workflows/build.yml | 3 - .github/workflows/template_test.yml | 2 +- .github/workflows/template_unit_pytest.yml | 84 ++++++++++++++++++++++ .github/workflows/unittest_backend.yml | 19 +++++ app/frontend/vite.config.ts | 2 +- 5 files changed, 105 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/template_unit_pytest.yml create mode 100644 .github/workflows/unittest_backend.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1828ff..d3ef0f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,9 +5,6 @@ on: pull_request: branches: - develop - # paths: - # - 'app/**' - # - '.github/workflows/**' # Concurrency control: Ensures only one run per branch at a time, Equivalent to batch: true concurrency: diff --git a/.github/workflows/template_test.yml b/.github/workflows/template_test.yml index c54aeb5..e4acc8d 100644 --- a/.github/workflows/template_test.yml +++ b/.github/workflows/template_test.yml @@ -1,4 +1,4 @@ -name: Reusable Test Workflow +name: Reusable Integration Test Template on: workflow_call: diff --git a/.github/workflows/template_unit_pytest.yml b/.github/workflows/template_unit_pytest.yml new file mode 100644 index 0000000..74f5107 --- /dev/null +++ b/.github/workflows/template_unit_pytest.yml @@ -0,0 +1,84 @@ +name: Reusable Unit Test with Pytest Template + +on: + workflow_call: + inputs: + projectName: + description: 'Name of the project' + required: true + type: string + workingDir: + description: 'Working directory for the component' + required: true + type: string + testsFolderName: + description: 'Tests folder name' + required: true + type: string + +jobs: + build_and_test: + name: Build and Test ${{ inputs.projectName }} + runs-on: ubuntu-latest + timeout-minutes: 120 + + # Define environment variables based on inputs, similar to Azure variables + env: + SRC_PATH: ${{ github.workspace }}/${{ inputs.workingDir }} + TESTS_PATH: ${{ github.workspace }}/${{ inputs.workingDir }}/${{ inputs.testsFolderName }} + TESTS_RESULTS_PATH: ${{ github.workspace }}/${{ inputs.workingDir }}/results.xml + TESTS_COVERAGE_REPORT_PATH: ${{ github.workspace }}/${{ inputs.workingDir }}/coverage.xml + # Use the working directory input for commands that need it + WORKING_DIR: ${{ inputs.workingDir }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python 3.11 + uses: actions/setup-python@v5 # Use latest stable version + with: + python-version: '3.11' + + - name: Install build dependencies + run: | + python -m pip install --upgrade pip + pip install pipenv + + - name: Install environment including dev dependencies + working-directory: ${{ env.WORKING_DIR }} + run: | + echo "Current directory:" + pwd + echo "Listing files:" + ls -al + echo "Pipfile content:" + cat Pipfile + pipenv sync -d + + - name: Run tests with pytest + working-directory: ${{ env.WORKING_DIR }} + run: | + pipenv run pytest --version + # Use the environment variables defined above for paths + pipenv run pytest -v -s -o log_cli=true --junitxml=results.xml --cov=${{ env.SRC_PATH }} --cov-report=xml:${{ env.TESTS_COVERAGE_REPORT_PATH }} ${{ env.TESTS_PATH }} + echo "Listing results in working directory:" + ls -al ${{ github.workspace }}/${{ env.WORKING_DIR }} + + + # Use a popular action for publishing test results for better GitHub integration + - name: Publish Test Report + uses: dorny/test-reporter@v1 + if: success() || failure() # always run even if tests fail + with: + name: ${{ inputs.projectName }} Test Results + path: ${{ env.TESTS_RESULTS_PATH }} + reporter: java-junit # Specify JUnit format + + # Upload coverage report as an artifact + - name: Upload coverage report artifact + uses: actions/upload-artifact@v4 + if: success() || failure() # always run + with: + name: ${{ inputs.projectName }}-coverage-report + path: ${{ env.TESTS_COVERAGE_REPORT_PATH }} \ No newline at end of file diff --git a/.github/workflows/unittest_backend.yml b/.github/workflows/unittest_backend.yml new file mode 100644 index 0000000..bdccb7b --- /dev/null +++ b/.github/workflows/unittest_backend.yml @@ -0,0 +1,19 @@ +name: Unit Tests - Backend + +# Triggers: Equivalent to ADO trigger block +on: + pull_request: + branches: + - develop + + +jobs: + run_backend_tests: + name: Run Backend unit tests + uses: ./.github/workflows/template_unit_pytest.yml + # Pass parameters as inputs to the reusable workflow + with: + projectName: Backend # Value defined in original variables + workingDir: app/backend + testsFolderName: tests + # secrets: inherit # Inherit secrets from the parent workflow \ No newline at end of file diff --git a/app/frontend/vite.config.ts b/app/frontend/vite.config.ts index 915b45e..041bc3d 100644 --- a/app/frontend/vite.config.ts +++ b/app/frontend/vite.config.ts @@ -7,7 +7,7 @@ export default defineConfig({ server: { host: true, strictPort: true, - port: 5173 + port: }, test: { globals: true,