From f95d0d9f383bb22dd02b615ea4ceffdaa3f74bc9 Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@suma-ev.de> Date: Wed, 5 Aug 2020 12:40:13 +0200 Subject: [PATCH] create custom trait for browserstack to support non local setup --- app/Traits/SupportsBrowserStack.php | 47 ++++++++++++++++++++++++++ composer.json | 3 +- tests/Browser/console/browserstack.log | 10 ------ tests/DuskTestCase.php | 5 +-- 4 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 app/Traits/SupportsBrowserStack.php delete mode 100644 tests/Browser/console/browserstack.log diff --git a/app/Traits/SupportsBrowserStack.php b/app/Traits/SupportsBrowserStack.php new file mode 100644 index 000000000..8a54244e3 --- /dev/null +++ b/app/Traits/SupportsBrowserStack.php @@ -0,0 +1,47 @@ +<?php +namespace App\Traits; + +use BrowserStack\Local; +use Facebook\WebDriver\Remote\RemoteWebDriver; + +/** + * Run BrowserStack from your tests. + */ +trait SupportsBrowserStack +{ + protected static $web_driver, $bs_local; + /** + * Create the BrowserStack WebDriver instance. + */ + public function createBrowserStackDriver(array $config = null): RemoteWebDriver + { + if ($config["capabilities"]["browserstack.local"] === "true") { + $this->bs_local = new Local(); + $bs_local_args = [ + "key" => $config["key"], + ]; + $this->bs_local->start($bs_local_args); + } + + $this->web_driver = RemoteWebDriver::create( + "https://$config[username]:$config[key]@hub-cloud.browserstack.com/wd/hub", + $config["capabilities"] + ); + + return $this->web_driver; + } + + /** + * @afterClass + */ + public static function shutdown() + { + if (static::$bs_local && static::$bs_local->isRunning()) { + static::$bs_local->stop(); + } + if (static::$web_driver) { + static::$web_driver->quit(); + } + } + +} diff --git a/composer.json b/composer.json index 49624c8e5..9355e6fc3 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,6 @@ "browserstack/browserstack-local": "^1.1", "filp/whoops": "^2.0", "fzaninotto/faker": "^1.4", - "galahad/dusk-browserstack": "^2.0", "laravel/dusk": "^5.0", "mockery/mockery": "^1.0", "nunomaduro/collision": "^3.0", @@ -71,4 +70,4 @@ "@php artisan key:generate --ansi" ] } -} +} \ No newline at end of file diff --git a/tests/Browser/console/browserstack.log b/tests/Browser/console/browserstack.log deleted file mode 100644 index 99fc21a16..000000000 --- a/tests/Browser/console/browserstack.log +++ /dev/null @@ -1,10 +0,0 @@ - - -/bin/sh: 1: ps: not found -/bin/sh: 1: ps: not found -Tue Aug 04 2020 12:39:58 GMT+0000 (UTC) -- [INFO] Started the BrowserStack Binary server on 45691, PID: 28 -Tue Aug 04 2020 12:39:58 GMT+0000 (UTC) -- [SUCCESS] You can now access your local server(s) in our remote browser - -Tue Aug 04 2020 12:39:59 GMT+0000 (UTC) -- Press Ctrl-C to exit - - diff --git a/tests/DuskTestCase.php b/tests/DuskTestCase.php index 4121bf2cc..e22536cbf 100644 --- a/tests/DuskTestCase.php +++ b/tests/DuskTestCase.php @@ -3,8 +3,8 @@ namespace Tests; use Facebook\WebDriver\Remote\RemoteWebDriver; -use Galahad\BrowserStack\SupportsBrowserStack; use Laravel\Dusk\TestCase as BaseTestCase; +use \App\Traits\SupportsBrowserStack; abstract class DuskTestCase extends BaseTestCase { @@ -51,9 +51,6 @@ abstract class DuskTestCase extends BaseTestCase "username" => env("WEBDRIVER_USER", ""), "key" => env("WEBDRIVER_KEY", ""), "capabilities" => $capabilities, - "local_config" => [ - "key" => env("WEBDRIVER_KEY", ""), - ], ]); } } -- GitLab