diff --git a/.gitignore b/.gitignore index 710a42a..16ca6a7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ Homestead.json Homestead.yaml .env +.env.dusk.local diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index c449c0e..47bb6e0 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -6,6 +6,7 @@ use App\TicketCodeGenerator; use App\Billing\PaymentGateway; use App\HashidsTicketCodeGenerator; use App\Billing\StripePaymentGateway; +use Laravel\Dusk\DuskServiceProvider; use Illuminate\Support\ServiceProvider; use App\OrderConfirmationNumberGenerator; use App\RandomOrderConfirmationNumberGenerator; @@ -29,6 +30,10 @@ class AppServiceProvider extends ServiceProvider */ public function register() { + if ($this->app->environment('local', 'testing')) { + $this->app->register(DuskServiceProvider::class); + } + $this->app->bind(StripePaymentGateway::class, function () { return new StripePaymentGateway(config('services.stripe.secret')); }); diff --git a/composer.json b/composer.json index aea7279..bd04cf8 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,8 @@ "zondicons/blade-bridge": "^0.1.0", "stripe/stripe-php": "^4.3", "guzzlehttp/guzzle": "^6.2", - "hashids/hashids": "^2.0" + "hashids/hashids": "^2.0", + "laravel/dusk": "^1.1" }, "require-dev": { "fzaninotto/faker": "~1.4", diff --git a/composer.lock b/composer.lock index 13c366a..5759a26 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "94fd2c7211ef4aa80724947e13ba4651", - "content-hash": "caee9b77188f151d418e434e7e9e9f21", + "hash": "7cbaa1ad75bde284c40bd5c43c2329c7", + "content-hash": "2ebfbcd062d6383b3b54cc0757b1eacf", "packages": [ { "name": "doctrine/inflector", @@ -116,6 +116,58 @@ ], "time": "2017-03-29 16:04:15" }, + { + "name": "facebook/webdriver", + "version": "1.4.1", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "eadb0b7a7c3e6578185197fd40158b08c3164c83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/eadb0b7a7c3e6578185197fd40158b08c3164c83", + "reference": "eadb0b7a7c3e6578185197fd40158b08c3164c83", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-zip": "*", + "php": "^5.5 || ~7.0", + "symfony/process": "^2.8 || ^3.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.0", + "php-mock/php-mock-phpunit": "^1.1", + "phpunit/phpunit": "4.6.* || ~5.0", + "satooshi/php-coveralls": "^1.0", + "squizlabs/php_codesniffer": "^2.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-community": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Facebook\\WebDriver\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "description": "A PHP client for Selenium WebDriver", + "homepage": "https://github.com/facebook/php-webdriver", + "keywords": [ + "facebook", + "php", + "selenium", + "webdriver" + ], + "time": "2017-04-28 14:54:49" + }, { "name": "guzzlehttp/guzzle", "version": "6.2.3", @@ -357,6 +409,62 @@ ], "time": "2017-01-01 13:33:33" }, + { + "name": "laravel/dusk", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/dusk.git", + "reference": "6b81e97ae1ce384e3d8dbd020b2b9751c1449889" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/dusk/zipball/6b81e97ae1ce384e3d8dbd020b2b9751c1449889", + "reference": "6b81e97ae1ce384e3d8dbd020b2b9751c1449889", + "shasum": "" + }, + "require": { + "facebook/webdriver": "~1.0", + "illuminate/console": "~5.4", + "illuminate/support": "~5.4", + "nesbot/carbon": "~1.20", + "php": ">=5.6.4", + "symfony/console": "~3.2", + "symfony/process": "~3.2" + }, + "require-dev": { + "mockery/mockery": "^0.9.6", + "phpunit/phpunit": "^5.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\Dusk\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Dusk provides simple end-to-end testing and browser automation.", + "keywords": [ + "laravel", + "testing", + "webdriver" + ], + "time": "2017-04-23 17:13:04" + }, { "name": "laravel/framework", "version": "v5.4.16", diff --git a/routes/web.php b/routes/web.php index 8bc3632..6aa8e77 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,10 @@ | */ +Route::get('/', function () { + return "Laravel"; +}); + Route::get('/concerts/{id}', 'ConcertsController@show'); Route::post('/concerts/{id}/orders', 'ConcertOrdersController@store'); Route::get('/orders/{confirmationNumber}', 'OrdersController@show'); diff --git a/tests/Browser/ExampleTest.php b/tests/Browser/ExampleTest.php new file mode 100644 index 0000000..3827756 --- /dev/null +++ b/tests/Browser/ExampleTest.php @@ -0,0 +1,23 @@ +browse(function (Browser $browser) { + $browser->visit('/') + ->assertSee('Laravel'); + }); + } +} diff --git a/tests/Browser/Pages/HomePage.php b/tests/Browser/Pages/HomePage.php new file mode 100644 index 0000000..4f5a87f --- /dev/null +++ b/tests/Browser/Pages/HomePage.php @@ -0,0 +1,41 @@ + '#selector', + ]; + } +} diff --git a/tests/Browser/Pages/Page.php b/tests/Browser/Pages/Page.php new file mode 100644 index 0000000..f8d7622 --- /dev/null +++ b/tests/Browser/Pages/Page.php @@ -0,0 +1,20 @@ + '#selector', + ]; + } +} diff --git a/tests/Browser/console/.gitignore b/tests/Browser/console/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/tests/Browser/console/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/Browser/screenshots/.gitignore b/tests/Browser/screenshots/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/tests/Browser/screenshots/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tests/DuskTestCase.php b/tests/DuskTestCase.php new file mode 100644 index 0000000..f8b1331 --- /dev/null +++ b/tests/DuskTestCase.php @@ -0,0 +1,35 @@ +