Page MenuHomeIn-Portal Phabricator

AbstractBrowserTestCase.php
No OneTemporary

File Metadata

Created
Mon, Aug 18, 4:26 PM

AbstractBrowserTestCase.php

<?php
/**
* @version $Id: AbstractBrowserTestCase.php 16822 2024-11-30 18:56:21Z alex $
* @package In-Portal
* @copyright Copyright (C) 1997 - 2023 Intechnic. All rights reserved.
* @license GNU/GPL
* In-Portal is Open Source software.
* This means that this software may have been modified pursuant
* the GNU General Public License, and as distributed it includes
* or is derivative of works licensed under the GNU General Public License
* or other free or open source software licenses.
* See http://www.in-portal.org/license for copyright notices and details.
*/
use aik099\PHPUnit\BrowserTestCase;
use QATools\QATools\HtmlElements\TypifiedPageFactory;
use QATools\QATools\PageObject\Container;
abstract class AbstractBrowserTestCase extends BrowserTestCase
{
/**
* Browsers to use for tests.
*
* @var array
*/
public static $browsers = array(
array('alias' => 'default'),
);
/**
* Browser aliases.
*
* @var array
*/
protected static $browserAliases;
/**
* Page factory.
*
* @var TypifiedPageFactory
*/
protected $pageFactory;
/**
* Reference to kApplication class instance.
*
* @var kApplication
*/
protected $Application = null;
/**
* Connection to database
*
* @var IDBConnection
*/
protected $Conn;
/**
* Constructs a test case with the given name.
*
* @param string $name Test case name.
* @param array $data Data.
* @param string $data_name Data name.
*
* @access public
*/
public function __construct($name = null, array $data = array(), $data_name = '')
{
parent::__construct($name, $data, $data_name);
$this->Application =& kApplication::Instance();
$this->Conn =& $this->Application->GetADODBConnection();
}
/**
* Creates factory, that can be used for page creation in the tests.
*
* @return void
* @before
*/
protected function setUpTest()
{
$this->pageFactory = new TypifiedPageFactory($this->getSession(), $this->getPageFactoryConfig());
}
/**
* Returns config object to be used during PageFactory initialization.
*
* @return Container
*/
protected function getPageFactoryConfig()
{
$container = new Container();
$container['url_factory'] = function () {
return new QAToolsUrlFactory();
};
return $container;
}
/**
* Gets browser configuration aliases.
* Allows to decouple actual test server connection details from test cases.
*
* @return array
* @throws RuntimeException When Mink configuration file is missing.
*/
public function getBrowserAliases()
{
static $cache = null;
if ( self::$browserAliases === null ) {
$config_file = WRITEABLE . '/mink_config.php';
if ( !file_exists($config_file) ) {
throw new RuntimeException('The Mink configuration file does not exist.');
}
$cache = require_once $config_file;
// The remote code coverage collection won't work without "baseUrl" in the browser configuration.
foreach ( $cache as $alias_name => $browser_configuration ) {
if ( !isset($browser_configuration['alias']) && !isset($browser_configuration['baseUrl']) ) {
$cache[$alias_name]['baseUrl'] = $this->Application->BaseURL();
}
}
self::$browserAliases = $cache;
}
return self::$browserAliases;
}
}

Event Timeline