Files
roundcubemail/tests/Browser/Components/Dialog.php
Michael Voříšek a8707ae220 Fix and assert basic CS using CI (#9246)
* Assert CS using CI

* fix "single_blank_line_at_eof"

* fix "statement_indentation"

* fix "switch_case_semicolon_to_colon"

* fix "control_structure_braces"

* fix "statement_indentation"

* fix "no_whitespace_in_blank_line"

* fix "no_trailing_whitespace_in_comment"

* fix "no_trailing_whitespace"

* fix "single_space_around_construct"

* fix "spaces_inside_parentheses"

* fix "ternary_operator_spaces"

* fix "trim_array_spaces"

* fix "whitespace_after_comma_in_array"

* fix "cast_spaces"

* fix "unary_operator_spaces"

* fix "no_trailing_comma_in_singleline"

* fix "ordered_imports"

* fix "no_unused_imports"

* Check composer.json format

* fix CI job name

* file header comments are not phpdoc

* fix "phpdoc_indent"

* fix "braces_position"

* fix "phpdoc_types"

* fix "no_blank_lines_after_class_opening"

* fix "no_multiple_statements_per_line"

* fix "multiline_comment_opening_closing"

* fix "single_line_empty_body"

* fix "non_printable_character"

* fix "phpdoc_trim_consecutive_blank_line_separation"

* fix "include"

* fix "no_mixed_echo_print"

---------

Co-authored-by: Aleksander Machniak <alec@alec.pl>
2023-12-16 15:37:43 +01:00

126 lines
2.8 KiB
PHP

<?php
namespace Tests\Browser\Components;
use Laravel\Dusk\Component;
use Tests\Browser\Browser;
class Dialog extends Component
{
public $num;
/**
* Class constructor
*/
public function __construct($num = 1)
{
$this->num = $num ?: 1;
}
/**
* Get the root selector for the component.
*
* @return string
*/
public function selector()
{
// work with the specified dialog (in case there's more than one)
$suffix = $this->num > 1 ? str_repeat(' + div + .ui-dialog', $this->num - 1) : '';
return '.ui-dialog' . $suffix;
}
/**
* Assert that the browser page contains the component.
*
* @param Browser $browser
*
* @return void
*/
public function assert($browser)
{
$browser->waitFor($this->selector());
}
/**
* Get the element shortcuts for the component.
*
* @return array
*/
public function elements()
{
return [
'@title' => '.ui-dialog-titlebar',
'@content' => '.ui-dialog-content',
'@footer' => '.ui-dialog-buttonset',
];
}
/**
* Assert dialog title
*/
public function assertDialogTitle($browser, $title)
{
$browser->assertSeeIn('@title', $title);
}
/**
* Assert dialog content (for simple text dialogs)
*/
public function assertDialogContent($browser, $text)
{
$browser->assertSeeIn('@content', $text);
}
/**
* Assert dialog button
*/
public function assertButton($browser, $name, $label)
{
$selector = "@footer button.{$name}";
$browser->assertVisible($selector)
->assertSeeIn($selector, $label);
}
/**
* Click dialog button
*/
public function clickButton($browser, $name, $expect_close = true)
{
$browser->click('@footer button.' . $name);
if ($expect_close) {
$browser->waitUntilMissing($this->selector());
}
}
/**
* Close dialog
*/
public function closeDialog($browser)
{
$browser->click('@footer button.cancel, @footer button.close')
->waitUntilMissing($this->selector());
}
/**
* Close dialog with ESC key
*/
public function pressESC($browser)
{
$browser->driver->getKeyboard()->sendKeys(\Facebook\WebDriver\WebDriverKeys::ESCAPE);
$browser->waitUntilMissing($this->selector());
}
/**
* Execute code within dialog's iframe
*/
public function withinDialogFrame($browser, $callback)
{
$browser->withinFrame('@content iframe', function ($browser) use ($callback) {
$browser->withinBody(function ($browser) use ($callback) {
$callback($browser);
});
});
}
}