| GNU Affero General Public License or the licensing of CiviCRM, |
| see the CiviCRM license FAQ at http://civicrm.org/licensing |
+--------------------------------------------------------------------+
-*/
+ */
require_once 'CiviTest/CiviSeleniumTestCase.php';
// configure default mail-box
$this->setupDefaultMailbox();
- $this->openCiviPage("mailing/send", "reset=1", "_qf_Group_cancel");
+ $this->openCiviPage("a/#/mailing/new");
//-------select recipients----------
// fill mailing name
$mailingName = substr(sha1(rand()), 0, 7);
- $this->type("name", "Mailing $mailingName Webtest");
+ $this->waitForElementPresent("xpath=//input[@name='mailingName']");
+ $this->type("xpath=//input[@name='mailingName']", "Mailing $mailingName Webtest");
// Add the test mailing group
- $this->select("includeGroups", "$groupName");
-
- // click next
- $this->clickLink("_qf_Group_next", "_qf_Settings_cancel", FALSE);
-
- //--------track and respond----------
-
- // check for default settings options
- $this->assertChecked("url_tracking");
- $this->assertChecked("open_tracking");
+ $this->select2("s2id_crmUiId_8", $groupName, TRUE);
// do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
- // no need tracking for this test
-
- // click next with default settings
- $this->clickLink("_qf_Settings_next", "_qf_Upload_cancel");
-
- //--------Mailing content------------
- // let from email address be default
+ $this->waitForTextPresent("~1 recipient");
// fill subject for mailing
- $this->type("subject", "Test subject {$mailingName} for Webtest");
-
- // check for default option enabled
- $this->assertChecked("CIVICRM_QFID_1_upload_type");
+ $this->type("xpath=//input[@name='subject']", "Test subject {$mailingName} for Webtest");
// HTML format message
$HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
- $this->fillRichTextField("html_message", $HTMLMessage);
+ $this->fillRichTextField("crmUiId_1", $HTMLMessage);
+ $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as HTML']");
+ $this->waitForTextPresent($HTMLMessage);
+ $this->waitForAjaxContent();
+ $this->click("xpath=//button[@title='Close']");
// Open Plain-text Format pane and type text format msg
- $this->click("//fieldset[@id='compose_id']/div[2]/div[1]");
- $this->type("text_message", "This is text formatted content for Mailing {$mailingName} Webtest.");
+ $this->click("//div[text()='Plain Text']");
+ $this->type("xpath=//*[@name='body_text']", "This is text formatted content for Mailing {$mailingName} Webtest.");
+
+ $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as Plain Text']");
+ $this->waitForTextPresent("This is text formatted content for Mailing {$mailingName} Webtest.");
+ $this->waitForAjaxContent();
+ $this->click("xpath=//button[@title='Close']");
// select default header and footer ( with label )
- $this->select("header_id", "label=Mailing Header");
- $this->select("footer_id", "label=Mailing Footer");
+ $this->click("xpath=//ul/li/a[text()='Header and Footer']");
+ $this->select2("s2id_crmUiId_10", "Mailing Header");
+ $this->select2("s2id_crmUiId_11", "Mailing Footer");
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+ //--------track and respond----------
+
+ // check for default settings options
+ $this->click("xpath=//ul/li/a[text()='Tracking']");
+ $this->assertChecked("url_tracking");
+ $this->assertChecked("open_tracking");
+
+ // click next with default settings
+ $this->click("xpath=//div[@class='crm-wizard-buttons']/button[text()='Next']");
+
+ $this->waitForTextPresent("Mailing $mailingName Webtest");
+ $this->click("xpath=//div[@class='content']//a[text()='~1 recipient']");
+ $this->webtestVerifyTabularData(array("$firstName Mailson" => "mailino$firstName@mailson.co.in"));
+ $this->click("xpath=//button[@title='Close']");
+ $this->waitForTextPresent("(Include: $groupName)");
+
+ //----------Schedule or Send------------
+
+ // do check for default option enabled
+ $this->assertChecked("xpath=//input[@id='schedule-send-now']");
// click next with nominal content
- $this->clickLink("_qf_Upload_upload", "_qf_Test_cancel");
+ $this->click("xpath=//center/a/div[text()='Submit Mailing']");
//---------------Test------------------
////////
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
- // click next
- $this->clickLink("_qf_Test_next", "_qf_Schedule_cancel");
-
- //----------Schedule or Send------------
-
- // do check for default option enabled
- $this->assertChecked("now");
-
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
- // finally schedule the mail by clicking submit
- $this->clickLink("_qf_Schedule_next");
-
//----------end New Mailing-------------
//check redirected page to Scheduled and Sent Mailings and verify for mailing name
- $this->assertElementContainsText('page-title', "Find Mailings");
+ $this->waitForTextPresent("Find Mailings");
$this->assertElementContainsText("xpath=//table[@class='selector row-highlight']/tbody//tr//td", "Mailing $mailingName Webtest");
//--------- mail delivery verification---------
$this->clickLink("link=Successful Deliveries");
// check for open page
- $this->assertElementContainsText('page-title', "Successful Deliveries");
+ $this->waitForTextPresent("Successful Deliveries");
// verify email
- $this->verifyText("xpath=//table[@id='mailing_event']/tbody//tr/td[2]", preg_quote("mailino$firstName@mailson.co.in"));
+ $this->verifyText("xpath=//table[@id='mailing_event']/tbody//tr/td[3]", preg_quote("mailino$firstName@mailson.co.in"));
$eventQueue = new CRM_Mailing_Event_DAO_Queue();
$eventQueue->contact_id = $contactId;
// build forward url
$forwardUrl = array(
"mailing/forward",
- "reset=1&jid={$eventQueue->job_id}&qid={$eventQueue->id}&h={$eventQueue->hash}"
+ "reset=1&jid={$eventQueue->job_id}&qid={$eventQueue->id}&h={$eventQueue->hash}",
);
$this->openCiviPage($forwardUrl[0], $forwardUrl[1], NULL);
$this->select('protocol', 'value=1');
$this->clickLink('_qf_MailSettings_next-bottom');
- // Go to Schedule and Send Mailing form
- $this->openCiviPage('mailing/send', 'reset=1', '_qf_Group_cancel');
+ $this->openCiviPage("a/#/mailing/new");
//-------select recipients----------
// fill mailing name
$mailingName = substr(sha1(rand()), 0, 7);
- $this->type("name", "Mailing $mailingName Webtest");
+ $this->waitForElementPresent("xpath=//input[@name='mailingName']");
+ $this->type("xpath=//input[@name='mailingName']", "Mailing $mailingName Webtest");
// Add the test mailing group
- $this->select("includeGroups", "$groupName");
-
- // click next
- $this->click("_qf_Group_next");
- $this->waitForElementPresent("_qf_Settings_cancel");
-
- //--------track and respond----------
-
- // check for default settings options
- $this->assertChecked("url_tracking");
- $this->assertChecked("open_tracking");
+ $this->select2("s2id_crmUiId_8", $groupName, TRUE);
// do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
-
- // click next with default settings
- $this->clickLink("_qf_Settings_next");
+ $this->waitForTextPresent("~1 recipient");
// fill subject for mailing
- $this->type("subject", "Test subject {$mailingName} for Webtest");
-
- // check for default option enabled
- $this->assertChecked("CIVICRM_QFID_1_upload_type");
+ $this->type("xpath=//input[@name='subject']", "Test subject {$mailingName} for Webtest");
// HTML format message
$HTMLMessage = "This is HTML formatted content for Mailing {$mailingName} Webtest.";
- $this->fillRichTextField("html_message", $HTMLMessage);
+ $this->fillRichTextField("crmUiId_1", $HTMLMessage);
+ $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as HTML']");
+ $this->waitForElementPresent($HTMLMessage);
+ $this->waitForAjaxContent();
+ $this->click("xpath=//button[@title='Close']");
// Open Plain-text Format pane and type text format msg
- $this->click("//fieldset[@id='compose_id']/div[2]/div[1]");
- $this->type("text_message", "This is text formatted content for Mailing {$mailingName} Webtest.");
+ $this->click("//div[text()='Plain Text']");
+ $this->type("xpath=//*[@name='body_text']", "This is text formatted content for Mailing {$mailingName} Webtest.");
+
+ $this->click("xpath=//div[@class='preview-popup']//a[text()='Preview as Plain Text']");
+ $this->waitForTextPresent("This is text formatted content for Mailing {$mailingName} Webtest.");
+ $this->waitForAjaxContent();
+ $this->click("xpath=//button[@title='Close']");
// select default header and footer ( with label )
- $this->select("header_id", "label=Mailing Header");
- $this->select("footer_id", "label=Mailing Footer");
+ $this->click("xpath=//ul/li/a[text()='Header and Footer']");
+ $this->select2("s2id_crmUiId_10", "Mailing Header");
+ $this->select2("s2id_crmUiId_11", "Mailing Footer");
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+ //--------track and respond----------
- // click next with nominal content
- $this->clickLink("_qf_Upload_upload", "_qf_Test_cancel");
+ // check for default settings options
+ $this->click("xpath=//ul/li/a[text()='Tracking']");
+ $this->assertChecked("url_tracking");
+ $this->assertChecked("open_tracking");
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+ // click next with default settings
+ $this->click("xpath=//div[@class='crm-wizard-buttons']/button[text()='Next']");
- // click next
- $this->clickLink("_qf_Test_next", "_qf_Schedule_cancel");
+ $this->waitForTextPresent("Mailing $mailingName Webtest");
+ $this->click("xpath=//div[@class='content']//a[text()='~1 recipient']");
+ $this->webtestVerifyTabularData(array("$firstName Mailson" => "mailino$firstName@mailson.co.in"));
+ $this->click("xpath=//button[@title='Close']");
+ $this->waitForTextPresent("(Include: $groupName)");
//----------Schedule or Send------------
// do check for default option enabled
- $this->assertChecked("now");
-
- // do check count for Recipient
- $this->assertElementContainsText('css=.messages', "Total Recipients: 1");
+ $this->assertChecked("xpath=//input[@id='schedule-send-now']");
- // finally schedule the mail by clicking submit
- $this->clickLink("_qf_Schedule_next");
+ // click next with nominal content
+ $this->click("xpath=//center/a/div[text()='Submit Mailing']");
//----------end New Mailing-------------
//check redirected page to Scheduled and Sent Mailings and verify for mailing name
- $this->assertElementContainsText('page-title', "Find Mailings");
+ $this->waitForTextPresent("Find Mailings");
$this->assertElementContainsText("xpath=//table[@class='selector row-highlight']/tbody//tr//td", "Mailing $mailingName Webtest");
// directly send schedule mailing -- not working right now
'Replies',
'Bounces',
'Unsubscribe Requests',
- 'Opt-out Requests'
+ 'Opt-out Requests',
);
//check for report and adv search links
$this->verifyText("xpath=//table//tr[td[1]/text()='Subject']/descendant::td[2]", preg_quote("Test subject $mailingName for Webtest"));
// after asserts do clicks and confirm filters
- $criteriaCheck =
- array(
- 'Intended Recipients' =>
- array(
- 'report' => array('report_name' => 'Mailing Details', 'Mailing' => "Mailing $mailingName Webtest"),
- 'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest"),
- ),
- 'Successful Deliveries' =>
- array(
- 'report' => array(
- 'report_name' => 'Mailing Details',
- 'Mailing' => "Mailing $mailingName Webtest",
- "Delivery Status" => " Successful"
- ),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing Delivery -' => "Successful"
- ),
- ),
- 'Tracked Opens' =>
- array(
- 'report' => array('report_name' => 'Mail Opened', 'Mailing' => "Mailing $mailingName Webtest"),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing: Trackable Opens -' => "Opened"
- ),
- ),
- 'Click-throughs' =>
- array(
- 'report' => array('report_name' => 'Mail Clickthroughs', 'Mailing' => "Mailing $mailingName Webtest"),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing: Trackable URL Clicks -' => "Clicked"
- ),
- ),
- 'Forwards' =>
- array(
- 'report' => array(
- 'report_name' => 'Mailing Details',
- 'Mailing' => "Mailing $mailingName Webtest",
- 'Forwarded' => 'Is equal to Yes'
- ),
- 'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Forwards"),
- ),
- 'Replies' =>
- array(
- 'report' => array(
- 'report_name' => 'Mailing Details',
- 'Mailing' => "Mailing $mailingName Webtest",
- 'Replied' => 'Is equal to Yes'
- ),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing: Trackable Replies -' => "Replied"
- ),
- ),
- 'Bounces' =>
- array(
- 'report' => array('report_name' => 'Mail Bounces', 'Mailing' => "Mailing $mailingName Webtest"),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing Delivery -' => "Bounced"
- ),
- ),
- 'Unsubscribe Requests' =>
- array(
- 'report' => array(
- 'report_name' => 'Mailing Details',
- 'Mailing' => "Mailing $mailingName Webtest",
- 'Unsubscribed' => 'Is equal to Yes'
- ),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing: -' => "Unsubscribe Requests"
- ),
- ),
- 'Opt-out Requests' =>
- array(
- 'report' => array(
- 'report_name' => 'Mailing Details',
- 'Mailing' => "Mailing $mailingName Webtest",
- 'Opted-out' => 'Is equal to Yes'
- ),
- 'search' => array(
- 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
- 'Mailing: -' => "Opt-out Requests"
- ),
- ),
- );
+ $criteriaCheck = array(
+ 'Intended Recipients' => array(
+ 'report' => array('report_name' => 'Mailing Details', 'Mailing' => "Mailing $mailingName Webtest"),
+ 'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest"),
+ ),
+ 'Successful Deliveries' => array(
+ 'report' => array(
+ 'report_name' => 'Mailing Details',
+ 'Mailing' => "Mailing $mailingName Webtest",
+ "Delivery Status" => " Successful",
+ ),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing Delivery -' => "Successful",
+ ),
+ ),
+ 'Tracked Opens' => array(
+ 'report' => array('report_name' => 'Mail Opened', 'Mailing' => "Mailing $mailingName Webtest"),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing: Trackable Opens -' => "Opened",
+ ),
+ ),
+ 'Click-throughs' => array(
+ 'report' => array('report_name' => 'Mail Clickthroughs', 'Mailing' => "Mailing $mailingName Webtest"),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing: Trackable URL Clicks -' => "Clicked",
+ ),
+ ),
+ 'Forwards' => array(
+ 'report' => array(
+ 'report_name' => 'Mailing Details',
+ 'Mailing' => "Mailing $mailingName Webtest",
+ 'Forwarded' => 'Is equal to Yes',
+ ),
+ 'search' => array('Mailing Name IN' => "\"Mailing {$mailingName} Webtest", 'Mailing: -' => "Forwards"),
+ ),
+ 'Replies' => array(
+ 'report' => array(
+ 'report_name' => 'Mailing Details',
+ 'Mailing' => "Mailing $mailingName Webtest",
+ 'Replied' => 'Is equal to Yes',
+ ),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing: Trackable Replies -' => "Replied",
+ ),
+ ),
+ 'Bounces' => array(
+ 'report' => array('report_name' => 'Mail Bounces', 'Mailing' => "Mailing $mailingName Webtest"),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing Delivery -' => "Bounced",
+ ),
+ ),
+ 'Unsubscribe Requests' => array(
+ 'report' => array(
+ 'report_name' => 'Mailing Details',
+ 'Mailing' => "Mailing $mailingName Webtest",
+ 'Unsubscribed' => 'Is equal to Yes',
+ ),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing: -' => "Unsubscribe Requests",
+ ),
+ ),
+ 'Opt-out Requests' => array(
+ 'report' => array(
+ 'report_name' => 'Mailing Details',
+ 'Mailing' => "Mailing $mailingName Webtest",
+ 'Opted-out' => 'Is equal to Yes',
+ ),
+ 'search' => array(
+ 'Mailing Name IN' => "\"Mailing {$mailingName} Webtest",
+ 'Mailing: -' => "Opt-out Requests",
+ ),
+ ),
+ );
$this->criteriaCheck($criteriaCheck, $mailingReportUrl);
}
foreach ($dataToCheck as $key => $value) {
if ($entity == 'report') {
if ($key == 'report_name') {
- $this->assertElementContainsText('page-title', "{$value}");
+ $this->waitForTextPresent("{$value}");
continue;
}
$this->assertTrue($this->isElementPresent("xpath=//form//div[3]/table/tbody//tr/th[contains(text(),'{$key}')]/../td[contains(text(),'{$value}')]"), "Criteria check for {$key} failed for Report for {$summaryInfo}");
}
else {
- $this->assertElementContainsText('page-title', "Advanced Search");
+ $this->waitForTextPresent("Advanced Search");
$assertedValue = $this->isElementPresent("xpath=//div[@class='crm-results-block']//div[@class='qill'][contains(text(),'{$key} {$value}')]");
if (!$assertedValue) {
$assertedValue = $this->isTextPresent("{$key} {$value}");
}
}
}
+
}