id = trim($id); } /** * Get the root selector for the component. * * @return string */ public function selector() { return '#' . $this->id; } /** * Assert that the browser page contains the component. * * @param Browser $browser * * @return void */ public function assert($browser) { $browser->waitFor($this->selector() . '.html-editor'); } /** * Get the element shortcuts for the component. * * @return array */ public function elements() { return [ '@plain-toolbar' => '.editor-toolbar', '@plain-body' => 'textarea', '@html-editor' => '.mce-tinymce', '@html-toolbar' => '.mce-tinymce .mce-toolbar', '@html-body' => 'iframe', ]; } /** * Assert editor mode */ public function assertMode($browser, $mode) { if ($mode == self::MODE_PLAIN) { $browser->assertVisible('@plain-toolbar') ->assertMissing('@html-body'); } else { $browser->assertMissing('@plain-toolbar') ->assertVisible('@html-body'); } } /** * Switch editor mode */ public function switchMode($browser, $mode, $accept_warning = false) { if ($mode == self::MODE_HTML) { $browser->click('@plain-toolbar a.mce-i-html'); if ($accept_warning) { $browser->waitForDialog()->acceptDialog(); } $browser->waitFor('@html-body'); } else { $browser->click('@html-toolbar .mce-i-plaintext'); if ($accept_warning) { $browser->waitForDialog()->acceptDialog(); } $browser->waitFor('@plain-body'); } } }