'div.project-navbar div.navbar-inner a.brand', 'memberCount' => 'div.project-sidebar.profile-sidebar div.profile-info .metrics .members span.count', 'followerCount' => 'div.project-sidebar.profile-sidebar div.profile-info .metrics .followers span.count', 'branchCount' => 'div.project-sidebar.profile-sidebar div.profile-info .metrics .branches span.count', 'avatars' => 'div.project-sidebar div.members div.avatars div span a.avatar-wrapper' ); public $url = 'projects/'; public $title = 'Swarm'; public function __construct($test, $projectName) { $this->url = $this->url . str_replace(' ', '-', strtolower($projectName)); $this->title = $this->title . ' - ' . $projectName; parent::__construct($test); } /** * Submits the edit project from and asserts based on the response. * * @todo - add tests to handle editing of project * @param boolean $expectedSuccess Whether or not we expect this form submission to succeed. * @return \Pages\AddProjectPage */ public function submitProjectForm($expectedSuccess = true) { $this->save->click(); $page = $this; $projectFormTest = function() use ($page, $expectedSuccess) { // Return false if page-level error notice is unexpectedly displayed. // Note that this usually indicates a system-level issue, such as no // connection to perforce, no permission, etc. $elements = $page->test->fetchElementsBy('css selector', $page->locators['alertError']); if (!empty($elements)) { return false; } // Otherwise check to ensure the the form completed as expected by // looking for elements indicating error. $elements = $page->test->fetchElementsBy('css selector', $page->locators['inputError']); return ((empty($elements) && $expectedSuccess) || (!empty($elements) && !$expectedSuccess)); }; $this->test->spinAssert("Login was not completed as expected.", $projectFormTest); return $this; } }