From 70f7af0f4e287730661c0f2b19c09e36aacae648 Mon Sep 17 00:00:00 2001 From: Guilherme Frias Date: Wed, 10 Jun 2026 16:04:07 -0300 Subject: [PATCH] =?UTF-8?q?[feat]:=20Testes=20antigos=20removidos=20e=20co?= =?UTF-8?q?nfigurado=20Dusk=20e=20Docker=20seguindo=20os=20crit=C3=A9rios?= =?UTF-8?q?=20estabelecidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.testing.example | 34 ------------ Dockerfile | 60 --------------------- composer.json | 9 ++-- composer.lock | 36 ++++++------- docker-compose.yml | 32 +++++++----- dockerfile | 15 ++++++ tests/Browser/ExampleTest.php | 21 ++++++++ tests/Browser/LoginLogoutTest.php | 55 -------------------- tests/Browser/ReservaBasicaTest.php | 81 ----------------------------- 9 files changed, 78 insertions(+), 265 deletions(-) delete mode 100644 .env.testing.example delete mode 100644 Dockerfile create mode 100644 dockerfile create mode 100644 tests/Browser/ExampleTest.php delete mode 100644 tests/Browser/LoginLogoutTest.php delete mode 100644 tests/Browser/ReservaBasicaTest.php diff --git a/.env.testing.example b/.env.testing.example deleted file mode 100644 index 77e639b..0000000 --- a/.env.testing.example +++ /dev/null @@ -1,34 +0,0 @@ -APP_NAME="Salas Dusk" -APP_ENV=testing -APP_KEY= -APP_DEBUG=true -APP_URL=http://127.0.0.1:47800 -DUSK_DRIVER_URL=http://localhost:9515 - -# DB -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=salas_dusk -DB_USERNAME=admin -DB_PASSWORD=admin - -REPLICADO_FAKE=1 - -# Filas -QUEUE_CONNECTION=sync - -# Drivers de Performance para Testes -# Usamos 'array' ou 'file' para garantir que os testes não poluam o cache real -CACHE_DRIVER=array -FILESYSTEM_DISK=local - -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -# Configurações de Email (Não envia emails reais durante o teste) -MAIL_MAILER=log - -# Dusk -DUSK_START_MAXIMIZED=true -DUSK_HEADLESS_DISABLED=true \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 8d7218b..0000000 --- a/Dockerfile +++ /dev/null @@ -1,60 +0,0 @@ -FROM php:8.3-apache - -# packages -RUN sed -i 's|main|main non-free|' /etc/apt/sources.list.d/debian.sources && apt-get update && apt-get install -y \ - unixodbc \ - unixodbc-dev \ - freetds-bin \ - freetds-dev \ - libicu-dev \ - git \ - unzip \ - libzip-dev \ - libpng-dev \ - libonig-dev \ - libxml2-dev \ - libjpeg-dev \ - libpng-dev \ - libfreetype6-dev \ - curl - -# cleanup -RUN apt-get clean && rm -rf /var/lib/apt/lists/* - -# composer -COPY --from=composer:latest /usr/bin/composer /usr/bin/composer - -# php libs -RUN docker-php-ext-install \ - intl \ - pdo_mysql \ - soap \ - zip \ - mbstring \ - bcmath \ - pdo_dblib - -# gd -RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \ - docker-php-ext-install gd - -# php memory -ENV PHP_MEMORY_LIMIT=512M -ENV PHP_UPLOAD_LIMIT=512M -RUN { \ - echo 'memory_limit=${PHP_MEMORY_LIMIT}'; \ - echo 'upload_max_filesize=${PHP_UPLOAD_LIMIT}'; \ - echo 'post_max_size=${PHP_UPLOAD_LIMIT}'; \ - } > "${PHP_INI_DIR}/conf.d/upload.ini" - -# apache -RUN a2enmod rewrite -RUN sed -i 's|/var/www/html|/var/www/html/public|' /etc/apache2/sites-available/000-default.conf -RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf - -# composer -USER www-data -COPY --chown=www-data . . -RUN composer install --optimize-autoloader --no-interaction - -CMD ["./serve.sh"] \ No newline at end of file diff --git a/composer.json b/composer.json index 1433571..9b3020e 100644 --- a/composer.json +++ b/composer.json @@ -24,12 +24,12 @@ "uspdev/senhaunica-socialite": "^4.3" }, "require-dev": { - "spatie/laravel-ignition": "^2.4", "fakerphp/faker": "^1.9.1", - "laravel/dusk": "^8.0", + "laravel/dusk": "^8.6", "mockery/mockery": "^1.4.2", "nunomaduro/collision": "^8.1", - "phpunit/phpunit": "^11.0" + "phpunit/phpunit": "^11.0", + "spatie/laravel-ignition": "^2.4" }, "config": { "optimize-autoloader": true, @@ -62,8 +62,7 @@ "post-autoload-dump": [ "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", "@php artisan package:discover --ansi", - "@php artisan vendor:publish --provider=\"Uspdev\\UspTheme\\ServiceProvider\" --tag=assets --force", - "@php artisan dusk:chrome-driver --detect" + "@php artisan vendor:publish --provider=\"Uspdev\\UspTheme\\ServiceProvider\" --tag=assets --force" ], "post-root-package-install": [ "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" diff --git a/composer.lock b/composer.lock index a07adff..ba52af5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "77597b61a35a75e5b94b1a093c141ed0", + "content-hash": "b45f8dc17fbfd78f367bbee49b45179a", "packages": [ { "name": "brick/math", @@ -8566,39 +8566,39 @@ }, { "name": "laravel/dusk", - "version": "v8.3.3", + "version": "v8.6.0", "source": { "type": "git", "url": "https://github.com/laravel/dusk.git", - "reference": "077d448cd993a08f97bfccf0ea3d6478b3908f7e" + "reference": "e7fd48762c6a82ad2cd311db07587aa2a97ce143" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/dusk/zipball/077d448cd993a08f97bfccf0ea3d6478b3908f7e", - "reference": "077d448cd993a08f97bfccf0ea3d6478b3908f7e", + "url": "https://api.github.com/repos/laravel/dusk/zipball/e7fd48762c6a82ad2cd311db07587aa2a97ce143", + "reference": "e7fd48762c6a82ad2cd311db07587aa2a97ce143", "shasum": "" }, "require": { "ext-json": "*", "ext-zip": "*", "guzzlehttp/guzzle": "^7.5", - "illuminate/console": "^10.0|^11.0|^12.0", - "illuminate/support": "^10.0|^11.0|^12.0", + "illuminate/console": "^10.0|^11.0|^12.0|^13.0", + "illuminate/support": "^10.0|^11.0|^12.0|^13.0", "php": "^8.1", "php-webdriver/webdriver": "^1.15.2", - "symfony/console": "^6.2|^7.0", - "symfony/finder": "^6.2|^7.0", - "symfony/process": "^6.2|^7.0", + "symfony/console": "^6.2|^7.0|^8.0", + "symfony/finder": "^6.2|^7.0|^8.0", + "symfony/process": "^6.2|^7.0|^8.0", "vlucas/phpdotenv": "^5.2" }, "require-dev": { - "laravel/framework": "^10.0|^11.0|^12.0", + "laravel/framework": "^10.0|^11.0|^12.0|^13.0", "mockery/mockery": "^1.6", - "orchestra/testbench-core": "^8.19|^9.0|^10.0", + "orchestra/testbench-core": "^8.19|^9.17|^10.8|^11.0", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.1|^11.0|^12.0.1", "psy/psysh": "^0.11.12|^0.12", - "symfony/yaml": "^6.2|^7.0" + "symfony/yaml": "^6.2|^7.0|^8.0" }, "suggest": { "ext-pcntl": "Used to gracefully terminate Dusk when tests are running." @@ -8634,9 +8634,9 @@ ], "support": { "issues": "https://github.com/laravel/dusk/issues", - "source": "https://github.com/laravel/dusk/tree/v8.3.3" + "source": "https://github.com/laravel/dusk/tree/v8.6.0" }, - "time": "2025-06-10T13:59:27+00:00" + "time": "2026-04-15T14:50:40+00:00" }, { "name": "mockery/mockery", @@ -10955,12 +10955,12 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.2" }, - "platform-dev": [], - "plugin-api-version": "2.6.0" + "platform-dev": {}, + "plugin-api-version": "2.9.0" } diff --git a/docker-compose.yml b/docker-compose.yml index ed09f76..5ee9866 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,18 +1,18 @@ services: salas: - build: . + image: salas:latest container_name: salas ports: - "8000:80" depends_on: - mariadb - - selenium networks: - salas-network volumes: - ./:/var/www/html - - storage_data:/var/www/html/storage - - cache_data:/var/www/html/bootstrap/cache + environment: + HOME: /tmp + user: "${UID:-1000}:${GID:-1000}" mariadb: image: mariadb:11 @@ -28,21 +28,29 @@ services: networks: - salas-network - # http://localhost:7900 senha: secret selenium: - image: selenium/standalone-chrome:latest + image: selenium/standalone-chrome container_name: salas_selenium ports: - - "4444:4444" # WebDriver - - "7900:7900" # VNC (ver browser) - shm_size: 2gb + - "7900:7900" # VNC (pra ver o browser rodando) networks: - salas-network + shm_size: 2gb + + senhaunica-faker: + image: uspdev/senhaunica-faker + container_name: salas_senhaunica-faker + ports: + - "3141:3141" + environment: + - APP_URL=http://auth.local:3141 + networks: + salas-network: + aliases: + - auth.local networks: salas-network: volumes: - mariadb_data: - storage_data: - cache_data: + mariadb_data: \ No newline at end of file diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..0753906 --- /dev/null +++ b/dockerfile @@ -0,0 +1,15 @@ +FROM uspdev/uspdev-php-apache:8.3 + +RUN sed -i 's|/var/www/html|/var/www/html/public|' \ + /etc/apache2/sites-available/000-default.conf + +USER www-data + +COPY --chown=www-data . . + +RUN composer install \ + --no-dev \ + --optimize-autoloader \ + --no-interaction + +CMD ["apache2-foreground"] \ No newline at end of file diff --git a/tests/Browser/ExampleTest.php b/tests/Browser/ExampleTest.php new file mode 100644 index 0000000..2d451fc --- /dev/null +++ b/tests/Browser/ExampleTest.php @@ -0,0 +1,21 @@ +browse(function (Browser $browser) { + $browser->visit('/') + ->assertSee('Laravel'); + }); + } +} diff --git a/tests/Browser/LoginLogoutTest.php b/tests/Browser/LoginLogoutTest.php deleted file mode 100644 index b809b28..0000000 --- a/tests/Browser/LoginLogoutTest.php +++ /dev/null @@ -1,55 +0,0 @@ -setupAdminAndUser(); - } - - public function testLoginLogout() - { - $this->browse(function (Browser $browser) { - // Login com usuário comum - $browser->visit('/loginlocal') - ->typeSlowly('email', $this->commonUser->email) - ->typeSlowly('password', 'password') - ->press('Entrar') - ->pause(2000) - ->assertDontSee('Administração') - ->click('.login_logout_link') - ->pause(2000); - - // Login com usuário admin - $browser->visit('/loginlocal') - ->typeSlowly('email', $this->adminUser->email) - ->typeSlowly('password', 'password') - ->press('Entrar') - ->pause(2000) - ->assertSee('Administração') - ->click('.login_logout_link') - ->pause(2000); - }); - } - -} diff --git a/tests/Browser/ReservaBasicaTest.php b/tests/Browser/ReservaBasicaTest.php deleted file mode 100644 index 7885f3b..0000000 --- a/tests/Browser/ReservaBasicaTest.php +++ /dev/null @@ -1,81 +0,0 @@ -setupAdminAndUser(); // cria usuários $this->commonUser e $this->adminUser - } - - /*Teste para criar uma reserva básica: - - 1. Criar uma Categoria (Prédio); - - 2. Criar Sala dentro de uma categoria; - - 3. Cadastrar Reserva contendo a sala; - */ - public function testReservaBasica(): void - { - //1. Login como admin e criação de uma categoria (prédio) - $this->browse(function (Browser $browser) { - $browser->visit('/loginlocal') - ->typeSlowly('email', $this->adminUser->email, 30) - ->typeSlowly('password', 'password', 30) - ->press('Entrar') - ->pause(1000) - ->click('#navbarDropdowniclassfafausercogariahiddentrueiAdministrao') //menu - ->pause(1250) - ->click('a[href="categorias/create"]') - ->pause(1250) - ->typeSlowly('nome','Prédio da Administração', 100) - ->pause(2000) - ->press('Enviar') - ->pause(2000); - - /*Buscando no banco de dados a categoria que acabou de ser criada.*/ - $categoria_id = \App\Models\Categoria::select('id')->latest()->first(); - - //2. Após a criação da categoria, cria-se uma sala com ela. - $browser->click('#navbarDropdowniclassfafausercogariahiddentrueiAdministrao') //menu - ->pause(1850) - ->click('a[href="salas/create"]') - ->pause(1250) - ->typeSlowly('nome','Sala de Informática Teste', 100) - ->typeSlowly('capacidade','123', 150) - ->select('categoria_id', $categoria_id->id) //Selecionando o ID da cat. criada - ->pause(2300) - ->press('Enviar') - ->pause(2300); - - $sala_id = \App\Models\Sala::select('id')->latest()->first(); - - //3. Por fim, cria-se uma reserva inserindo a sala que desejamos. - $browser->click('a[href="/reservas/create"]') - ->pause(1500) - ->typeSlowly('nome','Reunião DUSK STI', 100) - ->typeSlowly('data',now()->format('d/m/Y'), 50) - ->typeSlowly('horario_inicio','8:00', 50) - ->typeSlowly('horario_fim','10:00', 50) - ->pause(1000) - ->select('sala_id',$sala_id->id) - ->pause(2000) - ->clickAtXPath('//body') //clica fora do "calendário" - ->pause(1000) - ->radio('rep_bool','Não') - ->pause(2000) - ->press('Enviar') - ->pause(5000); - }); - } -}