snapshot of https://github.com/frappe/crm.git (develop, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-18 01:36:01 +05:00
commit db69de1c11
905 changed files with 102713 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
name: Run Frontend Tests
description: Install frontend dependencies and run Vitest with coverage.
inputs:
node-version:
description: Node.js version to use
required: false
default: "24"
enable-coverage:
description: When true, run with coverage collection
required: false
default: "true"
working-directory:
description: Path to the frontend directory
required: false
default: "frontend"
outputs:
coverage-path:
description: Path to the generated lcov coverage file
value: ${{ steps.set-output.outputs.coverage-path }}
runs:
using: composite
steps:
- name: Install dependencies
shell: bash
working-directory: ${{ inputs.working-directory }}
run: yarn install --frozen-lockfile
- name: Run tests (with coverage)
if: inputs.enable-coverage == 'true'
shell: bash
working-directory: ${{ inputs.working-directory }}
run: yarn test:coverage
- name: Run tests (without coverage)
if: inputs.enable-coverage != 'true'
shell: bash
working-directory: ${{ inputs.working-directory }}
run: yarn test:run
- name: Set coverage output path
id: set-output
shell: bash
run: echo "coverage-path=${{ inputs.working-directory }}/coverage/lcov.info" >> "$GITHUB_OUTPUT"

View File

@@ -0,0 +1,28 @@
name: Publish Coverage to Codecov
description: Upload downloaded coverage artifacts to Codecov.
inputs:
name:
description: Coverage upload name in Codecov
required: false
default: "MariaDB"
token:
description: Codecov upload token
required: true
fail-ci-if-error:
description: Fail workflow if Codecov upload fails
required: false
default: "true"
verbose:
description: Enable verbose Codecov logging
required: false
default: "true"
runs:
using: composite
steps:
- name: Upload coverage data
uses: codecov/codecov-action@v4
with:
name: ${{ inputs.name }}
token: ${{ inputs.token }}
fail_ci_if_error: ${{ inputs.fail-ci-if-error }}
verbose: ${{ inputs.verbose }}

View File

@@ -0,0 +1,42 @@
name: Run CRM Server Tests
description: Execute bench tests for the CRM app with optional coverage collection.
inputs:
bench-path:
description: Absolute path to the bench directory
required: false
default: "/home/runner/frappe-bench"
site:
description: Bench site on which to run tests
required: false
default: "test_site"
app:
description: App to test
required: false
default: "crm"
enable-coverage:
description: When true, include coverage flag during test execution
required: false
default: "true"
type:
description: Bench command type environment variable
required: false
default: "server"
ci-build-id:
description: CI build identifier propagated to bench commands
required: false
runs:
using: composite
steps:
- name: Run Tests
shell: bash
working-directory: ${{ inputs.bench-path }}
env:
TYPE: ${{ inputs.type }}
CI_BUILD_ID: ${{ inputs.ci-build-id }}
run: |
bench --site "${{ inputs.site }}" set-config allow_tests true
if [ "${{ inputs.enable-coverage }}" = "true" ]; then
bench --site "${{ inputs.site }}" run-tests --app "${{ inputs.app }}" --coverage
else
bench --site "${{ inputs.site }}" run-tests --app "${{ inputs.app }}"
fi

View File

@@ -0,0 +1,95 @@
name: Setup Server Environment
description: Prepare Python, Node, caching, and bench prerequisites for CRM server tests.
inputs:
python-version:
description: Python version to install
required: false
default: "3.14"
node-version:
description: Node version to install
required: false
default: "24"
type:
description: Bench install type passed to install script
required: false
default: "server"
install-erpnext:
description: When "true", fetch and install erpnext alongside crm
required: false
default: "false"
frappe-branch:
description: Frappe (and erpnext) branch to install and test against
required: false
default: "develop"
runs:
using: composite
steps:
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}
- name: Check for valid Python & merge conflicts
shell: bash
run: |
python -m compileall -f "${GITHUB_WORKSPACE}"
if grep -lr --exclude-dir=node_modules "^<<<<<<< " "${GITHUB_WORKSPACE}"; then
echo "Found merge conflicts"
exit 1
fi
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: ${{ inputs.node-version }}
check-latest: true
- name: Install Yarn
shell: bash
run: npm install -g yarn
- name: Add to hosts file
shell: bash
run: echo "127.0.0.1 test_site" | sudo tee -a /etc/hosts
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Cache node modules
uses: actions/cache@v4
env:
cache-name: cache-node-modules
with:
path: ~/.npm
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: echo "dir=$(yarn cache dir)" >> "${GITHUB_OUTPUT}"
- name: Cache yarn
uses: actions/cache@v4
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install bench dependencies
shell: bash
env:
TYPE: ${{ inputs.type }}
INSTALL_ERPNEXT: ${{ inputs.install-erpnext }}
FRAPPE_BRANCH: ${{ inputs.frappe-branch }}
run: bash ${GITHUB_WORKSPACE}/.github/helper/install.sh

View File

@@ -0,0 +1,18 @@
name: Upload Coverage Artifact
description: Persist coverage artifacts produced during CRM server testing.
inputs:
artifact-name:
description: Name assigned to the uploaded artifact
required: false
default: "coverage-server"
coverage-path:
description: Path to the coverage XML or directory to upload
required: true
runs:
using: composite
steps:
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact-name }}
path: ${{ inputs.coverage-path }}