SlideShare uma empresa Scribd logo
1 de 76
Baixar para ler 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

Mais conteúdo relacionado

Semelhante a Faster Magento Integration Tests

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
Valeriy Kravchuk
 
Buildout - Alles im Griff
Buildout - Alles im GriffBuildout - Alles im Griff
Buildout - Alles im Griff
frisi
 
Sap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit SetupSap Solman Instguide Dba Cockpit Setup
Sap Solman Instguide Dba Cockpit Setup
wlacaze
 
MySQL Scaling Presentation
MySQL Scaling PresentationMySQL Scaling Presentation
MySQL Scaling Presentation
Tommy Falgout
 

Semelhante a 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
 
Introduction to Mangento
Introduction to Mangento Introduction to Mangento
Introduction to Mangento
 
Mangento
MangentoMangento
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
 

Mais de Yireo

Mais de 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
 

Último

Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
UK Journal
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
panagenda
 

Último (20)

A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
Intro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджераIntro in Product Management - Коротко про професію продакт менеджера
Intro in Product Management - Коротко про професію продакт менеджера
 
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
Easier, Faster, and More Powerful – Alles Neu macht der Mai -Wir durchleuchte...
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 

Faster Magento Integration Tests