stevebauman/laravel-husk

专为您的纯 JavaScript 应用程序提供的 Laravel Dusk 环境。

v1.1.0 2023-08-29 14:46 UTC

This package is auto-updated.

Last update: 2024-08-29 17:15:10 UTC


README

Laravel Husk 是一个轻量级的 Laravel Dusk 环境。

它允许您使用 Pest,通过 PHP 来测试您的 JavaScript 应用程序,而无需搭建整个 Laravel 应用程序。

示例

安装

在您的 JavaScript 应用程序文件夹内,运行以下命令以搭建 Laravel Husk 环境

注意:这将创建名为 browser 的文件夹,其中将包含您的 Laravel Husk 测试环境。

composer create-project stevebauman/laravel-husk browser

搭建测试环境后,您应该拥有以下文件夹结构;

javascript-app/
├── ...
└── browser/
    ├── bootstrap/
    ├── config/
    ├── storage/
    │   ├── log/
    │   ├── screenshots/
    │   └── source/
    └── tests/
        ├── ...
        ├── ExampleTest.php
        ├── DuskTestCase.php
        └── Pages/
            └── ExamplePage.php

然后,进入 browser 目录并运行以下命令以安装 Chrome 驱动器

php application dusk:chrome-driver --detect

使用方法

在运行 dusk 测试之前,请确保设置正确的基 URL,以确定您的 JavaScript 应用程序将从哪里提供

// tests/DuskTestCase.php

protected function setUp(): void
{
    parent::setUp();

    $this->setupBrowser('https://127.0.0.1:3000');
}

设置基 URL 后,提供您的 JavaScript 应用程序

npm run dev

然后,在另一个终端中,进入 browser 目录

cd browser

并运行以下命令

重要:请确保您已通过 php application dusk:chrome-driver --detect 安装了 Chrome 驱动器

php application pest:dusk

参数

php application pest:dusk --order-by=random --filter="it can load"

注意:您也可以将以下 JSON 插入到 package.json 文件的 scripts 部分中,以从根项目目录运行浏览器测试

"scripts": {
    "test": "cd browser && php application pest:dusk"
}
npm run test

GitHub Actions

您可以使用以下 GitHub Action 作为模板来运行您的 Laravel Dusk 测试

name: run-tests

on:
    push:
    pull_request:
    schedule:
        - cron: "0 0 * * *"

jobs:
    run-tests:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v2
            - uses: actions/setup-node@v2
              with:
                  cache: "npm"

            - name: Install Javascript Dependencies
              run: npm install

            - name: Start JavaScript Application
              run: npm run dev &

            - name: Install Composer Dependencies
              working-directory: ./browser
              run: composer install --no-progress --prefer-dist --optimize-autoloader

            - name: Upgrade Chrome Driver
              working-directory: ./browser
              run: php application dusk:chrome-driver `/opt/google/chrome/chrome --version | cut -d " " -f3 | cut -d "." -f1`

            - name: Run Dusk Tests
              working-directory: ./browser
              run: php application pest:dusk

            - name: Upload Screenshots
              if: failure()
              uses: actions/upload-artifact@v2
              with:
                  name: screenshots
                  path: browser/storage/screenshots

            - name: Upload Console Logs
              if: failure()
              uses: actions/upload-artifact@v2
              with:
                  name: console
                  path: browser/storage/console