9 use Magento\Catalog\Test\Page\Product\CatalogProductView;
10 use Magento\Mtf\Client\BrowserInterface;
12 use Magento\Mtf\Fixture\FixtureInterface;
54 BrowserInterface $browser,
55 CatalogProductView $catalogProductView,
58 $browser->open($_ENV[
'app_frontend_url'] .
$product->getUrlKey() .
'.html');
61 $this->pageView = $catalogProductView;
62 $this->productView = $catalogProductView->getViewBlock();
65 \PHPUnit\Framework\Assert::assertEmpty(
67 "\nFound the following errors:\n" . implode(
" \n",
$errors)
97 $expectedName = $this->product->getName();
99 $actualName = $this->productView->getProductName();
100 }
catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
101 return "Could not find product '{$this->product->getName()}' name on the page.\n" . $e->getMessage();
104 if ($expectedName == $actualName) {
107 return "Product name on Storefront product '{$this->product->getName()}' page is unexpected. " 108 .
"Actual: {$actualName}, expected: {$expectedName}.";
118 if ($this->product->hasData(
'price') ==
false) {
122 $priceBlock = $this->productView->getPriceBlock();
123 if (!$priceBlock->isVisible()) {
124 return "Price block for '{$this->product->getName()}' product' is not visible.";
126 $actualPrice = $priceBlock->isOldPriceVisible() ? $priceBlock->getOldPrice() : $priceBlock->getPrice();
127 $expectedPrice = number_format($this->product->getPrice(), 2,
'.',
'');
129 if ($expectedPrice != $actualPrice) {
130 return "Displayed product price on Storefront product '{$this->product->getName()}' page is unexpected. " 131 .
"Actual: {$actualPrice}, expected: {$expectedPrice}.";
143 if (!$this->product->hasData(
'special_price')) {
146 $expectedSpecialPrice = $this->product->getSpecialPrice();
147 $expectedSpecialPrice = number_format($expectedSpecialPrice, 2);
148 $priceBlock = $this->productView->getPriceBlock($this->product);
149 if (!$priceBlock->isVisible()) {
150 return "Price block for '{$this->product->getName()}' product' is not visible.";
152 $actualSpecialPrice = $priceBlock->getSpecialPrice();
153 if ($expectedSpecialPrice == $actualSpecialPrice) {
156 return "Displayed product special price on Storefront product '{$this->product->getName()}' page is unexpected." 157 .
"Actual: {$actualSpecialPrice}, expected: {$expectedSpecialPrice}.";
167 $expectedSku = $this->product->getSku();
169 $actualSku = $this->productView->getProductSku();
170 }
catch (\PHPUnit_Extensions_Selenium2TestCase_WebDriverException $e) {
171 return "Could not find product {$this->product->getName()}' SKU on the page.\n" . $e->getMessage();
174 if ($expectedSku ===
null || $expectedSku == $actualSku) {
177 return "Displayed product SKU on Storefront product '{$this->product->getName()}' page is unexpected. " 178 .
"Actual: {$actualSku}, expected: {$expectedSku}.";
188 $expectedDescription = $this->product->getDescription();
189 $actualDescription = $this->productView->getProductDescription();
191 if ($expectedDescription ===
null || $expectedDescription == $actualDescription) {
194 return "Displayed product description on Storefront product '{$this->product->getName()}' page is unexpected. " 195 .
"Actual: {$actualDescription}, expected: {$expectedDescription}.";
205 $expected = $this->product->getShortDescription();
206 $actual = $this->productView->getProductShortDescription();
208 if ($expected ===
null || $expected == $actual) {
211 return "Displayed short description on Storefront product '{$this->product->getName()}' page is unexpected. " 212 .
"Actual: {$actual}, expected: {$expected}.";
222 return 'Product on product view page is correct.';
processAssert(BrowserInterface $browser, CatalogProductView $catalogProductView, FixtureInterface $product)