1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
<?php
declare(strict_types=1);
namespace PhpMyAdmin\Tests\Selenium;
use function sleep;
/**
* @coversNothing
*/
class ServerSettingsTest extends TestBase
{
/**
* Create a test database for this test class
*
* @var bool
*/
protected static $createDatabase = false;
/**
* setUp function
*/
protected function setUp(): void
{
parent::setUp();
$this->login();
$this->expandMore();
$this->waitForElement('partialLinkText', 'Settings')->click();
$this->waitAjax();
$this->waitForElement('xpath', "//a[@class='nav-link text-nowrap' and contains(., 'Settings')]");
}
/**
* Saves config and asserts correct message.
*/
private function saveConfig(): void
{
// Submit the form
$ele = $this->waitForElement(
'xpath',
"//div[contains(@class, 'tab-pane') and contains(@class, 'show')"
. " and contains(@class, 'active')]//input[@value='Apply']"
);
$this->scrollToBottom();
$this->moveto($ele);
$ele->click();
$this->waitUntilElementIsPresent(
'xpath',
"//div[@class='alert alert-success' and contains(., 'Configuration has been saved')]",
5000
);
}
/**
* Tests whether hiding a database works or not
*
* @group large
*/
public function testHideDatabase(): void
{
$this->createDatabase();
$this->byPartialLinkText('Features')->click();
$this->waitAjax();
$this->waitForElement('xpath', "//a[contains(@href, '#Databases')]")->click();
$ele = $this->waitForElement('name', 'Servers-1-hide_db');
$this->moveto($ele);
$ele->clear();
$ele->sendKeys($this->databaseName);
$this->saveConfig();
$this->assertFalse(
$this->isElementPresent('partialLinkText', $this->databaseName)
);
$this->waitForElement('xpath', "//a[contains(@href, '#Databases')]")->click();
$this->waitForElement('name', 'Servers-1-hide_db')->clear();
$this->saveConfig();
$this->assertTrue(
$this->isElementPresent('partialLinkText', $this->databaseName)
);
}
/**
* Tests whether the various settings tabs are displayed when clicked
*
* @group large
*/
public function testSettingsTabsAreDisplayed(): void
{
$this->byPartialLinkText('SQL queries')->click();
$this->waitAjax();
$this->waitForElement('className', 'nav-tabs');
$this->byPartialLinkText('SQL Query box')->click();
$this->assertTrue(
$this->byId('Sql_box')->isDisplayed()
);
$this->assertFalse(
$this->byId('Sql_queries')->isDisplayed()
);
$this->byCssSelector("a[href='#Sql_queries']")->click();
$this->assertFalse(
$this->byId('Sql_box')->isDisplayed()
);
$this->assertTrue(
$this->byId('Sql_queries')->isDisplayed()
);
}
/**
* Tests if hiding the logo works or not
*
* @group large
*/
public function testHideLogo(): void
{
$this->byPartialLinkText('Navigation panel')->click();
$this->waitAjax();
$this->waitForElement('name', 'NavigationDisplayLogo')
->click();
$this->saveConfig();
sleep(1);
$this->assertFalse(
$this->isElementPresent('id', 'imgpmalogo')
);
$this->byCssSelector("a[href='#NavigationDisplayLogo']")->click();
$this->saveConfig();
sleep(1);
$this->assertTrue(
$this->isElementPresent('id', 'imgpmalogo')
);
}
}
|