Skip to content

Commit

Permalink
[Fix] Wait for FilamentPHP in Dusk tests
Browse files Browse the repository at this point in the history
  • Loading branch information
bumbummen99 committed Dec 8, 2024
1 parent b4512f0 commit cf4f9e4
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 3 deletions.
22 changes: 19 additions & 3 deletions tests/Browser/BlocksInputTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

namespace Tests\SkyRaptor\FilamentBlocksBuilder\Browser;

use Filament\Panel;
use Illuminate\Support\Facades\App;
use Laravel\Dusk\Browser;
use Orchestra\Testbench\Dusk\Options;
use Workbench\App\Providers\Filament\AdminPanelProvider;

class BlocksInputTest extends TestCase
{
Expand All @@ -25,14 +28,22 @@ function test_nested_builders_interaction()
{
$this->browse(function (Browser $browser) {
/* Authenticate as the default testing User */
$browser->loginAs($this->user);
$this->login(
$browser,
(
new AdminPanelProvider(App::getInstance())
)->panel(new Panel)
);

/* Open the testing resource's form */
$browser->visit('/admin/pages/create');
$browser->waitUntilEnabled('#data\.title');

/* Add a Card to the BlocksInput */
$browser->press('Add to');
$browser->waitForText('Card');
$browser->press('Card');
sleep(1);

/* Ensure that the card has been successfully added */
$browser->assertSee('Card 1');
Expand All @@ -47,7 +58,12 @@ function test_nested_builders_save_and_load()
{
$this->browse(function (Browser $browser) {
/* Authenticate as the default testing User */
$browser->loginAs($this->user);
$this->login(
$browser,
(
new AdminPanelProvider(App::getInstance())
)->panel(new Panel)
);

/* Open the testing resource's form */
$browser->visit('/admin/pages/create');
Expand Down Expand Up @@ -97,8 +113,8 @@ function test_nested_builders_save_and_load()

$browser->assertSee('Card 1');
$browser->assertSee('Heading 1');
$browser->assertValue('input[id$=".data.content"]', 'Das ist eine Überschrift!');
$browser->assertSee('Paragraph 2');
$browser->assertValue('input[id$=".data.content"]', 'Das ist eine Überschrift!');
});
}
}
35 changes: 35 additions & 0 deletions tests/Browser/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

namespace Tests\SkyRaptor\FilamentBlocksBuilder\Browser;

use Filament\Panel;
use Illuminate\Contracts\Config\Repository;
use Illuminate\Support\Str;
use Laravel\Dusk\Browser;
use PHPUnit\Framework\Attributes\Before;
use Tests\SkyRaptor\FilamentBlocksBuilder\Concerns\WithWorkbenchEnvironment;
use Tests\SkyRaptor\FilamentBlocksBuilder\Concerns\WithUser;
Expand Down Expand Up @@ -61,4 +64,36 @@ protected function createSQLiteDatabase(): void
$this->createDefaultTestingUser();
});
}

protected function login(Browser $browser, Panel $panel) {
// Open the provided Panel's login page
$loginUrl = Str::of('/') // Start with the relative base location
// Append the provided Panel's path
->append(
// Remove leading / trailing seperator
Str::of($panel->getPath())
->chopStart('/')
->chopEnd('/')
)
// Add a path seperator
->finish('/')
// Append the provided Panel's login route slug
->append(
// Remove leading / trailing seperator
Str::of($panel->getLoginRouteSlug())
->chopStart('/')
->chopEnd('/')
)
->toString();

$browser->visit($loginUrl);

// Enter login details
$browser->waitUntilEnabled('#data\.email')
->type('#data\.email', $this->user->getEmailForVerification());
$browser->waitUntilEnabled('#data\.password')
->type('#data\.password', static::$password);

$browser->press('Sign in');
}
}

0 comments on commit cf4f9e4

Please sign in to comment.