Version: 1.0.3 (Projektabschluss HTW Berlin SoSe2025)
Das Tool entwickelt automatisch Cypress Tests basierend auf bestehenden Testanforderungen aus Cucumber Files. Es handelt sich um eine Visual Studio Code Extension, die mithilfe von Large Language Models (LLMs) den Testgenerierungsprozess automatisiert.
Im Rahmen des Moduls "Projekt Wissensmanagement" an der HTW Berlin wurde zusammen mit der Firma diva-e ein Tool entwickelt, das mithilfe von LLMs automatisiert Cypress Tests generiert. Die Basis bilden Testanforderungen in Form von Cucumber-Feature-Dateien. Nutzer können durch einen einfachen Rechtsklick auf eine Feature-Datei den Testgenerierungsprozess starten.
Das Projekt diente zur Entwicklung eines Prototypen, der die Machbarkeit und Sinnhaftigkeit eines solchen Tools demonstriert. Ein weiteres Ziel war die Überprüfung der Performance lokaler LLMs über Ollama für diesen Anwendungsfall.
Da es sich um eine Projektarbeit im Modul "Projekt Wissensmanagement" an der HTW Berlin handelt, wurden alle organisatorischen Dokumente separat im Ordner "organisatorisches" abgelegt. Dort befinden sich unter anderem die Meeting-Protokolle sowie die Präsentationen.
Für die Projektdokumentation verwenden wir TypeDoc.
Die Dokumentation kann entweder lokal über die Datei index.html im docs-Ordner geöffnet werden oder direkt online über GitHub Pages:
https://diva-e-cypress-crew.github.io/diva-e-cypress/
Ansprechpartner Diva-E: Alexander Thoms
Folgende Software muss vor der Installation vorhanden sein:
Ollama herunterladen und installieren: https://ollama.com/download
LLama 3.2 Modell installieren und starten:
ollama run llama3.2
npm install cypress --save-dev
Die aktuelle Version kann aus diesem Repo heruntergeladen werden: diva-e-cypress-1.0.X.vsix
Ctrl+Shift+X
bzw. ⇧⌘X
auf macOS)⋯
-Menü (Weitere Aktionen)diva-e-cypress-X.X.X.vsix
Datei und wählen Sie diese ausCypress-Projekt öffnen
LLM starten
ollama run llama3.2
Feature-Datei vorbereiten
.feature
-Datei mit korrekter Gherkin-Syntax# url: https://example.com/
Feature: Beispiel Test
Scenario: Beispiel Szenario
Given der Benutzer ist auf der Startseite
When er auf "Login" klickt
Then sollte die Anmeldeseite angezeigt werden
Testgenerierung starten
.feature
-DateiTests ausführen
npx cypress open
steps.ts
, selectors.ts
und .feature
-Datei im Projekt vorhanden istnpm install
npx cypress open
extension.ts
in VSCode öffnenF5
drücken zum Testen der ExtensionExtension kompilieren:
node esbuild.js --production
Extension als .vsix
-Datei verpacken:
npm prepack
vsce package
npm postpack
prepack
und postpack
sind erforderlich, damit für die Erweiterung nur die kurze Beschreibung (README-EXT.md
) verwendet wirdLokale Installation:
code --install-extension my-extension-0.0.1.vsix
npm run docs
Erstellt HTML-Dokumentation aus JSDoc-Kommentaren im docs/
-Ordner.
src/
├── agents/
│ ├── baseAgent.ts # Basisfunktionalitäten für alle Agents
│ ├── codeRefactorAgent.ts # Code-Refaktorierung
│ ├── selectorsAgent.ts # Selector-Generierung
│ ├── stepsAgent.ts # Testschritt-Erzeugung
│ └── verificationAgent.ts # Test-Validierung
├── prompts/
│ ├── code_fix.ts # Prompt für Codekorrekturen
│ ├── promptTemplate.ts # Basis-Prompt-Struktur
│ ├── selectors_instruction.ts # Selector-Generierung
│ ├── steps_instruction.ts # Step-Generierung
│ └── verification_instruction.ts # Test-Validierung
├── extension.ts # VS Code Extension Interface
├── orchestrator.ts # Zentrale Steuerungslogik
├── htmlPreprocessor.ts # Webseiten-Vorverarbeitung
├── stepsGenerator.ts # Feature-File Processing
└── switchUrl.ts # URL-Management
cypress/
├── e2e/
│ ├── common/
│ │ ├── selectors/
│ │ │ └── orchestrator_selectors.ts # Generierte Selectors
│ │ └── steps/
│ │ └── orchestrator_steps.ts # Generierte Steps
│ └── features/
│ └── orchestrator.feature # Feature-Dateien
└── support/
└── e2e.js
Datei | Zweck |
---|---|
package.json | Extension-Metadaten, Abhängigkeiten, NPM-Skripte |
package-lock.json | Dependency Lockfile (nicht manuell bearbeiten) |
tsconfig.json | TypeScript-Compiler-Konfiguration |
typedoc.json | Code-Dokumentations-Einstellungen |
Wichtig: Änderungen an zentralen Konfigurationsdateien sollten im Team abgestimmt werden.
# url: https://meag.gitlab.diva-e.com/investmentrechner-2023/
Feature: MEAG Investmentrechner – Button-Klick (minimal)
Scenario: Klick auf "Anlegen"-Tile
Given the Customer is on the homepage
When he clicks the "Anlegen" button
Then the "Was möchten Sie berechnen?" title should be displayed
Die Verwendung lokaler LLMs zeigt Begrenzungen bei der Kontextlänge, wodurch komplexe Testfälle noch nicht zuverlässig umsetzbar sind. Cloud-basierte LLMs (GPT-5, Gemini 2.5 Pro) könnten diese Einschränkungen überwinden.
Eine GUI könnte die Auswahl verschiedener LLMs ermöglichen und die URL-Konfiguration vereinfachen, anstatt diese in der Feature-Datei anzugeben.
Cypress-Tests schlagen fehl:
steps.ts
, selectors.ts
und .feature
-Datei vorhanden istExtension funktioniert nicht:
Generierung schlägt fehl: