📘 End-to-End automation testing

✅ Stack Tecnologico adottato
Questo stack è progettato per eseguire test end-to-end (E2E) in modo affidabile e scalabile. Ogni componente ha un ruolo specifico:
- WebdriverIO: Test runner che fornisce API moderne per interagire con i browser tramite protocollo WebDriver.
- Selenium Standalone-Chrome: Server WebDriver che espone un endpoint per controllare il browser Chrome in modalità headless o full.
- Node.js: Runtime JavaScript che esegue i test e gestisce le dipendenze.
- Mocha: Framework di test BDD/TDD che definisce la struttura dei test (describe/it) e le asserzioni.
- Allure Report: Sistema di reportistica avanzato che genera report interattivi con screenshot, log e metriche.
- Docker: Contenitore per isolare l'ambiente di test, garantendo consistenza tra macchine.
- Docker Compose: Orchestratore che avvia più container (Selenium, Allure, test runner) con un solo comando.
🔍 Perché questa architettura?
- Isolamento: Nessuna dipendenza dal sistema host.
- Scalabilità: Possibilità di eseguire più suite in parallelo.
- Riproducibilità: Stesso comportamento in locale e in CI/CD.
🏗 Architettura del Sistema
+----------------------+ +--------------------------------+
| Test Runner (WDIO) | <-----> | Selenium Standalone Chrome |
| Node.js + Mocha | | WebDriver endpoint :4444 |
+----------------------+ +--------------------------------+
|
| genera risultati
v
+----------------------+
| Allure Report | <-- allure-results
| (Docker Service) | --> allure-report HTML
+----------------------+
Locale con Docker Compose

GitLab CI (Job + Service Selenium)

🔄 Flusso di Esecuzione
- Avvio container: Docker Compose avvia Selenium e Allure.
- Esecuzione test: WebdriverIO invia comandi WebDriver a Selenium.
- Generazione risultati: I test producono file JSON in
allure-results. - Creazione report: Allure genera un report HTML interattivo.
- Visualizzazione: Il report è accessibile via browser (porta 4040).
📂 File docker-compose.yml
services:
standalone-chrome:
hostname: selenium
ports:
- '4444:4444'
image: 'selenium/standalone-chrome@sha256:553ff18c2055bc2134cd833211c352d601d91f43fd42a7559f94a28eba96a504'
environment:
- SE_NODE_GRID_URL=http://127.0.0.1:4444
allure:
image: "frankescobar/allure-docker-service@sha256:0815040339a9d4cc175f69a1c89780f298ee6a55d9f0792cfae20b2718e66aa1"
environment:
CHECK_RESULTS_EVERY_SECONDS: 1
KEEP_HISTORY: 0
ports:
- "4040:4040"
- "5050:5050"
volumes:
- ${PWD}/allure-results:/app/allure-results
📦 File package.json
{
"name": "webdriverio-end2end-test",
"type": "module",
"devDependencies": {
"@wdio/allure-reporter": "^9.13.0",
"@wdio/cli": "^9.13.0",
"@wdio/local-runner": "^9.13.0",
"@wdio/mocha-framework": "^9.13.0",
"@wdio/spec-reporter": "^9.13.0",
"allure-commandline": "^2.32.2",
"ts-node": "^10.9.2",
"typescript": "^5.4.3",
"wdio-video-reporter": "^6.1.1"
},
"scripts": {
"wdio": "wdio run ./wdio.conf.ts",
"allure-generate": "allure generate allure-results"
},
"dependencies": {
"axios": "^1.12.2",
"minio": "^8.0.5",
"moment": "^2.30.1",
"otplib": "^12.0.1",
"selenium-webdriver": "^4.29.0"
}
}
▶️ Comandi Utili
# Avvia Selenium e Allure in Docker
docker compose -f docker-compose-local.yml up -d
# Esecuzione test e generazione del report Allure
rm -rf allure-results/*
npx wdio run ./wdio.conf.ts --suite <nome della suite/suites da eseguire>
# Apri il servizio Allure (porta 4040)
http://localhost:4040
🧪 Suite di Test presenti raggruppa
Auth & Settings
- loginAsAdmin.act.ts: Login come amministratore e verifica accesso.
- setPreferences.act.ts: Impostazione delle preferenze utente.
- logout.act.ts: Logout e chiusura sessione.
Dataset
- setupDatasetToBda.act.ts: Configurazione iniziale di un dataset per BDA.
- createDatasetToDel.act.ts: Creazione di un dataset destinato alla cancellazione.
- deleteDataset.act.ts: Eliminazione di un dataset esistente.
- createDatasetToBda.act.ts: Creazione di un dataset per BDA.
BDA Service
- createBdaServiceToDel.act.ts: Creazione di un servizio BDA da eliminare successivamente.
- deleteBdaService.act.ts: Eliminazione di un servizio BDA.
- createBdaServiceToBda.act.ts: Creazione di un servizio BDA per integrazione.
BDA Application
- createBdaAppNoMlf.act.ts: Creazione di un’applicazione BDA senza modello ML.
- editBdaApp.act.ts: Modifica configurazione di un’applicazione BDA.
- runBdaAppToCompl.act.ts: Esecuzione di un’applicazione BDA fino al completamento.
- showLogBdaApp.act.ts: Visualizzazione dei log di un’applicazione BDA.
- runBdaAppToStop.act.ts: Avvio e interruzione di un’applicazione BDA.
- checkDatasetBda.act.ts: Verifica dataset associati a un’applicazione BDA.
- handleScheduler.act.ts: Gestione dello scheduler per applicazioni BDA.
- deleteObjOnMinio.act.ts: Eliminazione di oggetti su MinIO.
📊 Reportistica
- I risultati dei test vengono salvati in
allure-results - Il report HTML viene generato in
allure-report - Servizio Allure disponibile su
http://localhost:4040
🔍 Troubleshooting
- Errore connessione Selenium: assicurarsi che il container
standalone-chromesia attivo. - Report vuoto: verificare che i file in
allure-resultssiano generati.
🚀 Integrazione CI/CD con GitLab
Esempio di pipeline GitLab per eseguire i test e generare il report Allure.
📄 File .gitlab-ci.yml
stages:
- install-and-test
- generate-allure-report
variables:
SELENIUM_IMAGE: selenium/standalone-chrome@sha256:553ff18c2055bc2134cd833211c352d601d91f43fd42a7559f94a28eba96a504
WDIO_CONFIG_PATH: ./wdio.conf.ts
SE_NODE_GRID_URL: http://selenium:4444
install_dependencies:
stage: install-and-test
services:
- name: $SELENIUM_IMAGE
alias: selenium
image: node:22
tags:
- docker
artifacts:
paths:
- allure-results
when: always
expire_in: 1 day
script:
- npm ci
- npx wdio run $WDIO_CONFIG_PATH --suite alida_1_series alida_2_series #alida_3_series
only:
- new-dev
generate-allure-result:
stage: generate-allure-report
image: frankescobar/allure-docker-service@sha256:0815040339a9d4cc175f69a1c89780f298ee6a55d9f0792cfae20b2718e66aa1
tags:
- docker
artifacts:
paths:
- allure-report
- allure-results
when: always
expire_in: 1 day
script:
- allure generate --single-file allure-results --clean -o allure-report
when: always
allow_failure: true
🔍 Dettagli
- Stage
install-and-test: esegue i test con WebdriverIO usando Selenium come servizio Docker. - Stage
generate-allure-report: genera il report Allure in formato HTML. - Artifacts: i risultati (
allure-results) e il report (allure-report) vengono salvati come artifact per il download.