Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
0c20716
fix(testing): normalize parallel test tokens
binaryfire Jul 5, 2026
7aad77d
docs: add parallel Redis isolation plan
binaryfire Jul 5, 2026
8de29a2
testing: allocate Redis databases at runtime
binaryfire Jul 5, 2026
5c363e4
testing: clear dotenv values from child test processes
binaryfire Jul 5, 2026
4f69ac7
testbench: isolate package test environments
binaryfire Jul 5, 2026
8dabc42
testbench: isolate cached route files per worker
binaryfire Jul 5, 2026
a1ebb6a
testbench: restore package mode skeleton defaults
binaryfire Jul 5, 2026
0bdb5f2
testbench: ignore components aggregate discovery
binaryfire Jul 5, 2026
97c01e2
di: keep AOP proxy generation source aware
binaryfire Jul 5, 2026
35eabf7
testbench: share skeleton file preservation in command tests
binaryfire Jul 5, 2026
32fcbc5
testbench: mark CLI executions as core
binaryfire Jul 5, 2026
0733192
testing: split framework and package mode test gates
binaryfire Jul 5, 2026
1b03c38
ci: run Testbench package mode suite
binaryfire Jul 5, 2026
5d8915d
docs: document parallel testing ownership
binaryfire Jul 5, 2026
47a4165
testbench: remove leaked app base path channel
binaryfire Jul 5, 2026
13c0b6b
fix(testbench): discover package metadata in test workers
binaryfire Jul 6, 2026
1d5f1c1
feat(server): add serve address options
binaryfire Jul 6, 2026
40e2e7d
test(testbench): dogfood package mode installs
binaryfire Jul 6, 2026
65c40d7
docs(testbench): document package mode follow-ups
binaryfire Jul 6, 2026
3df81e9
fix(testing): address package-mode review follow-ups
binaryfire Jul 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
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@
# REDIS_PORT=6379
# REDIS_PASSWORD=password
# REDIS_DB=1
# REDIS_TEST_DB_MIN=1
# REDIS_TEST_DB_MAX=14
# REDIS_TEST_SECONDARY_DB=15

# Meilisearch Integration Tests
# MEILISEARCH_HOST=127.0.0.1
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/redis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ jobs:
env:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_DB: 0
REDIS_TEST_SECONDARY_DB: 1
run: |
vendor/bin/phpunit tests/Integration/Auth
vendor/bin/phpunit tests/Integration/Cache/Redis
Expand Down Expand Up @@ -116,6 +118,8 @@ jobs:
env:
REDIS_HOST: valkey
REDIS_PORT: 6379
REDIS_DB: 0
REDIS_TEST_SECONDARY_DB: 1
run: |
vendor/bin/phpunit tests/Integration/Auth
vendor/bin/phpunit tests/Integration/Cache/Redis
Expand Down
15 changes: 11 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,14 @@ jobs:
run: |
COMPOSER_MEMORY_LIMIT=-1 composer install --prefer-dist -n -o

- name: Execute tests
run: |
PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --dry-run --diff
vendor/bin/phpunit -c phpunit.xml.dist
- name: Check code style
run: PHP_CS_FIXER_IGNORE_ENV=1 vendor/bin/php-cs-fixer fix --dry-run --diff

- name: Run framework test suite
run: vendor/bin/phpunit -c phpunit.xml.dist

- name: Run Testbench package-mode suite
run: php src/testbench/bin/testbench package:test --parallel tests/Testbench

- name: Run Testbench dogfood package suite
run: composer test:dogfood
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
/docs/.vuepress/.cache
/docs/.vuepress/.temp
/docs/reviews/
/dogfood/testbench-package/.phpunit.cache/
/dogfood/testbench-package/composer.lock
/dogfood/testbench-package/vendor/
/node_modules
/src/*/node_modules
/src/wayfinder/tests/.generated
Expand Down
1 change: 1 addition & 0 deletions .php-cs-fixer.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
->exclude('_archive')
->exclude('_tmp')
->exclude('bin')
->exclude('dogfood/testbench-package/vendor')
->exclude('overrides')
->exclude('src/testbench/workbench/bootstrap/cache')
->exclude('src/testbench/workbench/runtime')
Expand Down
6 changes: 5 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ After porting is complete, run phpstan on the newly ported package and fix error

#### 5. Run the full test suite

**Always use `composer test:parallel`** to run the test suite. This invokes `bin/paratest` via a custom wrapper that configures per-worker isolation. Running `vendor/bin/paratest` directly bypasses this setup and will cause failures.
**Always use `composer test:parallel`** to run the full components test suite. This runs raw ParaTest with Hypervel's parallel testing flag supplied by `phpunit.xml.dist`.

**Always use `composer test:testbench`** after Testbench changes. This runs the scoped Testbench package-mode contract suite through the real `package:test` command.

ParaTest defaults to the machine CPU count when no process count is specified. Redis integration runs need `REDIS_TEST_DB_MIN` / `REDIS_TEST_DB_MAX` to cover the chosen worker count, or an explicit `--processes` / `-p` value that fits the configured range.

Investigate all failures thoroughly — don't assume a failure is caused by the porting work without confirming it. For straightforward fixes (e.g. a missed namespace update), fix and continue. For anything more complex (behavioral changes, test logic issues, unclear root causes), STOP and explain the cause along with your recommended fix for approval.

Expand Down
110 changes: 0 additions & 110 deletions bin/paratest

This file was deleted.

24 changes: 19 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
},
"autoload": {
"psr-4": {
"Workbench\\App\\": "src/testbench/workbench/app/",
"Workbench\\Database\\Factories\\": "src/testbench/workbench/database/factories/",
"Workbench\\Database\\Seeders\\": "src/testbench/workbench/database/seeders/",
"Hypervel\\ApiClient\\": "src/api-client/src/",
"Hypervel\\Contracts\\": "src/contracts/src/",
"Hypervel\\Auth\\": "src/auth/src/",
Expand Down Expand Up @@ -121,12 +118,19 @@
"tests/Database/Fixtures/MigrationCreatorFakeMigration.php"
],
"psr-4": {
"Workbench\\App\\": "src/testbench/workbench/app/",
"Workbench\\Database\\Factories\\": "src/testbench/workbench/database/factories/",
"Workbench\\Database\\Seeders\\": "src/testbench/workbench/database/seeders/",
"Hypervel\\Tests\\": "tests/"
},
"classmap": [
"tests/Validation/Enums.php"
]
},
"bin": [
"src/facade-documenter/facade.php",
"src/testbench/bin/testbench"
],
"require": {
"php": ">=8.4",
"ext-dom": "*",
Expand Down Expand Up @@ -363,7 +367,13 @@
},
"scripts": {
"test": "phpunit",
"test:parallel": "php bin/paratest",
"test:parallel": "paratest",
"test:testbench": "php src/testbench/bin/testbench package:test --parallel tests/Testbench",
"test:dogfood": [
"Composer\\Config::disableProcessTimeout",
"composer --working-dir=dogfood/testbench-package install --prefer-dist -n -o",
"composer --working-dir=dogfood/testbench-package test"
],
"analyse": [
"phpstan analyse",
"phpstan analyse -c phpstan.types.neon.dist"
Expand All @@ -373,13 +383,17 @@
"facade": "php -f src/facade-documenter/facade.php --",
"check": [
"@test",
"@test:testbench",
"@test:dogfood",
"@analyse",
"@lint"
],
"fix": [
"@lint:fix",
"@analyse",
"@test:parallel"
"@test:parallel",
"@test:testbench",
"@test:dogfood"
]
},
"minimum-stability": "dev",
Expand Down
Loading