Skip to content

Merge pull request #8 from plone/usepnpm9 #5

Merge pull request #8 from plone/usepnpm9

Merge pull request #8 from plone/usepnpm9 #5

name: Plone Frontend Add-on CI
on:
push:
paths:
- "frontend_addon/**"
- ".github/workflows/frontend_addon.yml"
workflow_dispatch:
env:
NODE_VERSION: 20.x
PYTHON_VERSION: "3.10"
jobs:
generation:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version:
- "3.10"
- "3.11"
- "3.12"
steps:
# git checkout
- name: Checkout codebase
uses: actions/checkout@v4
# python setup
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
# python install
- name: Install dependencies
run: |
pip install -r requirements.txt
# Test
- name: Run tests
run: |
cd frontend_addon
python -m pytest tests
functional:
runs-on: ubuntu-latest
steps:
- name: Checkout codebase
uses: actions/checkout@v4
- name: Set up Python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: '${{ env.PYTHON_VERSION }}'
cache: 'pip'
- name: Install dependencies
run: |
pip install -r requirements.txt
- name: Generate
working-directory: frontend_addon
run: |
make generate
- name: Use Node.js ${{ env.NODE_VERSION }}
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v3
name: Install pnpm
with:
version: 9
# We don't want to install until later,
# when the cache and Cypress are in place
run_install: false
- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Cache Cypress Binary
id: cache-cypress-binary
uses: actions/cache@v4
with:
path: ~/.cache/Cypress
key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }}
- name: Install generated package
working-directory: frontend_addon/volto-addon
run: |
make install
- name: Run unit tests
working-directory: frontend_addon/volto-addon
run: |
make test-ci
- name: Run i18n tests
working-directory: frontend_addon/volto-addon
run: |
make i18n
- name: Run linting
working-directory: frontend_addon/volto-addon
run: |
make lint
- name: Run formatting
working-directory: frontend_addon/volto-addon
run: |
make format
- name: Run Storybook
working-directory: frontend_addon/volto-addon
run: |
make storybook-build
- name: Start Servers
uses: JarvusInnovations/background-action@v1
with:
working-directory: frontend_addon/volto-addon
run: |
make start-test-acceptance-server-ci &
make start-test-acceptance-frontend &
# your step-level and job-level environment variables are available to your commands as-is
# npm install will count towards the wait-for timeout
# whenever possible, move unrelated scripts to a different step
# to background multiple processes: add & to the end of the command
wait-on: |
http-get://localhost:55001/plone
http://localhost:3000
# IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }}
# See wait-on section below for all resource types and prefixes
tail: true # true = stderr,stdout
# This will allow you to monitor the progress live
log-output-resume: stderr
# Eliminates previosuly output stderr log entries from post-run output
wait-for: 10m
log-output: stderr,stdout # same as true
log-output-if: failure
- name: Run acceptance tests
working-directory: frontend_addon/volto-addon
run: |
make test-acceptance-headless