mirror of
https://github.com/silverstripe/silverstripe-behat-extension
synced 2024-10-22 17:05:32 +02:00
New tutorial for adding CircleCI support
This commit is contained in:
parent
9fc5bf254b
commit
f58e97d361
@ -115,6 +115,7 @@ For example, if you want to start a Chrome Browser you can following the instruc
|
||||
|
||||
* [Tutorial: Testing Form Submissions](docs/tutorial.md)
|
||||
* [Tutorial: Webservice Mocking with Phockito and TestSession](docs/webservice-mocking.md)
|
||||
* [Tutorial: Setting up Behat on CircleCI](docs/circleci-tutorial.md)
|
||||
|
||||
## Configuration
|
||||
|
||||
|
123
docs/circleci-tutorial.md
Normal file
123
docs/circleci-tutorial.md
Normal file
@ -0,0 +1,123 @@
|
||||
#Setting up CircleCI and Behat
|
||||
If you'd like to run SilverStripe Behat tests on CircleCI, this can be achieved (along with screenshot artifacts on
|
||||
error) reasonably easily.
|
||||
|
||||
The below extract is a full `circle.yml` configuration file that gets the environment setup and running for Behat tests.
|
||||
Please review it thoroughly as there are a few things you'll need to change for your individual project. Notably:
|
||||
|
||||
* If you already have a behat.yml, you should ensure your local requirements are reflected as the following script will
|
||||
overwrite the behat.yml file in order to ensure screenshot failures are stored in a CircleCI-appropriate directory,
|
||||
even if you don't store screenshots locally.
|
||||
* There is one variable required below (`REPO-NAME`) that you need to fill out yourself depending on the name of your
|
||||
repository (CircleCI will check out your code into a sub-directory of the user's homedir based on the repository name).
|
||||
* This assumes your Behat fixtures are located under the mysite/ directory. If not, check the `test.override` section
|
||||
below.
|
||||
|
||||
```
|
||||
machine:
|
||||
php:
|
||||
version: 5.6.14
|
||||
dependencies:
|
||||
cache_directories:
|
||||
- vendor
|
||||
- ~/.composer/cache
|
||||
|
||||
pre:
|
||||
# Enable xdebug - this is for code coverage and may not be necessary for you. Remove if you don't need it, it can
|
||||
# drastically slow down tests
|
||||
- sed -i 's/^;//' ~/.phpenv/versions/$(phpenv global)/etc/conf.d/xdebug.ini
|
||||
|
||||
# We found that some machines have outdated composer versions, so we self-update before running install just in case
|
||||
- sudo composer self-update
|
||||
- composer install --prefer-source --no-interaction
|
||||
|
||||
# Behat and SilverStripe often require a reasonably large amount of memory, tune to your specific needs
|
||||
- echo "memory_limit = 512M" > ~/.phpenv/versions/$(phpenv global)/etc/conf.d/memory.ini
|
||||
|
||||
# Setup the _ss_environment.php file per https://docs.silverstripe.org/en/3.4/getting_started/environment_management
|
||||
- |
|
||||
cat << 'EOF' > _ss_environment.php
|
||||
<?php
|
||||
define('SS_DATABASE_SERVER', '127.0.0.1');
|
||||
define('SS_DATABASE_CLASS', 'MySQLPDODatabase');
|
||||
define('SS_DATABASE_USERNAME', 'ubuntu');
|
||||
define('SS_DATABASE_PASSWORD', '');
|
||||
define('SS_ENVIRONMENT_TYPE', 'dev');
|
||||
|
||||
global $_FILE_TO_URL_MAPPING;
|
||||
$_FILE_TO_URL_MAPPING['/home/ubuntu/REPO-NAME'] = 'http://localhost:8080/';
|
||||
EOF
|
||||
|
||||
# Create Apache vhost config
|
||||
- |
|
||||
cat << 'EOF' > /etc/apache2/sites-available/website.conf
|
||||
Listen 8080
|
||||
<VirtualHost *:8080>
|
||||
DocumentRoot /home/ubuntu/REPO-NAME
|
||||
ServerName localhost
|
||||
<FilesMatch \.php$>
|
||||
SetHandler application/x-httpd-php
|
||||
</FilesMatch>
|
||||
<Directory /home/ubuntu/REPO-NAME>
|
||||
AllowOverride All
|
||||
</Directory>
|
||||
</VirtualHost>
|
||||
EOF
|
||||
|
||||
# Restart Apache to pickup new config
|
||||
- a2ensite website.conf
|
||||
- a2enmod rewrite
|
||||
- sudo service apache2 restart
|
||||
|
||||
# Get Selenium setup - we currently do this everytime but ideally we could store in the cache_directories and only
|
||||
# grab if it doesn't exist to save time - an exercise left to the reader!
|
||||
- wget http://selenium-release.storage.googleapis.com/2.52/selenium-server-standalone-2.52.0.jar
|
||||
- 'java -jar selenium-server-standalone-2.52.0.jar > /dev/null 2>&1':
|
||||
background: true
|
||||
|
||||
# Clear and/or create artifacts directory
|
||||
- mkdir $CIRCLE_ARTIFACTS/_behat_results
|
||||
|
||||
# Create silverstipe-cache directory and add group perms
|
||||
- if [ -d silverstripe-cache ]; then rm -rf silverstripe-cache; fi
|
||||
- mkdir silverstripe-cache
|
||||
- chmod 775 silverstripe-cache
|
||||
|
||||
# Create assets directory and add group perms
|
||||
- if [ ! -d assets ]; then mkdir assets && chmod 777 assets; fi
|
||||
|
||||
# Setup behat.yml - you will need to merge your current behat.yml into this configuration
|
||||
- |
|
||||
cat > behat.yml <<EOF
|
||||
default:
|
||||
paths:
|
||||
features: features
|
||||
bootstrap: %behat.paths.features%/bootstrap
|
||||
formatter:
|
||||
name: pretty
|
||||
parameters:
|
||||
snippets: false
|
||||
extensions:
|
||||
SilverStripe\BehatExtension\Extension:
|
||||
screenshot_path: $CIRCLE_ARTIFACTS/_behat_results/
|
||||
ajax_timeout: 10000
|
||||
SilverStripe\BehatExtension\MinkExtension:
|
||||
base_url: http://localhost:8080/
|
||||
files_path: %%behat.paths.base%%/framework/tests/behat/features/files/
|
||||
default_session: selenium2
|
||||
javascript_session: selenium2
|
||||
selenium2:
|
||||
browser: firefox
|
||||
EOF
|
||||
|
||||
# Create database via dev/build
|
||||
- framework/sake dev/build flush=1
|
||||
|
||||
test:
|
||||
override:
|
||||
# We override the CircleCI defaults to run both PHPUnit and Behat tests
|
||||
- vendor/bin/phpunit
|
||||
|
||||
# You may need to change the @mysite below to the name of your Behat test base
|
||||
- vendor/bin/behat --verbose --out=null,$CIRCLE_ARTIFACTS/_behat_results/framework.html,$CIRCLE_ARTIFACTS/_behat_results --format=pretty,html,junit @mysite --tags="~@todo"
|
||||
```
|
Loading…
Reference in New Issue
Block a user