93 lines
No EOL
2.1 KiB
PHP
93 lines
No EOL
2.1 KiB
PHP
<?php
|
|
|
|
namespace Tests\Browser\Pages;
|
|
|
|
use Laravel\Dusk\Browser;
|
|
|
|
class UsersPage extends Page
|
|
{
|
|
/**
|
|
* Get the URL for the page.
|
|
*/
|
|
public function url(): string
|
|
{
|
|
return '/users';
|
|
}
|
|
|
|
/**
|
|
* Assert that the browser is on the page.
|
|
*/
|
|
public function assert(Browser $browser): void
|
|
{
|
|
$browser->assertPathIs($this->url())
|
|
->assertSee('MANAGE USERS');
|
|
}
|
|
|
|
/**
|
|
* Get the element shortcuts for the page.
|
|
*
|
|
* @return array<string, string>
|
|
*/
|
|
public function elements(): array
|
|
{
|
|
return [
|
|
'@add-button' => 'button[wire\\:click="create"]',
|
|
'@users-list' => '[wire\\:id]', // Livewire component
|
|
'@no-users' => '*[text*="No users found"]',
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Open the create user modal.
|
|
*/
|
|
public function openCreateModal(Browser $browser): void
|
|
{
|
|
$browser->waitFor('@add-button')
|
|
->click('@add-button')
|
|
->pause(1000);
|
|
}
|
|
|
|
/**
|
|
* Click delete button for a user.
|
|
*/
|
|
public function clickDeleteForUser(Browser $browser, string $userName): void
|
|
{
|
|
$browser->within("tr:contains('{$userName}')", function ($row) {
|
|
$row->click('button.bg-danger');
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Click the first available delete button.
|
|
*/
|
|
public function clickFirstDeleteButton(Browser $browser): void
|
|
{
|
|
$browser->waitFor('button.bg-danger', 5)
|
|
->click('button.bg-danger')
|
|
->pause(1000);
|
|
}
|
|
|
|
/**
|
|
* Assert a user is visible in the list.
|
|
*/
|
|
public function assertUserVisible(Browser $browser, string $userName): void
|
|
{
|
|
$browser->assertSee($userName);
|
|
}
|
|
|
|
/**
|
|
* Assert a user is not visible in the list.
|
|
*/
|
|
public function assertUserNotVisible(Browser $browser, string $userName): void
|
|
{
|
|
$browser->assertDontSee($userName);
|
|
}
|
|
|
|
/**
|
|
* Assert success message is shown.
|
|
*/
|
|
public function assertSuccessMessage(Browser $browser, string $message): void
|
|
{
|
|
$browser->assertSee($message);
|
|
}
|
|
} |