Skip to content

feat(tests): scaffold Newman collection — 14 capability folders covering 19 critical user stories#17

Merged
rubenvdlinde merged 3 commits into
developmentfrom
feat/newman-collection-scaffold
May 11, 2026
Merged

feat(tests): scaffold Newman collection — 14 capability folders covering 19 critical user stories#17
rubenvdlinde merged 3 commits into
developmentfrom
feat/newman-collection-scaffold

Conversation

@rubenvdlinde
Copy link
Copy Markdown
Contributor

Summary

Replaces the single-request template default in tests/integration/scholiq.postman_collection.json with a structured Postman Collection v2.1.0 covering all 14 capability specs and all 19 critical-priority user stories from intelligence-db.user_stories (app_id=scholiq, priority=critical).

Folders (14 + 1 health check)

Ordered by Phase 1 wedge first, then later phases:

# Folder Requests Critical stories covered
Health Check 1
1 course-management 4 catalog-publish-ooapi
2 enrolment 4 enrolment-studielink-pull, enrolment-digid-identification
3 certification 4 cert-expiry-detection
4 compliance-audit 7 avg-bio-bulk-enrollment, avg-bio-attestation-signed, audit-export-per-regulation, audit-evidence-immutable-log, audit-board-training-evidence, audit-coverage-dashboard
5 dashboard 3 (role-aware surface, no critical stories)
6 nextcloud-app 4 (shell guardrails, no critical stories)
7 assessment-engine 4 assessment-qti-import, assessment-take-online, exam-conflict-detection
8 proctoring 3 assessment-proctoring-config
9 grading-pta 3 vo-cijfer-pta-weighting
10 opp-cycle 4 po-opp-create-from-template
11 bron-rod-exchange 4 admin-rod-error-inline-fix
12 oso-transfer 3 admin-oso-secure-transfer
13 absence-leerplicht 4 vo-absentie-leerplicht-counter
14 identity-federation 4 (asserted across enrolment + opp-cycle + bron-rod via DigiD/eHerkenning)

Total: 14 capability folders, 56 requests, 19/19 critical stories addressed.

Notes

  • All requests are TDD stubs — they assert status code + top-level response keys and will fail until backend endpoints land. That's the signal Hydra builders work against.
  • Collection variables: baseUrl (default http://localhost:8080), adminUser, adminPass.
  • Each request carries Accept: application/json, OCS-APIRequest: true, and a Basic admin:admin Authorization header for OCS compatibility.

Test plan

  • newman run tests/integration/scholiq.postman_collection.json — expect 1 pass (Health Check) and 55 fails (TDD stubs).
  • Confirm Postman desktop opens the file without parse errors.
  • As capability endpoints land, requests progressively turn green.

…ing 19 critical user stories

Replaces the single-request template default with a structured Postman v2.1.0
collection. One folder per capability spec (14 total), 56 requests in total,
covering all 19 critical-priority user stories from intelligence-db
(app_id=scholiq, priority=critical).

Folders ordered by Phase 1 wedge first (course-management, enrolment,
certification, compliance-audit), then dashboard + shell, then assessment
surfaces (assessment-engine, proctoring, grading-pta), then NL-gatekeeper
integrations (opp-cycle, bron-rod-exchange, oso-transfer, absence-leerplicht)
and identity-federation.

Every request asserts the contract the implementation must satisfy (status
code + top-level response keys). All requests are TDD stubs — they will fail
until backend endpoints land. That's the signal Hydra builders work against.

Collection variables: baseUrl, adminUser, adminPass (with Basic admin:admin
fallback header on each request for OCS compatibility).
@github-actions
Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/scholiq @ f2333bf

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 12:08 UTC

Download the full PDF report from the workflow artifacts.

…ints land

The 55 new requests added in this PR are TDD stubs for endpoints that
do not exist yet. Setting them disabled keeps the Newman CI job green
on development while preserving the requests as reference contracts.

Pattern: each Hydra PR that implements a capability un-disables its
corresponding requests in the same commit. CI then validates the
endpoint against the previously-disabled test, turning each request
from disabled (skipped) -> enabled (passing) atomically.

Only request kept enabled: 'Health Check' -> GET {{baseUrl}}/status.php
which validates the Nextcloud installation itself.

Count: 55 disabled, 1 enabled, 56 total. JSON validated via
'python3 -c json.load' (file is well-formed Postman v2.1.0).
@github-actions
Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/scholiq @ fa4e3d0

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 12:22 UTC

Download the full PDF report from the workflow artifacts.

The 'disabled: true' approach in v2.1 Postman doesn't actually skip
requests in Newman v6+ — Newman ignores the flag and runs them all,
failing the CI job.

Cleaner pattern: keep only the active health check in
tests/integration/ (the dir the CI Newman job scans), and move the
14-folder x 56-request TDD scaffold to tests/wedge-scaffolds/
(outside the scan path).

Workflow when Hydra implements a capability:
1. Move its folder from tests/wedge-scaffolds/scholiq-wedge.postman_collection.json
   into tests/integration/scholiq.postman_collection.json
2. Implement the endpoints
3. CI Newman validates the implementation against the previously-
   inert contract

README under tests/wedge-scaffolds/ documents the pattern + folder
order (Phase 1 wedge first, then Phase 2/3 specs).

Critical-story coverage in the scaffold remains 19/19. The active
collection has 1 request (Nextcloud /status.php health check).
@github-actions
Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/scholiq @ 5aaae73

Check PHP Vue Security License Tests
lint
phpcs
phpmd
psalm
phpstan
phpmetrics
eslint
stylelint
composer ✅ 100/100
npm ✅ 215/215
PHPUnit
Newman
Playwright ⏭️

Coverage: 0% (0/3 statements)


Quality workflow — 2026-05-11 12:28 UTC

Download the full PDF report from the workflow artifacts.

@rubenvdlinde rubenvdlinde merged commit cf4f8bd into development May 11, 2026
26 checks passed
@rubenvdlinde rubenvdlinde deleted the feat/newman-collection-scaffold branch May 11, 2026 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant