| Current Path : /home/rtorresani/www/vendor/magento/module-aws-s3/Test/Mftf/Test/ |
| Current File : //home/rtorresani/www/vendor/magento/module-aws-s3/Test/Mftf/Test/AdminAwsS3SyncMediaFilesTest.xml |
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
-->
<tests xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/testSchema.xsd">
<test name="AdminAwsS3SyncMediaFilesTest">
<annotations>
<features value="AwsS3"/>
<stories value="Sync Files"/>
<title value="S3 - Verify Media Files Are Synced"/>
<description value="Verifies that media files are synced from local file system to AWS S3 by creating a
product with images while using the local file system, switching and syncing to S3, deleting the local
file system images, and verifying that the product images still render."/>
<severity value="CRITICAL"/>
<testCaseId value="MC-38938"/>
<group value="remote_storage_aws_s3"/>
<group value="skip_in_cloud_native_s3"/>
<group value="remote_storage_disabled"/>
</annotations>
<before>
<!-- Create Category, Product, & Product Images -->
<createData entity="_defaultCategory" stepKey="createCategory"/>
<createData entity="_defaultProduct" stepKey="createProduct">
<requiredEntity createDataKey="createCategory"/>
</createData>
<createData entity="ApiProductAttributeMediaGalleryEntryBluePng" stepKey="createProductImage1">
<requiredEntity createDataKey="createProduct"/>
</createData>
<createData entity="ApiProductAttributeMediaGalleryEntryRedPng" stepKey="createProductImage2">
<requiredEntity createDataKey="createProduct"/>
</createData>
</before>
<after>
<!-- Delete Data & Disable AWS S3 Remote Storage -->
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
<deleteData createDataKey="createCategory" stepKey="deleteCategory"/>
<deleteData createDataKey="createProduct" stepKey="deleteProduct"/>
<actionGroup ref="AdminLogoutActionGroup" stepKey="logoutFromAdmin"/>
</after>
<!-- Note: Due to MFTF bug, must wrap entity reference in curly braces for entity to resolve -->
<executeJS function="return '{$createProductImage1.entry[content][name]$}'.charAt(1)" stepKey="firstCharacterImage1FileName"/>
<executeJS function="return '{$createProductImage1.entry[content][name]$}'.charAt(2)" stepKey="secondCharacterImage1FileName"/>
<executeJS function="return '{$createProductImage2.entry[content][name]$}'.charAt(1)" stepKey="firstCharacterImage2FileName"/>
<executeJS function="return '{$createProductImage2.entry[content][name]$}'.charAt(2)" stepKey="secondCharacterImage2FileName"/>
<!-- Verify Images Are in Local File System -->
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalImage1Exists">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileExists" stepKey="assertLocalImage2Exists">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<!-- Local - Verify Images on Product Storefront Page -->
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront">
<argument name="product" value="$$createProduct$$"/>
</actionGroup>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="seeFirstImage1"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="firstImageSrc1"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertFirstImageContent1">
<argument name="url">{$firstImageSrc1}</argument>
<argument name="expectedString">{{RedPngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$firstImageSrc1}" did not render image: {{RedPngImageContent.baseImage_md5}}</argument>
</helper>
<click selector="{{StorefrontProductMediaSection.productImageInFotorama($createProductImage1.entry[content][name]$)}}" stepKey="clickSecondImage"/>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="seeSecondImage1"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="secondImageSrc1"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertSecondImageContent1">
<argument name="url">{$secondImageSrc1}</argument>
<argument name="expectedString">{{BluePngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$secondImageSrc1}" did not render image: {{BluePngImageContent.baseImage_md5}}</argument>
</helper>
<!-- Enable AWS S3 Remote Storage & Sync -->
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.enable_options}}" stepKey="enableRemoteStorage"/>
<magentoCLI command="remote-storage:sync" timeout="120" stepKey="syncRemoteStorage"/>
<!-- Verify Images Are in AWS S3 -->
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3Image1Exists">
<argument name="filePath">media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3Image2Exists">
<argument name="filePath">media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryNotEmpty" stepKey="assertS3CacheDirectoryNotEmpty">
<argument name="path">media/catalog/product/cache/</argument>
</helper>
<!-- S3 - Clear Caches & Verify Images on Product Storefront Page -->
<actionGroup ref="AdminLoginActionGroup" stepKey="loginAsAdmin"/>
<actionGroup ref="AdminGoToCacheManagementPageActionGroup" stepKey="goToCacheManagementPage"/>
<actionGroup ref="AdminClickFlushCatalogImagesCacheActionGroup" stepKey="clearCatalogImageCache"/>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryEmpty" stepKey="assertS3CacheDirectoryEmpty">
<argument name="path">media/catalog/product/cache/</argument>
</helper>
<actionGroup ref="CliCacheFlushActionGroup" stepKey="flushPageCache">
<argument name="tags" value=""/>
</actionGroup>
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront2">
<argument name="product" value="$$createProduct$$"/>
</actionGroup>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="seeFirstImage2"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="firstImageSrc2"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertFirstImageContent2">
<argument name="url">{$firstImageSrc2}</argument>
<argument name="expectedString">{{RedPngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$firstImageSrc2}" did not render image: {{RedPngImageContent.baseImage_md5}}</argument>
</helper>
<click selector="{{StorefrontProductMediaSection.productImageInFotorama($createProductImage1.entry[content][name]$)}}" stepKey="clickSecondImage2"/>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="seeSecondImage2"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="secondImageSrc2"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertSecondImageContent2">
<argument name="url">{$secondImageSrc2}</argument>
<argument name="expectedString">{{BluePngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$secondImageSrc2}" did not render image: {{BluePngImageContent.baseImage_md5}}</argument>
</helper>
<!-- Delete Images on Local File System -->
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="deleteFileIfExists" stepKey="deleteLocalImage1">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage1IsDeleted">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="deleteFileIfExists" stepKey="deleteLocalImage2">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage2IsDeleted">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="deleteDirectory" stepKey="deleteLocalCacheDirectory">
<argument name="path">pub/media/catalog/product/cache/</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalCacheDirectoryDeleted">
<argument name="path">pub/media/catalog/product/cache/</argument>
</helper>
<!-- S3 - Clean Cache & Verify Images on Product Storefront Page -->
<actionGroup ref="AdminGoToCacheManagementPageActionGroup" stepKey="goToCacheManagementPage2"/>
<actionGroup ref="AdminClickFlushCatalogImagesCacheActionGroup" stepKey="clearCatalogImageCache2"/>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryEmpty" stepKey="assertS3CacheDirectoryEmpty2">
<argument name="path">media/catalog/product/cache/</argument>
</helper>
<actionGroup ref="CliCacheFlushActionGroup" stepKey="flushPageCache2">
<argument name="tags" value=""/>
</actionGroup>
<!-- Assert Local File System Images & Cached Images Are Still Non-Existent -->
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage1IsDeleted2">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage2IsDeleted2">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalCacheDirectoryDeleted2">
<argument name="path">pub/media/catalog/product/cache/</argument>
</helper>
<!-- Open Product on Storefront, Assert S3 Images Exist & Get Cached, Assert Local File System Images & Cache Are Still Non-Existent -->
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront3">
<argument name="product" value="$$createProduct$$"/>
</actionGroup>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3Image1Exists2">
<argument name="filePath">media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertFileExists" stepKey="assertS3Image2Exists2">
<argument name="filePath">media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\AwsS3\Test\Mftf\Helper\S3FileAssertions" method="assertDirectoryNotEmpty" stepKey="assertS3CacheDirectoryNotEmpty2">
<argument name="path">media/catalog/product/cache/</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage1IsDeleted3">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage1FileName}/{$secondCharacterImage1FileName}/$createProductImage1.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertFileDoesNotExist" stepKey="assertLocalImage2IsDeleted3">
<argument name="filePath">pub/media/catalog/product/{$firstCharacterImage2FileName}/{$secondCharacterImage2FileName}/$createProductImage2.entry[content][name]$</argument>
</helper>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalCacheDirectoryGone">
<argument name="path">pub/media/catalog/product/cache/</argument>
</helper>
<!-- Verify Product Images Render Correctly When Images Initially Only Exist in S3 -->
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="seeFirstImage3"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="firstImageSrc3"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertFirstImageContent3">
<argument name="url">{$firstImageSrc3}</argument>
<argument name="expectedString">{{RedPngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$firstImageSrc3}" did not render image: {{RedPngImageContent.baseImage_md5}}</argument>
</helper>
<click selector="{{StorefrontProductMediaSection.productImageInFotorama($createProductImage1.entry[content][name]$)}}" stepKey="clickSecondImage3"/>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="seeSecondImage3"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="secondImageSrc3"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertSecondImageContent3">
<argument name="url">{$secondImageSrc3}</argument>
<argument name="expectedString">{{BluePngImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$secondImageSrc3}" did not render image: {{BluePngImageContent.baseImage_md5}}</argument>
</helper>
<!-- Disable AWS S3 Remote Storage, Clean Cache & Verify Images Do Not Appear on Product Storefront Page -->
<magentoCLI command="setup:config:set {{RemoteStorageAwsS3ConfigData.disable_options}}" stepKey="disableRemoteStorage"/>
<actionGroup ref="AdminGoToCacheManagementPageActionGroup" stepKey="goToCacheManagementPage3"/>
<actionGroup ref="AdminClickFlushCatalogImagesCacheActionGroup" stepKey="clearCatalogImageCache3"/>
<helper class="Magento\Catalog\Test\Mftf\Helper\LocalFileAssertions" method="assertDirectoryDoesNotExist" stepKey="assertLocalCacheDirectoryEmpty2">
<argument name="path">pub/media/catalog/product/cache/</argument>
</helper>
<actionGroup ref="CliCacheFlushActionGroup" stepKey="flushPageCache3">
<argument name="tags" value=""/>
</actionGroup>
<actionGroup ref="StorefrontOpenProductEntityPageActionGroup" stepKey="goToProductOnStorefront4">
<argument name="product" value="$$createProduct$$"/>
</actionGroup>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="seeFirstImage4"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage2.entry[content][name]$)}}" stepKey="firstImageSrc4"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertFirstImageContent4">
<argument name="url">{$firstImageSrc4}</argument>
<argument name="expectedString">{{MagentoPlaceHolderImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$firstImageSrc4}" did not render image: {{MagentoPlaceHolderImageContent.baseImage_md5}}</argument>
</helper>
<click selector="{{StorefrontProductMediaSection.productImageInFotorama($createProductImage1.entry[content][name]$)}}" stepKey="clickSecondImage4"/>
<waitForElementVisible selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="seeSecondImage4"/>
<grabAttributeFrom userInput="src" selector="{{StorefrontProductMediaSection.productImageActive($createProductImage1.entry[content][name]$)}}" stepKey="secondImageSrc4"/>
<helper class="Magento\Backend\Test\Mftf\Helper\CurlHelpers" method="assertImageContentIsEqual" stepKey="assertSecondImageContent4">
<argument name="url">{$secondImageSrc4}</argument>
<argument name="expectedString">{{MagentoPlaceHolderImageContent.baseImage_md5}}</argument>
<argument name="message">Url: "{$secondImageSrc4}" did not render image: {{MagentoPlaceHolderImageContent.baseImage_md5}}</argument>
</helper>
</test>
</tests>