A testing framework for Vortex scaffold that provides automated test setup and configuration.
composer require salsadigitalauorg/scaffold-testing --dev
Add the following configuration to your project's composer.json
:
{
"extra": {
"scaffold-testing": {
"target-dir": "tests/behat/",
"files": {
"homepage.feature": false,
"login.feature": false,
"search.feature": false,
"contenttypes.feature": false
},
"override_feature": false,
"override_feature_context": false
}
}
}
target-dir
: The directory where test files will be installed (default:tests/behat/
)files
: Specific feature files to install and their override settings- Key: Feature file name
- Value: Boolean indicating whether to override if file exists
override_feature
: Global override setting for all feature files (default:false
)override_feature_context
: Whether to override the FeatureContext.php file (default:false
)
- Default Setup:
{
"scaffold-testing": {
"target-dir": "tests/behat/"
}
}
- Custom Directory:
{
"scaffold-testing": {
"target-dir": "custom/path/behat/"
}
}
- Specific Features with Override:
{
"scaffold-testing": {
"target-dir": "tests/behat/",
"files": {
"homepage.feature": true,
"login.feature": false
}
}
}
- Override All Features:
{
"scaffold-testing": {
"target-dir": "tests/behat/",
"override_feature": true
}
}
See README.developers.md for development setup and guidelines.
The Scaffold Testing Library provides a set of default Behat tests tailored for Drupal projects, aiming to ensure consistent testing across different deployments. This library helps streamline the testing process by providing ready-to-use Behat test scenarios that cover common functionalities within Drupal sites.
- Home Page Test: Ensures the homepage loads successfully and contains specific keywords or phrases.
- Permissions Test: Checks different user roles for appropriate access rights to content in various states (published, draft, in review).
- Workflow Test: Tests the expected moderation states and transitions between them.
- Search Functionality Test: Verifies that search indexing works and returns expected results.
- Content Types Test: Verifies that content types can be created.
After installation, the Behat test files are placed in the tests/behat/features/
directory of your Drupal project. You can run these tests using Behat with a command similar to:
vendor/bin/behat
Make sure you have configured Behat properly in your Drupal project to recognize and execute these tests.
To ensure the salsadigitalauorg/scaffold-testing
runs as you execute composer install
or composer update
,
add the following to the post-install-cmd
and post-update-cmd
sections of your project' composer.json:
"scripts": {
"install-features": "Salsadigitalauorg\\ScaffoldTesting\\Installer\\Installer::features",
"post-install-cmd": [
"Salsadigitalauorg\\ScaffoldTesting\\Installer\\Installer::features"
],
"post-update-cmd": [
"Salsadigitalauorg\\ScaffoldTesting\\Installer\\Installer::features"
]
}
Alternatively, add install-features
command only:
"scripts": {
"install-features": "Salsadigitalauorg\\ScaffoldTesting\\Installer\\Installer::features",
}
To customize the tests or the installation path, you can modify the extra
section in your project's composer.json
:
"extra": {
"scaffold-testing": {
"target-dir": "tests/behat/",
"files": {
"homepage.feature": false,
"login.feature": false,
"search.feature": true,
"contenttypes.feature": false
},
"override_feature_context": false,
"override_feature": false,
}
}
target-dir
: Specifies the base directory for test files (default: "tests/behat/").files
: An object where keys are feature file names and values are boolean flags indicating whether to override existing files. Whenfiles
key is omited, the existing files will be left untouched and missing files will be installed.override_feature_context
: Whether to overwrite the existing FeatureContext.php file (default: false).override_feature
: Whether to overwrite the existing feature file (default: false).
If the files
section is omitted, all available feature files will be installed only if they don't already exist in the target directory.
The installer will create the necessary subdirectories within the target-dir
:
Contributions to the Scaffold Testing Library are welcome! Please feel free to submit pull requests or create issues for any bugs you discover or enhancements you suggest.
This library is provided under the MIT License. See the LICENSE file for more information.
Starting from version 0.4.2, we've moved to a trait-based approach for step definitions. This is a breaking change that requires manual intervention for existing projects.
If you're upgrading from a previous version, you'll need to:
- Remove the old step definitions from your
FeatureContext.php
- Add the trait to your
FeatureContext.php
:
use Salsadigitalauorg\ScaffoldTesting\Traits\ScaffoldTestingTrait;
class FeatureContext implements Context
{
use ScaffoldTestingTrait;
// Your custom step definitions...
}
The installer will automatically set up your FeatureContext.php
with the trait. You can add your custom step definitions alongside the trait.
You can add your own custom step definitions alongside the trait:
class FeatureContext implements Context
{
use ScaffoldTestingTrait;
/**
* @Given I have my custom step
*/
public function iHaveMyCustomStep(): void
{
// Your custom step implementation
}
}
- PHP 8.3 or higher
- Composer 2.x
- Behat 3.13 or higher
- PHPUnit 9.6.13 or higher (compatible with Drupal core)
This package requires the following dependencies which will be installed automatically:
{
"require": {
"behat/behat": "^3.13",
"composer/composer": "^2.6",
"symfony/process": "^6.0|^7.0",
"phpunit/phpunit": "^9.6.13"
}
}