Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for Testbench Dusk #1

Merged
merged 12 commits into from
Jan 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions .github/workflows/browser-tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: browser-tests

on:
push:
pull_request:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'

jobs:
tests:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
strategy:
matrix:
os:
- "ubuntu-latest"
php:
- 8.1
- 8.2
- 8.3
dependencies:
- "highest"
- "lowest"
experimental:
- false

name: PHP${{ matrix.php }} on ${{ matrix.os }} (${{ matrix.dependencies }})

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, mysql, mysqli, pdo_mysql, bcmath, intl, fileinfo, :php-psr
coverage: none

- name: Install dependencies
uses: "ramsey/composer-install@v2"
with:
dependency-versions: "${{ matrix.dependencies }}"
composer-options: "--prefer-dist --no-cache"

- name: Installed dependencies
run: |
composer show -D

- name: Upgrade Chrome Driver
run: php vendor/bin/dusk-updater detect --auto-update

- name: Create SQLite Database
run: php vendor/bin/testbench-dusk package:create-sqlite-db

- name: Start Chrome Driver
run: ./vendor/laravel/dusk/bin/chromedriver-linux &

- name: Run Laravel Server
run: php vendor/bin/testbench-dusk serve --no-reload &

- name: Execute tests
run: vendor/bin/pest -c phpunit.dusk.xml
env:
APP_URL: http://127.0.0.1:8000
DUSK_SERVE_PORT: 8000
22 changes: 20 additions & 2 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,14 @@
},
"require": {
"php": "^8.1",
"orchestra/testbench": "^8.19",
"orchestra/testbench": "^8.20",
"pestphp/pest": "^2.12",
"pestphp/pest-plugin-laravel": "^2.2"
"pestphp/pest-plugin-laravel": "^2.2",
"symfony/polyfill-php82": "^1.28",
"symfony/polyfill-php83": "^1.28"
},
"require-dev": {
"orchestra/testbench-dusk": "^8.20",
"pestphp/pest-dev-tools": "^2.9"
},
"config": {
Expand All @@ -33,12 +36,27 @@
}
},
"scripts": {
"post-autoload-dump": [
"@clear",
"@prepare"
],
"clear": "@php testbench package:purge-skeleton --ansi",
"prepare": "@php testbench package:discover --ansi",
"lint": [
"@php vendor/bin/rector",
"@php vendor/bin/phpstan analyse --ansi",
"@php vendor/bin/pint"
],
"test": "@php vendor/bin/pest --colors=always",
"dusk:prepare": "@php vendor/bin/dusk-updater detect --auto-update",
"dusk:serve": [
"@php vendor/bin/testbench-dusk package:create-sqlite-db",
"@php vendor/bin/testbench-dusk serve"
],
"dusk": [
"@dusk:prepare",
"@php vendor/bin/pest -c phpunit.dusk.xml --colors=always"
],
"ci": [
"@lint",
"@test"
Expand Down
37 changes: 37 additions & 0 deletions phpunit.dusk.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.1/phpunit.xsd"
backupGlobals="false"
beStrictAboutTestsThatDoNotTestAnything="true"
beStrictAboutOutputDuringTests="true"
bootstrap="vendor/autoload.php"
cacheResult="false"
colors="true"
failOnRisky="true"
failOnWarning="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
cacheDirectory=".phpunit.cache"
backupStaticProperties="false"
displayDetailsOnIncompleteTests="true"
displayDetailsOnSkippedTests="true"
displayDetailsOnTestsThatTriggerDeprecations="true"
displayDetailsOnTestsThatTriggerErrors="true"
displayDetailsOnTestsThatTriggerNotices="true"
displayDetailsOnTestsThatTriggerWarnings="true"
>
<testsuites>
<testsuite name="default">
<directory suffix=".php">./tests/Browser</directory>
</testsuite>
</testsuites>
<source>
<include>
<directory suffix=".php">./src</directory>
</include>
</source>
<php>
<server name="DB_CONNECTION" value="sqlite"/>
</php>
</phpunit>
5 changes: 4 additions & 1 deletion phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,15 @@
>
<testsuites>
<testsuite name="default">
<directory suffix=".php">./tests</directory>
<directory suffix=".php">./tests/Feature</directory>
</testsuite>
</testsuites>
<source>
<include>
<directory suffix=".php">./src</directory>
</include>
</source>
<php>
<server name="DB_CONNECTION" value="testing"/>
</php>
</phpunit>
9 changes: 9 additions & 0 deletions tests/Browser/BrowserTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

use Laravel\Dusk\Browser;

it('can_browse_default_laravel_page')
->browse(function (Browser $browser) {
$browser->visit('/')
->assertSee('Documentation');
});
2 changes: 2 additions & 0 deletions tests/Browser/console/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
2 changes: 2 additions & 0 deletions tests/Browser/screenshots/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
2 changes: 2 additions & 0 deletions tests/Browser/source/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
24 changes: 24 additions & 0 deletions tests/DuskTestCase.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

namespace Orchestra\Testbench\Pest\Tests;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Orchestra\Testbench\Concerns\WithWorkbench;
use Orchestra\Testbench\Dusk\Options;
use PHPUnit\Framework\Attributes\BeforeClass;

class DuskTestCase extends \Orchestra\Testbench\Dusk\TestCase
{
use DatabaseMigrations;
use WithWorkbench;

/**
* Prepare the testing environment web driver options.
*
* @return void
*/
public static function defineWebDriverOptions()
{
Options::$providesApplicationServer = false;
}
}
2 changes: 2 additions & 0 deletions tests/Pest.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?php

use Orchestra\Testbench\Pest\Tests\DuskTestCase;
use Orchestra\Testbench\Pest\Tests\TestCase;

/*
Expand All @@ -13,4 +14,5 @@
|
*/

uses(DuskTestCase::class)->in('Browser');
uses(TestCase::class)->in('Unit', 'Feature');
8 changes: 2 additions & 6 deletions tests/TestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@

class TestCase extends \Orchestra\Testbench\TestCase
{
use LazilyRefreshDatabase, WithWorkbench;

protected function defineEnvironment($app)
{
$app['config']->set(['database.default' => 'testing']);
}
use LazilyRefreshDatabase;
use WithWorkbench;
}