![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-aws-s3/Test/Mftf/Test/ |
<?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>