added e2e testsuite

This commit is contained in:
2026-01-25 12:57:12 +01:00
parent 552540e214
commit 416cddd496
10 changed files with 1333 additions and 6 deletions

View File

@@ -50,6 +50,7 @@ class EntityValidator:
self.warnings = []
self.entity_defs = {}
self.relationships = defaultdict(list)
self.skip_e2e_tests = False
def validate_json_syntax(self) -> bool:
"""Validiere JSON-Syntax aller Dateien im custom-Verzeichnis."""
@@ -743,6 +744,10 @@ class EntityValidator:
print_success("Rebuild erfolgreich abgeschlossen")
if result.stdout:
print(f" {result.stdout.strip()}")
# E2E-Tests nach erfolgreichem Rebuild
self.run_e2e_tests()
return True
else:
print_error("Rebuild fehlgeschlagen:")
@@ -790,6 +795,10 @@ class EntityValidator:
if result.returncode == 0:
print_success("Rebuild erfolgreich abgeschlossen")
# E2E-Tests nach erfolgreichem Rebuild
self.run_e2e_tests()
return True
else:
print_error("Rebuild fehlgeschlagen:")
@@ -801,8 +810,55 @@ class EntityValidator:
return False
except Exception as e:
print_error(f"Rebuild-Fehler: {e}")
return False
return False
def run_e2e_tests(self) -> bool:
"""Führe End-to-End Tests nach erfolgreichem Rebuild aus."""
# Überspringe wenn Flag gesetzt
if self.skip_e2e_tests:
print_info("\nE2E-Tests wurden übersprungen (--skip-e2e)")
return True
print_header("11. END-TO-END TESTS")
# Prüfe ob E2E-Test Skript existiert
e2e_script = self.base_path / "custom" / "scripts" / "e2e_tests.py"
if not e2e_script.exists():
print_warning("E2E-Test Skript nicht gefunden, überspringe Tests")
return True
print_info("Starte automatisierte End-to-End Tests...")
print_info("Dies validiert CRUD-Operationen für Custom Entities\n")
try:
result = subprocess.run(
['python3', 'e2e_tests.py'],
cwd=str(e2e_script.parent),
capture_output=True,
text=True,
timeout=120
)
# Ausgabe anzeigen
if result.stdout:
print(result.stdout)
if result.returncode == 0:
print_success("E2E-Tests erfolgreich abgeschlossen")
return True
else:
print_warning("E2E-Tests haben Fehler gemeldet")
if result.stderr:
print(f"\n{Colors.YELLOW}{result.stderr}{Colors.END}")
print_info("Dies ist keine kritische Fehler - der Rebuild war erfolgreich")
return True # Nicht als Fehler werten
except subprocess.TimeoutExpired:
print_warning("E2E-Tests Timeout (>120 Sekunden)")
return True # Nicht als Fehler werten
except Exception as e:
print_warning(f"E2E-Tests konnten nicht ausgeführt werden: {e}")
return True # Nicht als Fehler werten
def print_summary(self):
"""Drucke Zusammenfassung aller Ergebnisse."""
print_header("ZUSAMMENFASSUNG")
@@ -884,9 +940,15 @@ def main():
action='store_true',
help='Synonym für --dry-run'
)
parser.add_argument(
'--skip-e2e',
action='store_true',
help='Überspringe E2E-Tests nach Rebuild'
)
args = parser.parse_args()
dry_run = args.dry_run or args.no_rebuild
skip_e2e = args.skip_e2e
# Finde EspoCRM Root-Verzeichnis
script_dir = Path(__file__).parent.parent.parent
@@ -900,9 +962,12 @@ def main():
print(f"Arbeitsverzeichnis: {script_dir}")
if dry_run:
print(f"{Colors.YELLOW}Modus: DRY-RUN (kein Rebuild){Colors.END}")
if skip_e2e:
print(f"{Colors.YELLOW}E2E-Tests werden übersprungen{Colors.END}")
print()
validator = EntityValidator(str(script_dir))
validator.skip_e2e_tests = skip_e2e
# Validierungen durchführen
all_valid = validator.validate_all()