ecomdev / testcontainers-magento-data
TestContainers for Magento data in integration/functional tests
Requires
- php: ^8.3
- testcontainers/testcontainers: ^0.2.0
Requires (Dev)
- ext-pdo: *
- brianium/paratest: ^7.7
- guzzlehttp/guzzle: ^7.0
- phpunit/phpunit: ^11.5
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2025-01-07 14:45:15 UTC
README
This package simplifies the process of automated testing with real database and search engine
✨ Features
- 📦 Pre-configured database and search containers: Instantly spin up containers with ready-to-use Magento data
- ⚙️ Easy setup and use: Use PHP package to automatically discard container after tests
- 🎯 Blazingly Fast: Container takes only few seconds to start, so you can focus on testing instead of waiting for db initialization
📋 Requirements
- 🐳 Docker: Ensure Docker is installed and operational on your system.
📦 Available images
All the available Docker image version can be found in build repository EcomDev/testcontainer-magento-data
Installation
Use composer with --dev
flag to add it as dependency for your tests
composer require --dev ecomdev/testcontainers-magento-data
Examples
MySQL container
Create Latest Magento Database Build
use EcomDev\TestContainers\MagentoData\DbContainerBuilder; $container = DbContainerBuilder::mysql() ->build();
Create Latest Magento Database Build with sample data
use EcomDev\TestContainers\MagentoData\DbContainerBuilder; $container = DbContainerBuilder::mysql() ->withSampleData() ->build();
Create 2.4.7-p2 with sample data and fetch number of products
use EcomDev\TestContainers\MagentoData\DbContainerBuilder; use PDO; $container = DbContainerBuilder::mysql() ->withMagentoVersion('2.4.7-p2') ->withSampleData() ->build(); $connectionSettings = $container->getConnectionSettings(); $connection = new PDO( $connectionSettings->dsn(), $connectionSettings->user, $connectionSettings->password ); $result = $connection->query('SELECT COUNT(*) FROM catalog_product_entity'); // Outputs 2040 echo $result->fetch(PDO::FETCH_COLUMN);
MariaDB container
Everything the same as for MySQL container, just a different builder method
use EcomDev\TestContainers\MagentoData\DbContainerBuilder; $container = DbContainerBuilder::mariadb() ->withMagentoVersion('2.4.7-p2') ->withSampleData() ->build();
OpenSearch container
For OpenSearch container there is a different builder and container, that allows building base url for http connection
Here is a small example
use EcomDev\TestContainers\MagentoData\OpenSearchContainerBuilder; use GuzzleHttp\Client; $container = OpenSearchContainerBuilder::new() ->withSampleData() ->build(); $client = new Client([ 'base_uri' => $container->getBaseUrl() ]); $result = json_decode( $client->get('magento2_product_1/_count')->getBody()->getContents(), true ); // Outputs 181 echo $result['count'];
📜 License
This project is licensed under the MIT License.
See the LICENSE file for more details.