}
}
+ 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>');");
}
$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");
}