Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • project/varbase
  • issue/varbase-3087001
  • issue/varbase-3215888
  • issue/varbase-3245763
  • issue/varbase-3253354
  • issue/varbase-3256661
  • issue/varbase-3258740
  • issue/varbase-3259665
  • issue/varbase-3260809
  • issue/varbase-3263378
  • issue/varbase-3266504
  • issue/varbase-3269421
  • issue/varbase-3269809
  • issue/varbase-3270457
  • issue/varbase-3276911
  • issue/varbase-3277590
  • issue/varbase-3285082
  • issue/varbase-3292847
  • issue/varbase-3293400
  • issue/varbase-3293696
  • issue/varbase-3298632
  • issue/varbase-3301451
  • issue/varbase-3318323
  • issue/varbase-3318847
  • issue/varbase-3346247
  • issue/varbase-3391550
  • issue/varbase-3443948
  • issue/varbase-3471788
  • issue/varbase-3479338
  • issue/varbase-3484640
30 results
Show changes
Commits on Source (704)
Showing with 12331 additions and 1361 deletions
version: 2.1
defaults: &defaults
docker:
- image: cimg/base:2022.09
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD
- image: cimg/mysql:8.0
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD
entrypoint:
[
"docker-entrypoint.sh",
"--default-authentication-plugin=mysql_native_password",
]
environment:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: test_varbase
MYSQL_USER: user
MYSQL_PASSWORD: passw0rd
resource_class: large
commands:
varbase-build:
steps:
- checkout
- run:
name: Usefull must have utils
command: |
sudo apt -qq update
sudo apt -qqy install docker-buildx-plugin
sudo apt -qqy upgrade
sudo apt -yqq install vim links lynx git diffutils htop curl wget p7zip-full unzip zip sed gcc g++
sudo apt -yqq install make libfreetype6-dev libaio1 libaio-dev libonig-dev libpng-dev mysql-client default-mysql-client xvfb
sudo apt -yqq install gtk2-engines-pixbuf xserver-xorg-core xfonts-cyrillic xfonts-100dpi xfonts-75dpi xfonts-base xfonts-scalable
sudo apt -yqq install libxpm4 libgtk2.0-0 imagemagick dbus-x11 x11-apps libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3
sudo apt -yqq install libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0
sudo apt -yqq install libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6
sudo apt -yqq install libxrandr2 libxrender1 libxss1 libxtst6 libnss3 libu2f-udev libgbm1 libvulkan1 fonts-liberation libappindicator3-1
sudo apt -yqq install libatk-bridge2.0-0 xdg-utils gnupg2 apt-transport-https ca-certificates
- run:
name: Setup Apache2 and PHP8.3
command: |
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt upgrade
sudo apt -yqq install apache2 php8.3 libapache2-mod-php8.3 php8.3-mbstring php8.3-mysql php8.3-xml php8.3-cgi php8.3-cli php8.3-common php8.3-curl php8.3-gd php8.3-imap php8.3-intl php8.3-pspell php8.3-sqlite3 php8.3-tidy php8.3-opcache php8.3-yaml php8.3-bz2 php8.3-readline php8.3-xmlrpc php8.3-enchant php8.3-xsl php8.3-zip php8.3-bcmath php-pear
sudo a2enmod php8.3
sudo a2enmod headers rewrite env mime expires ssl
sudo update-alternatives --set php /usr/bin/php8.3
echo -e "memory_limit = -1" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "max_execution_time = 1200" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "error_reporting = E_ALL" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "max_input_time = 180" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "max_input_vars = 10000" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "post_max_size = 64M" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "upload_max_filesize = 32M" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
echo -e "max_file_uploads = 40" | sudo tee /etc/php/8.3/apache2/php.ini > /dev/null
sudo service apache2 restart
- run:
name: Waiting for MySQL to be ready
command: |
for i in `seq 1 10`;
do
nc -z 127.0.0.1 3306 && echo Success && exit 0
echo -n .
sleep 1
done
echo Failed waiting for MySQL && exit 1
- run:
name: Start D-Bus
command: sudo service dbus start
- run:
name: Configure and run the virtual display.
command: |
export DISPLAY=:99
Xvfb -ac :99 -screen 0 1600x1200x24 > /dev/null 2>&1
background: true
- run:
name: Install/Update Google Chrome browser
command: |
sudo apt install libu2f-udev
sudo apt-get install libgbm1 libvulkan1 libnss3 libgconf-2-4 libxss1 fonts-liberation libappindicator3-1 libatk-bridge2.0-0 xdg-utils libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libnss3 libxss1 libasound2 libxtst6 xauth
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install -f
rm google-chrome-stable_current_amd64.deb
sudo chmod +x /usr/bin/google-chrome
/usr/bin/google-chrome --version
google-chrome --version
- run:
name: Install/Update Chrome Driver
command: |
CHROME_VERSION=$(google-chrome --product-version);
echo $CHROME_VERSION;
wget https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chromedriver-linux64.zip
unzip chromedriver-linux64.zip
sudo chmod +x chromedriver-linux64/chromedriver
sudo mv -f chromedriver-linux64/chromedriver /usr/bin/
rm -rf chromedriver-linux64.zip chromedriver-linux64
chromedriver --version
- run:
name: Install Java
command: |
sudo apt update
sudo apt install -y openjdk-11-jre openjdk-11-jre-headless openjdk-11-jdk openjdk-11-jdk-headless
- run:
name: Run Selenium Standalone server
command: |
export DISPLAY=:99
if [[ ! -f /home/circleci/selenium-server-4.4.0.jar ]]; then wget -O /home/circleci/selenium-server-4.4.0.jar https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.4.0/selenium-server-4.4.0.jar; fi
cd /home/circleci/
java -jar selenium-server-4.4.0.jar standalone --port 4445
background: true
- run:
name: Install composer ~2
command: |
sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin/ --filename=composer --2;
composer config -g github-oauth.github.com $GITHUB_TOKEN
- run:
name: List tools versions
command: |
php --version
java -version
google-chrome --version
chromedriver --version
mysql --version
composer --version
php -m
php -i | grep "Loaded Configuration File"
php --ini
- run:
name: Build Varbase with the composer
command: |
if [ -d "/var/www/html/test" ]; then
sudo rm -rf /var/www/html/test -vvv
fi
cd /var/www/
sudo chmod 775 -R .
sudo chown www-data:circleci -R .
mkdir /var/www/html/test
cd /var/www/html/test/
sudo chmod 775 .
sudo chown www-data:circleci .
git clone --branch '10.0.x' https://github.com/vardot/varbase-project.git /var/www/html/test/varbase
cd /var/www/html/test/varbase
composer require --dev drupal/core-dev:~10 --no-update
composer require --dev drush/drush:~13 --no-update
composer require --dev drupal/drupal-extension:5.0.0alpha1 --no-update
composer require --dev webship/behat-html-formatter:~1.0 --no-update
composer require --dev drevops/behat-screenshot:~1.0 --no-update
sudo chmod 775 -R .
sudo chown www-data:circleci -R .
composer install --no-interaction -vvv
sudo chmod 775 -R .
sudo chown www-data:circleci -R .
cp /var/www/html/test/varbase/docroot/sites/default/default.settings.php /var/www/html/test/varbase/docroot/sites/default/settings.php
echo "\$databases['default']['default'] = [
'database' => 'test_varbase',
'username' => 'root',
'password' => 'rootpw',
'host' => '127.0.0.1',
'port' => '3306',
'driver' => 'mysql',
'prefix' => '',
'collation' => 'utf8mb4_general_ci',
];" >> /var/www/html/test/varbase/docroot/sites/default/settings.php
mkdir /var/www/html/test/varbase/config
mkdir /var/www/html/test/varbase/config/sync
echo "\$settings['config_sync_directory'] = '../config/sync';" >> /var/www/html/test/varbase/docroot/sites/default/settings.php
cd /var/www/html/test/varbase
sudo chmod 775 -R .
sudo chown www-data:circleci -R .
- run:
name: Point varbase.test at /var/www/html/test/varbase/docroot
command: |
sudo a2enmod headers rewrite env mime expires ssl
sudo cp /home/circleci/project/.circleci/env/varbase.test.conf /etc/apache2/sites-available/varbase.test.conf
sudo a2ensite varbase.test
echo 127.0.0.1 varbase.test | sudo tee -a /etc/hosts
sudo service apache2 restart
- run:
name: Install Varbase with drush
command: |
mysql -h 127.0.0.1 -uroot -prootpw --execute="DROP DATABASE IF EXISTS test_varbase;" -vvv
mysql -h 127.0.0.1 -uroot -prootpw --execute="CREATE DATABASE test_varbase;" -vvv
cd /var/www/html/test/varbase/docroot
../bin/drush site-install varbase --yes --account-name="webmaster" --account-pass="dD.123123ddd" --account-mail="webmaster@vardot.com" --db-url="mysql://root:rootpw@127.0.0.1/test_varbase" --locale="en" varbase_multilingual_configuration.enable_multilingual=true varbase_extra_components.varbase_demo=true varbase_extra_components.editoria11y=true varbase_extra_components.vmi=true varbase_extra_components.varbase_heroslider=true varbase_extra_components.varbase_carousels=true varbase_extra_components.varbase_search=true varbase_extra_components.varbase_blog=true varbase_extra_components.varbase_auth=true varbase_extra_components.varbase_ai=true varbase_extra_components.varbase_api=true install_configure_form.enable_update_status_emails=NULL -vvv
../bin/drush pm:enable varbase_development --yes
../bin/drush pm:enable varbase_landing --yes
../bin/drush pm:enable varbase_content_planner --yes
../bin/drush pm:enable varbase_media_instagram --yes
../bin/drush pm:enable varbase_media_twitter --yes
../bin/drush pm:enable social_auth_facebook --yes
../bin/drush pm:enable social_auth_twitter --yes
../bin/drush pm:enable social_auth_linkedin --yes
../bin/drush pm:enable varbase_update_helper --yes
../bin/drush cache:rebuild
- run:
name: Add testing users.
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase/scripts
bash add-testing-users.sh
- run:
name: Import and Update local RTL language
shell: /bin/bash
command: |
cd /var/www/html/test/varbase/docroot
../bin/drush locale-import ar --autocreate-language profiles/contrib/varbase/translations/ar.po
../bin/drush locale-update --langcodes=ar
../bin/drush cr
- run:
name: Uninstall Antibot module to let the selenium bot work
shell: /bin/bash
command: |
cd /var/www/html/test/varbase/docroot
../bin/drush pm:uninstall antibot --yes
../bin/drush config:set system.performance css.preprocess 0 --yes
../bin/drush config:set system.performance js.preprocess 0 --yes
../bin/drush config:set system.logging error_level all --yes
../bin/drush cache:rebuild
jobs:
varbase-testing-01-website-base-requirements:
<<: *defaults
steps:
- varbase-build
- run:
name: Automated Functional Acceptance Testing group - 01 website base requirements
no_output_timeout: 30m
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase
../../../../bin/behat tests/features/varbase/01-website-base-requirements/
varbase-testing-02-user-management:
<<: *defaults
steps:
- varbase-build
- run:
name: Automated Functional Acceptance Testing group - 02 user management
no_output_timeout: 30m
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase
../../../../bin/behat tests/features/varbase/02-user-management/
varbase-testing-03-admin-management:
<<: *defaults
steps:
- varbase-build
- run:
name: Automated Functional Acceptance Testing group - 03 admin management
no_output_timeout: 30m
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase
../../../../bin/behat tests/features/varbase/03-admin-management/
varbase-testing-04-content-structure:
<<: *defaults
steps:
- varbase-build
- run:
name: Automated Functional Acceptance Testing group - 04 content structure
no_output_timeout: 30m
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase
../../../../bin/behat tests/features/varbase/04-content-structure/
varbase-testing-05-content-management:
<<: *defaults
steps:
- varbase-build
- run:
name: Automated Functional Acceptance Testing group - 05 content-management
no_output_timeout: 30m
command: |
cd /var/www/html/test/varbase/docroot/profiles/contrib/varbase
../../../../bin/behat tests/features/varbase/05-content-management/
workflows:
version: 2
varbase-workflow:
jobs:
- varbase-testing-01-website-base-requirements:
filters:
tags:
only: /^10.0.*/
branches:
only: /^10.0.x/
- varbase-testing-02-user-management:
filters:
tags:
only: /^10.0.*/
branches:
only: /^10.0.x/
- varbase-testing-03-admin-management:
filters:
tags:
only: /^10.0.*/
branches:
only: /^10.0.x/
- varbase-testing-04-content-structure:
filters:
tags:
only: /^10.0.*/
branches:
only: /^10.0.x/
- varbase-testing-05-content-management:
filters:
tags:
only: /^10.0.*/
branches:
only: /^10.0.x/
<VirtualHost *:80>
DocumentRoot /var/www/html/test/varbase/docroot
ServerName varbase.test
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/test/varbase/docroot >
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
\ No newline at end of file
node_modules/**/*
# Ignore deliberately malformed YAML files.
drupalci.yml
{
"extends": [
"airbnb-base",
"plugin:prettier/recommended",
"plugin:yml/recommended"
],
"root": true,
"env": {
"browser": true,
"es6": true,
"node": true
},
"globals": {
"Drupal": true,
"drupalSettings": true,
"drupalTranslations": true,
"jQuery": true,
"_": true,
"Cookies": true,
"Backbone": true,
"Modernizr": true,
"loadjs": true,
"Shepherd": true,
"Sortable": true,
"once": true,
"CKEditor5": true,
"tabbable": true
},
"rules": {
"prettier/prettier": "error",
"consistent-return": ["off"],
"no-underscore-dangle": ["off"],
"max-nested-callbacks": ["warn", 3],
"import/no-mutable-exports": ["warn"],
"no-plusplus": ["warn", {
"allowForLoopAfterthoughts": true
}],
"no-param-reassign": ["off"],
"no-prototype-builtins": ["off"],
"valid-jsdoc": ["warn", {
"prefer": {
"returns": "return",
"property": "prop"
},
"requireReturn": false
}],
"no-unused-vars": ["warn"],
"operator-linebreak": ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }],
"yml/indent": ["error", 2]
}
}
# These are supported funding model platforms
github: # Vardot
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: https://www.vardot.com
.DS_Store
bin/
docroot/
vendor/
node_modules/
bower_components/
.sass-cache/
.idea/
\ No newline at end of file
.idea/
# Ignore node modules
node_modules
/*/node_modules
bower_components/
# Ignore Variables
/css/variables.css
/css/variables.css.map
/css/mixins/
# Ignore vim swp files and gedit temp files
*.swp
*.*~
.vim
# Eclipse settings files.
.project
.pydevproject
.settings
.buildpath
# netbeans settings files.
nbproject
/nbproject
/nbproject/
/nbproject/private/
# Ignore OS settings files.
.DS_Store*
Thumbs.db
ehthumbs.db
# Ignore files generated by PhpStorm.
.idea
# Ignore server stuff.
.bash_history
.bashrc
errors.log
### Problem/Motivation
#### Steps to reproduce
```
Given
When
Then
```
### Proposed resolution
### Remaining tasks
- [x] File an issue about this project
- [ ] Addition/Change/Update/Fix to this project
- [ ] Testing to ensure no regression
- [ ] Automated unit/functional testing coverage
- [ ] Developer Documentation support on feature change/addition
- [ ] User Guide Documentation support on feature change/addition
- [ ] Accessibility and Readability
- [ ] Code review from 1 Varbase core team member
- [ ] Full testing and approval
- [ ] Credit contributors
- [ ] Review with the product owner
- [ ] Update Release Notes and Update Helper on new feature change/addition
- [ ] Release
### [Varbase update type](https://docs.varbase.vardot.com/developers/updating-varbase/handling-configuration-updates#change-or-update-types)
- [x] No Update
- [ ] Optional Update
- [ ] Forced Update
- [ ] Forced Update if Unchanged
### API changes
* N/A
### Data model changes
* N/A
### Release notes snippet
* N/A
### Remaining tasks
- [x] File an issue about this project
- [x] Addition/Change/Update/Fix to this project
- [ ] Testing to ensure no regression
- [ ] Automated unit/functional testing coverage
- [ ] Developer Documentation support on feature change/addition
- [ ] User Guide Documentation support on feature change/addition
- [ ] Accessibility and Readability
- [ ] Code review from 1 Varbase core team member
- [ ] Full testing and approval
- [ ] Credit contributors
- [ ] Review with the product owner
- [ ] Update Release Notes and Update Helper on new feature change/addition
- [ ] Release
<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="custom_code">
<arg name="extensions" value="inc,install,module,php,profile,test,theme,yml"/>
<description>Default PHP CodeSniffer configuration for Drupal core.</description>
<!--Exclude folders used by common frontend tools. These folders match the file_scan_ignore_directories setting in default.settings.php-->
<exclude-pattern>varbase.info.yml</exclude-pattern>
<exclude-pattern>*/bower_components/*</exclude-pattern>
<exclude-pattern>*/node_modules/*</exclude-pattern>
<exclude-pattern>tests/features/bootstrap/*</exclude-pattern>
<file>.</file>
<!-- Only include specific sniffs that pass. This ensures that, if new sniffs are added, HEAD does not fail.-->
<!-- Drupal sniffs -->
<rule ref="Drupal.Arrays.Array">
<!-- Sniff for these errors: ArrayClosingIndentation, ArrayIndentation, CommaLastItem -->
<exclude name="Drupal.Arrays.Array.LongLineDeclaration"/>
</rule>
<rule ref="Drupal.CSS.ClassDefinitionNameSpacing"/>
<rule ref="Drupal.CSS.ColourDefinition"/>
<rule ref="Drupal.Classes.ClassCreateInstance"/>
<rule ref="Drupal.Classes.ClassDeclaration"/>
<rule ref="Drupal.Classes.ClassFileName"/>
<rule ref="Drupal.Classes.FullyQualifiedNamespace"/>
<rule ref="Drupal.Classes.InterfaceName"/>
<rule ref="Drupal.Classes.PropertyDeclaration"/>
<rule ref="Drupal.Classes.UnusedUseStatement"/>
<rule ref="Drupal.Classes.UseGlobalClass"/>
<rule ref="Drupal.Classes.UseLeadingBackslash"/>
<rule ref="Drupal.Commenting.ClassComment">
<exclude name="Drupal.Commenting.ClassComment.Missing"/>
</rule>
<rule ref="Drupal.Commenting.DataTypeNamespace"/>
<rule ref="Drupal.Commenting.Deprecated"/>
<rule ref="Drupal.Commenting.DocComment">
<!-- Sniff for these errors: SpacingAfterTagGroup, WrongEnd, SpacingBetween,
ContentAfterOpen, SpacingBeforeShort, TagValueIndent, ShortStartSpace,
SpacingAfter, LongNotCapital, ShortFullStop, TagGroupSpacing, Empty,
TagsNotGrouped, ParamGroup -->
<!-- ParamNotFirst still not decided for PHPUnit-based tests.
@see https://www.drupal.org/node/2253915 -->
<exclude name="Drupal.Commenting.DocComment.LongFullStop"/>
<exclude name="Drupal.Commenting.DocComment.MissingShort"/>
<exclude name="Drupal.Commenting.DocComment.ParamNotFirst"/>
<exclude name="Drupal.Commenting.DocComment.ShortNotCapital"/>
<exclude name="Drupal.Commenting.DocComment.SpacingBeforeTags"/>
</rule>
<rule ref="Drupal.Commenting.DocCommentAlignment"/>
<rule ref="Drupal.Commenting.DocCommentStar"/>
<rule ref="Drupal.Commenting.FileComment"/>
<rule ref="Drupal.Commenting.FunctionComment">
<exclude name="Drupal.Commenting.FunctionComment.InvalidNoReturn"/>
<exclude name="Drupal.Commenting.FunctionComment.Missing"/>
<exclude name="Drupal.Commenting.FunctionComment.MissingParamType"/>
<exclude name="Drupal.Commenting.FunctionComment.MissingReturnComment"/>
<exclude name="Drupal.Commenting.FunctionComment.ParamCommentFullStop"/>
<exclude name="Drupal.Commenting.FunctionComment.TypeHintMissing"/>
</rule>
<rule ref="Drupal.Commenting.GenderNeutralComment"/>
<rule ref="Drupal.Commenting.HookComment"/>
<rule ref="Drupal.Commenting.InlineComment">
<!-- Sniff for: NoSpaceBefore, SpacingBefore, WrongStyle -->
<exclude name="Drupal.Commenting.InlineComment.DocBlock"/>
<exclude name="Drupal.Commenting.InlineComment.InvalidEndChar"/>
<exclude name="Drupal.Commenting.InlineComment.NotCapital"/>
<exclude name="Drupal.Commenting.InlineComment.SpacingAfter"/>
</rule>
<rule ref="Drupal.Commenting.InlineVariableComment"/>
<rule ref="Drupal.Commenting.PostStatementComment"/>
<rule ref="Drupal.Commenting.VariableComment">
<!-- Sniff for: DuplicateVar, EmptyVar, InlineVariableName, WrongStyle -->
<exclude name="Drupal.Commenting.VariableComment.IncorrectVarType"/>
<exclude name="Drupal.Commenting.VariableComment.Missing"/>
<exclude name="Drupal.Commenting.VariableComment.MissingVar"/>
<exclude name="Drupal.Commenting.VariableComment.VarOrder"/>
</rule>
<rule ref="Drupal.ControlStructures.ControlSignature"/>
<rule ref="Drupal.ControlStructures.ElseIf"/>
<rule ref="Drupal.ControlStructures.InlineControlStructure"/>
<rule ref="Drupal.Files.EndFileNewline"/>
<rule ref="Drupal.Files.FileEncoding"/>
<rule ref="Drupal.Files.TxtFileLineLength"/>
<rule ref="Drupal.Formatting.MultiLineAssignment"/>
<rule ref="Drupal.Formatting.MultipleStatementAlignment"/>
<rule ref="Drupal.Formatting.SpaceInlineIf"/>
<rule ref="Drupal.Formatting.SpaceUnaryOperator"/>
<rule ref="Drupal.Functions.DiscouragedFunctions"/>
<rule ref="Drupal.Functions.FunctionDeclaration"/>
<rule ref="Drupal.InfoFiles.AutoAddedKeys"/>
<rule ref="Drupal.InfoFiles.ClassFiles"/>
<rule ref="Drupal.InfoFiles.DuplicateEntry"/>
<rule ref="Drupal.InfoFiles.Required"/>
<rule ref="Drupal.Methods.MethodDeclaration">
<!-- Silence method name underscore warning which is covered already in
Drupal.NamingConventions.ValidFunctionName.ScopeNotCamelCaps. -->
<exclude name="Drupal.Methods.MethodDeclaration.Underscore"/>
</rule>
<rule ref="Drupal.NamingConventions.ValidClassName"/>
<rule ref="Drupal.NamingConventions.ValidGlobal"/>
<rule ref="Drupal.NamingConventions.ValidVariableName"/>
<rule ref="Drupal.NamingConventions.ValidVariableName.LowerCamelName">
<!-- Views plugins do not conform to this sniff. -->
<include-pattern>**/tests/*</include-pattern>
</rule>
<rule ref="Drupal.Scope.MethodScope"/>
<rule ref="Drupal.Semantics.EmptyInstall"/>
<rule ref="Drupal.Semantics.FunctionAlias"/>
<rule ref="Drupal.Semantics.FunctionT">
<exclude name="Drupal.Semantics.FunctionT.NotLiteralString"/>
</rule>
<rule ref="Drupal.Semantics.FunctionWatchdog"/>
<rule ref="Drupal.Semantics.InstallHooks"/>
<rule ref="Drupal.Semantics.LStringTranslatable"/>
<rule ref="Drupal.Semantics.PregSecurity"/>
<rule ref="Drupal.Semantics.RemoteAddress"/>
<rule ref="Drupal.Semantics.TInHookMenu"/>
<rule ref="Drupal.Semantics.TInHookSchema"/>
<rule ref="Drupal.Strings.UnnecessaryStringConcat"/>
<rule ref="Drupal.WhiteSpace.CloseBracketSpacing"/>
<rule ref="Drupal.WhiteSpace.Comma"/>
<rule ref="Drupal.WhiteSpace.EmptyLines"/>
<rule ref="Drupal.WhiteSpace.Namespace"/>
<rule ref="Drupal.WhiteSpace.ObjectOperatorIndent"/>
<rule ref="Drupal.WhiteSpace.ObjectOperatorSpacing"/>
<rule ref="Drupal.WhiteSpace.OpenBracketSpacing"/>
<rule ref="Drupal.WhiteSpace.OpenTagNewline"/>
<rule ref="Drupal.WhiteSpace.ScopeClosingBrace"/>
<rule ref="Drupal.WhiteSpace.ScopeIndent"/>
<!-- Drupal Practice sniffs -->
<rule ref="DrupalPractice.CodeAnalysis.VariableAnalysis">
<!-- @todo exclude tests -->
<exclude-pattern>*/tests/*</exclude-pattern>
<properties>
<property name="allowUnusedFunctionParameters" value="true"/>
</properties>
</rule>
<rule ref="DrupalPractice.CodeAnalysis.VariableAnalysis.UndefinedUnsetVariable">
<severity>0</severity>
</rule>
<rule ref="DrupalPractice.CodeAnalysis.VariableAnalysis.UndefinedVariable">
<!-- Setting severity to 0 to completely disable an error message in this sniff, without excluding the whole sniff -->
<!-- See https://github.com/squizlabs/PHP_CodeSniffer/wiki/Configuration-Options#changing-the-default-severity-levels -->
<severity>0</severity>
</rule>
<rule ref="DrupalPractice.Commenting.ExpectedException"/>
<rule ref="DrupalPractice.General.ExceptionT"/>
<rule ref="DrupalPractice.InfoFiles.NamespacedDependency"/>
<rule ref="DrupalPractice.Objects.GlobalFunction">
<include-pattern>*/Plugin/*</include-pattern>
</rule>
<!-- Generic sniffs -->
<rule ref="Generic.Arrays.DisallowLongArraySyntax"/>
<rule ref="Generic.CodeAnalysis.EmptyPHPStatement"/>
<rule ref="Generic.Files.ByteOrderMark"/>
<rule ref="Generic.Files.LineEndings"/>
<rule ref="Generic.Formatting.DisallowMultipleStatements"/>
<rule ref="Generic.Formatting.SpaceAfterCast"/>
<rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
<rule ref="Generic.Functions.OpeningFunctionBraceKernighanRitchie">
<properties>
<property name="checkClosures" value="true"/>
</properties>
</rule>
<rule ref="Generic.NamingConventions.ConstructorName"/>
<rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
<rule ref="Generic.PHP.DeprecatedFunctions"/>
<rule ref="Generic.PHP.DisallowShortOpenTag"/>
<rule ref="Generic.PHP.LowerCaseKeyword"/>
<rule ref="Generic.PHP.UpperCaseConstant"/>
<rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
<!-- Internal sniffs -->
<rule ref="Internal.NoCodeFound">
<!-- No PHP code in *.yml -->
<exclude-pattern>*.yml</exclude-pattern>
</rule>
<!-- MySource sniffs -->
<rule ref="MySource.Debug.DebugCode"/>
<!-- PEAR sniffs -->
<rule ref="PEAR.Files.IncludingFile"/>
<!-- Disable some error messages that we do not want. -->
<rule ref="PEAR.Files.IncludingFile.UseInclude">
<severity>0</severity>
</rule>
<rule ref="PEAR.Files.IncludingFile.UseIncludeOnce">
<severity>0</severity>
</rule>
<rule ref="PEAR.Files.IncludingFile.UseRequire">
<severity>0</severity>
</rule>
<rule ref="PEAR.Files.IncludingFile.UseRequireOnce">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature"/>
<!-- The sniffs inside PEAR.Functions.FunctionCallSignature silenced below are
also silenced in Drupal CS' ruleset.xml. The code below is a 1-on-1 copy
from that file. -->
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.EmptyLine">
<severity>0</severity>
</rule>
<!-- Disable some error messages that we do not want. -->
<rule ref="PEAR.Functions.FunctionCallSignature.Indent">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.OpeningIndent">
<severity>0</severity>
</rule>
<!-- Disable some error messages that we already cover. -->
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceBeforeCloseBracket">
<severity>0</severity>
</rule>
<rule ref="PEAR.Functions.ValidDefaultValue"/>
<!-- PSR-2 sniffs -->
<rule ref="PSR2.Classes.PropertyDeclaration">
<!-- Silence method name underscore warning which is covered already in
Drupal.Classes.PropertyDeclaration. -->
<exclude name="PSR2.Classes.PropertyDeclaration.Underscore"/>
</rule>
<rule ref="PSR2.Namespaces.NamespaceDeclaration"/>
<rule ref="PSR2.Namespaces.UseDeclaration"/>
<!-- SlevomatCodingStandard sniffs -->
<rule ref="SlevomatCodingStandard.Commenting.ForbiddenAnnotations">
<properties>
<property name="forbiddenAnnotations" type="array">
<element value="@inheritDoc"/>
<element value="@inheritdoc"/>
</property>
</properties>
</rule>
<rule ref="SlevomatCodingStandard.Commenting.ForbiddenComments">
<properties>
<property name="forbiddenCommentPatterns" type="array">
<element value="/@inheritDoc/"/>
</property>
</properties>
</rule>
<!-- Squiz sniffs -->
<rule ref="Squiz.Arrays.ArrayBracketSpacing"/>
<rule ref="Squiz.Arrays.ArrayDeclaration">
<exclude name="Squiz.Arrays.ArrayDeclaration.KeySpecified"/>
<exclude name="Squiz.Arrays.ArrayDeclaration.NoKeySpecified"/>
</rule>
<!-- Disable some error messages that we do not want. -->
<rule ref="Squiz.Arrays.ArrayDeclaration.CloseBraceNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.DoubleArrowNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.FirstValueNoNewline">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.KeyNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.MultiLineNotAllowed">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.NoComma">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.NoCommaAfterLast">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.NotLowerCase">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.ValueNoNewline">
<severity>0</severity>
</rule>
<rule ref="Squiz.Arrays.ArrayDeclaration.ValueNotAligned">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration"/>
<!-- Disable some error messages that we already cover. -->
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.AsNotLower">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.SpaceAfterOpen">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.ForEachLoopDeclaration.SpaceBeforeClose">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.ForLoopDeclaration"/>
<!-- Disable some error messages that we already cover. -->
<rule ref="Squiz.ControlStructures.ForLoopDeclaration.SpacingAfterOpen">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.ForLoopDeclaration.SpacingBeforeClose">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration"/>
<!-- Disable some error messages that we do not want. -->
<rule ref="Squiz.ControlStructures.SwitchDeclaration.BreakIndent">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.CaseIndent">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.CloseBraceAlign">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.DefaultIndent">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.DefaultNoBreak">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.EmptyCase">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.EmptyDefault">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.MissingDefault">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.SpacingAfterCase">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.SpacingAfterDefaultBreak">
<severity>0</severity>
</rule>
<rule ref="Squiz.ControlStructures.SwitchDeclaration.SpacingBeforeBreak">
<severity>0</severity>
</rule>
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
<properties>
<property name="equalsSpacing" value="1"/>
</properties>
</rule>
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.NoSpaceBeforeArg">
<severity>0</severity>
</rule>
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration"/>
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.BraceOnSameLine">
<severity>0</severity>
</rule>
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.CloseBracketLine">
<severity>0</severity>
</rule>
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.ContentAfterBrace">
<severity>0</severity>
</rule>
<!-- Standard yet to be finalized on this (https://www.drupal.org/node/1539712). -->
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.FirstParamSpacing">
<severity>0</severity>
</rule>
<rule ref="Squiz.Functions.MultiLineFunctionDeclaration.Indent">
<severity>0</severity>
</rule>
<rule ref="Squiz.PHP.LowercasePHPFunctions"/>
<rule ref="Squiz.PHP.NonExecutableCode"/>
<rule ref="Squiz.Strings.ConcatenationSpacing">
<properties>
<property name="spacing" value="1"/>
<property name="ignoreNewlines" value="true"/>
</properties>
</rule>
<rule ref="Squiz.WhiteSpace.FunctionSpacing">
<properties>
<property name="spacing" value="1"/>
</properties>
</rule>
<rule ref="Squiz.WhiteSpace.LanguageConstructSpacing"/>
<rule ref="Squiz.WhiteSpace.OperatorSpacing">
<properties>
<property name="ignoreNewlines" value="true"/>
</properties>
</rule>
<rule ref="Squiz.WhiteSpace.ScopeKeywordSpacing"/>
<rule ref="Squiz.WhiteSpace.SemicolonSpacing"/>
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace"/>
<!-- Zend sniffs -->
<rule ref="Zend.Files.ClosingTag"/>
</ruleset>
node_modules
*.yml
{
"printWidth": 80,
"semi": true,
"singleQuote": true,
"trailingComma": "all"
}
{
"extends": "stylelint-config-standard",
"plugins": [
"stylelint-order"
],
"rules": {
"alpha-value-notation": "number",
"at-rule-empty-line-before": null,
"color-function-notation": "legacy",
"comment-empty-line-before": null,
"custom-property-pattern": "^[a-z][-_a-z0-9IE]*$",
"declaration-block-no-redundant-longhand-properties": null,
"function-url-quotes": null,
"function-whitespace-after": null,
"hue-degree-notation": "number",
"import-notation": "string",
"no-descending-specificity": null,
"no-duplicate-selectors": null,
"no-unknown-animations": true,
"max-line-length": null,
"media-feature-name-no-unknown": [true, {
"ignoreMediaFeatureNames": [
"prefers-reduced-motion"
]
}],
"media-feature-name-no-vendor-prefix": null,
"media-feature-range-notation": "prefix",
"number-max-precision": 5,
"order/order": [
"custom-properties",
"dollar-variables",
{
"type": "at-rule",
"hasBlock": false
},
"declarations",
"rules",
{
"type": "at-rule",
"hasBlock": true
}
],
"order/properties-order": [
"position",
"z-index",
"top",
"right",
"bottom",
"left",
"display",
"visibility",
"float",
"clear",
"overflow",
"overflow-x",
"overflow-y",
"-webkit-overflow-scrolling",
"clip",
"zoom",
"flex",
"flex-flow",
"flex-direction",
"flex-wrap",
"flex-basis",
"flex-grow",
"flex-shrink",
"flex-order",
"flex-pack",
"grid",
"grid-area",
"grid-template",
"grid-template-areas",
"grid-template-rows",
"grid-template-columns",
"grid-row",
"grid-row-start",
"grid-row-end",
"grid-column",
"grid-column-start",
"grid-column-end",
"grid-auto-rows",
"grid-auto-columns",
"grid-auto-flow",
"grid-gap",
"grid-row-gap",
"grid-column-gap",
"place-content",
"place-items",
"align-content",
"align-items",
"align-self",
"justify-content",
"justify-items",
"justify-self",
"order",
"-webkit-box-sizing",
"-moz-box-sizing",
"box-sizing",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"margin-block-start",
"margin-block-end",
"margin-inline-start",
"margin-inline-end",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"padding-block-start",
"padding-block-end",
"padding-inline-start",
"padding-inline-end",
"table-layout",
"-webkit-columns",
"columns",
"-webkit-column-span",
"column-span",
"-webkit-column-width",
"column-width",
"-webkit-column-count",
"column-count",
"-webkit-column-fill",
"column-fill",
"-webkit-column-gap",
"column-gap",
"-webkit-column-rule",
"column-rule",
"-webkit-column-rule-width",
"column-rule-width",
"-webkit-column-rule-style",
"column-rule-style",
"-webkit-column-rule-color",
"column-rule-color",
"empty-cells",
"caption-side",
"border-spacing",
"border-collapse",
"$counter-style",
"list-style",
"list-style-position",
"list-style-type",
"list-style-image",
"content",
"quotes",
"counter-reset",
"counter-increment",
"resize",
"cursor",
"-webkit-user-select",
"user-select",
"nav-index",
"nav-up",
"nav-right",
"nav-down",
"nav-left",
"-webkit-transition",
"-o-transition",
"transition",
"-webkit-transition-delay",
"-o-transition-delay",
"transition-delay",
"-webkit-transition-timing-function",
"-o-transition-timing-function",
"transition-timing-function",
"-webkit-transition-duration",
"-o-transition-duration",
"transition-duration",
"-webkit-transition-property",
"-o-transition-property",
"transition-property",
"-webkit-transform",
"-o-transform",
"transform",
"-webkit-transform-origin",
"-o-transform-origin",
"transform-origin",
"$keyframes",
"-webkit-animation",
"-o-animation",
"animation",
"-webkit-animation-name",
"-o-animation-name",
"animation-name",
"-webkit-animation-duration",
"-o-animation-duration",
"animation-duration",
"-webkit-animation-play-state",
"-o-animation-play-state",
"animation-play-state",
"-webkit-animation-timing-function",
"-o-animation-timing-function",
"animation-timing-function",
"-webkit-animation-delay",
"-o-animation-delay",
"animation-delay",
"-webkit-animation-iteration-count",
"-o-animation-iteration-count",
"animation-iteration-count",
"-webkit-animation-direction",
"-o-animation-direction",
"animation-direction",
"text-align",
"-webkit-text-align-last",
"text-align-last",
"vertical-align",
"white-space",
"text-decoration",
"text-emphasis",
"text-emphasis-color",
"text-emphasis-style",
"text-emphasis-position",
"text-indent",
"text-justify",
"text-transform",
"letter-spacing",
"word-spacing",
"text-outline",
"text-transform",
"text-wrap",
"text-overflow",
"text-overflow-ellipsis",
"text-overflow-mode",
"word-wrap",
"word-break",
"-o-tab-size",
"tab-size",
"-webkit-hyphens",
"hyphens",
"pointer-events",
"direction",
"unicode-bidi",
"orphans",
"widows",
"object-fit",
"object-position",
"opacity",
"-webkit-filter",
"filter",
"color",
"border",
"border-collapse",
"border-width",
"border-style",
"border-color",
"border-top",
"border-top-width",
"border-top-style",
"border-top-color",
"border-right",
"border-right-width",
"border-right-style",
"border-right-color",
"border-bottom",
"border-bottom-width",
"border-bottom-style",
"border-bottom-color",
"border-left",
"border-left-width",
"border-left-style",
"border-left-color",
"border-block-start",
"border-block-start-width",
"border-block-start-style",
"border-block-start-color",
"border-inline-end",
"border-inline-end-width",
"border-inline-end-style",
"border-inline-end-color",
"border-block-end",
"border-block-end-width",
"border-block-end-style",
"border-block-end-color",
"border-inline-start",
"border-inline-start-width",
"border-inline-start-style",
"border-inline-start-color",
"-webkit-border-radius",
"border-radius",
"-webkit-border-top-left-radius",
"border-top-left-radius",
"-webkit-border-top-right-radius",
"border-top-right-radius",
"-webkit-border-bottom-right-radius",
"border-bottom-right-radius",
"-webkit-border-bottom-left-radius",
"border-bottom-left-radius",
"-webkit-border-image",
"-o-border-image",
"border-image",
"-webkit-border-image-source",
"-o-border-image-source",
"border-image-source",
"-webkit-border-image-slice",
"-o-border-image-slice",
"border-image-slice",
"-webkit-border-image-width",
"-o-border-image-width",
"border-image-width",
"-webkit-border-image-outset",
"-o-border-image-outset",
"border-image-outset",
"-webkit-border-image-repeat",
"-o-border-image-repeat",
"border-image-repeat",
"outline",
"outline-width",
"outline-style",
"outline-color",
"outline-offset",
"background",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background-color",
"background-image",
"background-repeat",
"background-attachment",
"background-position",
"background-position-x",
"background-position-y",
"-webkit-background-clip",
"background-clip",
"background-origin",
"-webkit-background-size",
"-o-background-size",
"background-size",
"box-decoration-break",
"-webkit-box-shadow",
"box-shadow",
"text-shadow",
"$font-face",
"font",
"font-family",
"src",
"$font-feature-values",
"$swash",
"$annotation",
"$ornaments",
"$stylistic",
"$styleset",
"$character-variant",
"font-variant-alternates",
"font-size",
"font-weight",
"font-style",
"font-variant",
"font-size-adjust",
"font-stretch",
"font-effect",
"font-emphasize",
"font-emphasize-position",
"font-emphasize-style",
"font-smooth",
"line-height"
],
"property-no-unknown": null,
"property-no-vendor-prefix": null,
"rule-empty-line-before": null,
"selector-attribute-quotes": null,
"selector-class-pattern": null,
"selector-id-pattern": "^[a-z][-_a-z0-9]*$",
"selector-no-vendor-prefix": null,
"shorthand-property-no-redundant-values": null,
"unit-allowed-list": ["ch", "deg", "dpcm", "em", "ex", "fr", "ms", "rem", "%", "s", "px", "vw", "vh"],
"value-keyword-case": ["lower", {
"camelCaseSvgKeywords": true,
"ignoreProperties": [
"--font-family",
"font-family"
]
}],
"value-no-vendor-prefix": null
}
}
dist: trusty
language: php
cache:
bundler: true
directories:
- "$HOME/.composer/cache"
- "$HOME/.drush/cache"
- "$HOME/.npm"
- "$HOME/.selenium/cache"
php:
- 7.2
env:
- AFATG=01-website-base-requirements
- AFATG=02-user-management
- AFATG=03-admin-management
- AFATG=04-content-structure
- AFATG=05-content-management
matrix:
exclude:
# Automated Functional Acceptance Testing group: 01 website base requirements
- php: 7.2
env: AFATG=01-website-base-requirements
# Automated Functional Acceptance Testing group: 02 user management
- php: 7.2
env: AFATG=02-user-management
# Automated Functional Acceptance Testing group: 03 admin management
- php: 7.2
env: AFATG=03-admin-management
# Automated Functional Acceptance Testing group: 04 content structure
- php: 7.2
env: AFATG=04-content-structure
# Automated Functional Acceptance Testing group: 05 content-management
- php: 7.2
env: AFATG=05-content-management
mysql:
database: test_varbase807xxc
username: root
encoding: utf8
before_install:
- phpenv config-rm xdebug.ini
- phpenv rehash
- composer self-update
- composer --version
# Composer Configurations.
- export PATH="$HOME/.composer/vendor/bin:$TRAVIS_BUILD_DIR/bin:$PATH"
- export COMPOSER_EXIT_ON_PATCH_FAILURE=1
# MySQL Configurations.
- mysql -e 'SET GLOBAL wait_timeout = 5400;'
- mysql -e "SHOW VARIABLES LIKE 'wait_timeout'"
# PHP Configurations.
- echo 'max_execution_time = 1200' >> varbase.php.ini;
- echo 'max_input_time = 180' >> varbase.php.ini;
- echo 'max_input_vars = 10000' >> varbase.php.ini;
- echo 'memory_limit = 3000M' >> varbase.php.ini;
- echo 'error_reporting = E_ALL' >> varbase.php.ini;
- echo 'post_max_size = 64M' >> varbase.php.ini;
- echo 'upload_max_filesize = 32M' >> varbase.php.ini;
- echo 'max_file_uploads = 40' >> varbase.php.ini;
- echo 'sendmail_path = /bin/true' >> varbase.php.ini;
- phpenv config-add varbase.php.ini
- phpenv rehash
# Configure and run the virtual display.
- export DISPLAY=:99
- sh -e /etc/init.d/xvfb start
- Xvfb :99 -ac -screen 0 1366x768x24 &>/dev/null &
- sleep 3
# Download Chrome Driver.
- LATEST_CHROMEDRIVER=$(wget -q -O - http://chromedriver.storage.googleapis.com/LATEST_RELEASE)
- wget http://chromedriver.storage.googleapis.com/$LATEST_CHROMEDRIVER/chromedriver_linux64.zip
- unzip chromedriver_linux64.zip
- chmod +x chromedriver
- mkdir -p $HOME/.composer/vendor/bin
- mv -f chromedriver $HOME/.composer/vendor/bin/
- rm chromedriver_linux64.zip
# Update Chrome.
- export CHROME_BIN=/usr/bin/google-chrome
- wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- sudo dpkg -i google-chrome-stable_current_amd64.deb
- rm google-chrome-stable_current_amd64.deb
- google-chrome --version
# Run selenium standalone server.
- SELENIUM="$HOME/.selenium/cache/selenium-server-standalone-2.53.1.jar";
- if [[ ! -f $SELENIUM ]]; then wget -O $SELENIUM http://selenium-release.storage.googleapis.com/2.53/selenium-server-standalone-2.53.1.jar; fi
- java -jar $SELENIUM -port 4445 > /dev/null 2>&1 &
- echo "[ OK ] Starting Selenium on the 4445 port ..."
install:
- git checkout $TRAVIS_COMMIT
## Build with the composer.
- composer install --no-interaction
## Install with drush.
- cd docroot
- drush site-install varbase --yes --site-name='Test Varbase807xxc' --account-name=webmaster --account-pass=dD.123123ddd --account-mail=webmaster@vardot.com --db-url="mysql://root:@localhost/test_varbase807xxc" varbase_multilingual_configuration.enable_multilingual=true varbase_extra_components.vmi=true varbase_extra_components.varbase_heroslider_media=true varbase_extra_components.varbase_carousels=true varbase_extra_components.varbase_search=true varbase_extra_components.varbase_blog=true varbase_extra_components.varbase_auth=true
- drush pm-enable varbase_development --yes
- drush pm-enable varbase_styleguide --yes
- drush pm-enable varbase_media_instagram --yes
- drush pm-enable varbase_media_twitter --yes
- drush pm-enable varbase_api --yes
- drush pm-enable social_auth_google --yes
- drush pm-enable social_auth_facebook --yes
- drush pm-enable social_auth_twitter --yes
- drush pm-enable social_auth_linkedin --yes
- drush config-set system.performance css.preprocess 0 --yes
- drush config-set system.performance js.preprocess 0 --yes
- drush config-set system.logging error_level all --yes
- drush cr
before_script:
- drush runserver --default-server=builtin 8080 &>/dev/null &
- sleep 5
script:
- cd ./profiles/varbase
- behat --strict tests/features/varbase/step1-init-tests/
- behat --strict tests/features/varbase/step2-apply-tests/$AFATG
# - behat --strict tests/features/varbase/step3-cleanup-tests/ # no need as we build every time.
matrix:
fast_finish: true
This diff is collapsed.
[![Build Status](https://travis-ci.org/Vardot/varbase.svg?branch=8.x-7.x)](https://travis-ci.org/Vardot/varbase) Varbase 8.7.x
[![Vardot](https://circleci.com/gh/Vardot/varbase/tree/10.0.x.svg?style=shield)](https://app.circleci.com/pipelines/github/Vardot/varbase/1036/workflows/b1a9527e-8ab6-4a7d-877b-ed940b80244b) [![Ceasefire Now](https://badge.techforpalestine.org/ceasefire-now)](https://techforpalestine.org/learn-more) Varbase 10.0.4
[![](https://www.drupal.org/files/styles/grid-3/public/project-images/Medium-Logo%20Color%20with%20padding.png)](https://www.drupal.org/project/varbase)
[![](https://www.drupal.org/files/project-images/varbase-medium-logo-color-with-padding.png)](https://www.drupal.org/project/varbase)
## Varbase: The Ultimate Drupal 8 CMS Starter Kit (Bootstrap Ready)
## Varbase: The Ultimate Drupal CMS Starter Kit (Bootstrap Ready)
The powerful Drupal distribution for faster development, with editor experience
in mind. Brought to you by [Vardot](https://www.vardot.com/).
......@@ -17,29 +17,61 @@ in every project.
* Speeds up development.
* Offers standardized configuration and best-practices.
* Comes with a lot of needed functionalities/modules for every-day Drupal site.
* [Tested, tested, and tested.](https://travis-ci.org/Vardot/varbase/builds)
* [Tested, tested, and tested.](https://app.circleci.com/pipelines/github/Vardot/varbase)
Starting a new project? Consider Varbase for Drupal 8.
Installing Varbase 8.x-7.x comes with several extra automated installation
steps, to take full advantage of Varbase, other than the Drupal 8 installation
Starting a new project? Consider **Varbase** for **Drupal 10**.
Installing **Varbase `10.0.x`** comes with several extra automated installation
steps, to take full advantage of Varbase, other than the **Drupal 10** installation
instructions.
# Install with Composer
To install the dev version of Varbase 8.7.x run this command:
To install the most recent stable release of **Varbase `10.0.x`** run this command:
```
composer create-project Vardot/varbase-project:~10 PROJECT_DIR_NAME --no-dev --no-interaction
```
To install the dev version of **Varbase `10.0.x`** run this command:
```
composer create-project vardot/varbase-project:8.7.x-dev PROJECT_DIR_NAME --stability dev --no-interaction
composer create-project vardot/varbase-project:10.0.x-dev PROJECT_DIR_NAME --stability dev --no-interaction
```
## [Create a new Vartheme sub theme for a project](https://github.com/Vardot/varbase/tree/8.x-7.x/scripts/README.md)
## [Create a new Vartheme sub theme for a project](https://github.com/Vardot/varbase/tree/10.0.x/scripts/README.md)
## [Automated Functional Testing](https://github.com/Vardot/varbase/blob/10.0.x/tests/README.md)
## [Varbase 10.0.x Developer Guide](https://docs.varbase.vardot.com/v/10.0.x)
## [CHANGELOG for Varbase](https://github.com/Vardot/varbase/blob/10.0.x/CHANGELOG.md)
## [Varbase Gherkin features](https://github.com/Vardot/varbase/blob/10.0.x/tests/features/varbase/README.md)
## [Varbase Developer Guide](https://docs.varbase.vardot.com/v/10.0.x/developers)
## [General instructions on how to update Varbase](https://github.com/Vardot/varbase/blob/10.0.x/UPDATE.md)
## [Local development with Lando](https://docs.varbase.vardot.com/v/10.0.x/developers/installing-varbase/installing-varbase-with-lando)
1. Install Lando locally, steps for installing can be found [here](https://docs.lando.dev/basics/installation.html).
2. Run `lando start`.
## Debugging using Lando
- xDebug is enabled on Lando by default for PHP debugging.
- The debugger is set to listen for the port 9003 but can be changed in `.lando/.php.ini`
## [Automated Functional Testing](https://github.com/Vardot/varbase/blob/8.x-7.x/tests/README.md)
## [Local development with DDEV](https://docs.varbase.vardot.com/v/10.0.x/developers/installing-varbase/installing-varbase-with-ddev)
## [Varbase Gherkin features](https://github.com/Vardot/varbase/blob/8.x-7.x/tests/features/varbase/README.md)
1. Install DDEV locally, steps for installing can be found [here](https://ddev.readthedocs.io/en/stable/).
2. Run `ddev start`.
## [Varbase 8.7.x Developer Guide](https://docs.varbase.vardot.com)
## Remote Development Environment (IDE)
> - [Gitpod](https://gitpod.io/#https://github.com/vardot/varbase-project)
> - [Tugboat.qa](https://www.tugboatqa.com)
## [CHANGELOG for Varbase](https://github.com/Vardot/varbase/blob/8.x-7.x/CHANGELOG.md)
Join Our Slack Team for Feedback and Support
http://slack.varbase.vardot.com/
## [General instructions on how to update Varbase](https://github.com/Vardot/varbase/blob/8.x-7.x/UPDATE.md)
Sponsored and developed by [Vardot](https://www.drupal.org/vardot).
Visit https://docs.varbase.vardot.com/updating-varbase for an up-to-date and further detailed documentation process.
Visit https://docs.varbase.vardot.com/updating-varbase for an up-to-date and
further detailed documentation process.
# Updating a Varbase Site
## Before You Update
Updating Varbase is best done through Composer. We will assume that you have [installed Varbase the recommended way](../getting-started/installing-varbase.md) through the Composer-based project template [varbase-project](https://github.com/Vardot/varbase-project) by running the command: `composer create-project Vardot/varbase-project:^8.6 YOUR_PROJECT --no-dev --no-interaction`
Updating Varbase is best done through Composer. We will assume that you have
[installed Varbase the recommended way](../getting-started/installing-varbase.md) through the Composer-based project template [varbase-project](https://github.com/Vardot/varbase-project) by running the command: `composer create-project Vardot/varbase-project YOUR_PROJECT --no-dev --no-interaction`
This will create the Varbase project directory that will look like this: `/path/to/YOUR_PROJECT` with the Drupal 8 codebase installed via Varbase installation profile in `/path/to/YOUR_PROJECT/docroot`.
This will create the Varbase project directory that will look like this:
`/path/to/YOUR_PROJECT` with the Drupal 9 codebase installed via Varbase
installation profile in `/path/to/YOUR_PROJECT/docroot`.
## The Update Process
There are two main update processes we will cover. 1\) Automated process using a tool we've developed to ease the update process for Varbase called [varbase-updater](https://github.com/Vardot/varbase-updater). 2\) Manual process if you wish to take matters into your own hands.
There are two main update processes we will cover. 1\) Automated process
using a tool we've developed to ease the update process for Varbase called
[varbase-updater](https://github.com/Vardot/varbase-updater). 2\) Manual
process if you wish to take matters into your own hands.
### OPTION 1: Automated Process — Using Varbase Updater
If you previously used our Composer-based project template to install Varbase [varbase-project](https://github.com/Vardot/varbase-project), complete the following steps to update your codebase’s installed version of Varbase:
If you previously used our Composer-based project template to install
Varbase [varbase-project](https://github.com/Vardot/varbase-project),
complete the following steps to update your codebase’s installed version
of Varbase:
1. From a command prompt window, navigate to your project: `cd /path/to/YOUR_PROJECT`
2. If you're using Varbase 8.6.2 or older, install [varbase-updater](https://github.com/Vardot/varbase-updater) through Composer. `composer require vardot/varbase-updater` If you're using Varbase 8.6.3 or newer, skip this step; [varbase-updater](https://github.com/Vardot/varbase-updater) comes pre-installed with your Varbase project.
3. Run the Varbase update tool. `./bin/update-varbase.sh`
4. Follow the wizard.
1. From a command prompt window, navigate to your project:
`cd /path/to/YOUR_PROJECT`
2. Run the Varbase update tool. `./bin/update-varbase.sh`
3. Follow the wizard.
_Curious?_ [_Learn more_ ](understanding-varbase-updater-package.md)_about what's going on in the Varbase Updater wizard._
5. Buy yourself a drink! You're done.
6. After the update finishes and you get a success message, navigate to _http://my.varbase-site.local/admin/config/development/update-helper_ \(where my.varbase-site.local is the URL for your website\) to learn about the new changes and updates introduced in your Varbase site.
4. Buy yourself a drink! You're done.
5. After the update finishes and you get a success message, navigate to
_http://my.varbase-site.local/admin/config/development/update-helper_
\(where my.varbase-site.local is the URL for your website\) to learn about
the new changes and updates introduced in your Varbase site.
At the end of the update process, two log files are useful to troubleshoot your update:
At the end of the update process, two log files are useful to troubleshoot
your update:
* `varbase_update_error.log`: a log of all errors that occurred during the update process.
* `varbase_failed_patches.log`: a log of all patches that failed to apply during the update process.
* `varbase_update_error.log`: a log of all errors that occurred during the
update process.
* `varbase_failed_patches.log`: a log of all patches that failed to apply
during the update process.
### OPTION 2: Manual Process — Do it Yourself
1. From a command prompt window, navigate to your project: `cd /path/to/YOUR_PROJECT`
1. From a command prompt window, navigate to your project:
`cd /path/to/YOUR_PROJECT`
2. Edit your _composer.json_ file to be ready for updates. You have two choices.
1. **The hard way:** Edit your _composer.json_ to include all the new updates made in [varbase-project](https://github.com/Vardot/varbase-project/blob/8.7.x/composer.json). This includes the new components required and its versions _"require"_, _"repositories"_, _"extra"_, and any other important config. You can use a diff tool such as [Meld](http://meldmerge.org/) or [DiffMerge](https://sourcegear.com/diffmerge/) to help you diff between your old _composer.json_ and the new one from [varbase-project](https://github.com/Vardot/varbase-project/blob/8.7.x/composer.json).
2. **The easy way:**
1. If you're using Varbase 8.6.2 or older, install [varbase-updater](https://github.com/Vardot/varbase-updater) through Composer. `composer require vardot/varbase-updater` If you're using Varbase 8.6.3 or newer, skip this step; [varbase-updater](https://github.com/Vardot/varbase-updater) comes pre-installed with your Varbase project.
2. Then run: `composer varbase-refactor-composer composer.new.json docroot` where _docroot_ is your Drupal project codebase.
3. Move your new Composer file _composer.new.json_ in place of the old one. `mv composer.json composer.json.b; \ mv composer.new.json composer.json`
Edit your _composer.json_ to include
all the new updates made in
[varbase-project](https://github.com/Vardot/varbase-project/blob/10.0.x/composer.json).
This includes the new components required and its versions
_"require"_, _"repositories"_, _"extra"_, and any other important config.
You can use a diff tool such as [Meld](http://meldmerge.org/) or
[DiffMerge](https://sourcegear.com/diffmerge/) to help you diff between
your old _composer.json_ and the new one from
[varbase-project](https://github.com/Vardot/varbase-project/blob/10.0.x/composer.json).
3. Back up your code and database
4. Execute Composer update to download updates to modules and libraries. `composer update`
5. Run your database updates. `drush updatedb` or by navigating to _http://my.varbase-site.local/update.php_ \(where _my.varbase-site.local_ is the URL for your website\) and follow the on-screen instructions.
6. After the update finishes and you get a success message, navigate to _http://my.varbase-site.local/admin/config/development/update-helper_ \(where _my.varbase-site.local_ is the URL for your website\) to learn about the new changes and updates introduced in your Varbase site.
4. Execute Composer update to download updates to modules and libraries.
`composer update`
5. Run your database updates. `drush updatedb` or by navigating
to _http://my.varbase-site.local/update.php_
\(where _my.varbase-site.local_ is the URL for your website\) and
follow the on-screen instructions.
6. After the update finishes and you get a success message, navigate
to _http://my.varbase-site.local/admin/config/development/update-helper_
\(where _my.varbase-site.local_ is the URL for your website\) to learn
about the new changes and updates introduced in your Varbase site.
default:
suites:
default:
autoload:
'': %paths.base%/tests/features/bootstrap
contexts:
- VarbaseContext:
parameters:
varbase_users:
webmaster: { email: 'webmaster@vardot.com', password: 'dD.123123ddd' }
- SelectorsContext:
parameters:
files_path: "%paths.base%/selectors/"
files:
- "varbase/installation-selectors.yml"
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\DrushContext
- Drupal\DrupalExtension\Context\MessageContext
- Drupal\DrupalExtension\Context\MinkContext
- Drupal\DrupalExtension\Context\MarkupContext
- Drupal\DrupalExtension\Context\BatchContext
- behatch:browser:
timeout: 1
- behatch:debug:
screenshotDir: "%paths.base%/tests/screenshots/"
- behatch:json:
evaluationMode: javascript
- behatch:rest
- behatch:system:
root: "../../"
- behatch:table
- behatch:xml
filters:
tags: "@install"
paths:
features: %paths.base%/tests/tools
bootstrap: %paths.base%/tests/features/bootstrap
formatters:
pretty:
html:
output_path: "%paths.base%/tests/reports/"
extensions:
Behat\MinkExtension:
files_path: "%paths.base%/tests/assets/"
goutte: ~
zombie: ~
selenium2:
wd_host: 127.0.0.1:4445/wd/hub
capabilities:
browser: 'firefox'
# browser: 'chrome'
# browser: 'phantomjs'
nativeEvents: true
base_url: http://127.0.0.1:8080
browser_name: 'firefox'
# browser_name: 'chrome'
# browser_name: 'phantomjs'
javascript_session: selenium2
Drupal\DrupalExtension:
blackbox: ~
Sanpi\Behatch\Extension: ~
emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
name: html
renderer: Twig,Behat2
file_name: index
print_args: false
print_outp: false
loop_break: false
imports:
- behat.varbase.yml
default:
suites:
default:
paths:
features: %paths.base%/tests/tools
\ No newline at end of file
default:
autoload:
'': %paths.base%/tests/features/bootstrap
suites:
default:
paths:
- %paths.base%/tests/features
contexts:
- VarbaseContext:
parameters:
varbase_users:
webmaster: { email: 'webmaster@vardot.com', password: 'dD.123123ddd' }
test_authenticated: { email: 'authenticated.test@vardot.com', password: 'dD.123123ddd' }
test_editor: { email: 'editor.test@vardot.com', password: 'dD.123123ddd' }
test_content_admin: { email: 'content.admin.test@vardot.com', password: 'dD.123123ddd' }
test_seo_admin: { email: 'seo.admin.test@vardot.com', password: 'dD.123123ddd' }
test_site_admin: { email: 'site.admin.test@vardot.com', password: 'dD.123123ddd' }
test_super_admin: { email: 'super.admin.test@vardot.com', password: 'dD.123123ddd' }
- SelectorsContext:
parameters:
selectors:
## Add all css selectors which you will use in most features.
css:
breadcrumb: ".breadcrumb"
breadcrumb first link: ".breadcrumb li:nth-child(1) a"
image button in rich text editor body field: "#cke_edit-body-und-0-value .cke_button__image"
## Add all XPath selectors which you will use in most features.
xpath:
page title: '//h1[contains(@class, "page-header")'
textarea for body field: '//*[@id="edit-body-und-0-value"]'
rich text editor for body field: '//iframe[@title="Rich Text Editor, edit-body-und-0-value"]'
HTML editor for body field: '//*[@id="edit-body-und-0-value-aced"]'
## You can add list of selectorrs which you will use in most features.
# But by loading them from files.
files_path: "%paths.base%/tests/selectors/"
files:
- "varbase/front-end-selectors.yml"
- "varbase/back-end-selectors.yml"
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\DrushContext
- Drupal\DrupalExtension\Context\MessageContext
- Drupal\DrupalExtension\Context\MinkContext
- Drupal\DrupalExtension\Context\MarkupContext
- behatch:context:browser:
timeout: 4
- behatch:context:debug:
screenshotDir: "%paths.base%/tests/screenshots/"
- behatch:context:json:
evaluationMode: javascript
- behatch:context:system:
root: "../../"
- behatch:context:table
- behatch:context:xml
paths:
features: %paths.base%/tests/features
bootstrap: %paths.base%/tests/features/bootstrap
formatters:
pretty:
html:
output_path: "%paths.base%/tests/reports/"
extensions:
Behat\MinkExtension:
files_path: "%paths.base%/tests/assets/"
goutte: ~
zombie: ~
selenium2:
wd_host: 127.0.0.1:4445/wd/hub
capabilities:
# browser: 'firefox'
browser: 'chrome'
# browser: 'phantomjs'
nativeEvents: true
base_url: 'http://127.0.0.1:8080'
# browser_name: 'firefox'
browser_name: 'chrome'
# browser_name: 'phantomjs'
javascript_session: selenium2
Drupal\DrupalExtension:
blackbox: ~
api_driver: 'drupal'
region_map:
content: ".main-container"
footer: "#footer"
left header: "#header-left"
right header: "#header-right"
right sidebar: "#aside-region"
field body: "#edit-body-wrapper"
selectors:
message_selector: '.messages'
error_message_selector: '.messages.error'
success_message_selector: '.messages.status'
warning_message_selector: '.messages.warning'
Behatch\Extension: ~
emuse\BehatHTMLFormatter\BehatHTMLFormatterExtension:
name: html
renderer: Twig,Behat2
file_name: index
print_args: false
print_outp: false
loop_break: false
imports:
- behat.varbase.yml
default:
autoload:
'': "%paths.base%/tests/features/bootstrap"
suites:
default:
paths:
- "%paths.base%/tests/features"
contexts:
- VarbaseContext:
parameters:
varbase_users:
webmaster: { email: 'webmaster@vardot.com', password: 'dD.123123ddd' }
Normal user: { email: 'test.authenticated@vardot.com', password: 'dD.123123ddd' }
Editor: { email: 'test.editor@vardot.com', password: 'dD.123123ddd' }
Content admin: { email: 'test.content_admin@vardot.com', password: 'dD.123123ddd' }
SEO admin: { email: 'test.seo_admin@vardot.com', password: 'dD.123123ddd' }
Site admin: { email: 'test.site_admin@vardot.com', password: 'dD.123123ddd' }
Super admin: { email: 'test.super_admin@vardot.com', password: 'dD.123123ddd' }
- Drupal\DrupalExtension\Context\ConfigContext
- Drupal\DrupalExtension\Context\DrupalContext
- Drupal\DrupalExtension\Context\DrushContext
- Drupal\DrupalExtension\Context\MessageContext
- Drupal\DrupalExtension\Context\MinkContext
- Drupal\DrupalExtension\Context\MarkupContext
- Drupal\DrupalExtension\Context\RandomContext
formatters:
pretty:
verbose: true
paths: false
snippets: false
html:
verbose: true
paths: false
snippets: false
output_path: "%paths.base%/tests/reports/"
extensions:
Drupal\MinkExtension:
base_url: http://varbase.test
browser_name: chrome
default_session: selenium2
javascript_session: selenium2
ajax_timeout: 120
files_path: "%paths.base%/tests/assets/"
selenium2:
browser: chrome
wd_host: 'http://127.0.0.1:4445/wd/hub'
capabilities:
browser: chrome
browserName: chrome
extra_capabilities:
chromeOptions:
w3c: true
args:
- "--headless"
- "--start-maximized"
- "--disable-gpu"
- "--window-size=1600,1200"
- "--no-sandbox"
- "--disable-dev-shm-usage"
- "--disable-setuid-sandbox"
- "--disable-web-security"
- "--DNS-prefetch-disable"
- "--disable-translate"
- "--ignore-certificate-errors"
- "--test-type"
- "--disable-extensions"
- "--incognito"
- "--disable-infobars"
- "--remote-debugging-port=9222"
- "--allowed-ips=*"
- "--whitelisted-ips=*"
- "--allow-insecure-localhost"
Drupal\DrupalExtension:
blackbox: ~
api_driver: 'drupal'
drush:
alias: 'local'
drupal:
drupal_root: '/var/www/html/test/varbase/docroot'
region_map:
content: ".main-container"
footer: "#footer"
left header: "#header-left"
right header: "#header-right"
right sidebar: "#aside-region"
field body: "#edit-body-wrapper"
selectors:
message_selector: '.messages'
error_message_selector: '.messages.error'
success_message_selector: '.messages.status'
warning_message_selector: '.messages.warning'
webship\BehatHTMLFormatter\BehatHTMLFormatterExtension:
name: html
renderer: Twig,Behat2
file_name: index
print_args: false
print_outp: false
loop_break: false