Files
piratepoet/tests/acceptance/EditorLineHeightCest.php
Ján Mikláš a06c65931d Optimize opening editor in acceptance tests
[MAILPOET-2136]
2019-06-24 06:56:00 -04:00

82 lines
3.1 KiB
PHP

<?php
namespace MailPoet\Test\Acceptance;
use Facebook\WebDriver\WebDriver;
use Facebook\WebDriver\WebDriverBy;
use MailPoet\Test\DataFactories\Newsletter;
class EditorLineHeightCest {
function changeLineHeight(\AcceptanceTester $I) {
$textSize = '10';
$h1Size = '40';
$h2Size = '30';
$h3Size = '20';
$textLineHeight = '1.2';
$headingLineHeight = '2.0';
$I->wantTo('Edit line height settings in a newsletter');
$newsletter = (new Newsletter())
->loadBodyFrom('newsletterWithText.json')
->create();
$I->login();
$I->amEditingNewsletter($newsletter->id);
$I->click('.mailpoet_styles_region');
// set text sizes
$I->selectOption('text-size', $textSize . 'px');
$I->selectOption('h1-size', $h1Size . 'px');
$I->selectOption('h2-size', $h2Size . 'px');
$I->selectOption('h3-size', $h3Size . 'px');
// check & set line heights
$this->checkLineHeightOptions($I, '#mailpoet_text_line_height');
$this->checkLineHeightOptions($I, '#mailpoet_heading_line_height');
$I->selectOption('#mailpoet_text_line_height', $textLineHeight);
$I->selectOption('#mailpoet_heading_line_height', $headingLineHeight);
// check Editor
$this->checkLineHeightInEditor($I, $textSize, $textLineHeight, 'p');
$this->checkLineHeightInEditor($I, $h1Size, $headingLineHeight, 'h1');
$this->checkLineHeightInEditor($I, $h2Size, $headingLineHeight, 'h2');
$this->checkLineHeightInEditor($I, $h3Size, $headingLineHeight, 'h3');
// check rendered Preview
$I->click('.mailpoet_preview_region');
$I->waitForElementClickable('.mailpoet_show_preview');
$I->click('.mailpoet_show_preview');
$I->waitForElement('#mailpoet_browser_preview_iframe');
$I->switchToIframe('mailpoet_browser_preview_iframe');
$this->checkLineHeightInPreview($I, $textSize, $textLineHeight, 'p');
$this->checkLineHeightInPreview($I, $h1Size, $headingLineHeight, 'h1');
$this->checkLineHeightInPreview($I, $h2Size, $headingLineHeight, 'h2');
$this->checkLineHeightInPreview($I, $h3Size, $headingLineHeight, 'h3');
}
private function checkLineHeightOptions(\AcceptanceTester $I, $selector) {
$I->see('1.0', $selector);
$I->see('1.2', $selector);
$I->see('1.4', $selector);
$I->see('1.6', $selector);
$I->see('1.8', $selector);
$I->see('2.0', $selector);
}
private function checkLineHeightInEditor(\AcceptanceTester $I, $fontSize, $lineHeight, $selector) {
$elementLineHeight = (float)$I->executeInSelenium(function (WebDriver $webdriver) use ($selector) {
return $webdriver
->findElement(WebDriverBy::cssSelector('.mailpoet_newsletter_wrapper .mailpoet_text_block ' . $selector))
->getCSSValue('line-height');
});
expect($elementLineHeight)->equals((int)$fontSize * (float)$lineHeight);
}
private function checkLineHeightInPreview(\AcceptanceTester $I, $fontSize, $lineHeight, $selector) {
$I->seeInSource(
'line-height:' . ((int)$fontSize * (float)$lineHeight) . 'px',
'.mailpoet_browser_preview_iframe .mailpoet-wrapper .mailpoet_text_block ' . $selector
);
}
}