PHP 也有 Day #42

本篇重點 : 不是教你使用 Laravel Dusk,而是帶你如何看Laravel Dusk套件的原始碼

講者介紹 : Recca
使用 laravel 開發網站,生性懶惰健忘,認為自動測試是自己還能勉強待在程式業的理由之一。

延伸閱讀 :

PHP 也有 Day #41 – 人生不能重來,但 Git 可以之「如何華麗的做一個後悔的動作」

外部參考連結:

https://speakerdeck.com/starrocket/php-ye-you-day-number-42-laravel-dusk-shi-yong-ji-yan-jiu

課程大綱

  • 什麼是laravel Dusk
  • 怎麼配置
  • 優缺點
  • 怎麼測試

什麼是laravel Dusk?

Auto browser test

自動由電腦進行瀏覽器測試

不需要selenium puppeteer testcafe(有包裝facebook/webdrive 已經含有selenium)


如何安裝?

看官網,composer install

在laradock官網下可以配置

Php artisan dusk:install 會出現browser資料夾

Laravel Dusk

*整合測試vs brower test? 一個是測試功能面,一個是完整的瀏覽器測試 包含view js 等等

 

 

Laravel Dusk

缺點:不支援多瀏覽器 docker設置困難 彈性相對較差
Git hub連結?


Larval dusk 研究

Composer.js 宣告套件測試 相依套件
找到程式進入點 : serviceProvider
Boot中有三個 Rout::get()套件中沒有說明
installCommand
  1. Handle() 建立資料夾 處理stubs 建檔 回傳完成
  2. Fire() 不支援
很接近的command (make page component)
Dusk command
$this->withDuskEnvironment()
Dusk 與dusk:fail 去執行phpunit
套件中已經包含chrome drive,三個系統對應的執行檔中都有
用process直接跑對應系統的執行檔
Laravel Dusk

 

assertTitle
用phpunit::assertEquals 實作
Concerns ?
Laradock 裡面去找 dockerfile
**只看到測試結果還是有過程? 與phpunit相同,只有出錯的時候多做了screenshot有截圖
總結 :
套件訊息可以在packige上面找
通常程式碼在github上同名(但有例外)
參考前輩別人的寫法思考這樣設計的好處
seviceprovider是進入點
Selenium 比起dusk 前期設定要比較久,其餘差不多