Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions .github/workflows/nick.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Nick
on: [push, pull_request]

env:
python-version: '3.13'
POSTGRES_DB: nick
POSTGRES_USER: nick
POSTGRES_PASSWORD: nick
DATABASE_URL: postgresql://nick:nick@localhost:5432/nick

jobs:
nick-embedded:
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
runs-on: ubuntu-latest
name: Plone 7 using Nick as an embedded library
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
node-version: [24.x]
services:
postgres:
image: postgres:17
env:
POSTGRES_DB: nick
POSTGRES_USER: nick
POSTGRES_PASSWORD: nick
ports:
- 5432:5432
options: >-
--health-cmd "pg_isready -U nick -d nick"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v6

- name: Set up Node.js environment
uses: ./.github/actions/node_env_setup
with:
node-version: ${{ matrix.node-version }}

- name: Install the latest version of uv
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ env.python-version }}
enable-cache: false

- name: Generate Cookieplone-based frontend addon
run: |
uvx cookieplone@2.0.0a2 plone7_nick_embedded --no-input

- name: Install generated package
working-directory: project-title
run: |
pnpm dlx mrs-developer missdev --no-config --fetch-https
if [[ "${GITHUB_REF#refs/heads/}" != "seven" ]]; then
(cd core && git fetch --depth 1 origin ${GITHUB_REF#refs/heads/}:${GITHUB_REF#refs/heads/} && git checkout ${GITHUB_REF#refs/heads/})
fi
pnpm i
make build-deps

- name: Bootstrap Nick database
working-directory: project-title
env:
DATABASE_URL: ${{ env.DATABASE_URL }}
POSTGRES_DB: ${{ env.POSTGRES_DB }}
POSTGRES_USER: ${{ env.POSTGRES_USER }}
POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
run: pnpm nick:migrate && pnpm nick:seed

- name: Install Playwright browsers
working-directory: project-title
run: pnpm exec playwright install --with-deps chromium

- name: Create Nick smoke test
working-directory: project-title
run: |
mkdir -p apps/seven/acceptance/tests
cat > apps/seven/acceptance/tests/nick-smoke.test.ts <<'EOF'
import { expect, test } from '../../core/packages/tooling/playwright/test';

test('renders Plone 7 on the homepage', async ({ page }) => {
await page.goto('/');
await expect(page.getByText('Plone 7')).toBeVisible();
});
EOF

- uses: JarvusInnovations/background-action@v1
name: Start generated Seven app
with:
run: |
cd project-title
pnpm build
pnpm start:prod &
wait-on: |
http://localhost:3000
tail: true
log-output-resume: stderr
wait-for: 10m
log-output: stderr,stdout
log-output-if: failure

- name: Run Nick smoke test
working-directory: project-title
env:
DATABASE_URL: ${{ env.DATABASE_URL }}
run: pnpm exec playwright test apps/seven/acceptance/tests/nick-smoke.test.ts --reporter=line

- name: Run Nick checks
working-directory: project-title
env:
DATABASE_URL: ${{ env.DATABASE_URL }}
run: |
make format
make test
Loading