Skip to content
This repository has been archived by the owner on Nov 16, 2020. It is now read-only.

Commit

Permalink
Dusk tests (#49)
Browse files Browse the repository at this point in the history
Fixed Sauce tests by disabling test-coverage for that group + Configured-in more browsers to Sauce tests + Merged Coverage data for Unit and Dusk tests + Handled permissions for CI environment more subtly (php containers run with www-data user, whereas we run tests with basis user).
  • Loading branch information
shehi committed May 5, 2017
1 parent 99d49db commit 85abd62
Show file tree
Hide file tree
Showing 14 changed files with 116 additions and 71 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -6,6 +6,7 @@
/public/hot
/public/swagger*
/storage/*.key
/storage/coverage*
!.babelrc
!.env.*
!.git*
Expand Down
23 changes: 11 additions & 12 deletions .travis.yml
Expand Up @@ -13,27 +13,27 @@ language: php
matrix:
fast_finish: true
include:
- php: '5.6'
- php: '7'
env:
- PHP_VERSION=5
- PHP_VERSION=7
- DB_CONNECTION=mysql
- DB_HOST=mariadb
- DB_USERNAME=root
- php: '5.6'
- php: '7'
env:
- PHP_VERSION=5
- PHP_VERSION=7
- DB_CONNECTION=pgsql
- DB_HOST=postgres
- DB_USERNAME=postgres
- php: '7'
- php: '5.6'
env:
- PHP_VERSION=7
- PHP_VERSION=5
- DB_CONNECTION=mysql
- DB_HOST=mariadb
- DB_USERNAME=root
- php: '7'
- php: '5.6'
env:
- PHP_VERSION=7
- PHP_VERSION=5
- DB_CONNECTION=pgsql
- DB_HOST=postgres
- DB_USERNAME=postgres
Expand Down Expand Up @@ -67,8 +67,8 @@ install:
- docker-compose up -d php${PHP_VERSION}-cli;
- docker images;
- docker-compose ps;
- echo $(docker inspect -f '{{ .NetworkSettings.Networks.basis_default.IPAddress }}' basis_nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts;
- docker exec basis_php${PHP_VERSION}-cli_1 /bin/bash -c "echo $(docker inspect -f '{{ .NetworkSettings.Networks.basis_default.IPAddress }}' basis_nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts";
- echo $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' basis_nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts;
- docker exec basis_php${PHP_VERSION}-cli_1 /bin/bash -c "echo $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' basis_nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts";

before_script:
- chmod +x ./storage/build/scripts/ci/build.sh;
Expand All @@ -78,8 +78,7 @@ script:

after_script:
- docker exec basis_php${PHP_VERSION}-cli_1 /bin/bash -c "pkill sc";
- wget https://scrutinizer-ci.com/ocular.phar
- if [[ $PHP_VERSION == 7 && $DB_CONNECTION == 'mysql' ]]; then php ocular.phar code-coverage:upload --format=php-clover ./storage/coverage/coverage.xml; fi
- if [[ $PHP_VERSION == 7 && $DB_CONNECTION == 'mysql' ]]; then wget https://scrutinizer-ci.com/ocular.phar; php ocular.phar code-coverage:upload --format=php-clover ./storage/coverage/merged/coverage.xml; fi

notifications:
hipchat: f504f9e2e6696c17589a7b49f4ce05@Audith.Basis
1 change: 1 addition & 0 deletions composer.json
Expand Up @@ -40,6 +40,7 @@
"fzaninotto/faker": "~1.5",
"mockery/mockery": "0.9.*",
"phpspec/phpspec": "~3.0",
"phpunit/phpcov": "^3.1",
"phpunit/phpunit": "~5.7",
"sauce/sausage": ">=0.17",
"symfony/css-selector": "3.1.*",
Expand Down
17 changes: 17 additions & 0 deletions phpunit.dusk.xml
Expand Up @@ -18,4 +18,21 @@
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./storage/coverage/dusk/report" lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-clover" target="./storage/coverage/dusk/coverage.xml"/>
<log type="coverage-php" target="./storage/coverage/dusk/coverage.cov"/>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
<log type="json" target="./storage/coverage/dusk/logfile.json"/>
<log type="tap" target="./storage/coverage/dusk/logfile.tap"/>
<log type="junit" target="./storage/coverage/dusk/logfile.xml" logIncompleteSkipped="false"/>
<log type="testdox-html" target="./storage/coverage/dusk/testdox.html"/>
<log type="testdox-text" target="./storage/coverage/dusk/testdox.txt"/>
</logging>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
23 changes: 13 additions & 10 deletions phpunit.xml
Expand Up @@ -9,11 +9,14 @@
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Illuminate TestCases">
<testsuite name="Unit">
<directory suffix="Test.php">./tests/JsonApi</directory>
<directory suffix="Test.php">./tests/Models</directory>
</testsuite>
<testsuite name="SauceWebDriver TestCases">
<testsuite name="Dusk">
<directory suffix="Test.php">./tests/Browser</directory>
</testsuite>
<testsuite name="SauceWebDriver">
<directory suffix="Test.php">./tests/WebUi/SauceWebDriver</directory>
</testsuite>
</testsuites>
Expand All @@ -23,15 +26,15 @@
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="./storage/coverage/report" lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-clover" target="./storage/coverage/coverage.xml"/>
<log type="coverage-php" target="./storage/coverage/coverage.serialized"/>
<log type="coverage-html" target="./storage/coverage/unit/report" lowUpperBound="35" highLowerBound="70"/>
<log type="coverage-clover" target="./storage/coverage/unit/coverage.xml"/>
<log type="coverage-php" target="./storage/coverage/unit/coverage.cov"/>
<log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>
<log type="json" target="./storage/coverage/logfile.json"/>
<log type="tap" target="./storage/coverage/logfile.tap"/>
<log type="junit" target="./storage/coverage/logfile.xml" logIncompleteSkipped="false"/>
<log type="testdox-html" target="./storage/coverage/testdox.html"/>
<log type="testdox-text" target="./storage/coverage/testdox.txt"/>
<log type="json" target="./storage/coverage/unit/logfile.json"/>
<log type="tap" target="./storage/coverage/unit/logfile.tap"/>
<log type="junit" target="./storage/coverage/unit/logfile.xml" logIncompleteSkipped="false"/>
<log type="testdox-html" target="./storage/coverage/unit/testdox.html"/>
<log type="testdox-text" target="./storage/coverage/unit/testdox.txt"/>
</logging>
<php>
<env name="APP_ENV" value="testing"/>
Expand Down
28 changes: 24 additions & 4 deletions storage/build/scripts/ci/build.sh
Expand Up @@ -14,6 +14,7 @@ docker exec basis_php${PHP_VERSION}-cli_1 /bin/bash -c "
export SAUCE_USERNAME=${SAUCE_USERNAME};
export SAUCE_ACCESS_KEY=${SAUCE_ACCESS_KEY};
daemon -U --respawn -- phantomjs --webdriver=25852 --webdriver-logfile=\$WORKDIR/storage/logs/phantomjs.log --webdriver-loglevel=DEBUG;
if [[ ${PHP_VERSION} == 7 && ${DB_CONNECTION} == 'mysql' ]]; then
wget -P ./storage/build/tools https://saucelabs.com/downloads/sc-4.4.5-linux.tar.gz;
tar -C ./storage/build/tools -xzf ./storage/build/tools/sc-4.4.5-linux.tar.gz;
Expand Down Expand Up @@ -63,15 +64,34 @@ docker exec basis_php${PHP_VERSION}-cli_1 /bin/bash -c "
./storage/build/tools/css3_font_converter/convertFonts.sh --use-font-weight --output=public/fonts/marcellus/stylesheet.css public/fonts/marcellus/*.ttf;
npm run build;
sudo composer selfupdate;
composer update --prefer-source --no-interaction;
./artisan key:generate;
./artisan migrate;
./artisan passport:install;
sudo chown -R basis:basis ./;
sudo chown -R 1000:1000 ./;
sudo touch ./storage/logs/laravel.log;
sudo chown -R www-data:www-data ./storage/framework/views ./storage/logs;
sudo chmod -R 0777 ./storage/framework/views ./storage/logs;
if [[ ${PHP_VERSION} == 7 && ${DB_CONNECTION} == 'mysql' ]]; then ./vendor/bin/phpunit --debug --verbose;
else ./vendor/bin/phpunit --debug --verbose --testsuite='Illuminate TestCases'; fi;
./vendor/bin/phpunit --debug --verbose --testsuite='Unit';
ls -l ./storage/framework/views/twig ./storage/logs;
sudo chmod -R 0777 ./storage/framework/views ./storage/logs;
./artisan dusk -vvv;
ls -l ./storage/framework/views/twig ./storage/logs;
sudo chmod -R 0777 ./storage/framework/views ./storage/logs;
./vendor/bin/phpcov merge ./storage/coverage --html ./storage/coverage/merged/
ls -l ./storage/framework/views/twig ./storage/logs;
sudo chmod -R 0777 ./storage/framework/views ./storage/logs;
./vendor/bin/phpunit --debug --verbose --no-coverage --testsuite='SauceWebDriver';
ls -l ./storage/framework/views/twig ./storage/logs;
sudo chmod -R 0777 ./storage/framework/views ./storage/logs;
";
11 changes: 8 additions & 3 deletions storage/build/scripts/dev-env/build.sh
Expand Up @@ -19,7 +19,7 @@ docker-compose down;
docker-compose up -d php${PHP_VERSION}-cli;
docker-compose ps;
docker exec ${COMPOSE_PROJECT_NAME}php${PHP_VERSION}-cli_1 \
/bin/bash -c "echo $(docker inspect -f '{{ .NetworkSettings.Networks.basis_default.IPAddress }}' ${COMPOSE_PROJECT_NAME}nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts";
/bin/bash -c "echo $(docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${COMPOSE_PROJECT_NAME}nginxForPhp${PHP_VERSION}_1) basis.audith.org | sudo tee -a /etc/hosts";

test -f .env || cat .env.example | tee .env > /dev/null 2>&1;

Expand All @@ -36,6 +36,7 @@ docker exec ${COMPOSE_PROJECT_NAME}php${PHP_VERSION}-cli_1 bash -c "
fi;
source ~/.bash_profile;
daemon -U --respawn -- phantomjs --webdriver=25852 --webdriver-logfile=\$WORKDIR/storage/logs/phantomjs.log --webdriver-loglevel=DEBUG;
if [ ! -z ${SAUCE_ACCESS_KEY+x} ]; then
wget -P ./storage/build/tools https://saucelabs.com/downloads/sc-4.4.5-linux.tar.gz;
tar -C ./storage/build/tools -xzf ./storage/build/tools/sc-4.4.5-linux.tar.gz;
Expand Down Expand Up @@ -85,7 +86,6 @@ docker exec ${COMPOSE_PROJECT_NAME}php${PHP_VERSION}-cli_1 bash -c "
./storage/build/tools/css3_font_converter/convertFonts.sh --use-font-weight --output=public/fonts/marcellus/stylesheet.css public/fonts/marcellus/*.ttf;
npm run build;
sudo composer selfupdate;
composer update --prefer-source --no-interaction;
./artisan key:generate;
Expand All @@ -96,7 +96,12 @@ docker exec ${COMPOSE_PROJECT_NAME}php${PHP_VERSION}-cli_1 bash -c "
sudo chmod -R 0777 ./storage/framework/views/twig;
sudo chmod -R 0777 ./storage/logs;
./vendor/bin/phpunit --debug --verbose;
./vendor/bin/phpunit --debug --verbose --testsuite='Unit';
./artisan dusk -vvv;
./vendor/bin/phpcov merge ./storage/coverage --html ./storage/coverage/merged/;
./vendor/bin/phpunit --debug --verbose --no-coverage --testsuite='SauceWebDriver';
";

#stty cols 239 rows 61;
Expand Down
7 changes: 2 additions & 5 deletions storage/build/scripts/php_5.6/Dockerfile
Expand Up @@ -105,7 +105,7 @@ RUN set -ex \
done

ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 6.10.2
ENV NODE_VERSION 6.10.3

RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
Expand All @@ -126,10 +126,7 @@ RUN npm install -g ttf2eot jshint phantomjs-prebuilt
EXPOSE 9229

# Port for our PhantomJs Ghost driver
EXPOSE 8080

# Port for Laravel dev-server
EXPOSE 8000
EXPOSE 25852

# Clean-up
RUN apt-get clean \
Expand Down
7 changes: 2 additions & 5 deletions storage/build/scripts/php_7/Dockerfile
Expand Up @@ -104,7 +104,7 @@ RUN set -ex \
done

ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 6.10.2
ENV NODE_VERSION 6.10.3

RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
Expand All @@ -125,10 +125,7 @@ RUN npm install -g ttf2eot jshint phantomjs-prebuilt
EXPOSE 9229

# Port for our PhantomJs Ghost driver
EXPOSE 8080

# Port for Laravel dev-server
EXPOSE 8000
EXPOSE 25852

# Clean-up
RUN apt-get clean \
Expand Down
Empty file modified storage/framework/views/.gitignore 100644 → 100755
Empty file.
1 change: 1 addition & 0 deletions tests/Browser/AuthenticationTest.php
Expand Up @@ -22,6 +22,7 @@ public function testAuthenticateMiddleware()
{
$this->browse(function (Browser $browser) {
$browser->visit('/oauth/clients');
$browser->waitForText('Login');
$browser->assertPathIs('/en/login');
});
}
Expand Down
18 changes: 11 additions & 7 deletions tests/Browser/LocalizedRoutesTest.php
@@ -1,4 +1,4 @@
<?php namespace App\Browser;
<?php namespace App\Tests\Browser;

use App\Tests\DuskTestCase;
use Laravel\Dusk\Browser;
Expand All @@ -23,17 +23,21 @@ public function testHyperlinksInAuthenticationPages($locale)
$this->app->make('translator')->setLocale($locale);

$this->browse(function (Browser $browser) use ($locale) {
$browser->visit('/');
$browser->assertSee(trans_choice('auth.headings.welcome', \App\Http\Controllers\Controller::TRANSLATION_TAG_GUEST_USER, ['name' => trans('auth.guest')]));
$browser->visit('/' . $locale);
$browser->assertSourceHas(trans_choice('auth.headings.welcome', \App\Http\Controllers\Controller::TRANSLATION_TAG_GUEST_USER, ['name' => trans('auth.guest')]));

$browser->click(trans('auth.buttons.login'));
$browser->clickLink(trans('auth.buttons.login'));
$browser->waitForText(trans('auth.headings.login'));
$browser->assertPathIs('/' . $locale . '/' . $this->urlDecodeCompatibleUnicodeMultibyteSequence(trans('routes.login.')));

$browser->click(trans('auth.buttons.password'));
$browser->clickLink(trans('auth.buttons.password'));
$browser->waitForText(trans('auth.headings.password'));
$browser->assertPathIs('/' . $locale . '/' . $this->urlDecodeCompatibleUnicodeMultibyteSequence(trans('routes.password.') . '/' . trans('routes.password.email')));

$browser->click(trans('auth.buttons.login'));
$browser->click(trans('auth.buttons.register'));
$browser->clickLink(trans('auth.buttons.login'));
$browser->waitForText(trans('auth.headings.login'));
$browser->clickLink(trans('auth.buttons.register'));
$browser->waitForText(trans('auth.headings.register'));
$browser->assertPathIs('/' . $locale . '/' . $this->urlDecodeCompatibleUnicodeMultibyteSequence(trans('routes.register.')));
});
}
Expand Down
2 changes: 1 addition & 1 deletion tests/DuskTestCase.php
Expand Up @@ -26,6 +26,6 @@ public static function prepare()
*/
protected function driver()
{
return RemoteWebDriver::create('http://basis.audith.org', DesiredCapabilities::phantomjs());
return RemoteWebDriver::create('http://localhost:25852', DesiredCapabilities::phantomjs());
}
}
48 changes: 24 additions & 24 deletions tests/WebUi/SauceWebDriver/AuthenticationTest.php
Expand Up @@ -13,30 +13,30 @@ class AuthenticationTest extends SauceWebDriverTestCase

/** @var array */
public static $browsers = [
// [
// 'browserName' => 'firefox',
// 'desiredCapabilities' => [
// 'platform' => 'Linux'
// ]
// ],
// [
// 'browserName' => 'chrome',
// 'desiredCapabilities' => [
// 'platform' => 'Linux'
// ]
// ],
// [
// 'browserName' => 'firefox',
// 'desiredCapabilities' => [
// 'platform' => 'macOS 10.12'
// ]
// ],
// [
// 'browserName' => 'chrome',
// 'desiredCapabilities' => [
// 'platform' => 'macOS 10.12'
// ]
// ],
[
'browserName' => 'firefox',
'desiredCapabilities' => [
'platform' => 'Linux'
]
],
[
'browserName' => 'chrome',
'desiredCapabilities' => [
'platform' => 'Linux'
]
],
[
'browserName' => 'firefox',
'desiredCapabilities' => [
'platform' => 'macOS 10.12'
]
],
[
'browserName' => 'chrome',
'desiredCapabilities' => [
'platform' => 'macOS 10.12'
]
],
[
'browserName' => 'firefox',
'desiredCapabilities' => [
Expand Down

0 comments on commit 85abd62

Please sign in to comment.