From 120dd97ed4078e0336c67561e27b7e680eafde9c Mon Sep 17 00:00:00 2001 From: Juanfran Date: Thu, 29 Oct 2015 09:58:47 +0100 Subject: [PATCH] better run e2e script --- package.json | 3 +- run-e2e.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++ run-e2e.sh | 27 ----------------- 3 files changed, 88 insertions(+), 28 deletions(-) create mode 100644 run-e2e.js delete mode 100755 run-e2e.sh diff --git a/package.json b/package.json index 5449eb04..4e4258de 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,12 @@ "scripts": { "scss-lint": "gulp scss-lint --fail", "test": "./node_modules/karma/bin/karma start", - "e2e": "./run-e2e.sh" + "e2e": "node ./node_modules/babel/bin/babel-node.js --stage=1 ./run-e2e.js" }, "devDependencies": { "angular-mocks": "^1.5.0-beta.0", "babel": "^5.6.5", + "bluebird": "^3.0.2", "chai": "^3.3.0", "chai-as-promised": "^5.1.0", "chai-jquery": "^2.0.0", diff --git a/run-e2e.js b/run-e2e.js new file mode 100644 index 00000000..0c2ae066 --- /dev/null +++ b/run-e2e.js @@ -0,0 +1,86 @@ +var argv = require('minimist')(process.argv.slice(2)); +var child_process = require('child_process'); +var inquirer = require("inquirer"); +var Promise = require('bluebird'); + +var suites = [ + 'auth', + 'public', + 'wiki', + 'admin', + 'issues', + 'tasks', + 'userProfile', + 'userStories', + 'backlog', + 'home', + 'kanban', + 'projectHome', + 'search', + 'team' +]; + +var lunchSuites = []; + +if (argv.s) { + suites = argv.s.split(','); +} + +function backup() { + child_process.spawnSync('pg_dump', ['-c', '-d', 'taiga', '-f', 'tmp/taiga.sql'], {stdio: "inherit"}); +} + +function launchProtractor(suit) { + child_process.spawnSync('protractor', ['conf.e2e.js', '--suite=' + suit], {stdio: "inherit"}); +} + +function restoreBackup() { + child_process.spawnSync('psql', ['-d', 'taiga', '-f', 'tmp/taiga.sql']); +} + +function ask() { + return new Promise(function(resolve) { + if (argv.a && suites.length) { + inquirer.prompt([{ + type: 'list', + name: 'next', + message: 'Launch ' + suites[0] + '?', + default: 'Yes', + choices: [ + 'Yes', + 'No' + ] + }], function( answers ) { + if(answers.next === 'Yes') { + resolve(true); + } else { + resolve(false); + } + }); + } else if(suites.length) { + resolve(true); + } else { + resolve(false); + } + }); +} + +async function launch () { + backup(); + + var next = true; + + while (next) { + var suite = suites.shift(); + + console.log('running: ' + suite); + + launchProtractor(suite); + + restoreBackup(); + + next = await ask(); + } +} + +launch(); diff --git a/run-e2e.sh b/run-e2e.sh deleted file mode 100755 index 4780fe68..00000000 --- a/run-e2e.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash - -suites=( - 'auth' - 'public' - 'wiki' - 'admin' - 'issues' - 'tasks' - 'userProfile' - 'userStories' - 'backlog' - 'home' - 'kanban' - 'projectHome' - 'search' - 'team' -) - -pg_dump -c taiga > tmp/taiga.sql - -for i in ${suites[@]} -do - protractor conf.e2e.js --suite=$i - - psql taiga < tmp/taiga.sql > /dev/null -done