Last active
December 16, 2023 23:43
-
-
Save roberto-butti/d490a8eb02bf4a540f7fd1715df18970 to your computer and use it in GitHub Desktop.
GitHub Actions workflow for Laravel (automated test)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Laravel | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
laravel-tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Copy .env | |
run: php -r "file_exists('.env') || copy('.env.example', '.env');" | |
- name: Install Dependencies | |
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist | |
- name: Generate key | |
run: php artisan key:generate | |
- name: Directory Permissions | |
run: chmod -R 777 storage bootstrap/cache | |
- name: Create Database | |
run: | | |
mkdir -p database | |
touch database/database.sqlite | |
- name: Execute tests (Unit and Feature tests) via PHPUnit | |
env: | |
DB_CONNECTION: sqlite | |
DB_DATABASE: database/database.sqlite | |
run: vendor/bin/phpunit --testdox |
Hi @LarrayBraker, I'm using this basic yml file for GH Actions:
name: Laravel
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
laravel-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.example', '.env');"
- name: Install Dependencies
run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
- name: Generate key
run: php artisan key:generate
- name: Directory Permissions
run: chmod -R 777 storage bootstrap/cache
- name: Create Database
run: |
mkdir -p database
touch database/database.sqlite
- name: Execute tests (Unit and Feature tests) via PHPUnit
env:
DB_CONNECTION: sqlite
DB_DATABASE: database/database.sqlite
run: vendor/bin/phpunit --testdox
The Feature test used is:
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class RoutingTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function can_view_login_page()
{
$this->get(route('login'))
->assertSuccessful();
}
/** @test */
public function can_view_public_page()
{
$this->get(route('index'))
->assertSuccessful();
}
/** @test */
public function can_not_view_protected_page()
{
$this->get(route('dashboard'))
->assertRedirect();
}
}
this is ok, and everything is fine, locally and on github actions.
Now i will try to add "assertSeeLivewire" method
I have tried also the assertSeeLiverwire. method:
<?php
namespace Tests\Feature;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class RoutingTest extends TestCase
{
use RefreshDatabase;
protected $seed = true;
/** @test */
public function can_view_login_page()
{
$this->get(route('login'))
->assertSuccessful();
}
/** @test */
public function can_view_public_page()
{
$this->get(route('index'))
->assertSuccessful();
}
/** @test */
public function can_not_view_protected_page()
{
$this->get(route('dashboard'))
->assertRedirect();
}
/** @test */
public function user_can_view_protected_page()
{
$this->actingAs(User::first())->get(route('dashboard'))
->assertOk();
}
/** @test */
public function user_can_view_protected_form()
{
$this->actingAs(User::first())->get(route('merchant.menu.create'))
->assertOk()->assertSeeLivewire("merchant.menu.edit-form");
}
}
I updated yml file with these things:
- using v2 of actions checkout: actions/checkout@v2
- fixing directory pemrissions: chmod -R 777 storage bootstrap/cache
- adding env parameters for DB_CONNECTION and DB_DATABASE
Thanks for your input! I was able to do some debugging by using the
`withoutErrorHandling()` method in the test class. This allowed me to see
the exception that was causing the test to fail. From there, I found out it
was a problem with the route for that test method. Everything is working
now, but I will be using your example to update my GH actions! Thanks again
:)
…On Tue, Nov 17, 2020 at 1:33 AM Roberto Butti ***@***.***> wrote:
***@***.**** commented on this gist.
------------------------------
I have tried also the assertSeeLiverwire. method:
<?phpnamespace Tests\Feature;
use App\Models\User;use Illuminate\Foundation\Testing\RefreshDatabase;use Tests\TestCase;
class RoutingTest extends TestCase
{use RefreshDatabase;
protected $seed = true;
/** @test */
public function can_view_login_page()
{
$this->get(route('login'))
->assertSuccessful();
}
/** @test */
public function can_view_public_page()
{
$this->get(route('index'))
->assertSuccessful();
}
/** @test */
public function can_not_view_protected_page()
{
$this->get(route('dashboard'))
->assertRedirect();
}
/** @test */
public function user_can_view_protected_page()
{
$this->actingAs(User::first())->get(route('dashboard'))
->assertOk();
}
/** @test */
public function user_can_view_protected_form()
{
$this->actingAs(User::first())->get(route('merchant.menu.create'))
->assertOk()->assertSeeLivewire("merchant.menu.edit-form");
}
}
I updated yml file with these things:
- using v2 of actions checkout: ***@***.***
- fixing directory pemrissions: chmod -R 777 storage bootstrap/cache
- adding env parameters for DB_CONNECTION and DB_DATABASE
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://gist.github.com/d490a8eb02bf4a540f7fd1715df18970#gistcomment-3530082>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AG3HK7CGUJVY2O66GH2KPPLSQIRMXANCNFSM4IXUGRWA>
.
I am getting this error in Git Actions in local works fine
Run php artisan test --parallel --recreate-databases
php artisan test --parallel --recreate-databases
shell: /usr/bin/bash -e {0}
env:
DB_CONNECTION: sqlite
DB_DATABASE: database/database.sqlite
.........................
Tests: 25 passed (59 assertions)
Duration: 1.00s
Parallel: 4 processes
Error: Process completed with exit code 1.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Sure, it’s related to Livewire, but the test fails before the Livewire assertion. Here’s the first test that fails:
?php
namespace Tests\Feature\Auth;
use App\Admin;
use App\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Livewire\Livewire;
use Tests\TestCase;
class LoginTest extends TestCase
{
use RefreshDatabase;