*/
define('CIVICRM_SETTINGS_PATH', __DIR__ . '/civicrm.settings.dist.php');
define('CIVICRM_SETTINGS_LOCAL_PATH', __DIR__ . '/civicrm.settings.local.php');
+define('CIVICRM_WEBTEST', 1);
if (file_exists(CIVICRM_SETTINGS_LOCAL_PATH)) {
require_once CIVICRM_SETTINGS_LOCAL_PATH;
}
}
+ protected function prepareTestSession() {
+ $result = parent::prepareTestSession();
+
+ // Set any cookies required by local installation
+ // Note: considered doing this in setUp(), but the Selenium session wasn't yet initialized.
+ if (property_exists($this->settings, 'cookies')) {
+ // We don't really care about this page, but it seems we need
+ // to open a page before setting a cookie.
+ $this->open($this->sboxPath);
+ $this->waitForPageToLoad($this->getTimeoutMsec());
+ $this->setCookies($this->settings->cookies);
+ }
+ return $result;
+ }
+
+ /**
+ * @param array $cookies each item is an array with keys:
+ * - name: string
+ * - value: string; note that RFC's don't define particular encoding scheme, so
+ * you must pick one yourself and pre-encode; does not allow values with
+ * commas, semicolons, or whitespace
+ * - path: string; default: '/'
+ * - max_age: int; default: 1 week (7*24*60*60)
+ */
+ protected function setCookies($cookies) {
+ foreach ($cookies as $cookie) {
+ if (!isset($cookie['path'])) {
+ $cookie['path'] = '/';
+ }
+ if (!isset($cookie['max_age'])) {
+ $cookie['max_age'] = 7*24*60*60;
+ }
+ $this->deleteCookie($cookie['name'], $cookie['path']);
+ $optionExprs = array();
+ foreach ($cookie as $key => $value) {
+ if ($key != 'name' && $key != 'value') {
+ $optionExprs[] = "$key=$value";
+ }
+ }
+ $this->createCookie("{$cookie['name']}={$cookie['value']}", implode(', ', $optionExprs));
+ }
+ }
+
protected function tearDown() {
}
*
* @return void
*/
- function fillRichTextField($fieldName, $text = 'Typing this text into editor.', $editor = 'CKEditor') {
+ function fillRichTextField($fieldName, $text = 'Typing this text into editor.', $editor = 'CKEditor', $compressed = FALSE) {
// make sure cursor focuses on the field
$this->fireEvent($fieldName, 'focus');
if ($editor == 'CKEditor') {
+ if ($compressed) {
+ $this->click("{$fieldName}-plain");
+ }
$this->waitForElementPresent("xpath=//div[@id='cke_{$fieldName}']//iframe");
$this->runScript("CKEDITOR.instances['{$fieldName}'].setData('<p>{$text}</p>');");
}
* @param bool $isPcpApprovalNeeded
* @param bool $isSeparatePayment
* @param bool $honoreeSection
- * @param bool $allowOtherAmmount
+ * @param bool $allowOtherAmount
* @param bool $isConfirmEnabled
* @param string $financialType
* @param bool $fixedAmount
$isPcpApprovalNeeded = FALSE,
$isSeparatePayment = FALSE,
$honoreeSection = TRUE,
- $allowOtherAmmount = TRUE,
+ $allowOtherAmount = TRUE,
$isConfirmEnabled = TRUE,
$financialType = 'Donation',
$fixedAmount = TRUE,
$this->click("is_recur_interval");
$this->click("is_recur_installments");
}
- if ($allowOtherAmmount) {
+ if ($allowOtherAmount) {
$this->click('is_allow_other_amount');
//$this->type('min_amount', $rand / 2);
//$this->type('max_amount', $rand * 10);
}
- if ($fixedAmount || !$allowOtherAmmount) {
+ if ($fixedAmount || !$allowOtherAmount) {
$this->type('label_1', "Label $hash");
$this->type('value_1', "$rand");
}
* @param $returnColumn
* @param $searchColumn
* @param $expectedValue
- * @param $message
+ * @param string $message
*/
function assertDBCompareValue($daoName, $searchValue, $returnColumn, $searchColumn,
$expectedValue, $message
$fieldLabel = "custom_field_for_{$customSet['entity']}_{$customSet['subEntity']}" . substr(sha1(rand()), 0, 4);
$this->type('label', $fieldLabel);
- $this->click('_qf_Field_next-bottom');
+ $this->click('_qf_Field_next_new-bottom');
$this->waitForPageToLoad($this->getTimeoutMsec());
$customGroupTitle = preg_replace('/\s/', '_', trim($customGroupTitle));
*/
function select2($fieldName,$label, $multiple = FALSE, $xpath=FALSE) {
if ($multiple) {
- $this->clickAt("//*[@id='$fieldName']/../div/ul/li[1]");
- $this->keyDown("//*[@id='$fieldName']/../div/ul/li[1]/input", " ");
- $this->type("//*[@id='$fieldName']/../div/ul/li[1]/input", $label);
- $this->typeKeys("//*[@id='$fieldName']/../div/ul/li[1]/input", $label);
+ $this->clickAt("//*[@id='$fieldName']/../div/ul/li");
+ $this->keyDown("//*[@id='$fieldName']/../div/ul/li//input", " ");
+ $this->type("//*[@id='$fieldName']/../div/ul/li//input", $label);
+ $this->typeKeys("//*[@id='$fieldName']/../div/ul/li//input", $label);
$this->waitForElementPresent("//*[@class='select2-result-label']");
$this->clickAt("//*[@class='select2-results']/li[1]/div");
}