Commit 990a90cc authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Separa versión de driver y browser, actualiza docs

Permite definir para los trabajos de testeo la versión de driver usado y
browser deseado por separado, ya que obtenerlos desde el mismo parámetro
causa problemas al ejecutar tests locales (las comprobaciones de
sintaxis no lo permiten).

Por otro lado, para los tests locales también es necesario poder definir
la versión deseada de browser, por lo que se compatibilizan
configuraciones y trabajos CI para hacer uso de parámetros por separado.
Para tests remotos se mantiene solamente la versión deseada de browser,
como hasta ahora.

Actualiza las versiones de dependencias de testeo definidas en la
documentación, para utilizar la más reciente soportada (para seguir
subiendo versiones, hay que cambiar de protocolo de comunicación con
selenium para los tests remotos).
parent 5fc5ed64
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ run-local-unit-tests:
      --headless
      --browser=${TEST_BROWSER}
      --seleniumVersion=${LOCAL_SELENIUM_VERSION}
      --chromeVersion=${LOCAL_CHROME_VERSION}
      --chromeDriverVersion=${LOCAL_CHROME_DRIVER_VERSION}
      | tee test.out

.run-remote-unit-tests:
@@ -59,8 +59,8 @@ run-local-unit-tests:
      --ownServerHost="${TEST_OWN_SERVER_HOST}"
      --remoteHost=${TEST_REMOTE_HOST}
      --seleniumVersion=${REMOTE_SELENIUM_VERSION}
      --chromeVersion=${REMOTE_CHROME_VERSION}
      --firefoxVersion=${REMOTE_FIREFOX_VERSION}
      --chromeBrowserVersion=${REMOTE_CHROME_BROWSER_VERSION}
      --firefoxBrowserVersion=${REMOTE_FIREFOX_BROWSER_VERSION}
      | tee test.out

run-remote-unit-tests-chrome:
@@ -94,7 +94,7 @@ run-local-modules-functional-tests:
      --headless
      --browser=${TEST_BROWSER}
      --seleniumVersion=${LOCAL_SELENIUM_VERSION}
      --chromeVersion=${LOCAL_CHROME_VERSION}
      --chromeDriverVersion=${LOCAL_CHROME_DRIVER_VERSION}
  artifacts: *run-functional-tests-artifacts

.run-remote-modules-functional-tests:
@@ -112,8 +112,8 @@ run-local-modules-functional-tests:
      --ownServerHost="${TEST_OWN_SERVER_HOST}"
      --remoteHost=${TEST_REMOTE_HOST}
      --seleniumVersion=${REMOTE_SELENIUM_VERSION}
      --chromeVersion=${REMOTE_CHROME_VERSION}
      --firefoxVersion=${REMOTE_FIREFOX_VERSION}
      --chromeBrowserVersion=${REMOTE_CHROME_BROWSER_VERSION}
      --firefoxBrowserVersion=${REMOTE_FIREFOX_BROWSER_VERSION}
  artifacts: *run-functional-tests-artifacts

run-remote-modules-functional-tests-chrome:
@@ -144,8 +144,8 @@ run-remote-modules-functional-tests-firefox:
      --browser=${TEST_BROWSER}
      --remoteHost=${TEST_REMOTE_HOST}
      --seleniumVersion=${REMOTE_SELENIUM_VERSION}
      --chromeVersion=${REMOTE_CHROME_VERSION}
      --firefoxVersion=${REMOTE_FIREFOX_VERSION}
      --chromeBrowserVersion=${REMOTE_CHROME_BROWSER_VERSION}
      --firefoxBrowserVersion=${REMOTE_FIREFOX_BROWSER_VERSION}
  dependencies: []
  artifacts: *run-functional-tests-artifacts
  rules:
+7 −7
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ npm test

> Internamente se lanzarán otros comandos orquestados mediante **Grunt** (que también podrían ejecutarse de manera concreta si fuera necesario).

Más información en <https://gitlab.com/redmic-project/client/web/-/wikis/test-main>.
Más información ejecutando `grunt --help` y en <https://gitlab.com/redmic-project/client/web/-/wikis/test-main>.

### Ejemplos de ejecución de tests locales

@@ -114,7 +114,7 @@ docker run --rm -d \
  --name selenium-hub \
  --net selenium-net \
  -p 4444:4444 \
  selenium/hub:4.1.3
  selenium/hub:4.8.3

# Lanza un nodo de navegador Chrome
docker run --rm -d \
@@ -125,7 +125,7 @@ docker run --rm -d \
  -e SE_EVENT_BUS_PUBLISH_PORT=4442 \
  -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
  -e VNC_NO_PASSWORD=true \
  selenium/node-chrome:99.0
  selenium/node-chrome:111.0

# Lanza un nodo de navegador Firefox
docker run --rm -d \
@@ -136,16 +136,16 @@ docker run --rm -d \
  -e SE_EVENT_BUS_PUBLISH_PORT=4442 \
  -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
  -e VNC_NO_PASSWORD=true \
  selenium/node-firefox:98.0
  selenium/node-firefox:111.0
```

Si todo ha ido correctamente, el servicio *Selenium Hub* estará accesible en <http://localhost:4444> con 2 nodos añadidos, formando un *Selenium Grid* funcional.

Hay que prestar atención a los tags desplegados para cada imagen. En el ejemplo, se usan:

* `selenium/hub:4.1.3` (versión **4.1.3** de **Selenium Hub**, ver más en <https://hub.docker.com/r/selenium/hub>).
* `selenium/node-chrome:99.0` (versión **99.0** de **Google Chrome**, ver más en <https://hub.docker.com/r/selenium/node-chrome>).
* `selenium/node-firefox:98.0` (versión **98.0** de **Mozilla Firefox**, ver más en <https://hub.docker.com/r/selenium/node-firefox>).
* `selenium/hub:4.8.3` (versión **4.8.3** de **Selenium Hub**, ver más en <https://hub.docker.com/r/selenium/hub>).
* `selenium/node-chrome:111.0` (versión **111.0** de **Google Chrome**, ver más en <https://hub.docker.com/r/selenium/node-chrome>).
* `selenium/node-firefox:111.0` (versión **111.0** de **Mozilla Firefox**, ver más en <https://hub.docker.com/r/selenium/node-firefox>).

Existen otras etiquetas más específicas (consultar en los enlaces anteriores) si se quiere fijar con más certeza las versiones usadas, al igual que imágenes para otros navegadores (disponibles en <https://hub.docker.com/u/selenium>). También hay disponibles multitud de opciones para configurar el entorno de testeo, consultar documentación en <https://github.com/SeleniumHQ/docker-selenium>.

+2 −2
Original line number Diff line number Diff line
@@ -3,8 +3,8 @@ module.exports = function(args) {
	var headless = args.headless,
		browser = args.browser,
		browserList = typeof browser === 'string' ? browser.split(',') : browser,
		chromeBrowserVersion = args.chromeVersion,
		firefoxBrowserVersion = args.firefoxVersion,
		chromeBrowserVersion = args.chromeBrowserVersion,
		firefoxBrowserVersion = args.firefoxBrowserVersion,
		windowWidth = 1280,
		windowHeight = 768,
		environments = [];
+4 −4
Original line number Diff line number Diff line
module.exports = function(args) {

	var chromeDriverVersion = args.chromeVersion,
		firefoxDriverVersion = args.firefoxVersion;
	var chromeDriverVersion = args.chromeDriverVersion,
		firefoxDriverVersion = args.firefoxDriverVersion;

	var drivers = [];

@@ -12,9 +12,9 @@ module.exports = function(args) {
	if (chromeDriverVersion) {
		chromeDriver.version = chromeDriverVersion;

		var chromeMajorVersion = parseInt(chromeDriverVersion.split('.')[0], 10);
		var majorVersion = parseInt(chromeDriverVersion.split('.')[0], 10);

		if (chromeMajorVersion > 114) {
		if (majorVersion > 114) {
			chromeDriver.baseUrl = 'https://storage.googleapis.com/chrome-for-testing-public';
			chromeDriver.platform = 'linux64';
		}
+8 −4
Original line number Diff line number Diff line
@@ -32,8 +32,10 @@ module.exports = function(grunt) {
			functionalSuites = grunt.option('functionalSuites'),
			coverage = grunt.option('coverage'),
			seleniumVersion = grunt.option('seleniumVersion'),
			chromeVersion = grunt.option('chromeVersion'),
			firefoxVersion = grunt.option('firefoxVersion'),
			chromeDriverVersion = grunt.option('chromeDriverVersion'),
			chromeBrowserVersion = grunt.option('chromeBrowserVersion'),
			firefoxDriverVersion = grunt.option('firefoxDriverVersion'),
			firefoxBrowserVersion = grunt.option('firefoxBrowserVersion'),

			currOutputDirName = gruntTaskName + '_on-port_' + ownServerPort,
			configDirName = '.config-' + ownServerPort,
@@ -103,8 +105,10 @@ module.exports = function(grunt) {
				grep: grep,
				userDataDir: userDataDir,
				seleniumVersion: seleniumVersion,
				chromeVersion: chromeVersion,
				firefoxVersion: firefoxVersion
				chromeDriverVersion: chromeDriverVersion,
				chromeBrowserVersion: chromeBrowserVersion,
				firefoxDriverVersion: firefoxDriverVersion,
				firefoxBrowserVersion: firefoxBrowserVersion
			},
			remoteTestParams = {
				ownServerHost: ownServerHost,
Loading