Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
laradock
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kerwin
laradock
Commits
c099a51d
Commit
c099a51d
authored
Aug 11, 2017
by
Eric Dattore
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add docs on running Laravel Dusk tests
parent
245ddf34
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
146 additions
and
0 deletions
+146
-0
index.md
DOCUMENTATION/content/guides/index.md
+146
-0
No files found.
DOCUMENTATION/content/guides/index.md
View file @
c099a51d
...
...
@@ -8,6 +8,7 @@ weight: 4
*
[
Production Setup on Digital Ocean
](
#Digital-Ocean
)
*
[
PHPStorm XDebug Setup
](
#PHPStorm-Debugging
)
*
[
Running Laravel Dusk Test
](
#Laravel-Dusk
)
...
...
@@ -555,4 +556,149 @@ Assuming that you are in laradock folder, type:
-
!
[
ConnectionSSHAuth
](
/images/photos/KiTTY/ConnectionSSHAuth.png
)
-
!
[
TerminalShell
](
/images/photos/KiTTY/TerminalShell.png
)
<br>
<br>
<br>
<br>
<br>
<a
name=
"Laravel-Dusk"
></a>
# Running Laravel Dusk Tests
-
[
Intro
](
#dusk-intro
)
-
[
DNS Setup
](
#dns-setup
)
-
[
Docker Compose Setup
](
#docker-compose
)
-
[
Laravel Dusk Setup
](
#laravel-dusk-setup
)
-
[
Running Laravel Dusk Tests
](
#running-tests
)
<a
name=
"dusk-intro"
></a>
## Intro
Setting up Laravel Dusk tests to run with Laradock appears be something that
eludes most Laradock users. This guide is designed to show you how to wire them
up to work together. This guide is written with macOS and Linux in mind. As such,
it's only been tested on macOS. Feel free to create pull requests to update the guide
for Windows-specific instructions.
This guide assumes you know how to use a DNS forwarder such as
`dnsmasq`
or are comfortable
with editing the
`/etc/hosts`
file for one-off DNS changes.
<a
name=
"dns-setup"
></a>
## DNS Setup
According to RFC-2606, only four TLDs are reserved for local testing
[
^1
]
:
-
`.test`
-
`.example`
-
`.invalid`
-
`.localhost`
A common TLD used for local development is
`.dev`
, but newer versions of Google
Chrome (such as the one bundled with the Selenium Docker image), will fail to
resolve that DNS as there will appear to be a name collision.
The recommended extension is
`.test`
for your Laravel web apps because you're
running tests. Using a DNS forwarder such as
`dnsmasq`
or by editing the
`/etc/hosts`
file, configure the host to point to
`localhost`
.
For example, in your
`/etc/hosts`
file:
```
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
127.0.0.1 myapp.test
```
This will ensure that when navigating to
`myapp.test`
, it will route the
request to
`127.0.0.1`
which will be handled by Nginx in Laradock.
<a
name=
"docker-compose"
></a>
## Docker Compose setup
In order to make the Selenium container talk to the Nginx container appropriately,
the
`docker-compose.yml`
needs to be edited to accommodate this. Make the following
changes:
```
yaml
...
selenium
:
...
depends_on
:
-
nginx
links
:
-
nginx:<your_domain>
```
This allows network communication between the Nginx and Selenium containers
and it also ensures that when starting the Selenium container, the Nginx
container starts up first unless it's already running. This allows
the Selenium container to make requests to the Nginx container, which is
necessary for running Dusk tests. These changes also link the
`nginx`
environment
variable to the domain you wired up in your hosts file.
<a
name=
"laravel-dusk-setup"
></a>
## Laravel Dusk Setup
In order to make Laravel Dusk make the proper request to the Selenium container,
you have to edit the
`DuskTestCase.php`
file that's provided on the initial
installation of Laravel Dusk. The change you have to make deals with the URL the
Remote Web Driver attempts to use to set up the Selenium session.
One recommendation for this is to add a separate config option in your
`.env.dusk.local`
so it's still possible to run your Dusk tests locally should you want to.
### .env.dusk.local
```
...
USE_SELENIUM=true
```
### DuskTestCase.php
```
php
abstract
class
DuskTestCase
extends
BaseTestCase
{
...
protected
function
driver
()
{
if
(
env
(
'USE_SELENIUM'
,
'false'
)
==
'true'
)
{
return
RemoteWebDriver
::
create
(
'http://selenium:4444/wd/hub'
,
DesiredCapabilities
::
chrome
()
);
}
else
{
return
RemoteWebDriver
::
create
(
'http://localhost:9515'
,
DesiredCapabilities
::
chrome
()
);
}
}
}
```
<a
name=
"running-tests"
></a>
## Running Laravel Dusk Tests
Now that you have everything set up, to run your Dusk tests, you have to SSH
into the workspace container as you normally would:
```
docker-compose exec --user=laradock workspace bash```
Once inside, you can change directory to your application and run:
```
php artisan dusk
```
One way to make this easier from your project is to create a helper script. Here's one such example:
```
bash
#!/usr/bin/env sh
LARADOCK_HOME="path/to/laradock"
pushd ${LARADOCK_HOME}
docker-compose exec --user=laradock workspace bash -c "cd my-project && php artisan dusk && exit"
```
This invokes the Dusk command from inside the workspace container but when the script completes
execution, it returns your session to your project directory.
[
^1
]:
[Don't
Use .dev for Development](https://iyware.com/dont-use-dev-for-development/)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment