mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-31 22:10:45 +02:00
[ticket/14947] Create new webdriver instance for every test
PHPUnit seems to have emptied the webdriver between every test, which causes curl errors. A new webdriver instance will now be created for every test file. This does not cause a lot of overhead for ui tests. PHPBB3-14947
This commit is contained in:
@@ -78,14 +78,11 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
self::markTestSkipped('phpbb_functional_url was not set in test_config and wasn\'t set as PHPBB_FUNCTIONAL_URL environment variable either.');
|
||||
}
|
||||
|
||||
if (!self::$webDriver)
|
||||
{
|
||||
try {
|
||||
$capabilities = DesiredCapabilities::firefox();
|
||||
self::$webDriver = RemoteWebDriver::create(self::$host . ':' . self::$port, $capabilities);
|
||||
} catch (WebDriverCurlException $e) {
|
||||
self::markTestSkipped('PhantomJS webserver is not running.');
|
||||
}
|
||||
try {
|
||||
$capabilities = DesiredCapabilities::firefox();
|
||||
self::$webDriver = RemoteWebDriver::create(self::$host . ':' . self::$port, $capabilities);
|
||||
} catch (WebDriverCurlException $e) {
|
||||
self::markTestSkipped('PhantomJS webserver is not running.');
|
||||
}
|
||||
|
||||
if (!self::$already_installed)
|
||||
@@ -146,9 +143,14 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
}
|
||||
}
|
||||
|
||||
static public function visit($path)
|
||||
public function getDriver()
|
||||
{
|
||||
self::$webDriver->get(self::$root_url . $path);
|
||||
return self::$webDriver;
|
||||
}
|
||||
|
||||
public function visit($path)
|
||||
{
|
||||
$this->getDriver()->get(self::$root_url . $path);
|
||||
}
|
||||
|
||||
static protected function recreate_database($config)
|
||||
@@ -157,14 +159,14 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
$db_conn_mgr->recreate_db();
|
||||
}
|
||||
|
||||
static public function find_element($type, $value)
|
||||
public function find_element($type, $value)
|
||||
{
|
||||
return self::$webDriver->findElement(WebDriverBy::$type($value));
|
||||
return $this->getDriver()->findElement(WebDriverBy::$type($value));
|
||||
}
|
||||
|
||||
static public function submit($type = 'id', $value = 'submit')
|
||||
public function submit($type = 'id', $value = 'submit')
|
||||
{
|
||||
$element = self::find_element($type, $value);
|
||||
$element = $this->find_element($type, $value);
|
||||
$element->click();
|
||||
}
|
||||
|
||||
@@ -305,21 +307,21 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
$ext_path = str_replace('/', '%2F', $extension);
|
||||
|
||||
$this->visit('adm/index.php?i=acp_extensions&mode=main&action=enable_pre&ext_name=' . $ext_path . '&sid=' . $this->sid);
|
||||
$this->assertNotEmpty(count(self::find_element('cssSelector', '.submit-buttons')));
|
||||
$this->assertNotEmpty(count($this->find_element('cssSelector', '.submit-buttons')));
|
||||
|
||||
self::find_element('cssSelector', "input[value='Enable']")->submit();
|
||||
$this->find_element('cssSelector', "input[value='Enable']")->submit();
|
||||
$this->add_lang('acp/extensions');
|
||||
|
||||
try
|
||||
{
|
||||
$meta_refresh = self::find_element('cssSelector', 'meta[http-equiv="refresh"]');
|
||||
$meta_refresh = $this->find_element('cssSelector', 'meta[http-equiv="refresh"]');
|
||||
|
||||
// Wait for extension to be fully enabled
|
||||
while (sizeof($meta_refresh))
|
||||
{
|
||||
preg_match('#url=.+/(adm+.+)#', $meta_refresh->getAttribute('content'), $match);
|
||||
self::$webDriver->execute(array('method' => 'post', 'url' => $match[1]));
|
||||
$meta_refresh = self::find_element('cssSelector', 'meta[http-equiv="refresh"]');
|
||||
$this->getDriver()->execute(array('method' => 'post', 'url' => $match[1]));
|
||||
$meta_refresh = $this->find_element('cssSelector', 'meta[http-equiv="refresh"]');
|
||||
}
|
||||
}
|
||||
catch (\Facebook\WebDriver\Exception\NoSuchElementException $e)
|
||||
@@ -327,7 +329,7 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
// Probably no refresh triggered
|
||||
}
|
||||
|
||||
$this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', self::find_element('cssSelector', 'div.successbox')->getText());
|
||||
$this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', $this->find_element('cssSelector', 'div.successbox')->getText());
|
||||
|
||||
$this->logout();
|
||||
}
|
||||
@@ -415,7 +417,7 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
}
|
||||
|
||||
$this->visit('ucp.php?sid=' . $this->sid . '&mode=logout');
|
||||
$this->assertContains($this->lang('REGISTER'), self::$webDriver->getPageSource());
|
||||
$this->assertContains($this->lang('REGISTER'), $this->getDriver()->getPageSource());
|
||||
unset($this->sid);
|
||||
|
||||
}
|
||||
@@ -435,17 +437,17 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
return;
|
||||
}
|
||||
|
||||
self::$webDriver->manage()->deleteAllCookies();
|
||||
$this->getDriver()->manage()->deleteAllCookies();
|
||||
|
||||
$this->visit('adm/index.php?sid=' . $this->sid);
|
||||
$this->assertContains($this->lang('LOGIN_ADMIN_CONFIRM'), self::$webDriver->getPageSource());
|
||||
$this->assertContains($this->lang('LOGIN_ADMIN_CONFIRM'), $this->getDriver()->getPageSource());
|
||||
|
||||
self::find_element('cssSelector', 'input[name=username]')->clear()->sendKeys($username);
|
||||
self::find_element('cssSelector', 'input[type=password]')->sendKeys($username . $username);
|
||||
self::find_element('cssSelector', 'input[name=login]')->click();
|
||||
$this->find_element('cssSelector', 'input[name=username]')->clear()->sendKeys($username);
|
||||
$this->find_element('cssSelector', 'input[type=password]')->sendKeys($username . $username);
|
||||
$this->find_element('cssSelector', 'input[name=login]')->click();
|
||||
$this->assertContains($this->lang('ADMIN_PANEL'), $this->find_element('cssSelector', 'h1')->getText());
|
||||
|
||||
$cookies = self::$webDriver->manage()->getCookies();
|
||||
$cookies = $this->getDriver()->manage()->getCookies();
|
||||
|
||||
// The session id is stored in a cookie that ends with _sid - we assume there is only one such cookie
|
||||
foreach ($cookies as $cookie)
|
||||
@@ -550,19 +552,19 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
{
|
||||
$this->add_lang('ucp');
|
||||
|
||||
self::$webDriver->manage()->deleteAllCookies();
|
||||
$this->getDriver()->manage()->deleteAllCookies();
|
||||
|
||||
$this->visit('ucp.php');
|
||||
$this->assertContains($this->lang('LOGIN_EXPLAIN_UCP'), self::$webDriver->getPageSource());
|
||||
$this->assertContains($this->lang('LOGIN_EXPLAIN_UCP'), $this->getDriver()->getPageSource());
|
||||
|
||||
self::$webDriver->manage()->deleteAllCookies();
|
||||
$this->getDriver()->manage()->deleteAllCookies();
|
||||
|
||||
self::find_element('cssSelector', 'input[name=username]')->sendKeys($username);
|
||||
self::find_element('cssSelector', 'input[name=password]')->sendKeys($username . $username);
|
||||
self::find_element('cssSelector', 'input[name=login]')->click();
|
||||
$this->find_element('cssSelector', 'input[name=username]')->sendKeys($username);
|
||||
$this->find_element('cssSelector', 'input[name=password]')->sendKeys($username . $username);
|
||||
$this->find_element('cssSelector', 'input[name=login]')->click();
|
||||
$this->assertNotContains($this->lang('LOGIN'), $this->find_element('className', 'navbar')->getText());
|
||||
|
||||
$cookies = self::$webDriver->manage()->getCookies();
|
||||
$cookies = $this->getDriver()->manage()->getCookies();
|
||||
|
||||
// The session id is stored in a cookie that ends with _sid - we assume there is only one such cookie
|
||||
foreach ($cookies as $cookie)
|
||||
@@ -586,6 +588,6 @@ class phpbb_ui_test_case extends phpbb_test_case
|
||||
// Change the Path to your own settings
|
||||
$screenshot = time() . ".png";
|
||||
|
||||
self::$webDriver->takeScreenshot($screenshot);
|
||||
$this->getDriver()->takeScreenshot($screenshot);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user