Spun out of the 2026-05-13 pass that got PHPUnit running on GitHub for all the apps that have unit tests (shillinq, decidesk, procest, openbuilt, larpingapp, scholiq, pipelinq). The remaining gaps are all about the Newman / integration suites and one app with no PHP tests.
1. Newman collections aren't CI-compatible — and there's no standard seed path
The shared quality.yml@main Newman job: php occ maintenance:install → enable additional-apps + the app → php -S 0.0.0.0:8080 & → optional newman-seed-command → newman run *.postman_collection.json with --env-var base_url=http://localhost:8080 admin_user=admin admin_password=admin. That works for shillinq and decidesk because their collections (a) use {{baseUrl}} collection-vars that default to http://localhost:8080 + /index.php/apps/... paths, and (b) don't need pre-seeded OpenRegister data.
The others currently have enable-newman: false (each code-quality.yml has a comment) because their collections were written against a local dev environment:
- scholiq — collection hits
localhost:8080/apps/openregister/api/... (no /index.php/ prefix → 404 under the CI PHP built-in server) and assumes the scholiq OpenRegister register/schemas are already seeded. scholiq's <repair-steps> only runs InitializeSettings; it doesn't seed the register.
- softwarecatalog —
tests/magic-mapper-import.postman_collection.json uploads files from hardcoded /var/www/html/custom_apps/openregister/tests/integration/... paths and hits bare /configurations, /registers, /schemas URLs. Neither exists on the CI runner (NC lives under server/apps/, no URL rewrite).
- openbuilt — collections need the
hello-world seed app + the openbuilt/exportJob/application registers. SeedHelloWorld (an install/post-migration repair step) swallows exceptions, so when the OR runtime-schema-API seed path fails in CI the app simply isn't there and every request 404s (then the prerequest scripts JSONError on the 404 body). Re-running the repair via app:disable && app:enable in newman-seed-command didn't help — the OR-integration in SeedHelloWorld needs to be made CI-robust (related: openbuilt#11).
- pipelinq —
tests/newman/pipelinq-api.postman_collection.json (Health Check / Settings / Lead Sources / Prospects / …) doesn't pass against a freshly-installed NC; the CRM endpoints need the OpenRegister registers/schemas seeded. app:disable pipelinq && app:enable pipelinq as newman-seed-command wasn't sufficient.
- procest —
enable-newman: false with a pre-existing note (ZGW compliance tests ~95% failing while the ZGW API is in progress) — out of scope here, just noting it.
Proposal: define a small, reusable seed convention so a collection can declare "I need register X with schemas from lib/Settings/<app>_register.json seeded" and have CI provision it before Newman runs — e.g. a standard php occ openregister:import lib/Settings/<app>_register.json (or whatever the OR import command is) wired as a default newman-seed-command, plus a lint that flags collections using non-CI base URLs / hardcoded /var/www/... paths. Then rewrite each collection above to {{baseUrl}} + /index.php/apps/... and re-flip enable-newman: true.
2. zaakafhandelapp has no PHP test infrastructure
No phpunit/phpunit dev-dependency, no phpunit.xml/phpunit-unit.xml, no tests/Unit|unit|Service|Integration directory, no postman collection — and its composer.json test:unit script points at a non-existent tests/phpunit.xml. So there's literally nothing for the CI PHPUnit job to run (enable-phpunit is correctly off). Needs PHP unit tests written from scratch (a tests/bootstrap.php, a phpunit.xml, the dev-dep, at least a controllers/services smoke layer) before enable-phpunit: true would be meaningful.
3. Flaky CI infra (FYI, not actionable here)
Several composer install steps fail intermittently with Your github oauth token for github.com contains invalid characters: "***" (a masked secret being passed to composer by the runner). It cascade-skips PHPUnit/Newman (those jobs are gated on php-quality passing). Re-runs clear it. Might be worth a runner-config look if it recurs a lot.
Spun out of the 2026-05-13 pass that got PHPUnit running on GitHub for all the apps that have unit tests (shillinq, decidesk, procest, openbuilt, larpingapp, scholiq, pipelinq). The remaining gaps are all about the Newman / integration suites and one app with no PHP tests.
1. Newman collections aren't CI-compatible — and there's no standard seed path
The shared
quality.yml@mainNewman job:php occ maintenance:install→ enableadditional-apps+ the app →php -S 0.0.0.0:8080 &→ optionalnewman-seed-command→newman run *.postman_collection.jsonwith--env-var base_url=http://localhost:8080 admin_user=admin admin_password=admin. That works for shillinq and decidesk because their collections (a) use{{baseUrl}}collection-vars that default tohttp://localhost:8080+/index.php/apps/...paths, and (b) don't need pre-seeded OpenRegister data.The others currently have
enable-newman: false(eachcode-quality.ymlhas a comment) because their collections were written against a local dev environment:localhost:8080/apps/openregister/api/...(no/index.php/prefix → 404 under the CI PHP built-in server) and assumes thescholiqOpenRegister register/schemas are already seeded. scholiq's<repair-steps>only runsInitializeSettings; it doesn't seed the register.tests/magic-mapper-import.postman_collection.jsonuploads files from hardcoded/var/www/html/custom_apps/openregister/tests/integration/...paths and hits bare/configurations,/registers,/schemasURLs. Neither exists on the CI runner (NC lives underserver/apps/, no URL rewrite).hello-worldseed app + theopenbuilt/exportJob/applicationregisters.SeedHelloWorld(an install/post-migration repair step) swallows exceptions, so when the OR runtime-schema-API seed path fails in CI the app simply isn't there and every request 404s (then the prerequest scripts JSONError on the 404 body). Re-running the repair viaapp:disable && app:enableinnewman-seed-commanddidn't help — the OR-integration inSeedHelloWorldneeds to be made CI-robust (related: openbuilt#11).tests/newman/pipelinq-api.postman_collection.json(Health Check / Settings / Lead Sources / Prospects / …) doesn't pass against a freshly-installed NC; the CRM endpoints need the OpenRegister registers/schemas seeded.app:disable pipelinq && app:enable pipelinqasnewman-seed-commandwasn't sufficient.enable-newman: falsewith a pre-existing note (ZGW compliance tests ~95% failing while the ZGW API is in progress) — out of scope here, just noting it.Proposal: define a small, reusable seed convention so a collection can declare "I need register X with schemas from
lib/Settings/<app>_register.jsonseeded" and have CI provision it before Newman runs — e.g. a standardphp occ openregister:import lib/Settings/<app>_register.json(or whatever the OR import command is) wired as a defaultnewman-seed-command, plus a lint that flags collections using non-CI base URLs / hardcoded/var/www/...paths. Then rewrite each collection above to{{baseUrl}}+/index.php/apps/...and re-flipenable-newman: true.2. zaakafhandelapp has no PHP test infrastructure
No
phpunit/phpunitdev-dependency, nophpunit.xml/phpunit-unit.xml, notests/Unit|unit|Service|Integrationdirectory, no postman collection — and itscomposer.jsontest:unitscript points at a non-existenttests/phpunit.xml. So there's literally nothing for the CI PHPUnit job to run (enable-phpunitis correctly off). Needs PHP unit tests written from scratch (atests/bootstrap.php, aphpunit.xml, the dev-dep, at least a controllers/services smoke layer) beforeenable-phpunit: truewould be meaningful.3. Flaky CI infra (FYI, not actionable here)
Several
composer installsteps fail intermittently withYour github oauth token for github.com contains invalid characters: "***"(a masked secret being passed to composer by the runner). It cascade-skips PHPUnit/Newman (those jobs are gated onphp-qualitypassing). Re-runs clear it. Might be worth a runner-config look if it recurs a lot.