Initialize fork and rebrand app to event_manager
CI / Server (push) Has been cancelled
Linters / Frappe Linter (push) Has been cancelled
Linters / Vulnerable Dependency Check (push) Has been cancelled
UI Tests / Playwright E2E Tests (push) Has been cancelled

This commit is contained in:
2026-05-11 09:56:57 +02:00
parent f82bb803ac
commit 786cbc724f
500 changed files with 41152 additions and 2 deletions
+108
View File
@@ -0,0 +1,108 @@
name: CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: main-event_manager-${{ github.event.number }}
cancel-in-progress: true
jobs:
tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
name: Server
services:
redis-cache:
image: redis:alpine
ports:
- 13000:6379
redis-queue:
image: redis:alpine
ports:
- 11000:6379
mariadb:
image: mariadb:10.6
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v3
- name: Find tests
run: |
echo "Finding tests"
grep -rn "def test" > /dev/null
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.14'
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 24
check-latest: true
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml', '**/setup.py', '**/setup.cfg') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: 'echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT'
- uses: actions/cache@v4
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install MariaDB Client
run: |
sudo apt update
sudo apt-get install mariadb-client
- name: Setup
run: |
pip install frappe-bench
bench init --skip-redis-config-generation --skip-assets --python "$(which python)" ~/frappe-bench
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
- name: Install
working-directory: /home/runner/frappe-bench
run: |
bench get-app event_manager $GITHUB_WORKSPACE
bench get-app payments
bench setup requirements --dev
bench new-site --db-root-password root --admin-password admin test_site
bench --site test_site install-app event_manager
bench build
env:
CI: 'Yes'
- name: Run Tests
working-directory: /home/runner/frappe-bench
run: |
bench --site test_site set-config allow_tests true
bench --site test_site run-tests --app event_manager
env:
TYPE: server
+63
View File
@@ -0,0 +1,63 @@
name: Linters
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
linter:
name: 'Frappe Linter'
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
cache: pip
- uses: pre-commit/action@v3.0.0
- name: Download Semgrep rules
run: git clone --depth 1 https://github.com/frappe/semgrep-rules.git frappe-semgrep-rules
- name: Run Semgrep rules
run: |
pip install semgrep
semgrep ci --config ./frappe-semgrep-rules/rules --config r/python.lang.correctness
deps-vulnerable-check:
name: 'Vulnerable Dependency Check'
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/checkout@v4
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/*requirements.txt', '**/pyproject.toml', '**/setup.py') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Install and run pip-audit
run: |
pip install pip-audit
cd ${GITHUB_WORKSPACE}
pip-audit --desc on .
+74
View File
@@ -0,0 +1,74 @@
name: PR Title Check
on:
pull_request:
types:
- opened
- reopened
- synchronize
- edited
permissions:
pull-requests: write
jobs:
validate-pr-title:
runs-on: ubuntu-slim
steps:
- name: Validate PR title
id: validate
uses: amannn/action-semantic-pull-request@v6.1.1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
with:
# Default types from: https://github.com/commitizen/conventional-commit-types
requireScope: false
wip: false
- name: Print Failure Documentation
if: steps.validate.outcome == 'failure'
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: |
echo "## ❌ PR Title Validation Failed"
echo ""
echo "**Current title:** \`$PR_TITLE\`"
echo ""
echo "Use a conventional commit style so we can keep a clear history. Fix it like this:"
echo ""
echo "### 📋 Format"
echo ""
echo "\`type: description\` or \`type(scope): description\`"
echo ""
echo "### 🏷️ Allowed types"
echo ""
echo "| Type | Use for |"
echo "|----------|--------|"
echo "| feat | New feature or user-facing change |"
echo "| fix | Bug fix |"
echo "| docs | Documentation only |"
echo "| style | Formatting, no logic change |"
echo "| refactor | Code change (no new feature or bug fix) |"
echo "| perf | Performance improvement |"
echo "| test | Adding or updating tests |"
echo "| build | Build system or dependencies |"
echo "| ci | CI configuration |"
echo "| chore | Other (maintenance, tooling) |"
echo ""
echo "### 🎯 Examples"
echo ""
echo "- \`feat: add user authentication\`"
echo "- \`feat(api): add payment endpoint\`"
echo "- \`fix: resolve login timeout\`"
echo "- \`chore: update Python dependencies\`"
echo ""
echo "### ❌ Fix these mistakes"
echo ""
echo "- \`Add user login\` → \`feat: add user authentication\`"
echo "- \`Fixed the bug\` → \`fix: resolve checkout error\`"
echo "- \`feat:add feature\` → \`feat: add feature\` (space after colon)"
echo ""
echo "---"
echo "Edit the PR title and this check will re-run automatically."
exit 1
+41
View File
@@ -0,0 +1,41 @@
name: Dashboard TypeScript
on:
push:
branches:
- develop
paths:
- "dashboard/**"
- ".github/workflows/typecheck.yml"
pull_request:
paths:
- "dashboard/**"
- ".github/workflows/typecheck.yml"
concurrency:
group: typecheck-event_manager-${{ github.event.number || github.sha }}
cancel-in-progress: true
jobs:
typecheck:
name: TypeScript
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "24"
cache: "yarn"
cache-dependency-path: dashboard/yarn.lock
- name: Install dependencies
working-directory: dashboard
run: yarn install --frozen-lockfile
- name: Type check
working-directory: dashboard
run: yarn typecheck
+169
View File
@@ -0,0 +1,169 @@
name: UI Tests
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
concurrency:
group: ui-tests-event_manager-${{ github.event.number || github.ref }}
cancel-in-progress: true
jobs:
ui-tests:
runs-on: ubuntu-latest
timeout-minutes: 60
name: Playwright E2E Tests
services:
redis-cache:
image: redis:alpine
ports:
- 13000:6379
redis-queue:
image: redis:alpine
ports:
- 11000:6379
mariadb:
image: mariadb:10.6
env:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
options: --health-cmd="mariadb-admin ping" --health-interval=5s --health-timeout=2s --health-retries=3
steps:
- name: Clone
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 24
check-latest: true
- name: Add to Hosts
run: echo "127.0.0.1 event_manager.test" | 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', '**/setup.py', '**/setup.cfg') }}
restore-keys: |
${{ runner.os }}-pip-
${{ runner.os }}-
- name: Get yarn cache directory path
id: yarn-cache-dir-path
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: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: ${{ runner.os }}-playwright-${{ hashFiles('**/package.json') }}
restore-keys: |
${{ runner.os }}-playwright-
- name: Install MariaDB Client
run: |
sudo apt update
sudo apt-get install mariadb-client
- name: Setup Bench
run: |
pip install frappe-bench
bench init --skip-redis-config-generation --skip-assets --python "$(which python)" ~/frappe-bench
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL character_set_server = 'utf8mb4'"
mariadb --host 127.0.0.1 --port 3306 -u root -proot -e "SET GLOBAL collation_server = 'utf8mb4_unicode_ci'"
- name: Install event_manager
working-directory: /home/runner/frappe-bench
run: |
bench get-app payments
bench get-app event_manager $GITHUB_WORKSPACE
bench setup requirements --dev
bench new-site --db-root-password root --admin-password admin event_manager.test
bench --site event_manager.test install-app event_manager
bench build
env:
CI: "Yes"
- name: Configure Site for UI Tests
working-directory: /home/runner/frappe-bench
run: |
bench --site event_manager.test set-config allow_tests true
bench --site event_manager.test set-config host_name "http://event_manager.test:8000"
- name: Create Test User
working-directory: /home/runner/frappe-bench
run: bench --site event_manager.test add-user testuser@event_manager.test --first-name Test --last-name User --password Test@123 --add-role "System Manager"
- name: Start Frappe Server
working-directory: /home/runner/frappe-bench
run: |
# Disable watch and schedule to reduce resource usage
sed -i 's/^watch:/# watch:/g' Procfile
sed -i 's/^schedule:/# schedule:/g' Procfile
# Start bench in background
bench start &> bench_start.log &
# Wait for server to be ready
echo "Waiting for Frappe server to start..."
timeout 60 bash -c 'until curl -s http://event_manager.test:8000 > /dev/null; do sleep 2; done'
echo "Frappe server is ready!"
- name: Install Playwright
run: |
npm install
npx playwright install --with-deps chromium
- name: Run Playwright Tests
run: npx playwright test
env:
BASE_URL: http://event_manager.test:8000
FRAPPE_USER: testuser@event_manager.test
FRAPPE_PASSWORD: Test@123
- name: Upload Playwright Report
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-report
path: playwright-report/
retention-days: 7
- name: Upload Test Results
uses: actions/upload-artifact@v4
if: failure()
with:
name: test-results
path: test-results/
retention-days: 7
- name: Show Bench Logs on Failure
if: failure()
working-directory: /home/runner/frappe-bench
run: |
echo "=== Bench Start Log ==="
cat bench_start.log || true
echo ""
echo "=== Frappe Logs ==="
cat logs/*.log || true