travis setup

Co-authored-by: Yamuna Adhikari <adhikariamuna4444@gmail.com>
This commit is contained in:
SwikritiT 2020-10-06 13:08:47 +05:45
parent 1ef46d082c
commit f343fbb55e
4 changed files with 312 additions and 279 deletions

View File

@ -8,13 +8,36 @@ dist: xenial
#dist: bionic #dist: bionic
sudo: required sudo: required
language: php matrix:
include:
- language: php
php:
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- nightly
- language: node_js
node_js:
- '12.14.0'
before_install:
- docker run -d -p 4444:4444 -p 5900:5900 -v /dev/shm:/dev/shm --name selenium selenium/standalone-chrome-debug
install:
- npm install
script: yarn test:e2e test/acceptance/features
env:
global:
- LAUNCH_URL=http://127.0.0.1/$TRAVIS_BUILD_DIR/htdocs
# Start on every boot # Start on every boot
services: services:
- memcached - memcached
- mysql - mysql
- postgresql - postgresql
- docker
addons: addons:
# Force postgresql to 9.4 (the oldest availablable on xenial) # Force postgresql to 9.4 (the oldest availablable on xenial)
@ -32,14 +55,6 @@ addons:
# We need pgloader for import mysql database into pgsql # We need pgloader for import mysql database into pgsql
- pgloader - pgloader
php:
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- nightly
env: env:
global: global:
@ -92,14 +107,14 @@ notifications:
use_notice: true use_notice: true
before_install: before_install:
- | - |
echo "Disabling Xdebug for composer" echo "Disabling Xdebug for composer"
export PHP_VERSION_NAME=$(phpenv version-name) export PHP_VERSION_NAME=$(phpenv version-name)
cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/conf.d/xdebug.ini /tmp/xdebug.ini cp ~/.phpenv/versions/$PHP_VERSION_NAME/etc/conf.d/xdebug.ini /tmp/xdebug.ini
phpenv config-rm xdebug.ini phpenv config-rm xdebug.ini
echo echo
- | - |
if [ "$DB" = 'postgresql' ]; then if [ "$DB" = 'postgresql' ]; then
echo "Check pgloader version" echo "Check pgloader version"
pgloader --version pgloader --version
@ -107,7 +122,7 @@ before_install:
fi fi
install: install:
- | - |
echo "Updating Composer" echo "Updating Composer"
rm $TRAVIS_BUILD_DIR/composer.json rm $TRAVIS_BUILD_DIR/composer.json
rm $TRAVIS_BUILD_DIR/composer.lock rm $TRAVIS_BUILD_DIR/composer.lock
@ -118,7 +133,7 @@ install:
composer -n config vendor-dir htdocs/includes composer -n config vendor-dir htdocs/includes
echo echo
- | - |
echo "Installing Composer dependencies - PHP Unit, Parallel Lint, PHP CodeSniffer - for $TRAVIS_PHP_VERSION" echo "Installing Composer dependencies - PHP Unit, Parallel Lint, PHP CodeSniffer - for $TRAVIS_PHP_VERSION"
if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] \ if [ "$TRAVIS_PHP_VERSION" = '5.6' ] || [ "$TRAVIS_PHP_VERSION" = '7.0' ] || [ "$TRAVIS_PHP_VERSION" = '7.1' ] \
[ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = '7.4' ]; then [ "$TRAVIS_PHP_VERSION" = '7.2' ] || [ "$TRAVIS_PHP_VERSION" = '7.3' ] || [ "$TRAVIS_PHP_VERSION" = '7.4' ]; then
@ -135,7 +150,7 @@ install:
fi fi
echo echo
- | - |
echo "Adding path of binaries tools installed by composer to the PATH" echo "Adding path of binaries tools installed by composer to the PATH"
export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH" export PATH="$TRAVIS_BUILD_DIR/htdocs/includes/bin:$PATH"
echo echo
@ -261,7 +276,7 @@ before_script:
script: script:
- | - |
echo "Checking webserver availability by a wget -O - http://127.0.0.1" echo "Checking webserver availability by a wget -O - http://127.0.0.1"
# Ensure we stop on error with set -e # Ensure we stop on error with set -e
set +e set +e
@ -272,7 +287,7 @@ script:
set +e set +e
echo echo
- | - |
echo "Checking PHP syntax errors" echo "Checking PHP syntax errors"
# Ensure we catch errors # Ensure we catch errors
set -e set -e
@ -285,7 +300,7 @@ script:
set +e set +e
echo echo
- | - |
echo "Checking coding style (excluding Pull Requests builds)" echo "Checking coding style (excluding Pull Requests builds)"
# Ensure we catch errors # Ensure we catch errors
set -e set -e
@ -295,7 +310,7 @@ script:
set +e set +e
echo echo
- | - |
export INSTALL_FORCED_FILE=htdocs/install/install.forced.php export INSTALL_FORCED_FILE=htdocs/install/install.forced.php
echo "Setting up Dolibarr $INSTALL_FORCED_FILE to test installation" echo "Setting up Dolibarr $INSTALL_FORCED_FILE to test installation"
# Ensure we catch errors # Ensure we catch errors
@ -320,23 +335,23 @@ script:
echo '$'force_install_main_data_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $INSTALL_FORCED_FILE echo '$'force_install_main_data_root=\'$TRAVIS_BUILD_DIR/htdocs\'';' >> $INSTALL_FORCED_FILE
#cat $INSTALL_FORCED_FILE #cat $INSTALL_FORCED_FILE
#- | #- |
# echo "Installing Dolibarr" # echo "Installing Dolibarr"
# cd htdocs/install # cd htdocs/install
# php step1.php $TRAVIS_BUILD_DIR/htdocs > $TRAVIS_BUILD_DIR/install.log # php step1.php $TRAVIS_BUILD_DIR/htdocs > $TRAVIS_BUILD_DIR/install.log
# php step2.php set >> $TRAVIS_BUILD_DIR/install.log # php step2.php set >> $TRAVIS_BUILD_DIR/install.log
# if [ "$?" -ne "0" ]; then # if [ "$?" -ne "0" ]; then
# echo "SORRY, AN ERROR OCCURED DURING INSTALLATION PROCESS" # echo "SORRY, AN ERROR OCCURED DURING INSTALLATION PROCESS"
# cat $TRAVIS_BUILD_DIR/install.log # cat $TRAVIS_BUILD_DIR/install.log
# exit 1 # exit 1
# fi # fi
# cd ../.. # cd ../..
# rm $INSTALL_FORCED_FILE # rm $INSTALL_FORCED_FILE
# #cat $TRAVIS_BUILD_DIR/install.log # #cat $TRAVIS_BUILD_DIR/install.log
# set +e # set +e
# echo # echo
- | - |
echo "Setting up database to test migrations" echo "Setting up database to test migrations"
if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; then if [ "$DB" = 'mysql' ] || [ "$DB" = 'mariadb' ] || [ "$DB" = 'postgresql' ]; then
echo "MySQL" echo "MySQL"
@ -359,7 +374,7 @@ script:
fi fi
echo echo
- | - |
echo "Upgrading Dolibarr" echo "Upgrading Dolibarr"
# Ensure we catch errors. Set this to +e if you want to go to the end to see log files. # Ensure we catch errors. Set this to +e if you want to go to the end to see log files.
set +e set +e
@ -416,7 +431,7 @@ script:
#cat /tmp/dolibarr_install.log #cat /tmp/dolibarr_install.log
cat $TRAVIS_BUILD_DIR/enablemodule.log cat $TRAVIS_BUILD_DIR/enablemodule.log
- | - |
echo "Unit testing" echo "Unit testing"
# Ensure we catch errors. Set this to +e if you want to go to the end to see dolibarr.log file. # Ensure we catch errors. Set this to +e if you want to go to the end to see dolibarr.log file.
set -e set -e
@ -426,18 +441,18 @@ script:
set +e set +e
after_script: after_script:
- | - |
echo "After script - Output lines of dolibarr.log" echo "After script - Output lines of dolibarr.log"
ls $TRAVIS_BUILD_DIR/documents ls $TRAVIS_BUILD_DIR/documents
#cat $TRAVIS_BUILD_DIR/documents/dolibarr.log #cat $TRAVIS_BUILD_DIR/documents/dolibarr.log
sudo tail -n 50 $TRAVIS_BUILD_DIR/documents/dolibarr.log sudo tail -n 50 $TRAVIS_BUILD_DIR/documents/dolibarr.log
after_success: after_success:
- | - |
echo Success echo Success
after_failure: after_failure:
- | - |
echo Failure detected, so we show samples of log to help diagnose echo Failure detected, so we show samples of log to help diagnose
# This part of code is executed only if previous command that fails are enclosed with set +e # This part of code is executed only if previous command that fails are enclosed with set +e
# Upgrade log files # Upgrade log files

View File

@ -1,7 +1,6 @@
const admin_username = process.env.ADMIN_USERNAME || 'dolibarr'; const admin_username = process.env.ADMIN_USERNAME || 'dolibarr';
const admin_password = process.env.ADMIN_PASSWORD || 'password'; const admin_password = process.env.ADMIN_PASSWORD || 'password';
const launch_url = process.env.LAUNCH_URL || 'http://localhost/dolibarr/htdocs/'; const launch_url = process.env.LAUNCH_URL || 'http://localhost/dolibarr/htdocs/';
const dol_api_key = process.env.DOLAPIKEY || 'superadminuser';
module.exports = { module.exports = {
page_objects_path : './test/acceptance/pageObjects/', // jshint ignore:line page_objects_path : './test/acceptance/pageObjects/', // jshint ignore:line
src_folders : ['test'], src_folders : ['test'],
@ -13,8 +12,7 @@ module.exports = {
globals : { globals : {
backend_url : launch_url, backend_url : launch_url,
adminUsername : admin_username, adminUsername : admin_username,
adminPassword : admin_password, adminPassword : admin_password
dolApiKey : dol_api_key
}, },
desiredCapabilities : { desiredCapabilities : {
browserName : 'chrome', browserName : 'chrome',

View File

@ -5,9 +5,10 @@
"nightwatch-api": "^3.0.1" "nightwatch-api": "^3.0.1"
}, },
"scripts": { "scripts": {
"test:e2e": "node_modules/cucumber/bin/cucumber-js --require test/acceptance/index.js --require test/acceptance/stepDefinitions" "test:e2e": "node_modules/cucumber/bin/cucumber-js --require test/acceptance/index.js --require test/acceptance/stepDefinitions -f node_modules/cucumber-pretty"
}, },
"dependencies": { "dependencies": {
"cucumber-pretty": "^6.0.0",
"node-fetch": "^2.6.1" "node-fetch": "^2.6.1"
} }
} }

View File

@ -2,6 +2,7 @@ const { Before, Given, When, Then, After } = require('cucumber');
const { client } = require('nightwatch-api'); const { client } = require('nightwatch-api');
const fetch = require('node-fetch'); const fetch = require('node-fetch');
let initialUsers = {}; let initialUsers = {};
let dolApiKey = '';
Given('the administrator has logged in using the webUI', async function () { Given('the administrator has logged in using the webUI', async function () {
await client.page.loginPage().navigate().waitForLoginPage(); await client.page.loginPage().navigate().waitForLoginPage();
@ -46,7 +47,7 @@ const getUsers = async function () {
const url = client.globals.backend_url + 'api/index.php/users'; const url = client.globals.backend_url + 'api/index.php/users';
const users = {}; const users = {};
header['Accept'] = 'application/json'; header['Accept'] = 'application/json';
header['DOLAPIKEY'] = client.globals.dolApiKey; header['DOLAPIKEY'] = dolApiKey;
await fetch(url, { await fetch(url, {
method: 'GET', method: 'GET',
headers: header headers: header
@ -64,7 +65,7 @@ const adminHasCreatedUser = async function (dataTable) {
const header = {}; const header = {};
const url = client.globals.backend_url + 'api/index.php/users'; const url = client.globals.backend_url + 'api/index.php/users';
header['Accept'] = 'application/json'; header['Accept'] = 'application/json';
header['DOLAPIKEY'] = client.globals.dolApiKey; header['DOLAPIKEY'] = dolApiKey;
header['Content-Type'] = 'application/json'; header['Content-Type'] = 'application/json';
const userDetails = dataTable.hashes(); const userDetails = dataTable.hashes();
for (const user of userDetails) { for (const user of userDetails) {
@ -89,6 +90,24 @@ const adminHasCreatedUser = async function (dataTable) {
} }
}; };
Before(async () => {
const header = {}
const adminUsername = client.globals.adminUsername;
const adminPassword = client.globals.adminPassword;
const params = new URLSearchParams()
params.set('login', adminUsername)
params.set('password', adminPassword)
const apiKey = `http://localhost/dolibarr/htdocs/api/index.php/login?${params.toString()}`;
header['Accept'] = 'application/json'
await fetch(apiKey, {
method: 'GET',
headers: header
})
.then(async (response) => {
const jsonResponse = await response.json()
dolApiKey = jsonResponse['success']['token']
})
})
Before(async () => { Before(async () => {
initialUsers = await getUsers(); initialUsers = await getUsers();
}); });
@ -98,7 +117,7 @@ After(async () => {
const header = {}; const header = {};
const url = client.globals.backend_url + 'api/index.php/users/'; const url = client.globals.backend_url + 'api/index.php/users/';
header['Accept'] = 'application/json'; header['Accept'] = 'application/json';
header['DOLAPIKEY'] = client.globals.dolApiKey; header['DOLAPIKEY'] = dolApiKey;
let found; let found;
for (const finaluser in finalUsers) { for (const finaluser in finalUsers) {
for (const initialuser in initialUsers) { for (const initialuser in initialUsers) {