**Why we need this change?**
Currently we are unable to run Dusk (Browser) tests in workspace container. This change,
is to allow us to install all dependencies needed to run Dust test which consists of
1. Linux packages such as xvfb (x-virtual frame buffer to run browser in headless container) and etc.
2. Chrome browser.
3. Chrome driver.
To install the Dusk dependencies.
1. Update `WORKSPACE_INSTALL_DUSK_DEPS` to true.
2. Run `docker-compose build workspace`.
I've also added couple of aliases to facilitate the preparation of test environment.
1. xvfb = `Xvfb -ac :0 -screen 0 1024x768x16 &` (run x-virtual frame buffer in the background)
2. serve = `php artisan serve --quiet &` (run laravel app in the background)
Once those are installed, we will need to update the default chrome driver argument in Laravel 5.5
from `--headless` to `sandbox`. Below are the steps to run Dusk in workspace.
1. `docker-compose run workspace bash` (get into workspace).
2. `laravel new dusk-test` (generate new lavarel app for testing purpose).
3. `cd dusk-test` (change directory to newly generate app folder).
4. `composer install --dev laravel/dusk` (install dusk via composer).
5. `php artisan dusk:install` (generate dusk files).
6. `sed -i '/APP_URL/d' .env` (remove APP_URL entry in .env)
7. `echo 'APP_URL=localhost:8000' >> .env` (add new APP_URL entry in .env)
8. `sed -i--'s/headless/no-sandbox/g' tests/DuskTestCase.php` (replace the default chrome driver argument).
9. `xvfb` (alias to run Xvfb instance in the background).
10. `serve` (alias to run laravel app in the background).
11. `dusk` (alias to run Dusk test).
It looks like the
219: user: "1000:50"
statement was added a while back to fix a file permissions issue, but on a completely fresh up it keeps mysql from starting, generating the following. Removing the line allowed everything to work properly.:
mysql_1 | Initializing database
mysql_1 | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
mysql_1 | 2017-09-14T23:55:30.989254Z 0 [Note] Basedir set to /usr/
mysql_1 | 2017-09-14T23:55:30.989559Z 0 [Warning] The syntax '--symbolic-links/-s' is deprecated and will be removed in a future release
mysql_1 | 2017-09-14T23:55:30.989602Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
mysql_1 | 2017-09-14T23:55:30.990877Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
mysql_1 | 2017-09-14T23:55:30.990886Z 0 [ERROR] Aborting
* 'change-mysql-version' of https://github.com/hackel/laradock:
Add documentation on the MYSQL_VERSION variable.
Allow specifying the version of MySQL to install in .env file.
- fixes failing connection to host "mailhog" when sending mail via smtp
- mailhog needs to be available for the backend at Port 1025
- i.e. in a Laravel app .env should contain "MAIL_HOST=mailhog