phpmyadmin/test/selenium/PmaSeleniumChangePasswordTest.php
Michal Čihař eabdf845c3 Fix waiting for AJAX popup disappear in Selenium tests
Waiting for ajax_message_num_1 works only on first AJAX request and
we're doing more of them. This should remove need for many consequent
sleeps as we were actually not properly waiting for element.

Also it's better to wrap this logic in separate method as it is used in
many places in the code.

Signed-off-by: Michal Čihař <michal@cihar.com>
2017-09-07 15:17:06 +02:00

78 lines
2.4 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Selenium TestCase for change password related tests
*
* @package PhpMyAdmin-test
* @subpackage Selenium
*/
require_once 'TestBase.php';
/**
* PmaSeleniumPrivilegesTest class
*
* @package PhpMyAdmin-test
* @subpackage Selenium
* @group selenium
*/
class PMA_SeleniumChangePasswordTest extends PMA_SeleniumBase
{
/**
* Tests the changing of the password
*
* @return void
*
* @group large
*/
public function testChangePassword()
{
$this->login();
$e = $this->waitForElement("byId", "change_password_anchor");
$e->click();
$this->waitAjax();
$this->waitForElement('byXpath', "//span[contains(., 'Change password')]");
try {
$ele = $this->waitForElement("byName", "pma_pw");
$this->assertEquals("", $ele->value());
} catch (PHPUnit_Framework_AssertionFailedError $e) {
array_push($this->verificationErrors, $e->toString());
}
try {
$ele = $this->waitForElement("byName", "pma_pw2");
$this->assertEquals("", $ele->value());
} catch (PHPUnit_Framework_AssertionFailedError $e) {
array_push($this->verificationErrors, $e->toString());
}
try {
$ele = $this->waitForElement("byName", "generated_pw");
$this->assertEquals("", $ele->value());
} catch (PHPUnit_Framework_AssertionFailedError $e) {
array_push($this->verificationErrors, $e->toString());
}
$this->byId("button_generate_password")->click();
$this->assertNotEquals("", $this->byName("pma_pw")->value());
$this->assertNotEquals("", $this->byName("pma_pw2")->value());
$this->assertNotEquals("", $this->byName("generated_pw")->value());
if ($GLOBALS['TESTSUITE_PASSWORD'] != "") {
$this->byName("pma_pw")->clear();
$this->byName("pma_pw2")->clear();
$this->byName("pma_pw")->value($GLOBALS['TESTSUITE_PASSWORD']);
$this->byName("pma_pw2")->value($GLOBALS['TESTSUITE_PASSWORD']);
} else {
$this->byId("nopass_1")->click();
}
$this->byXpath("//button[contains(., 'Go')]")->click();
$ele = $this->waitForElement("byCssSelector", "div.success");
$this->assertEquals(
"The profile has been updated.",
$ele->text()
);
}
}