SlideShare a Scribd company logo
1 of 76
Download to read offline
#MM23NL
FASTER MAGENTO
INTEGRATION TESTS
if you wait too long,
you are going to do something else
#MM23NL
Jisse Reitsma
- Founder of Yireo
- Training Magento developers
- Maintaining open source extensions
- Board member of Mage-OS Nederland
- Organizer of MageUnconf NL
- Dad of currently 1 but soon 2
#MM23NL
ASSUMPTIONS
- You are familiar with Magento backend development
- You know what integration tests are
- You have tried running (any) tests at least once
#MM23NL
#MM23NL
QUESTION: WHO
IN THIS ROOM
WRITES
INTEGRATION
TESTS?
#MM23NL
42
#MM23NL
#MM23NL
QUESTION: HOW
LONG DO YOU
USUALLY WAIT FOR
INTEGRATION
TESTS TO BE
FINISHED?
#MM23NL
1m 20s
#MM23NL
WHY FASTER INTEGRATION TESTS
- Faster feedback loop
#MM23NL
WHY FASTER INTEGRATION TESTS
- Faster feedback loop
- Less barriere to get started with testing
#MM23NL
WHY FASTER INTEGRATION TESTS
- Faster feedback loop
- Less barriere to get started with testing
- Less energy consumption
#MM23NL
LESS POWER NEEDED
#MM23NL
REDUCE CLIMATE CHANGE
#MM23NL
PREVENTING THE RISE OF THE SEA LEVEL
#MM23NL
SAVE THE DUTCH
#MM23NL
SAVE THE DUTCH!
FASTER TESTS!
#MM23NL
#MM23NL
#MM23NL
GETTING THE FILES
#MM23NL
GETTING MAGENTO
$ composer create-project 
--repository-url=https://repo.magento.com/ 
magento/project-community-edition .
#MM23NL
GETTING MAGENTO MAGE-OS
$ composer create-project 
--repository-url=https://repo.mage-os.org/ 
mage-os/project-community-edition .
#MM23NL
FASTER COMPOSER DOWNLOADS
- Use a Mage-OS repository nearby
- Create your own mirror
- mage-os/generate-mirror-repo-js
- Private Packagist
- Satis
#MM23NL
TUNING COMPOSER CACHE
- Folder $COMPOSER_HOME/cache
- Try to reuse the cache amongst various installations
- S3 bucket
- Docker volume
- ZIP artifact to unzip before install
#MM23NL
#MM23NL
SETTING UP
INTEGRATION TESTS
#MM23NL
SETTING UP INTEGRATION TESTS (1)
- Navigate to dev/tests/integration/
#MM23NL
SETTING UP INTEGRATION TESTS (2)
- Navigate to dev/tests/integration/
- Copy phpunit.xml.dist to phpunit.xml
#MM23NL
FILE phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/9.6/phpunit.xsd" colors="true"
beStrictAboutTestsThatDoNotTestAnything="false" bootstrap="./framework/bootstrap.php" stderr="true">
<php>
….
<const name="TESTS_CLEANUP" value="enabled"/>
<const name="TESTS_MEM_USAGE_LIMIT" value="8192M"/>
…
<const name="TESTS_MAGENTO_MODE" value="developer"/>
</php>
<listeners>
<listener class="MagentoTestFrameworkEventPhpUnit"/>
<listener class="MagentoTestFrameworkErrorLogListener"/>
</listeners>
</phpunit>
#MM23NL
FILE phpunit.xml
- TESTS_CLEANUP=enabled at first run, disabled at subsequent runs
- TESTS_MEM_USAGE_LIMIT=4092M (PHP memory limit)
- TESTS_PARALLEL_RUN=1
- Remove Yandex listener if it is there
#MM23NL
SETTING UP INTEGRATION TESTS (3)
- Navigate to dev/tests/integration/
- Copy phpunit.xml.dist to phpunit.xml
- Copy etc/install-config-mysql.php.dist to etc/install-
config-mysql.php
#MM23NL
FILE etc/install-config-mysql.php
return [
'db-host' => 'localhost',
'db-user' => 'root',
'db-password' => '123123q',
'db-name' => 'magento_integration_tests',
'db-prefix' => '',
'backend-frontname' => 'backend',
'search-engine' => 'opensearch',
'opensearch-host' => 'localhost',
'opensearch-port' => 9200,
'admin-user' => MagentoTestFrameworkBootstrap::ADMIN_NAME,
'admin-password' => MagentoTestFrameworkBootstrap::ADMIN_PASSWORD,
'admin-email' => MagentoTestFrameworkBootstrap::ADMIN_EMAIL,
'admin-firstname' => MagentoTestFrameworkBootstrap::ADMIN_FIRSTNAME,
'admin-lastname' => MagentoTestFrameworkBootstrap::ADMIN_LASTNAME,
'amqp-host' => 'localhost',
'amqp-port' => '5672',
'amqp-user' => 'guest',
'amqp-password' => 'guest',
'consumers-wait-for-messages' => '0',
];
#MM23NL
FILE etc/install-config-mysql.php
- Modify MySQL database
- Modify OpenSearch / ElasticSearch
- ...
#MM23NL
SETTING UP INTEGRATION TESTS (4)
- Navigate to dev/tests/integration/
- Copy phpunit.xml.dist to phpunit.xml
- Copy etc/install-config-mysql.php.dist to etc/install-
config-mysql.php
- Run ../../../vendor/bin/phpunit with your tests
#MM23NL
SETTING UP INTEGRATION TESTS (4)
- Navigate to dev/tests/integration/
- Copy phpunit.xml.dist to phpunit.xml
- Copy etc/install-config-mysql.php.dist to etc/install-
config-mysql.php
- Run ../../../vendor/bin/phpunit with your tests
Don't use bin/magento dev:tests:run integration because it's slower
#MM23NL
MY COMMAND
docker-compose exec -T php-fpm bash <<EOF
cd dev/tests/integration;
php -d memory_limit=-1 ../../../vendor/bin/phpunit 
-c ../quick-integration/phpunit.xml 
app/code/Yireo/Example/Test/Integration/
EOF
#MM23NL
1m 20s
#MM23NL
DISCLAIMER
If TESTS_CLEANUP is disabled (so the setup is skipped), the total time
goes down to 4-8s (unoptimized) or even 1-3s (optimized). This talk is
not necessarily about that, even though all of the following tips do
apply.
#MM23NL
1m 20s
Let’s get this number down
#MM23NL
TEST RUN BENCHMARK
- PHP 8.2
- MySQL 8
- Magento default install (of 1419 modules)
- Yireo GoogleTagManager (27 tests, 127 assertions)
- Reset of entire Docker stack, tmp/, file cache, generated/
This is run on some computer with some CPU and some RAM: Exact
numbers are not important, relative comparison is important
#MM23NL
HOW ARE INTEGRATION TESTS RUN
- PHPUnit calls bootstrap file
- Bootstrap kickstarts Magento application
- Magento database setup is run (setup:install)
- Or a restore from existing dump is done
- Various test events are triggered (startTest, endTest, ...)
- Tests are run
#MM23NL
#MM23NL
REACHDIGITAL
TEST FRAMEWORK
#MM23NL
REACHDIGITAL TESTFRAMEWORK
- Drop-in replacement of Magento TestFramework
- Disable memory cleanup scripts
- Fix overzealous app reinitialisation
- Disable config-global.php by default
- Disabled sequence table generation
$ composer require --dev reach-digital/magento2-test-framework
See https://github.com/ho-nl/magento2-ReachDigital_TestFramework
#MM23NL
1m 10s
Let’s get this number down
Before: 1m 20s
#MM23NL
#MM23NL
MODIFYING
INSTALLER
ARGUMENTS
#MM23NL
YIREO INTEGRATION TESTING HELPER
- Traits for usage in tests
- Command to toggle TESTS_CLEANUP
- Command for test setup validation
- InstallConfig and DisableModules classes
$ composer require --dev yireo/magento2-integration-test-helper
See https://github.com/yireo/Yireo_IntegrationTestHelper
#MM23NL
RUNNING THE MAGENTO INSTALLER
$ bin/magento setup:install –help
- Database is validated (unless --skip-db-validation is used)
- Database setup scripts are run (Setup/, db_schema.xml)
- Configuration files are created (app/etc/*.php)
- Search engine is validated
- ...
#MM23NL
FILE etc/install-config-mysql.php
return [
'db-host' => 'localhost',
'db-user' => 'root',
'db-password' => '123123q',
'db-name' => 'magento_integration_tests',
'db-prefix' => '',
'backend-frontname' => 'backend',
'search-engine' => 'opensearch',
'opensearch-host' => 'localhost',
'opensearch-port' => 9200,
'admin-user' => MagentoTestFrameworkBootstrap::ADMIN_NAME,
'admin-password' => MagentoTestFrameworkBootstrap::ADMIN_PASSWORD,
'admin-email' => MagentoTestFrameworkBootstrap::ADMIN_EMAIL,
'admin-firstname' => MagentoTestFrameworkBootstrap::ADMIN_FIRSTNAME,
'admin-lastname' => MagentoTestFrameworkBootstrap::ADMIN_LASTNAME,
'amqp-host' => 'localhost',
'amqp-port' => '5672',
'amqp-user' => 'guest',
'amqp-password' => 'guest',
'consumers-wait-for-messages' => '0',
];
#MM23NL
FILE etc/install-config-mysql.php (YIREO)
<?php
use YireoIntegrationTestHelperUtilitiesInstallConfig;
return (new InstallConfig())
->addDb('mysql', 'magento2', 'magento2', 'magento2')
->get();
#MM23NL
#MM23NL
OPTIMIZING
THE STACK
#MM23NL
OPTIMIZE TEMPORARY FOLDERS
- Mount /tmp as tmpfs
- Mount dev/tests/integration/tmp/ as tmpfs
- Possibly mount vendor/ as tmpfs
- Run MySQL in tmpfs
#MM23NL
#MM23NL
OPTIMIZING
MYSQL
#MM23NL
MY OWN docker-compose.yaml
services:
mysqltmpfs:
image: mysql:8.0
ports:
- 3306
volumes:
- ./mysqld_test.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
tmpfs:
- /tmp
- /var/lib/mysql
#MM23NL
MY OWN mysqld_test.cnf
[mysqld]
innodb_buffer_pool_size=512M
innodb_buffer_pool_instances=1
innodb_read_io_threads=8
innodb_write_io_threads=8
innodb_lock_wait_timeout=50
innodb_doublewrite=0
innodb_flush_log_at_trx_commit=0 # or 2
innodb_flush_log_at_timeout=360
innodb_flush_method=nosync
#MM23NL
#MM23NL
OPTIMIZING
PHP
#MM23NL
OPTIMIZE PHP
- Enable opcache
- Disable xdebug
- Set realpath_cache_size=4M
#MM23NL
#MM23NL
ADD
REDIS
#MM23NL
ADD REDIS TO etc/install-config-mysql.php
--session-save-redis-host=redis
--session-save-redis-db=0
--cache-backend-redis-server=redis
--cache-backend-redis-db=0
--page-cache-redis-server=redis
--page-cache-redis-db=1
#MM23NL
ADD REDIS TO etc/install-config-mysql.php (YIREO)
$installConfig->addRedis('redis')
#MM23NL
#MM23NL
OPTIMIZING
ELASTICSEARCH
#MM23NL
SEARCH ENGINE VALIDATION
Could not validate a connection to Elasticsearch. Verify
that the Elasticsearch host and port are configured
correctly.
#MM23NL
OPTION 1: USE MYSQL LEGACY SEARCH
Use https://github.com/swissup/module-search-mysql-legacy
--search-engine=mysql
#MM23NL
OPTION 2: FAKE VALIDATION
HEAD request to http://localhost:9200/ should return HTTP/1.1 200 OK
Create a simple HTML page, configure webserver to listen to port 9200
#MM23NL
OPTION 3: HACK THE CORE
Create a composer patch for MagentoElasticsearchSetup
Validator::validate() and always return true
Note: A DI plugin does not work. We don't have a working application yet.
#MM23NL
OPTION 4: FACE IT
Just use OpenSearch / ElasticSearch anyway and deal with it.
#MM23NL
ADD ELASTICSEARCH TO etc/install-config-mysql.php
--search-engine=opensearch
--opensearch-host=localhost
--opensearch-port=9200
Or:
--search-engine=elasticsearch7
--elasticsearch-host=localhost
--elasticsearch-port=9200
#MM23NL
TUNE ELASTICSEARCH
- Set discovery.type=single-node
- Set data folder to tmpfs
- When OpenSearch, disable optional plugins
- Tune Xms and Xmx
#MM23NL
0m 45s
Let’s get this number down
Before: 1m 10s
#MM23NL
#MM23NL
SKIPPING
MODULES
#MM23NL
SKIPPING MODULES
- Adding the flag –disable-modules to the installer
- Or use Yireo Integration Helper DisableModules class
- Or use composer replace
#MM23NL
YIREO COMPOSER REPLACE TOOLS
Use yireo/magento2-replace-tools to manage replacements via the CLI (including bulk
replacements and validation)
$ composer require yireo/magento2-replace-tools
$ composer replace:bulk:add yireo/magento2-replace-bundled
$ composer replace:bulk:add yireo/magento2-replace-graphql
$ composer replace:build
$ rm -rf vendor/ composer.lock
$ composer install
#MM23NL
USING –disable-modules
--disable-modules= 
Magento_InventoryInStorePickupGraphQl,Magento_InventoryInStorePickupQuo
teGraphQl,Magento_InventoryQuoteGraphQl,Magento_CatalogInventoryGraphQl
,Magento_LoginAsCustomerGraphQl,Magento_NewsletterGraphQl,Magento_Graph
QlCache,Magento_PaymentGraphQl,Magento_ReCaptchaWebapiGraphQl,Magento_R
elatedProductGraphQl,Magento_ReviewGraphQl,Magento_SalesGraphQl,Magento
_UrlRewriteGraphQl,Magento_SendFriendGraphQl,Magento_InventoryGraphQl,M
agento_CatalogCmsGraphQl,Magento_SwatchesGraphQl,Magento_TaxGraphQl,Mag
ento_ThemeGraphQl,Magento_CatalogUrlRewriteGraphQl,Magento_PaypalGraphQ
l,Magento_VaultGraphQl,Magento_WeeeGraphQl,Magento_WishlistGraphQl
#MM23NL
USING –disable-modules (YIREO)
$disableModules = (new DisableModules(__DIR__.'/../../../../'))
->disableAll()
->enableMagento()
->disableMagentoInventory()
->disableGraphQl()
->enableByName('Yireo_GoogleTagManager2');
return (new InstallConfig())
->setDisableModules($disableModules)
->get();
#MM23NL
MY OWN etc/install-config-mysql.php
use YireoIntegrationTestHelperUtilities{DisableModules, InstallConfig};
$disableModules = (new DisableModules(__DIR__.'/../../../../'))
->disableAll()
->enableMagento()
->disableMagentoInventory()
->disableGraphQl()
->enableByMagentoModuleEnv();
return (new InstallConfig())
->setDisableModules($disableModules)
->addDb('mysqltmpfs', 'magento2', 'magento2', 'magento2')
->addRedis('redis')
->addElasticSearch('opensearch', 'elasticsearch')
->get();
#MM23NL
0m 38s
Before: 0m 45s
#MM23NL
0m 38s
Let’s get this number down?
#MM23NL
SAVE THE DUTCH!
FASTER TESTS!
#MM23NL
Yireo upcoming
video courses:
- Magento 2 Testing
- Hyvä Checkout Development
expected end of 2023 / early 2024
#MM23NL
#MM23NL
Thanks
#MM23NL

More Related Content

Similar to Faster Magento Integration Tests

JUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleJUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleGeoffrey De Smet
 
Magento Performance Optimization 101
Magento Performance Optimization 101Magento Performance Optimization 101
Magento Performance Optimization 101Angus Li
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Valeriy Kravchuk
 
Bgoug 2019.11 test your pl sql - not your patience
Bgoug 2019.11   test your pl sql - not your patienceBgoug 2019.11   test your pl sql - not your patience
Bgoug 2019.11 test your pl sql - not your patienceJacek Gebal
 
GTLAB Overview
GTLAB OverviewGTLAB Overview
GTLAB Overviewmarpierc
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Valerii Kravchuk
 
Buildout - Alles im Griff
Buildout - Alles im GriffBuildout - Alles im Griff
Buildout - Alles im Grifffrisi
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in DjangoKevin Harvey
 
Introduction to Mangento
Introduction to Mangento Introduction to Mangento
Introduction to Mangento Ravi Mehrotra
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 DevelopmentDuke Dao
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleStein Inge Morisbak
 
DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)Soshi Nemoto
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the CloudWesley Beary
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setupwlacaze
 
Continously delivering
Continously deliveringContinously delivering
Continously deliveringJames Cowie
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Wim Godden
 
POUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youJacek Gebal
 
MySQL Scaling Presentation
MySQL Scaling PresentationMySQL Scaling Presentation
MySQL Scaling PresentationTommy Falgout
 

Similar to Faster Magento Integration Tests (20)

JUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleJUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by example
 
Magento Performance Optimization 101
Magento Performance Optimization 101Magento Performance Optimization 101
Magento Performance Optimization 101
 
Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013Performance schema in_my_sql_5.6_pluk2013
Performance schema in_my_sql_5.6_pluk2013
 
Bgoug 2019.11 test your pl sql - not your patience
Bgoug 2019.11   test your pl sql - not your patienceBgoug 2019.11   test your pl sql - not your patience
Bgoug 2019.11 test your pl sql - not your patience
 
GTLAB Overview
GTLAB OverviewGTLAB Overview
GTLAB Overview
 
Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)Gdb basics for my sql db as (percona live europe 2019)
Gdb basics for my sql db as (percona live europe 2019)
 
Buildout - Alles im Griff
Buildout - Alles im GriffBuildout - Alles im Griff
Buildout - Alles im Griff
 
Azure from scratch part 4
Azure from scratch part 4Azure from scratch part 4
Azure from scratch part 4
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
 
Mangento
MangentoMangento
Mangento
 
Introduction to Mangento
Introduction to Mangento Introduction to Mangento
Introduction to Mangento
 
Magento 2 Development
Magento 2 DevelopmentMagento 2 Development
Magento 2 Development
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)DevOps(3) : Ansible - (MOSG)
DevOps(3) : Ansible - (MOSG)
 
fog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloudfog or: How I Learned to Stop Worrying and Love the Cloud
fog or: How I Learned to Stop Worrying and Love the Cloud
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setup
 
Continously delivering
Continously deliveringContinously delivering
Continously delivering
 
Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012Caching and tuning fun for high scalability @ FOSDEM 2012
Caching and tuning fun for high scalability @ FOSDEM 2012
 
POUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love youPOUG2019 - Test your PL/SQL - your database will love you
POUG2019 - Test your PL/SQL - your database will love you
 
MySQL Scaling Presentation
MySQL Scaling PresentationMySQL Scaling Presentation
MySQL Scaling Presentation
 

More from Yireo

Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS NederlandYireo
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Yireo
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopYireo
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Yireo
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Yireo
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningYireo
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishYireo
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyYireo
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenYireo
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Yireo
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationYireo
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaYireo
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 ShopsYireo
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Yireo
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryYireo
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksYireo
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteYireo
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaYireo
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningYireo
 
Magento 2 Seminar - Welkom
Magento 2 Seminar - WelkomMagento 2 Seminar - Welkom
Magento 2 Seminar - WelkomYireo
 

More from Yireo (20)

Mage-OS Nederland
Mage-OS NederlandMage-OS Nederland
Mage-OS Nederland
 
Modernizing Vue Storefront 1
Modernizing Vue Storefront 1Modernizing Vue Storefront 1
Modernizing Vue Storefront 1
 
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshopMagento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
Magento 2 Seminar - Peter-Jaap Blaakmeer - VR-webshop
 
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
Magento 2 Seminar - Toon van Dooren - Varnish in Magento 2
 
Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2Magento 2 Seminar - Andra Lungu - API in Magento 2
Magento 2 Seminar - Andra Lungu - API in Magento 2
 
Magento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learningMagento 2 Seminar - Roger Keulen - Machine learning
Magento 2 Seminar - Roger Keulen - Machine learning
 
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and VarnishMagento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
Magento 2 Seminar - Miguel Balparda - M2 with PHP 7 and Varnish
 
Magento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App EconomyMagento 2 Seminar - Maarten Schuiling - The App Economy
Magento 2 Seminar - Maarten Schuiling - The App Economy
 
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelenMagento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
Magento 2 Seminar - Jisse Reitsma - Magento 2 techniek vertalen naar voordelen
 
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
Magento 2 Seminar - Sander Mangel - Van Magento 1 naar 2
 
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine OptimisationMagento 2 Seminar - Arjen Miedema - Search Engine Optimisation
Magento 2 Seminar - Arjen Miedema - Search Engine Optimisation
 
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - BeaumoticaMagento 2 Seminar - Tjitte Folkertsma - Beaumotica
Magento 2 Seminar - Tjitte Folkertsma - Beaumotica
 
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 ShopsMagento 2 Seminar - Jeroen Vermeulen  Snelle Magento 2 Shops
Magento 2 Seminar - Jeroen Vermeulen Snelle Magento 2 Shops
 
Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2Magento 2 Seminar - Christian Muench - Magerun2
Magento 2 Seminar - Christian Muench - Magerun2
 
Magento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 SummaryMagento 2 Seminar - Anton Kril - Magento 2 Summary
Magento 2 Seminar - Anton Kril - Magento 2 Summary
 
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarksMagento 2 Seminar - Daniel Genis - Magento 2 benchmarks
Magento 2 Seminar - Daniel Genis - Magento 2 benchmarks
 
Magento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - KeynoteMagento 2 Seminar - Ben Marks - Keynote
Magento 2 Seminar - Ben Marks - Keynote
 
Magento 2 Seminar - Community agenda
Magento 2 Seminar - Community agendaMagento 2 Seminar - Community agenda
Magento 2 Seminar - Community agenda
 
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie PlanningMagento 2 Seminar - Jisse Reitsma - Migratie Planning
Magento 2 Seminar - Jisse Reitsma - Migratie Planning
 
Magento 2 Seminar - Welkom
Magento 2 Seminar - WelkomMagento 2 Seminar - Welkom
Magento 2 Seminar - Welkom
 

Recently uploaded

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 

Recently uploaded (20)

APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 

Faster Magento Integration Tests