Commit 90cdfdcb authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Mejora interacción con sistema de testeo

Permite usar distintos navegadores y modo headless a voluntad, en base a
parámetros de entrada.
parent cfd77341
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ module.exports = function(grunt) {
			ownServerPort = parseInt(grunt.option('ownServerPort'), 10) || 9000,
			ownSocketPort = parseInt(grunt.option('ownSocketPort'), 10),
			ownTunnelPort = parseInt(grunt.option('ownTunnelPort'), 10),
			browser = grunt.option('browser') || 'chrome',
			headless = grunt.option('headless') || false,
			serverUrl = grunt.option('serverUrl'),
			role = grunt.option('role'),
@@ -90,7 +91,9 @@ module.exports = function(grunt) {
				ownServerPort: ownServerPort,
				ownSocketPort: ownSocketPort,
				ownTunnelPort: ownTunnelPort,
				suitesGroups: suitesGroups
				suitesGroups: suitesGroups,
				browser: browser,
				headless: headless
			},
			testUnitParams = deepmerge(testParams, {
				reporters: unitReporters,
@@ -104,7 +107,6 @@ module.exports = function(grunt) {
				role: role,
				user: user,
				pass: pass,
				headless: headless,
				reporters: functionalReporters,
				functionalSuites: functionalSuites,
				reportersOutputPath: reportersOutputPath,
+3 −1
Original line number Diff line number Diff line
@@ -7,6 +7,9 @@ module.exports = function(grunt) {
			, '"--ownSocketPort=port" para redefinir puerto del socket de intern (por defecto, "ownServerPort" + 1)'
			, '"--ownTunnelPort=port" para redefinir puerto del túnel selenium (por defecto, "ownServerPort" + 2)'
			, '"--suitesGroups=suitesFolderName" para indicar grupos de suites ejecutar desde la raíz correspondiente'
			, '"--browser" para elegir navegadores a usar, soporta definiciones múltiples y lista separada por comas ' +
				'(por defecto, chrome)'
			, '"--headless" para ejecutar sin interfaz'
		],

		remoteOptionParameters = [
@@ -24,7 +27,6 @@ module.exports = function(grunt) {
			, '"--role=userRole" para definir el nivel de permisos del usuario'
			, '"--user=userEmail" para definir el nombre de acceso del usuario'
			, '"--pass=userPassword" para definir el password de acceso del usuario'
			, '"--headless" para ejecutar sin interfaz'
			, '"--serverUrl=url" para definir la dirección de la aplicación a testear'
		];

tests/_environments.js

0 → 100644
+47 −0
Original line number Diff line number Diff line
module.exports = function(args) {

	var headless = args.headless,
		browser = args.browser,
		browserList = typeof browser === 'string' ? browser.split(',') : browser,
		userDataDir = args.userDataDir || '.config',
		windowWidth = 1280,
		windowHeight = 768,
		environments = [];

	var browserConfigs = {
		chromeConfig: {
			browserName: 'chrome',
			'goog:chromeOptions': {
				args: [
					'disable-extensions',
					'window-size=' + windowWidth + ',' + windowHeight,
					'user-data-dir=' + userDataDir
				]
			}
		},
		firefoxConfig: {
			browserName: 'firefox',
			'moz:firefoxOptions': {
				args: [
					'--width=' + windowWidth,
					'--height=' + windowHeight
				]
			}
		},
		internetExplorerConfig: {
			browserName: 'internet explorer'
		}
	};

	if (headless) {
		browserConfigs.chromeConfig['goog:chromeOptions'].args.push('headless', 'disable-gpu', 'no-sandbox');
		browserConfigs.firefoxConfig['moz:firefoxOptions'].args.push('--headless');
	}

	for (var i = 0; i < browserList.length; i++) {
		var browserItem = browserList[i];
		environments.push(browserConfigs[browserItem.trim() + 'Config']);
	}

	return environments;
};

tests/_headlessConfig.js

deleted100644 → 0
+0 −30
Original line number Diff line number Diff line
module.exports = function(args) {
	// TODO hay que generalizar este módulo, no solo para headless sino para configs de navegadores según args

	var userDataDir = args.userDataDir || '.config';

	return {
		environments: [{
			browserName: 'chrome',
			'goog:chromeOptions': {
				args: [
					'headless',
					'disable-gpu',
					'disable-extensions',
					'no-sandbox',
					'window-size=1280,768',
					'user-data-dir=' + userDataDir
				]
			}
		/*}, {
			browserName: 'firefox',
			'moz:firefoxOptions': {
				args: [
					'--headless',
					'--width=1280',
					'--height=768'
				]
			}
		*/}]
	};
};
+2 −11
Original line number Diff line number Diff line
@@ -9,13 +9,11 @@ module.exports = function(args) {
		role = args.role,
		user = args.user,
		pass = args.pass,
		headless = args.headless,
		suitesGroups = args.suitesGroups,
		functionalSuites = args.functionalSuites,

		pathPrefix = path.join(testsPath, 'functional'),
		config = {},
		propsMix = [_intern];
		config = {};

	if (functionalSuites) {
		config.functionalSuites = _functions.getParameterValueAsArray(functionalSuites);
@@ -43,14 +41,7 @@ module.exports = function(args) {

	global.reportersOutputPath = args.reportersOutputPath;

	propsMix.push(config);

	if (headless) {
		var _headlessConfig = require('./_headlessConfig')(args);
		propsMix.push(_headlessConfig);
	}

	return deepmerge.all(propsMix, {
	return deepmerge.all([_intern, config], {
		arrayMerge: function (destinationArray, sourceArray, options) {

			return sourceArray;
Loading