expected pairs * @param mixed $expected Expected value when $key is a string */ public function assertEnv($browser, $key, $expected = null) { if (is_array($key)) { foreach ($key as $name => $expected) { Assert::assertEquals($expected, $this->getEnv($browser, $name)); } } else { Assert::assertEquals($expected, $this->getEnv($browser, $key)); } } /** * Assert existence of defined gui_objects */ public function assertObjects($browser, array $names) { $objects = $this->getObjects($browser); foreach ($names as $object_name) { Assert::assertContains($object_name, $objects); } } /** * Return rcmail.env entry */ public function getEnv($browser, $key) { return $browser->driver->executeScript("return rcmail.env['$key']"); } /** * Return names of defined gui_objects */ public function getObjects($browser) { return (array) $browser->driver->executeScript("var i, r = []; for (i in rcmail.gui_objects) r.push(i); return r"); } /** * Visit specified task/action with logon if needed */ public function gotoAction($browser, $task = 'mail', $action = null, $login = true) { $browser->visit("?_task={$task}&_action={$action}"); // check if we have a valid session if ($login && $this->getEnv($browser, 'task') == 'login') { $this->doLogin($browser); } } /** * Log in the test user */ protected function doLogin($browser) { $browser->type('_user', TESTS_USER); $browser->type('_pass', TESTS_PASS); $browser->click('button[type="submit"]'); // wait after successful login $browser->waitUntil('!rcmail.busy'); } }