Changeset View
Changeset View
Standalone View
Standalone View
src/tests/Browser/LogonTest.php
<?php | <?php | ||||
namespace Tests\Browser; | namespace Tests\Browser; | ||||
use Tests\Browser; | use Tests\Browser; | ||||
use Tests\Browser\Components\Menu; | use Tests\Browser\Components\Menu; | ||||
use Tests\Browser\Components\Toast; | use Tests\Browser\Components\Toast; | ||||
use Tests\Browser\Pages\Dashboard; | use Tests\Browser\Pages\Dashboard; | ||||
use Tests\Browser\Pages\Home; | use Tests\Browser\Pages\Home; | ||||
use Tests\Browser\Pages\UserProfile; | use Tests\Browser\Pages\UserProfile; | ||||
use Tests\TestCaseDusk; | use Tests\TestCaseDusk; | ||||
use Illuminate\Foundation\Testing\DatabaseMigrations; | use Illuminate\Foundation\Testing\DatabaseMigrations; | ||||
class LogonTest extends TestCaseDusk | class LogonTest extends TestCaseDusk | ||||
{ | { | ||||
/** | /** | ||||
* Test menu on logon page | * Test menu on logon page | ||||
*/ | */ | ||||
public function testLogonMenu(): void | public function testLogonMenu(): void | ||||
{ | { | ||||
$this->browse(function (Browser $browser) { | $this->browse(function (Browser $browser) { | ||||
$browser->visit(new Home()) | $browser->visit(new Home()) | ||||
->within(new Menu(), function ($browser) { | ->within(new Menu(), function ($browser) { | ||||
$browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login']) | $browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login', 'lang']) | ||||
->assertSeeIn('#footer-copyright', '@ Apheleia IT AG, ' . date('Y')); | ->assertSeeIn('#footer-copyright', '@ Apheleia IT AG, ' . date('Y')); | ||||
}); | }); | ||||
if ($browser->isDesktop()) { | if ($browser->isDesktop()) { | ||||
$browser->within(new Menu('footer'), function ($browser) { | $browser->within(new Menu('footer'), function ($browser) { | ||||
$browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'tos', 'login']); | $browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'tos', 'login']); | ||||
}); | }); | ||||
} else { | } else { | ||||
$browser->assertMissing('#footer-menu .navbar-nav'); | $browser->assertMissing('#footer-menu .navbar-nav'); | ||||
} | } | ||||
$browser->assertSeeLink('Forgot password?') | $browser->assertSeeLink('Forgot password?') | ||||
->assertSeeLink('Webmail'); | ->assertSeeLink('Webmail'); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
* Test language menu, and language change | |||||
*/ | |||||
public function testLocales(): void | |||||
{ | |||||
$this->browse(function (Browser $browser) { | |||||
$browser->visit(new Home()) | |||||
// ->plainCookie('language', '') | |||||
->within(new Menu(), function ($browser) { | |||||
$browser->assertSeeIn('@lang', 'EN') | |||||
->click('@lang'); | |||||
}) | |||||
// Switch English -> German | |||||
->whenAvailable('nav .dropdown-menu', function (Browser $browser) { | |||||
$browser->assertElementsCount('a', 2) | |||||
->assertSeeIn('a:nth-child(1)', 'EN - English') | |||||
->assertSeeIn('a:nth-child(2)', 'DE - German') | |||||
->click('a:nth-child(2)'); | |||||
}) | |||||
->waitUntilMissing('nav .dropdown-menu') | |||||
->within(new Menu(), function ($browser) { | |||||
$browser->assertSeeIn('@lang', 'DE'); | |||||
}) | |||||
->waitForTextIn('#header-menu .link-login', 'EINLOGGEN') | |||||
->assertSeeIn('#footer-menu .link-login', 'Einloggen') | |||||
->assertSeeIn('@logon-button', 'Anmelden') | |||||
// refresh the page to see if it uses the lang previously set | |||||
->refresh() | |||||
->waitForTextIn('#header-menu .link-login', 'EINLOGGEN') | |||||
->assertSeeIn('#footer-menu .link-login', 'Einloggen') | |||||
->assertSeeIn('@logon-button', 'Anmelden') | |||||
->within(new Menu(), function ($browser) { | |||||
$browser->assertSeeIn('@lang', 'DE') | |||||
->click('@lang'); | |||||
}) | |||||
// Switch German -> English | |||||
->whenAvailable('nav .dropdown-menu', function (Browser $browser) { | |||||
$browser->click('a:nth-child(1)'); | |||||
}) | |||||
->waitUntilMissing('nav .dropdown-menu') | |||||
->within(new Menu(), function ($browser) { | |||||
$browser->assertSeeIn('@lang', 'EN'); | |||||
}) | |||||
->waitForTextIn('#header-menu .link-login', 'LOGIN'); | |||||
}); | |||||
} | |||||
/** | |||||
* Test redirect to /login if user is unauthenticated | * Test redirect to /login if user is unauthenticated | ||||
*/ | */ | ||||
public function testRequiredAuth(): void | public function testRequiredAuth(): void | ||||
{ | { | ||||
$this->browse(function (Browser $browser) { | $this->browse(function (Browser $browser) { | ||||
$browser->visit('/dashboard'); | $browser->visit('/dashboard'); | ||||
// Checks if we're really on the login page | // Checks if we're really on the login page | ||||
Show All 30 Lines | public function testLogonSuccessful(): void | ||||
// Checks if we're really on Dashboard page | // Checks if we're really on Dashboard page | ||||
->on(new Dashboard()) | ->on(new Dashboard()) | ||||
->assertVisible('@links a.link-profile') | ->assertVisible('@links a.link-profile') | ||||
->assertVisible('@links a.link-domains') | ->assertVisible('@links a.link-domains') | ||||
->assertVisible('@links a.link-users') | ->assertVisible('@links a.link-users') | ||||
->assertVisible('@links a.link-wallet') | ->assertVisible('@links a.link-wallet') | ||||
->assertVisible('@links a.link-webmail') | ->assertVisible('@links a.link-webmail') | ||||
->within(new Menu(), function ($browser) { | ->within(new Menu(), function ($browser) { | ||||
$browser->assertMenuItems(['explore', 'blog', 'support', 'dashboard', 'logout']); | $browser->assertMenuItems(['explore', 'blog', 'support', 'dashboard', 'logout', 'lang']); | ||||
}); | }); | ||||
if ($browser->isDesktop()) { | if ($browser->isDesktop()) { | ||||
$browser->within(new Menu('footer'), function ($browser) { | $browser->within(new Menu('footer'), function ($browser) { | ||||
$browser->assertMenuItems(['explore', 'blog', 'support', 'tos', 'dashboard', 'logout']); | $browser->assertMenuItems(['explore', 'blog', 'support', 'tos', 'dashboard', 'logout']); | ||||
}); | }); | ||||
} else { | } else { | ||||
$browser->assertMissing('#footer-menu .navbar-nav'); | $browser->assertMissing('#footer-menu .navbar-nav'); | ||||
Show All 35 Lines | public function testLogout(): void | ||||
}); | }); | ||||
// We expect the logon page | // We expect the logon page | ||||
$browser->waitForLocation('/login') | $browser->waitForLocation('/login') | ||||
->on(new Home()); | ->on(new Home()); | ||||
// with default menu | // with default menu | ||||
$browser->within(new Menu(), function ($browser) { | $browser->within(new Menu(), function ($browser) { | ||||
$browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login']); | $browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login', 'lang']); | ||||
}); | }); | ||||
// Success toast message | // Success toast message | ||||
$browser->assertToast(Toast::TYPE_SUCCESS, 'Successfully logged out'); | $browser->assertToast(Toast::TYPE_SUCCESS, 'Successfully logged out'); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
Show All 10 Lines | public function testLogoutByURL(): void | ||||
// Use /logout url, and expect the logon page | // Use /logout url, and expect the logon page | ||||
$browser->visit('/logout') | $browser->visit('/logout') | ||||
->waitForLocation('/login') | ->waitForLocation('/login') | ||||
->on(new Home()); | ->on(new Home()); | ||||
// with default menu | // with default menu | ||||
$browser->within(new Menu(), function ($browser) { | $browser->within(new Menu(), function ($browser) { | ||||
$browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login']); | $browser->assertMenuItems(['signup', 'explore', 'blog', 'support', 'login', 'lang']); | ||||
}); | }); | ||||
// Success toast message | // Success toast message | ||||
$browser->assertToast(Toast::TYPE_SUCCESS, 'Successfully logged out'); | $browser->assertToast(Toast::TYPE_SUCCESS, 'Successfully logged out'); | ||||
}); | }); | ||||
} | } | ||||
/** | /** | ||||
▲ Show 20 Lines • Show All 63 Lines • Show Last 20 Lines |