This changelog references the relevant changes (bug and security fixes) done to orchestra/testbench-core
.
- Added ability to detect Workbench namespace via
Orchestra\Testbench\Workbench\Workbench::detectNamespace()
method. - Added ability to detect the default user model via
Orchestra\Testbench\Workbench\Workbench::applicationUserModel()
method. - Added support for authentication routes within Workbench by configurating
workbench.auth
config totrue
.
- Testbench Dusk integration improvements:
- Refactor
Orchestra\Testbench\Bootstrap\LoadConfiguration
andOrchestra\Testbench\Bootstrap\LoadConfigurationWithWorkbench
to allow being extended by Testbench Dusk. - Refactor
Orchestra\Testbench\Console\Commander
.
- Refactor
- Add multiple environment variables to Laravel 10 skeleton's configuration files based on changes made for Laravel 11.
- Add
$tty
parameter toOrchestra\Testbench\remote()
function.
Released: 2024-11-18
- Added
Orchestra\Testbench\Foundation\Bootstrap\DeleteVendorSymlink
class. - Added
Orchestra\Testbench\Concerns\InteractsWithMockery
trait. - Added
--database
option topackage:create-sqlite-db
command. - Added
--database
and--all
options topackage:drop-sqlite-db
command. - Added
Orchestra\Testbench\php_binary()
function. - Allows
laravel/serializable-closure
2.
- Change
resolveApplicationResolvingCallback()
method visibility fromprivate
toprotected
.
Released: 2024-10-25
- Ensure database directory exists when running
package:create-sqlite-db
. - Allow configuring
PHP_CLI_SERVER_WORKERS
via Composer Script.
Released: 2024-10-24
- Improves
CTRL+C
andCTRL+BREAK
supports on Windows withoutpcntl
extension. Orchestra\Testbench\Foundation\Console\Actions\GeneratesFile
should be able to handle$from
and$to
when given asfalse
ornull
.
Released: 2024-10-06
- Prevent seeder from being executed when
shouldSeed()
exists and returnfalse
.
Released: 2024-10-05
- Listen to
SIGHUP
,SIGUSR1
, andSIGUSR2
signals via Testbench CLI.
- Fixes Testbench CLI signals via
serve
command to reset published.env
andtestbench.yaml
.
Released: 2024-09-24
- Fixes compatibility with PHPUnit 10.3.
Released: 2024-09-23
- Added
markTestSkippedWhen()
andmarkTestSkippedUnless()
assertion helper to conditionally handlemarkTestSkipped()
. - Added
Orchestra\Testbench\default_migration_path()
helper function. - Added
Orchestra\Testbench\laravel_vendor_exists()
helper function. - Allows TestCase to inherit Attributes defined on parent TestCase by @BlackLanzer in #233.
- Allow Testbench to delete
vendor
symlink directory if it was created while running tests.
- Fixes
view.paths
configuration not being updated to includeworkbench/resources/views
due to IoC booting sequence.
- Deprecated
Orchestra\Testbench\laravel_migration_path()
, usedefault_migration_path()
instead.
Released: 2024-08-26
- Added
artisan
binary to Laravel skeleton. - Added
Orchestra\Testbench\join_paths()
function. - Added
Orchestra\Testbench\Attributes\UsesVendor
attribute class. - Added
defineStashRoutes()
method to register adhoc route for test.
- Improvements to
Orchestra\Testbench\default_skeleton_path()
,Orchestra\Testbench\package_path()
, andOrchestra\Testbench\workbench_path()
usage based on newOrchestra\Testbench\join_paths()
function.
Released: 2024-08-14
- Update
Orchestra\Testbench\Foundation\Console\Actions\GeneratesFile
to remove.gitkeep
file when directory contain one or more files. - Code Improvements.
Released: 2024-07-19
- Fixes
InteractsWithPublishedFiles
should only flush published files withindatabase/migrations
directory.
Released: 2024-07-13
- Added new attributes:
Orchestra\Testbench\Attributes\ResolvesLaravel
Orchestra\Testbench\Attributes\UsesFrameworkConfiguration
- Allows to discover
factories
using Workbench to mapWorkbench\App\Models
toWorkbench\Database\Factories
classes. - Allows to auto discover console command classes from
workbench/app/Console/Commands
.
- Implements
JsonSerializable
toOrchestra\Testbench\Foundation\UndefinedValue
. - Update skeleton to use
workbench
as default environment value. - Allow
Orchestra\Testbench\Attributes\Define
andOrchestra\Testbench\Attributes\DefineEnvironment
to be used on the class level by @danjohnson95
- Ensure
usesTestingFeature()
attribute registration is loaded before class attributes instead of method attributes.
Released: 2024-06-26
- Fixes
overrideApplicationAliases()
andoverrideApplicationProviders()
unable to override packages aliases or providers.
Released: 2024-06-04
- Fixes
Orchestra\Testbench\Workench\Workbench::applicationExceptionHandler()
usage to detectWorkbench\App\Exceptions\Handler
class.
Released: 2024-06-01
- Fixes
Orchestra\Testbench\Attributes\RequiresLaravel
attribute usage.
Released: 2024-05-23
- Utilise
Orchestra\Testbench\package_path()
function instead ofTESTBENCH_WORKING_PATH
constant.
Released: 2024-05-21
- Uses
TESTBENCH_WORKING_PATH
from environment variable before fallback togetcwd()
. - PHPStan Improvements.
Released: 2024-04-21
- Backport fixes to routing registration using macro with Workbench.
Released: 2024-04-16
- Fixes
serve
command.
Released: 2024-04-13
- Allows
Orchestra\Testbench\remote
to accept$env
with eitherarray
orstring
. - Includes
TESTBENCH_PACKAGE_REMOTE=true
when running command usingOrchestra\Testbench\remote
.
- Fixes
runningInUnitTests()
returningtrue
when not running tests via Testbench CLI.
Released: 2024-04-08
- Flush Static Improvements.
- Revert setting
workbench
environment variable when Testbench CLI is used outside of testing.
Released: 2024-04-05
- Fixes
runningInUnitTests()
returningtrue
when not running tests via Testbench CLI.
Released: 2024-03-25
- Fixes
RefreshDatabase
to be executed ontearDown()
only limited when ad-hoc migrations was added during test.
Released: 2024-03-19
- Run
ResetRefreshDatabaseState
viatearDownTheTestEnvironmentUsingTestCase()
method.
- Fixes
beforeApplicationDestroyed()
usage onloadLaravelMigrations()
method.
Released: 2024-03-19
- Fixes
RefreshDatabase
usage does not reset the database migrations between tests.
Released: 2024-03-18
- Check against
RefreshDatabaseState::$migrated
andRefreshDatabaseState::$lazilyRefreshed
before loading migration paths to the instance ofmigrator
.
Released: 2024-03-15
- Fixes
class_implements(): Class AllowDynamicProperties does not exist and could not be loaded
error on PHP 8.1 and lower.
Released: 2024-03-12
- Added
Orchestra\Testbench\Attributes\RequiresLaravel
attribute. - Added
Orchestra\Testbench\load_migration_paths()
function. - Added
usesRefreshDatabaseTestingConcern()
helper method toOrchestra\Testbench\Concerns\InteractsWithTestCase
trait.
- Validate
MYSQL_*
,MSSQL_*
,SQLITE_*
andPOSTGRES_*
environment variables before trying to override the configuration values.
Released: 2024-02-22
- Fixes
Orchestra\Testbench\Attributes\ResetRefreshDatabaseState
attribute declaration to onlyAttribute::TARGET_CLASS
.
Released: 2024-02-21
- Added
Orchestra\Testbench\Foundation\Env::has()
method. - Added
Orchestra\Testbench\once()
function.
- Allow passing
$command
toOrchestra\Testbench\remote()
function usingarray
instead of juststring
. - Allow to following functions to accept array of paths:
Orchestra\Testbench\default_skeleton_path()
Orchestra\Testbench\package_path()
Orchestra\Testbench\workbench_path()
Released: 2024-01-22
- Support nested configuration files.
- Fixes issue with Livewire testing where calling
$router->getRoutes()->refreshActionLookups()
caused tests to fail.
Released: 2024-01-19
- Added
Orchestra\Testbench\Attributes\WithImmutableDates
attribute to forceIlluminate\Support\Date
to useCarbon\CarbonImmutable
. - Added following helper functions:
Orchestra\Testbench\default_skeleton_path
Orchestra\Testbench\refresh_router_lookups
Released: 2024-01-10
- Flush error and exception handlers between tests using
Orchestra\Testbench\Bootstrap\HandleExceptions::forgetApp()
for PHPUnit 10.
- Run
route:cache
usingOrchestra\Testbench\remote
function. - Add following traits to
setUpTheTestEnvironmentTraitToBeIgnored
method:Orchestra\Testbench\Concerns\InteractsWithPest
Orchestra\Testbench\Concerns\InteractsWithTestCase
Released: 2023-12-28
- Added
Orchestra\Testbench\Features\TestingFeature
as replacement toHandlesTestingFeature
trait. - Added support for
LOG_DEPRECATIONS_WHILE_TESTING
(default totrue
) environment variables. - Add following interfaces for Attribute handling:
Orchestra\Testbench\Contracts\Attributes\AfterAll
Orchestra\Testbench\Contracts\Attributes\AfterEach
Orchestra\Testbench\Contracts\Attributes\BeforeAll
Orchestra\Testbench\Contracts\Attributes\BeforeEach
- Bump minimum
laravel/framework
to10.39.0
. - Refactor
Orchestra\Testbench\Concerns\InteractsWithPHPUnit
. - Utilise
Illuminate\Filesystem\join_paths
function.
- Deprecate
Orchestra\Testbench\Concerns\HandlesTestingFeature
trait.
Released: 2023-12-19
- Added
Orchestra\Testbench\Attributes\RequiresEnv
attribute to force an environment variables to be required for the test. - Added
Orchestra\Testbench\Attributes\WithConfig
attribute add a configuration value for the test. - Added
Orchestra\Testbench\Attributes\WithEnv
attribute add an environment variable value for the test. - Added
set()
andforget()
methods toOrchestra\Testbench\Foundation\Env
. - Improves support for testing with Pest using
orchestra/pest-plugin-testbench
.
- Bump minimum
laravel/framework
to10.37.3
.
Released: 2023-12-06
- Testbench CLI should handle
SIGTERM
andSIGQUIT
signal.
Released: 2023-12-06
- Supports Workbench
discovers.components
configuration.
- Sync
view.paths
configuration when Workbench discover views.
Released: 2023-12-06
- Update skeleton to match v10.2.10.
Released: 2023-12-04
- Add support for PHPUnit 10.5.
Released: 2023-12-04
- Added
Orchestra\Testbench\Attributes\ResetRefreshDatabaseState
attribute to force refreshing database before executing the test. - Added
Orchestra\Testbench\Foundation\Bootstrap\SyncDatabaseEnvironmentVariables
bootstrap class and allow database collation to be configurable via environment variables usingMYSQL_COLLATION
,POSTGRES_COLLATION
andMSSQL_COLLATION
.
- Refactor handling attributes:
- Add ability to handle actions directly from the attribute.
- Add ability to set
defer
when usingOrchestra\Testbench\Attributes\DefineDatabase
.
- Add
#[Override]
attribute to relevant methods, this requiresymfony/polyfill-php83
as backward compatibility for PHP 8.1 and 8.2.
- Deprecate
Orchestra\Testbench\Concerns\Database\HandlesConnections
trait.
Released: 2023-11-21
- Added
encode()
method toOrchestra\Testbench\Foundation\Env
class.
- Fixes registering discovery paths when the path doesn't exist.
Released: 2023-11-10
- Move
$setupHasRun
property toOrchestra\Testbench\Concerns\ApplicationTestingHooks
.
Released: 2023-11-10
- Added new PHPUnit Attribute to run the default
laravel
,cache
,notifications
,queue
andsession
database migrations usingOrchestra\Testbench\Attributes\WithMigration
. - Added
Orchestra\Testbench\defined_environment_variables()
function. - Added
Orchestra\Testbench\laravel_migration_path()
function. - Added
Orchestra\Testbench\remote()
function.
- Mark the following classes as
@api
:Orchestra\Testbench\Foundation\Application
Orchestra\Testbench\Foundation\Config
Orchestra\Testbench\Foundation\Env
- Cache results from
Orchestra\Testbench\PHPUnit\AttributeParser
.
Released: 2023-11-02
- Update skeleton to match v10.2.8.
Released: 2023-10-31
- Update skeleton to match v10.2.7.
Released: 2023-10-30
- Added
Orchestra\Testbench\Concerns\ApplicationTestingHooks
concern based fromOrchestra\Testbench\Concerns\Testing
.
Released: 2023-10-24
- Fixes compatibility with Testbench Dusk when handling PHPUnit Attributes.
Released: 2023-10-24
- Added
Orchestra\Testbench\Workbench\Workbench
to handle integrations with Workbench. - Added
Orchestra\Testbench\Foundation\Config::getWorkbenchDiscoversAttributes()
method. - Added
Orchestra\Testbench\Concerns\Database\InteractsWithSqliteDatabaseFile
trait. - Added following methods to
Orchestra\Testbench\Foundation\Application
:make()
makeFromConfig()
createFromConfig()
- Added support for PHPUnit Attributes as replacements to Annotations:
@define-env
and@environment-setup
will be replaced withOrchestra\Testbench\Attributes\DefineEnvironment
.@define-db
will be replaced withOrchestra\Testbench\Attributes\DefineDatabase
.@define-route
will be replaced withOrchestra\Testbench\Attributes\DefineRoute
.
- Fixes generating path using
Orchestra\Testbench\package_path()
andOrchestra\Testbench\workbench_path()
.
- Deprecate
Orchestra\Testbench\Concerns\WithFactories
.
- Remove
Orchestra\Testbench\Foundation\Bootstrap\StartWorkbench
, useOrchestra\Testbench\Workbench\Workbench::start()
orOrchestra\Testbench\Workbench\Workbench::startWithProviders()
instead.
Released: 2023-10-09
- Code refactors.
- Mark
Orchestra\Testbench\Bootstrap\LoadEnvironmentVariables
class as@internal
.
Released: 2023-09-25
- Add
Orchestra\Testbench\Foundation\Config::cacheFromYaml()
to cachetestbench.yaml
for testing environment. - Code refactors.
Released: 2023-09-25
- Added
cachedConfigurationForWorkbench()
toOrchestra\Testbench\Concern\InteractsWithWorkbench
trait. - Add the ability to read
TESTBENCH_WORKING_PATH
from environment variables for Testbench Dusk usage. - Supports Workbench
discovers
configuration. - Add the ability to properly forward Environment Variables.
- Add
usesSqliteInMemoryDatabaseConnection
toOrchestra\Testbench\Concerns\HandlesDatabases
trait.
Released: 2023-09-25
- Fixes deferring Laravel Migrations when TestCase uses
Illuminate\Foundation\Testing\RefreshDatabase
.
Released: 2023-09-21
- Allow deferring Laravel Migrations when TestCase also uses
Illuminate\Foundation\Testing\RefreshDatabase
orIlluminate\Foundation\Testing\LazilyRefreshDatabase
.
Released: 2023-09-19
- Fixes
cleanUpPublishedFiles
to assign path frombase_path()
before usingglob
.
Released: 2023-09-19
- Added methods to
Orchestra\Testbench\Concerns\InteractsWithPublishedFiles
trait:assertMigrationFileExists
.assertMigrationFileNotExists
.
- Rename methods in
Orchestra\Testbench\Concerns\InteractsWithPublishedFiles
trait:cleanUpFiles
tocleanUpPublishedFiles
.cleanUpMigrationFiles
tocleanUpPublishedMigrationFiles
.getMigrationFile
tofindFirstPublishedMigrationFile
.
Released: 2203-09-14
- Allow passing wildcard filenames to
Orchestra\Testbench\Concerns\InteractsWithPublishedFiles::$files
property. - Allow using custom directory on
assertMigrationFileContains
andassertMigrationFileNotContains
fromOrchestra\Testbench\Concerns\InteractsWithPublishedFiles
trait. - Allow to use
Orchestra\Testbench\Foundation\Config
onOrchestra\Testbench\container
helper function.
Released: 2023-09-09
- Prevents loading Laravel Migrations using
Orchestra\Testbench\Concerns\WithLaravelMigrations
when TestCase class also usesOrchestra\Testbench\Concerns\WithWorkbench
withworkbench.install=true
configuration.
Released: 2023-08-29
- Add ability to automatically run default Laravel migrations using
Orchestra\Testbench\Concerns\WithLaravelMigrations
. - Add Console Actions classes:
Orchestra\Testbench\Foundation\Console\Actions\DeleteFiles
Orchestra\Testbench\Foundation\Console\Actions\DeleteDirectories
Orchestra\Testbench\Foundation\Console\Actions\EnsureDirectoryExists
Orchestra\Testbench\Foundation\Console\Actions\GeneratesFile
Released: 2023-08-22
- Allow using
$model
property override when extendingOrchestra\Testbench\Factories\UserFactory
.
Released: 2023-08-19
- Added new
workbench.welcome
configuration option.
- Allow
testbench.yaml
configuration fallback similar to.env
. - Utilise
Illuminate\Support\LazyCollection
.
Released: 2023-08-18
- Skip loading
Orchestra\Workbench\WorkbenchServiceProvider
when applyingOrchestra\Testbench\Concerns\WithWorkbench
.
Released: 2023-08-17
- Fixes configuration leak when running some TestCase without
Orchestra\Testbench\Concerns\WithWorkbench
.
Released: 2023-08-17
- Disable Composer default timeout when using
serve
command under Composer's script.
- Remove
Orchestra\Testbench\Workbench
classes and functionality is now provided fromorchestra/workbench
.
Released: 2023-08-16
- Readd deprecated
Orchestra\Testbench\Foundation\Console\DevToolCommand
for integration compatibility.
Released: 2023-08-15
- Added
package:purge-skeleton
command. - Added
Orchestra\Testbench\Concerns\Database\InteractsWithSqliteDatabaseFile
trait. - Added
Orchestra\Testbench\package_path()
function. - Added support for
orchestra/workbench
.
- Rename
Orchestra\Testbench\Workbench\Bootstrap\StartWorkbench
toOrchestra\Testbench\Foundation\Bootstrap\StartWorkbench
.
- Fixes
serve
command usage.
Released: 2023-08-12
- Fixes class namespace.
Released: 2023-08-12
- Added following events:
Orchestra\Testbench\Workbench\Events\WorkbenchInstallStarted
Orchestra\Testbench\Workbench\Events\WorkbenchInstallEnded
- Change
HandlesRoutes
loading sequence to match common Laravel bootstrap steps. - Refactor
HandlesAnnotations
andInteractsWithPHPUnit
traits. - Workbench integration improvements.
Released: 2023-08-11
- Added following events:
Orchestra\Testbench\Foundation\Events\ServeCommandStarted
Orchestra\Testbench\Foundation\Events\ServeCommandEnded
- Update
workbench
configuration schema.
- Fixes
Illuminate\Foundation\Application::runningUnitTests()
detection.
Released: 2023-08-10
- Fixes
app()->environment()
detection when creating applicationOrchestra\Testbench\Concerns\CreatesApplication
outside ofPHPUnit
. - Fixes error
Undefined array key "autoload-dev"
when executingworkbench:install
command.
Released: 2023-08-09
- Add new
Orchestra\Testbench\Concerns\InteractsWithPHPUnit
to handleCreatesApplication
within PHPUnit.
- Fixes
workbench.start
path when accessing the/
route return 404. - Only Configure
TESTBENCH_APP_BASE_PATH
environment variable only when running under tests.
Released: 2023-08-08
- Added new Workbench support (experimental feature).
- Register routes under
/_workbench
prefix. - Automatically run configured seeds when executing
migrate:fresh
andmigrate:refresh
- Bind
Orchestra\Testbench\Contracts\Config
to IoC Container and introduce the newOrchestra\Testbench\workbench
andOrchestra\Testbench\workbench_path
helper function. - Add
workbench:install
,workbench:create-sqlite-db
andworkbench:drop-sqlite-db
commands.
- Register routes under
- Add new
Orchestra\Testbench\Concerns\WithWorkbench
to automatically loads configuration fromtestbench.yaml
when running tests.
- Deprecated
package:devtool
,package:create-sqlite-db
andpackage:drop-sqlite-db
commands.
Released: 2023-07-12
- Update skeleton to match v10.2.5.
Released: 2023-06-22
- Update skeleton to match v10.2.4.
Released: 2023-06-13
- Bump minimum
laravel/framework
to10.13.5
. - Automate registering
tearDownInteractsWithPublishedFiles()
fromsetUpInteractsWithPublishedFiles()
method.
Released: 2023-06-08
- Remove
.env.testbench
out of skeleton directory.
Released: 2023-06-07
- Avoid replacing
$app->environmentFile()
with.env.testbench
to avoid any regression to Laravel Framework tests.
Released: 2023-06-07
- Fixes issue where PHPUnit would throws "warning" when
.env
file doesn't exists with certain configuration.
Released: 2023-05-26
- Update skeleton to match v10.2.2.
Released: 2023-05-17
- Update skeleton to match v10.2.1.
Released: 2023-05-09
- Bump minimum
laravel/framework
to10.10.0
. - Update skeleton to match v10.2.0.
Released: 2023-04-18
- Added
Orchestra\Testbench\after_resolving
helper function.
- Update skeleton to match v10.1.0.
- Bump minimum
laravel/framework
to10.8.0
.
Released: 2023-04-14
- Supports PHPUnit 10.1.
Released: 2023-04-12
- Update skeleton to match v10.0.6.
- Avoid declaring
Orchestra\Testbench\Concerns\Testing::setUpTheTestEnvironmentTraitToBeIgnored()
asabstract
method.
Released: 2023-04-05
- Add
setUpTheTestEnvironmentTraitToBeIgnored()
method to determinesetup<Concern>
andteardown<Concern>
with imported traits that should be used on a given trait. - Bump minimum
laravel/framework
to10.6.1
.
Released: 2023-04-02
- Fixes
Orchestra\Testbench\Foundation\Config::addProviders()
usage. - Fixes
Orchestra\Testbench\transform_relative_path()
logic.
Released: 2023-04-01
- Added
Orchestra\Testbench\Foundation\Bootstrap\LoadMigrationsFromArray
class to handle loading migrations fromtestbench.yaml
.- You can now disable loading default migrations using either
migrations: false
intestbench.yaml
or addingTESTBENCH_WITHOUT_DEFAULT_MIGRATIONS=(true)
environment variable.
- You can now disable loading default migrations using either
- Added additional configuration options to
testbench.yaml
:migrations: <bool|array>
bootstrappers: <array>
- Added
Orchestra\Testbench\parse_environment_variables()
function. - Added
Orchestra\Testbench\transform_relative_path()
function.
env
configuration fromtestbench.yaml
with have higher priority thandefault_environment_variables()
.- Disable
Dotenv\Repository\Adapter\PutenvAdapter
when generating environment variable on the fly usingOrchestra\Testbench\Foundation\Application
.
- Fixes console output when an exception is thrown before application can be bootstrapped.
- Fixes some configuration value leaks between tests due to the way it set environment values including
APP_KEY
,APP_DEBUG
etc.
Released: 2023-03-27
- Add supports for
setup<Concern>
andteardown<Concern>
with imported traits.
- Move PHPUnit 9 support to legacy:
- Recommend using PHPUnit 10 whenever possible.
- Remove deprecation handling support for PHPUnit 9.
- Only recommend using
package:test
and--parallel
with PHPUnit 10.
Warning: Breaking change is possible if your package contains any traits with
setup<TraitClassName>
orteardown<TraitClassName>
This version now will automatically run those methods during application bootstrap and terminate to be consistent with Laravel Framework implementations.
Released: 2023-03-22
- Fixes resetting
testbench.yaml
from backup is only needed if the backup file exists.
Released: 2023-03-20
- Update
package:test
available options.
Released: 2023-03-18
- Bump minimum
laravel/framework
to10.4.0
. - Update available middlewares with content from
laravel/laravel
.
Released: 2023-03-10
- Bump minimum
laravel/framework
to10.3.3
.
Released: 2023-03-09
- Bump minimum
laravel/framework
to10.3.1
.
Released: 2023-02-24
- Bump minimum
laravel/framework
to10.1.4
.
Released: 2023-02-21
- Fixes
app.asset_url
config default value from'/'
tonull
.
Released: 2023-02-17
- Bump minimum
laravel/framework
to10.0.3
. - Use available
$_composer_autoload_path
fromcomposer-runtime-api
.
Released: 2023-02-14
- Added support for PHPUnit 10.
- Update support for Laravel Framework v10.
- Increase minimum PHP version to 8.1 and above (tested with 8.1 and 8.2).