Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
b04698e
feat: add namespaced message template renderer
vitormattos Aug 4, 2026
36a1311
feat: add namespaced survey field value provider
vitormattos Aug 4, 2026
96829af
refactor: add legacy message renderer wrapper
vitormattos Aug 4, 2026
054ea6c
refactor: add legacy field value provider wrapper
vitormattos Aug 4, 2026
e20c62d
chore: add psr-4 autoload for plugin classes
vitormattos Aug 4, 2026
730fd22
test: extend limesurvey stubs for namespaced helpers
vitormattos Aug 4, 2026
3f60bea
test: allow plugin double to mock template fields
vitormattos Aug 4, 2026
c04a613
test: cover telegram template placeholders
vitormattos Aug 4, 2026
32a9717
test: add survey field value provider coverage
vitormattos Aug 4, 2026
8b96c6f
refactor: move plugin implementation to namespaced class
vitormattos Aug 4, 2026
e9b25de
refactor: add global plugin compatibility wrapper
vitormattos Aug 4, 2026
3961c27
refactor: add native php types where safe
vitormattos Aug 4, 2026
da97876
test: add app runtime stub
vitormattos Aug 4, 2026
655f6fc
test: add plugin base stub
vitormattos Aug 4, 2026
5e5cbfa
test: add yii stub
vitormattos Aug 4, 2026
9352d61
test: add survey stub
vitormattos Aug 4, 2026
f1ca3ef
test: add survey dynamic stub
vitormattos Aug 4, 2026
eab7a7f
test: add formatting options stub
vitormattos Aug 4, 2026
8594d87
test: add survey dao stub
vitormattos Aug 4, 2026
ba4462f
test: add translator stub
vitormattos Aug 4, 2026
9dca7da
test: add view helper stub
vitormattos Aug 4, 2026
aa3902a
test: load split limesurvey stubs
vitormattos Aug 4, 2026
dc15985
test: add plugin double in support
vitormattos Aug 4, 2026
eaa9254
test: add telegram api stub in support
vitormattos Aug 4, 2026
81d59b2
test: mirror plugin unit test layout
vitormattos Aug 4, 2026
95cc579
test: mirror survey unit test layout
vitormattos Aug 4, 2026
e281be4
test: add template renderer unit test
vitormattos Aug 4, 2026
2c17dd7
test: remove legacy flat plugin test
vitormattos Aug 4, 2026
4a67a08
test: remove legacy flat survey test
vitormattos Aug 4, 2026
3ea9320
test: remove legacy plugin test double
vitormattos Aug 4, 2026
5af7aae
test: remove legacy telegram api stub
vitormattos Aug 4, 2026
4d03220
refactor: remove redundant helper requires
vitormattos Aug 4, 2026
d2fb74b
refactor: drop redundant message renderer wrapper
vitormattos Aug 4, 2026
b583890
refactor: drop redundant field value provider wrapper
vitormattos Aug 4, 2026
1670bb1
fix: add checkbox defaults to survey settings
vitormattos Aug 4, 2026
0f870f5
test: enhance plugin double for business rules
vitormattos Aug 4, 2026
994b068
test: focus plugin coverage on business rules
vitormattos Aug 4, 2026
cc02c57
test: strengthen survey field value provider coverage
vitormattos Aug 4, 2026
e45e3bc
test: strengthen message template renderer coverage
vitormattos Aug 4, 2026
02d51f6
feat: add safer telegram message options
vitormattos Aug 4, 2026
5882a87
test: cover imported fork improvements
vitormattos Aug 4, 2026
80c27d7
docs: document telegram placeholders
vitormattos Aug 4, 2026
9ea6319
chore: declare limesurvey 6 compatibility
vitormattos Aug 4, 2026
c11a268
chore: declare limesurvey 7 compatibility
vitormattos Aug 4, 2026
e7b2818
feat: expose template placeholders in settings
vitormattos Aug 4, 2026
9b18133
test: add field map runtime stub
vitormattos Aug 4, 2026
9320eea
test: load field map runtime stub
vitormattos Aug 4, 2026
a3a44f8
test: expose plugin settings in double
vitormattos Aug 4, 2026
da53168
test: cover placeholder help discovery
vitormattos Aug 4, 2026
9f06bb2
fix: stop autoloading test stubs in production
vitormattos Aug 4, 2026
c00b7bf
test: bootstrap PHPUnit from test setup
vitormattos Aug 4, 2026
045c09a
test: add dedicated PHPUnit bootstrap
vitormattos Aug 4, 2026
c80131b
chore: ignore local screenshot tooling artifacts
vitormattos Aug 4, 2026
9e7ea03
docs: add screenshot environment example
vitormattos Aug 4, 2026
c2788c5
chore: add Playwright screenshot manifest
vitormattos Aug 4, 2026
160e9c0
chore: add Playwright lockfile
vitormattos Aug 4, 2026
ba96308
docs: automate screenshot generation with Playwright
vitormattos Aug 4, 2026
d5c74a4
docs: describe screenshot regeneration workflow
vitormattos Aug 4, 2026
d7eeb9c
docs: refresh settings screenshot
vitormattos Aug 4, 2026
5fdd5a5
docs: refresh telegram preview screenshot
vitormattos Aug 4, 2026
30ab1a0
chore: bump Playwright dependency
vitormattos Aug 4, 2026
f55085e
chore: refresh Playwright lockfile
vitormattos Aug 4, 2026
15388dd
Add survey field placeholder catalog provider
vitormattos Aug 4, 2026
82b88da
Add survey field placeholder catalog provider tests
vitormattos Aug 4, 2026
0daa70c
Add default text help builder
vitormattos Aug 4, 2026
d7a69c2
Add default text help builder tests
vitormattos Aug 4, 2026
90e2519
Delegate default text help building
vitormattos Aug 4, 2026
40a3aa4
Add phpunit vendor-bin manifest
vitormattos Aug 4, 2026
f3658fd
Add phpunit vendor-bin lockfile
vitormattos Aug 4, 2026
0152a31
Add php-cs-fixer vendor-bin manifest
vitormattos Aug 4, 2026
d2867f0
Add php-cs-fixer vendor-bin lockfile
vitormattos Aug 4, 2026
a8321e5
Configure PHP tooling scripts
vitormattos Aug 4, 2026
6d6eeec
Update root composer lockfile
vitormattos Aug 4, 2026
032e0e8
Ignore vendor-bin vendors and cs cache
vitormattos Aug 4, 2026
8a6d870
Add PHP CS Fixer configuration
vitormattos Aug 4, 2026
245f27b
Add PHP CS Fixer workflow
vitormattos Aug 4, 2026
0932633
Add PHP lint workflow
vitormattos Aug 4, 2026
cd320f4
Ignore Psalm cache directory
vitormattos Aug 4, 2026
47b9be2
Add Psalm composer script
vitormattos Aug 4, 2026
01d8dd7
Harden plugin helpers for Psalm
vitormattos Aug 4, 2026
7d333fe
Annotate survey field value provider
vitormattos Aug 4, 2026
43d1d65
Use data provider in survey catalog tests
vitormattos Aug 4, 2026
bc86691
Add Dependabot configuration
vitormattos Aug 4, 2026
1e6fde1
Add Psalm workflow
vitormattos Aug 4, 2026
3bdd926
Add screenshot scripts workflow
vitormattos Aug 4, 2026
3515d75
Add Psalm LimeSurvey stubs
vitormattos Aug 4, 2026
6749424
Add Psalm configuration
vitormattos Aug 4, 2026
f26de5d
Add Psalm vendor-bin manifest
vitormattos Aug 4, 2026
95458d3
Add Psalm vendor-bin lockfile
vitormattos Aug 4, 2026
4029528
Update screenshot tooling package manifest
vitormattos Aug 4, 2026
06d8381
Refactor screenshot update entrypoint
vitormattos Aug 4, 2026
b12f37a
Add Telegram preview stylesheet
vitormattos Aug 4, 2026
cf40fa6
Add Telegram preview template
vitormattos Aug 4, 2026
92167ff
Add browser flows for screenshots
vitormattos Aug 4, 2026
b3203a7
Add screenshot configuration module
vitormattos Aug 4, 2026
ced93c3
Add screenshot preview template module
vitormattos Aug 4, 2026
9a17643
Add screenshot runner module
vitormattos Aug 4, 2026
3a30e65
Add screenshot sample data module
vitormattos Aug 4, 2026
b2b0ef8
Add browser flows screenshot tests
vitormattos Aug 4, 2026
8adad9a
Add screenshot config tests
vitormattos Aug 4, 2026
7f96398
Add preview template screenshot tests
vitormattos Aug 4, 2026
1683edf
Add screenshot sample data tests
vitormattos Aug 4, 2026
0274920
Update settings screenshot
vitormattos Aug 4, 2026
fa1ed33
Update screenshot environment example
vitormattos Aug 4, 2026
df60bd7
Refresh README documentation
vitormattos Aug 4, 2026
261cf44
Update Composer dependencies
vitormattos Aug 4, 2026
d8c0dbf
Update Composer lockfile
vitormattos Aug 4, 2026
a72345d
Update settings screenshot
vitormattos Aug 4, 2026
db76cc9
Update npm lockfile
vitormattos Aug 4, 2026
fef4a60
Update screenshot tooling dependencies
vitormattos Aug 4, 2026
4f8fa0d
Remove obsolete LimeSurvey Psalm stub
vitormattos Aug 4, 2026
279cdcd
Simplify Psalm configuration
vitormattos Aug 4, 2026
e9a1819
Improve screenshot browser flows
vitormattos Aug 4, 2026
07ec95f
Enhance screenshot configuration
vitormattos Aug 4, 2026
fd41f85
Refine screenshot runner
vitormattos Aug 4, 2026
d38076e
Expand browser flows screenshot tests
vitormattos Aug 4, 2026
43ddd69
Expand screenshot config tests
vitormattos Aug 4, 2026
53367c6
Adjust FormattingOptions test stub
vitormattos Aug 4, 2026
d5c4943
Adjust PluginBase test stub
vitormattos Aug 4, 2026
1dd895e
Add documentation screenshot workflow
vitormattos Aug 4, 2026
0f62721
Add screenshot check script
vitormattos Aug 4, 2026
3038f52
Add screenshot maintenance guide
vitormattos Aug 4, 2026
af04e3c
Add screenshot diff checker
vitormattos Aug 4, 2026
7708dee
Add screenshot LimeSurvey stack
vitormattos Aug 4, 2026
910d1bf
Add screenshot checker tests
vitormattos Aug 4, 2026
cb659bf
Add Psalm baseline
vitormattos Aug 4, 2026
1219a78
chore: remove redundant env example
vitormattos Aug 5, 2026
35f32a7
ci: fix screenshot workflow triggers
vitormattos Aug 5, 2026
82df9f9
docs: improve screenshot login guidance
vitormattos Aug 5, 2026
367f08b
docs: refresh screenshot maintenance guide
vitormattos Aug 5, 2026
2f4b3d1
fix: retry screenshot login on fresh stack
vitormattos Aug 5, 2026
0df5610
feat: default screenshot config to compose stack
vitormattos Aug 5, 2026
9902553
chore: remove nested screenshot compose file
vitormattos Aug 5, 2026
1b0d9da
test: cover screenshot login retries
vitormattos Aug 5, 2026
87aaa35
test: cover compose-aware screenshot defaults
vitormattos Aug 5, 2026
2d3813d
build: add devcontainer workspace image
vitormattos Aug 5, 2026
9f326e7
build: add devcontainer configuration
vitormattos Aug 5, 2026
3aca593
build: add devcontainer compose override
vitormattos Aug 5, 2026
8cfc758
build: add root LimeSurvey compose stack
vitormattos Aug 5, 2026
1d52c16
style: stabilize preview screenshot fonts
vitormattos Aug 5, 2026
d73434b
docs: refresh telegram preview screenshot
vitormattos Aug 5, 2026
3a352ef
fix: allow preview screenshot drift budget
vitormattos Aug 5, 2026
0877dfe
feat: add per-target screenshot comparison settings
vitormattos Aug 5, 2026
5ec0a27
test: cover screenshot diff ratio tolerance
vitormattos Aug 5, 2026
9a496f1
test: cover per-target screenshot comparison config
vitormattos Aug 5, 2026
da164a5
build: add deterministic preview font packages
vitormattos Aug 5, 2026
715d666
build: lock deterministic preview font packages
vitormattos Aug 5, 2026
7815aba
feat: embed deterministic preview fonts
vitormattos Aug 5, 2026
ae9629f
style: use embedded preview font families
vitormattos Aug 5, 2026
6bade2c
fix: wait for preview fonts before screenshot capture
vitormattos Aug 5, 2026
338c94e
refactor: restore global screenshot comparison rules
vitormattos Aug 5, 2026
ddec6d1
refactor: remove per-target screenshot drift settings
vitormattos Aug 5, 2026
c9316c3
test: remove per-target screenshot config coverage
vitormattos Aug 5, 2026
09d7272
test: cover embedded preview fonts
vitormattos Aug 5, 2026
98d6dd8
docs: refresh deterministic telegram preview screenshot
vitormattos Aug 5, 2026
5a201b6
chore: ignore integration test artifacts
vitormattos Aug 6, 2026
1b347df
build: add disposable limesurvey image
vitormattos Aug 6, 2026
cd6cfc6
build: configure disposable integration stack
vitormattos Aug 6, 2026
5c0368d
fix: add survey plugin settings save endpoint
vitormattos Aug 6, 2026
0e0e26b
test: stub plugin manager runtime access
vitormattos Aug 6, 2026
95628f5
test: stub yii client script registration
vitormattos Aug 6, 2026
cf66fb0
test: cover survey plugin settings save workaround
vitormattos Aug 6, 2026
f47deee
test: define integration composer project
vitormattos Aug 6, 2026
98f57c3
test: lock integration dependencies
vitormattos Aug 6, 2026
fe1ab5a
test: configure behat integration suite
vitormattos Aug 6, 2026
b2e9d44
test: add plugin settings integration scenarios
vitormattos Aug 6, 2026
742c5dd
test: add plugin settings integration context
vitormattos Aug 6, 2026
b74b7e9
ci: add behat integration workflow
vitormattos Aug 6, 2026
c2f68cb
docs: trim integration test instructions
vitormattos Aug 6, 2026
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
16 changes: 16 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
FROM mcr.microsoft.com/devcontainers/php:1-8.4-bookworm

RUN rm -f /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get install -y --no-install-recommends ca-certificates curl gnupg \
&& mkdir -p /etc/apt/keyrings \
&& curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
&& echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_24.x nodistro main" \
> /etc/apt/sources.list.d/nodesource.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends nodejs \
&& npm install -g npm@latest \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
29 changes: 29 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "LSTelegramNotify",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.extend.yml"
],
"service": "workspace",
"runServices": [
"lime-db",
"limesurvey",
"workspace"
],
"workspaceFolder": "/workspaces/LSTelegramNotify",
"shutdownAction": "stopCompose",
"postCreateCommand": "composer install --no-interaction --prefer-dist && npm install",
"customizations": {
"vscode": {
"settings": {
"files.eol": "\n",
"terminal.integrated.defaultProfile.linux": "bash"
},
"extensions": [
"bmewburn.vscode-intelephense-client",
"ms-playwright.playwright",
"EditorConfig.EditorConfig"
]
}
}
}
21 changes: 21 additions & 0 deletions .devcontainer/docker-compose.extend.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
services:
limesurvey:
environment:
PUBLIC_URL: http://limesurvey:8080
BASE_URL: http://limesurvey:8080

workspace:
build:
context: .
dockerfile: .devcontainer/Dockerfile
depends_on:
- limesurvey
volumes:
- .:/workspaces/LSTelegramNotify:cached
working_dir: /workspaces/LSTelegramNotify
command: sleep infinity
environment:
LIMESURVEY_BASE_URL: http://limesurvey:8080
LIMESURVEY_ADMIN_USER: admin
LIMESURVEY_ADMIN_PASSWORD: admin
PLAYWRIGHT_HEADLESS: 'true'
22 changes: 22 additions & 0 deletions .docker/php/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
ARG LIMESURVEY_STACK_IMAGE=martialblog/limesurvey@sha256:4bfa6cac546fc95de6b26dc9afe118814df7941ebdec3f902f18cfbcd1478452
FROM ${LIMESURVEY_STACK_IMAGE}

USER root

ENV COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/tmp/composer-home \
COMPOSER_CACHE_DIR=/tmp/composer-cache \
HOME=/tmp/composer-home

RUN apt-get update \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get install -y --no-install-recommends ca-certificates curl git unzip \
&& mkdir -p "$COMPOSER_HOME" "$COMPOSER_CACHE_DIR" \
&& chmod 1777 /tmp "$COMPOSER_HOME" "$COMPOSER_CACHE_DIR" \
&& git config --system --add safe.directory /var/www/html/plugins/LSTelegramNotify \
&& php -r "copy('https://getcomposer.org/installer', '/tmp/composer-setup.php');" \
&& php /tmp/composer-setup.php --quiet --install-dir=/usr/local/bin --filename=composer \
&& rm /tmp/composer-setup.php \
&& composer --version \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
39 changes: 39 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
version: 2
updates:
- package-ecosystem: "composer"
directory: "/"
target-branch: "main"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
timezone: "UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore(deps)"
groups:
php-minor-and-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"

- package-ecosystem: "npm"
directory: "/"
target-branch: "main"
schedule:
interval: "weekly"
day: "monday"
time: "06:15"
timezone: "UTC"
open-pull-requests-limit: 5
commit-message:
prefix: "chore(deps)"
groups:
javascript-minor-and-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
46 changes: 46 additions & 0 deletions .github/workflows/behat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Behat Integration Tests

on:
pull_request:
push:

permissions:
contents: read

concurrency:
group: behat-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
behat:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Prepare disposable LimeSurvey stack
run: |
docker compose up -d --build --wait
docker compose exec -T --user "$(id -u):$(id -g)" limesurvey composer install --working-dir=/var/www/html/plugins/LSTelegramNotify --no-interaction --prefer-dist --no-dev --no-scripts
docker compose exec -T --user "$(id -u):$(id -g)" limesurvey composer install --working-dir=/var/www/html/plugins/LSTelegramNotify/tests/Integration --no-interaction --prefer-dist

- name: Run Behat integration tests
run: |
docker compose exec -T --user "$(id -u):$(id -g)" limesurvey composer --working-dir=/var/www/html/plugins/LSTelegramNotify/tests/Integration run test:junit

- name: Upload Behat report
if: always()
uses: actions/upload-artifact@v4
with:
name: behat-report
path: tests/Integration/output/report.xml
if-no-files-found: ignore

- name: Print container logs
if: always()
run: docker compose logs --no-color

- name: Stop disposable LimeSurvey stack
if: always()
run: docker compose down -v
97 changes: 97 additions & 0 deletions .github/workflows/documentation-screenshots.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Documentation Screenshots

on:
pull_request:
push:
branches:
- main
workflow_dispatch:

jobs:
screenshot:
runs-on: ubuntu-latest
env:
LIMESURVEY_BASE_URL: http://127.0.0.1:18080
LIMESURVEY_ADMIN_USER: admin
LIMESURVEY_ADMIN_PASSWORD: admin
LIMESURVEY_STACK_HOST_PORT: '18080'
PLAYWRIGHT_HEADLESS: 'true'

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PHP 8.5
uses: shivammathur/setup-php@v2
with:
php-version: '8.5'
tools: composer:v2
coverage: none

- name: Setup Node.js 24
uses: actions/setup-node@v4
with:
node-version: '24'
cache: npm

- name: Install PHP dependencies
run: composer install --no-interaction --prefer-dist --no-scripts

- name: Install Node dependencies
run: npm ci

- name: Install Chromium for Playwright
run: npx playwright install --with-deps chromium

- name: Start LimeSurvey test stack
run: docker compose up -d --force-recreate

- name: Wait for LimeSurvey admin login page
run: >-
curl --fail --silent --show-error
--retry 60
--retry-all-errors
--retry-delay 2
"$LIMESURVEY_BASE_URL/index.php/admin/authentication/sa/login"
> /dev/null

- name: Validate documentation screenshots
id: screenshot_check
continue-on-error: true
run: npm run screenshots:check

- name: Explain screenshot failure
if: steps.screenshot_check.outcome == 'failure'
run: |
cat <<'EOF' >> "$GITHUB_STEP_SUMMARY"
## Documentation screenshots need attention

- Run `composer install --no-interaction --prefer-dist --no-scripts` if your local checkout does not already have `vendor/`.
- To reproduce with the same disposable LimeSurvey stack used in CI, run `LIMESURVEY_STACK_HOST_PORT=18080 docker compose up -d --force-recreate` from the repository root.
- Then run `LIMESURVEY_BASE_URL=http://127.0.0.1:18080 LIMESURVEY_ADMIN_USER=admin LIMESURVEY_ADMIN_PASSWORD=admin npm run screenshots:check`.
- If the screenshots drifted, run `LIMESURVEY_BASE_URL=http://127.0.0.1:18080 LIMESURVEY_ADMIN_USER=admin LIMESURVEY_ADMIN_PASSWORD=admin npm run screenshots:update` and commit the updated PNG files.
- Download the `documentation-screenshot-diffs` artifact from this workflow run for the visual diff.
EOF
echo "::error::Documentation screenshots are out of date. Reproduce with the screenshot compose stack, run npm run screenshots:update, and commit the updated PNG files."

- name: Upload screenshot diff artifacts
if: steps.screenshot_check.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: documentation-screenshot-diffs
path: test-results/screenshots
if-no-files-found: ignore

- name: Show LimeSurvey stack logs on failure
if: failure()
run: |
docker compose ps
docker compose logs --no-color

- name: Stop LimeSurvey test stack
if: always()
run: docker compose down -v

- name: Fail when documentation screenshots are stale
if: steps.screenshot_check.outcome == 'failure'
run: exit 1
29 changes: 29 additions & 0 deletions .github/workflows/lint-php-cs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: PHP CS Fixer

on:
pull_request:
push:

jobs:
lint-php-cs:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PHP 8.5
uses: shivammathur/setup-php@v2
with:
php-version: '8.5'
tools: composer
coverage: none

- name: Validate composer.json
run: composer validate --no-check-publish

- name: Install dependencies
run: composer install --no-interaction --prefer-dist

- name: Check PHP coding style
run: composer run cs:check
23 changes: 23 additions & 0 deletions .github/workflows/lint-php.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: PHP Lint

on:
pull_request:
push:

jobs:
lint-php:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PHP 8.5
uses: shivammathur/setup-php@v2
with:
php-version: '8.5'
tools: composer
coverage: none

- name: Run PHP syntax lint
run: composer run lint
30 changes: 30 additions & 0 deletions .github/workflows/psalm.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Psalm

on:
pull_request:
push:

jobs:
psalm:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PHP 8.5
uses: shivammathur/setup-php@v2
with:
php-version: '8.5'
tools: composer
coverage: none
extensions: dom, simplexml

- name: Validate composer.json
run: composer validate --no-check-publish

- name: Install dependencies
run: composer install --no-interaction --prefer-dist

- name: Run Psalm
run: composer run psalm
25 changes: 25 additions & 0 deletions .github/workflows/screenshot-scripts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Screenshot Script Tests

on:
pull_request:
push:

jobs:
screenshot-script-tests:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js 24
uses: actions/setup-node@v4
with:
node-version: '24'
cache: npm

- name: Install Node dependencies
run: npm ci

- name: Run screenshot automation unit tests
run: npm run screenshots:test
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,10 @@
/vendor/
/vendor-bin/**/vendor/
/tests/Integration/vendor/
/tests/Integration/output/
/node_modules/
/.env
/playwright-report/
/test-results/
/.php-cs-fixer.cache
/.psalm/
Loading
Loading