Commit 96829aac authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Permite definir versiones al testear

Acepta parámetros de grunt para controlar las versiones usadas para los
drivers de Chrome y Firefox, así como del túnel Selenium. Reestructura
configuración para aceptar valores opcionalmente.

Declara variables de entorno para asignar estos valores desde CI, de
manera independiente para entorno local y remoto.
parent 2bb19077
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -37,7 +37,9 @@ run-local-unit-tests:
  variables:
    <<: *run-local-tests-variables
  script:
    - grunt test-unit-local --headless --browser=${TEST_BROWSER} | tee test.out
    - >
      grunt test-unit-local --headless --browser=${TEST_BROWSER} --seleniumVersion=${LOCAL_SELENIUM_VERSION}
      --chromeVersion=${LOCAL_CHROME_VERSION} --firefoxVersion=${LOCAL_FIREFOX_VERSION} | tee test.out

.run-remote-unit-tests:
  extends: .run-unit-tests
@@ -46,7 +48,8 @@ run-local-unit-tests:
  script:
    - >
      grunt test-unit-remote --headless --browser=${TEST_BROWSER} --ownServerHost="${TEST_OWN_SERVER_HOST}"
      --remoteHost=${TEST_REMOTE_HOST} | tee test.out
      --remoteHost=${TEST_REMOTE_HOST} --seleniumVersion=${REMOTE_SELENIUM_VERSION}
      --chromeVersion=${REMOTE_CHROME_VERSION} --firefoxVersion=${REMOTE_FIREFOX_VERSION} | tee test.out

run-remote-unit-tests-chrome:
  extends: .run-remote-unit-tests
@@ -75,7 +78,8 @@ run-local-modules-functional-tests:
    - npm start &
    - >
      grunt test-functional-local --functionalSuites=tests/functional/modules/**/!\(*Script\).js --headless
      --browser=${TEST_BROWSER}
      --browser=${TEST_BROWSER} --seleniumVersion=${LOCAL_SELENIUM_VERSION} --chromeVersion=${LOCAL_CHROME_VERSION}
      --firefoxVersion=${LOCAL_FIREFOX_VERSION}
  artifacts: &run-functional-tests-artifacts

.run-remote-modules-functional-tests:
@@ -88,6 +92,8 @@ run-local-modules-functional-tests:
    - >
      grunt test-functional-remote --functionalSuites=tests/functional/modules/**/!\(*Script\).js --headless
      --browser=${TEST_BROWSER} --ownServerHost="${TEST_OWN_SERVER_HOST}" --remoteHost=${TEST_REMOTE_HOST}
      --seleniumVersion=${REMOTE_SELENIUM_VERSION} --chromeVersion=${REMOTE_CHROME_VERSION}
      --firefoxVersion=${REMOTE_FIREFOX_VERSION}
  artifacts: &run-functional-tests-artifacts

run-remote-modules-functional-tests-chrome:
@@ -112,6 +118,8 @@ run-scheduled-remote-functional-tests:
    - >
      grunt test-functional-remote --serverUrl="${SERVER_URL}" --user="${REDMIC_TEST_USER}" --pass="${REDMIC_TEST_PASS}"
      --role=${TEST_ROLE} --suitesGroups="${SUITES_GROUPS}" --browser=${TEST_BROWSER} --remoteHost=${TEST_REMOTE_HOST}
      --seleniumVersion=${REMOTE_SELENIUM_VERSION} --chromeVersion=${REMOTE_CHROME_VERSION}
      --firefoxVersion=${REMOTE_FIREFOX_VERSION}
  dependencies: []
  artifacts: &run-functional-tests-artifacts
  rules:
+7 −1
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ module.exports = function(grunt) {
			suites = grunt.option('suites'),
			functionalSuites = grunt.option('functionalSuites'),
			coverage = grunt.option('coverage'),
			seleniumVersion = grunt.option('seleniumVersion'),
			chromeVersion = grunt.option('chromeVersion'),
			firefoxVersion = grunt.option('firefoxVersion'),

			currOutputDirName = gruntTaskName + '_on-port_' + ownServerPort,
			configDirName = '.config-' + ownServerPort,
@@ -98,7 +101,10 @@ module.exports = function(grunt) {
				suitesGroups: suitesGroups,
				browser: browser,
				headless: headless,
				userDataDir: userDataDir
				userDataDir: userDataDir,
				seleniumVersion: seleniumVersion,
				chromeVersion: chromeVersion,
				firefoxVersion: firefoxVersion
			},
			remoteTestParams = {
				ownServerHost: ownServerHost,
+3 −0
Original line number Diff line number Diff line
@@ -9,6 +9,9 @@ module.exports = function(grunt) {
			, '"--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)'
			, '"--seleniumVersion=version" para definir una versión del túnel Selenium (por defecto, automática)'
			, '"--chromeVersion=version" para definir una versión del driver para Chrome (por defecto, automática)'
			, '"--firefoxVersion=version" para definir una versión del driver para Firefox (por defecto, automática)'
			, '"--headless" para ejecutar sin interfaz'
		],

+37 −12
Original line number Diff line number Diff line
@@ -8,6 +8,11 @@ module.exports = function(args) {
		testsPath = args.testsPath,
		coverage = args.coverage,
		reporters = args.reporters,

		seleniumVersion = args.seleniumVersion,
		chromeVersion = args.chromeVersion,
		firefoxVersion = args.firefoxVersion,

		ownServerPort = args.ownServerPort,
		ownSocketPort = args.ownSocketPort,
		ownTunnelPort = args.ownTunnelPort,
@@ -17,6 +22,37 @@ module.exports = function(args) {

	delete dojoConfig.deps;

	var drivers = [];

	var chromeDriver = {
		name: 'chrome'
	};

	if (chromeVersion) {
		chromeDriver.version = chromeVersion;
	}

	drivers.push(chromeDriver);

	var firefoxDriver = {
		name: 'firefox'
	};

	if (firefoxVersion) {
		firefoxDriver.version = firefoxVersion;
	}

	drivers.push(firefoxDriver);

	var tunnelOptions = {
		port: tunnelPort,
		drivers: drivers
	};

	if (seleniumVersion) {
		tunnelOptions.version = seleniumVersion;
	}

	var config = {
		capabilities: {
			'idle-timeout': 30,
@@ -28,18 +64,7 @@ module.exports = function(args) {
		serverPort: ownServerPort,
		socketPort: socketPort,

		tunnelOptions: {
			version: '4.0.0-alpha-2',
			port: tunnelPort,
			drivers: [{
				version: '88.0.4324.96',
				//version: '94.0.4606.41',
				name: 'chrome'
			},{
				version: '0.29.0',
				name: 'firefox'
			}]
		},
		tunnelOptions: tunnelOptions,

		maxConcurrency: 1,
		defaultTimeout: 250000,