Merge pull request #3342 from ALsJourney/tests/LoginPageTest

Added a basic login test and also added 2 small variables to dev .env…
This commit is contained in:
Andras Bacsai
2024-10-17 16:29:28 +02:00
committed by GitHub
6 changed files with 101 additions and 21 deletions

View File

@@ -8,6 +8,14 @@ APP_PORT=8000
APP_DEBUG=true APP_DEBUG=true
SSH_MUX_ENABLED=true SSH_MUX_ENABLED=true
# Enable Laravel Telescope for debugging
TELESCOPE_ENABLED=false
# Selenium Driver URL for Dusk
DUSK_DRIVER_URL=http://selenium:4444
DUSK_EMAIL=test@example.com
DUSK_PASSWORD=password
# PostgreSQL Database Configuration # PostgreSQL Database Configuration
DB_DATABASE=coolify DB_DATABASE=coolify
DB_USERNAME=coolify DB_USERNAME=coolify

6
config/testing.php Normal file
View File

@@ -0,0 +1,6 @@
<?php
return [
'dusk_test_email' => env('DUSK_TEST_EMAIL', 'test@example.com'),
'dusk_test_password' => env('DUSK_TEST_PASSWORD', 'password'),
];

View File

@@ -1,20 +0,0 @@
<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class ExampleTest extends DuskTestCase
{
/**
* A basic browser test example.
*/
public function testBasicExample(): void
{
$this->browse(function (Browser $browser) {
$browser->visit('/')
->assertSee('Laravel');
});
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Tests\Browser;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
use Throwable;
class LoginTest extends DuskTestCase
{
/**
* A basic test for the login page.
* Login with the test user and assert that the user is redirected to the dashboard.
*
* @return void
* @throws Throwable
*/
public function testLogin()
{
$email = config('testing.dusk_test_email');
$password = config('testing.dusk_test_password');
$this->browse(function (Browser $browser) use ($password, $email) {
$browser->visit('/login')
->type('email', $email)
->type('password', $password)
->press('Login')
->assertPathIs('/');
});
}
}

View File

@@ -67,6 +67,9 @@ abstract class DuskTestCase extends BaseTestCase
protected function baseUrl() protected function baseUrl()
{ {
return rtrim(config('app.url'), '/'); $app_url = config('app.url');
$port = config('app.port');
return $app_url.':'.$port;
} }
} }

53
tests/How_To_Use_Dusk.md Normal file
View File

@@ -0,0 +1,53 @@
# How to use Laravel Dusk in local development
## Pre-requisites
- Google Chrome installed on your machine (for the Chrome driver)
- everything else is already set up in the project
## Running Dusk in local development
In order to use Laravel Dusk in local development, you need to run these commands:
```bash
docker exec -it coolify php artisan dusk:chrome-driver --detect
```
The chrome driver will be installed under `./vendor/laravel/dusk/bin/chromedriver-linux`.
Then you need to run the chrome-driver by hand. You can find the driver in the following path:
```bash
docker exec -it coolify ./vendor/laravel/dusk/bin/chromedriver-linux --port=9515
```
### Running the tests on Apple Silicon
If you are using an Apple Silicon machine, you need to install the Chrome driver locally on your machine with the following command:
```bash
php artisan dusk:chrome-driver --detect
# then run it with the following command
./vendor/laravel/dusk/bin/chromedriver-mac-arm --port=9515 130 ↵
```
### Running the tests
Finally, you can run the tests with the following command:
```bash
docker exec -it coolify php artisan dusk
```
That's it. You should see the tests running in the terminal.
For proof, you can check the screenshot in the `tests/Browser/screenshots` folder.
```
PASS Tests\Browser\LoginTest
✓ login 3.63s
Tests: 1 passed (1 assertions)
Duration: 3.79s
```