Githubアクションによるラーラヴィル夕暮れ
こんにちは
私は私のプロジェクトのうちの1つのユニットテストをするように頼まれました. ユーザーがログインしてダッシュボードを見ることができます ユーザーがログインし、開発者ポータルを参照してください ユーザーがログインして管理パネルを見ることができます 基本的にテストは非常に簡単でまっすぐ進む右?
だからインストールをオフにIM
あなたはララベルの夕暮れに精通していない場合は、ラーラヴィルダスクはララヴァ自体によってサポートされている公式のライブラリです.
それで、更なるADOなしで.
準備
ユーザーファクトリを作成していることを確認してください
ララベルの日暮れインストール
LALAVEL DUSKをインストールするのはとても簡単です
Laravelの夕暮れ環境設定
デフォルトでは、Laravel Dusk環境設定ファイル
テストスクリプト
ラン
アクションワークフロー
したがって、基本的にあなたがgithubアクションに精通しているなら、Githubアクションワークフロースクリプトは中になければなりません
佳作 Nasrul Hazim (ワークフローの設定を支援する)
私は私のプロジェクトのうちの1つのユニットテストをするように頼まれました.
だからインストールをオフにIM
Laravel Dusk
この種のテストはUI自体を見る動作を含んでいます.あなたはララベルの夕暮れに精通していない場合は、ラーラヴィルダスクはララヴァ自体によってサポートされている公式のライブラリです.
Laravel Dusk provides an expressive, easy-to-use browser automation and testing API. By default, Dusk does not require you to install JDK or Selenium on your machine. Instead, Dusk uses a standalone ChromeDriver installation. However, you are free to utilize any other Selenium compatible driver you wish. - Laravel Dusk
それで、更なるADOなしで.
準備
ユーザーファクトリを作成していることを確認してください
DatabaseSeeder.php
この単体テストを始める前のファイル.ダミーのユーザーがテストケースをテストする必要があるので.ララベルの日暮れインストール
LALAVEL DUSKをインストールするのはとても簡単です
composer require --dev laravel/dusk
パッケージをインストールしたらphp artisan dusk:install
あなたのlaravel夕暮れをインストールするには.Laravelの夕暮れ環境設定
デフォルトでは、Laravel Dusk環境設定ファイル
.env.dusk
が存在しない場合、自動的に使用されます.環境設定としてenvを一時的に設定します.私たちのケースでは、我々は呼ばれる別々のデータベースを使用する必要がありますdusktest
データベースと作成.env.dusk
ルートプロジェクトフォルダにファイルします.これが私のサンプルです.env.dusk
Important Make sure to generate the APP_KEY as well. run
php artisan key:generate
then copy the key from.env
to.env.dusk
APP_NAME=dusk
APP_ENV=local
APP_KEY={your-key-here}
APP_DEBUG=true
APP_URL=http://127.0.0.1:8000
LOG_CHANNEL=stack
FLARE_KEY=
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dusktest
DB_USERNAME=root
DB_PASSWORD=
BROADCAST_DRIVER=log
CACHE_DRIVER=array
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=array
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_NAME="${APP_NAME}"
MAIL_FROM_ADDRESS="[email protected]"
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
テストスクリプト
ラン
php artisan dusk:make CommonTest
あなたのCLIに、それは内部のテストファイルをつくりますmy-project/tests/Browser/CommonTest.php
. その後、テストスクリプト内でテストケースを作成する必要があります.これが作成したテストスクリプトです.<?php
namespace Tests\Browser;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Facades\Artisan;
use Laravel\Dusk\Browser;
use Tests\DuskTestCase;
class CommonTest extends DuskTestCase
{
use DatabaseMigrations;
/**
* Can Login and see Dashboard
*
* @return void
*/
public function testCanLoginAndSeeDashboard()
{
//Seed dummy user data
Artisan::call('db:seed');
$user = User::first();
$this->browse(function ($first) use ($user){
$first->loginAs($user)
->visit('/dashboard')
->assertSee('Dashboard');
});
}
/**
* Can Login and see Developer Portal
*
* @return void
*/
public function testCanLoginAndSeeDeveloperPortal()
{
//Seed dummy user data
Artisan::call('db:seed');
$user = User::first();
$this->browse(function ($first) use ($user){
$first->loginAs($user)
->visit('/developer')
->assertSee('Connective Exchange');
});
}
/**
* Can Login and see Administration Panel
*
* @return void
*/
public function testCanLoginAndSeeAdministrationPanel()
{
//Seed dummy user data
Artisan::call('db:seed');
$user = User::first();
$this->browse(function ($first) use ($user){
$first->loginAs($user)
->visit('/admin')
->assertSee('Resources');
});
}
}
アクションワークフロー
したがって、基本的にあなたがgithubアクションに精通しているなら、Githubアクションワークフロースクリプトは中になければなりません
my-project/.github/workflows/actions.yml
必要に応じてファイルを名前変更できます.# my-project/.github/workflows/actions.yml
name: Unit Test
on:
push:
branches: [develop]
pull_request:
branches: [master, develop]
jobs:
PHPUnit:
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.0.21
env:
MYSQL_ALLOW_EMPTY_PASSWORD: yes
MYSQL_DATABASE: dusktest
ports:
- 3306:3306
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
steps:
- uses: actions/checkout@v2
- name: Configure Application
run: bin/ci
- name: Configure Laravel Dusk
run: bin/ci-dusk
- name: Execute Dusk tests via PHPUnit
run: php artisan dusk
スクリプトの作業を確実にするために、このbashファイルのいくつかを作成しなければなりません.# my-project/bin/ci
#!/usr/bin/env bash
cp .env.example .env
composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
chmod -R 777 storage bootstrap/cache
php artisan key:generate
php artisan config:clear
# my-project/bin/ci-dusk
#!/usr/bin/env bash
php artisan dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`
chmod -R 0755 vendor/laravel/dusk/bin/
php artisan serve > /dev/null 2>&1 &
curl localhost:8000 &
./vendor/laravel/dusk/bin/chromedriver-linux > /dev/null 2>&1 &
Simpy Githubにあなたのコードをプッシュし、それが行くには良いはずです!お読みありがとうございます.佳作
Reference
この問題について(Githubアクションによるラーラヴィル夕暮れ), 我々は、より多くの情報をここで見つけました https://dev.to/adbrsln/laravel-dusk-with-github-actions-3ipkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol