Neue App scaffolden
Der schnellste Weg, eine neue zu testende Anwendung hinzuzufügen: ein CLI-Befehl, fertig.
← Zurück zur Übersicht · 🇬🇧 English · ← Konzepte · Neue App hinzufügen (vollständiger Guide) →
Web-App
npx cc-testframework create-web-app --name MyApp --url https://myapp.example
Scaffoldet die App unter 2_Apps/ und registriert sie — fertig, Project.MyApp.* ist sofort in einem TestCase nutzbar. Füge --dry-run hinzu, um vorab zu sehen, was erstellt würde, ohne etwas zu schreiben.
Desktop-App (Appium-Windows)
npx cc-testframework create-desktop-app --name MyApp --executable "C:\apps\MyApp.exe"
Scaffoldet die App unter 2_Apps/ und registriert sie — fertig, Project.MyApp.* ist sofort in einem TestCase nutzbar. Füge --dry-run hinzu, um vorab zu sehen, was erstellt würde, ohne etwas zu schreiben.
Electron-App
npx cc-testframework create-electron-app --name MyApp --executable-path "/opt/MyApp/MyApp"
Scaffoldet die App (Web-Controls + Electron-Start) und registriert sie — fertig. Es ist ein Playwright-/Web-Familien-Start (ein Electron-Renderer ist ein Chromium-DOM), sie nutzt also dieselben Web-Controls — der einzige Unterschied zu einer Web-App ist, dass sie ein Executable statt einer URL startet (type: 'Web', tool: 'Playwright', executablePath). Füge --dry-run hinzu, um vorab zu sehen, was erstellt würde, ohne etwas zu schreiben.
Dann einen Test schreiben
npx cc-testframework create-testcase --name MeinTest --app MyApp
Scaffoldet 3_Cases/TC_MeinTest.spec.ts mit einem Setup-Block, der MyApp startet — führe ihn mit npx playwright test 3_Cases/TC_MeinTest.spec.ts aus. Lässt du --name weg, wirst du interaktiv danach gefragt; lässt du --app weg, entsteht ein leeres TODO-Skeleton statt des Setup-Blocks.
Du schreibst Locators dabei nicht von Hand. Ist Self-Healing aktiviert (SELF_HEALING_WRITEBACK=true + ein KI-API-Key — AI_API_KEY, npx cc-testframework set-ai-key, oder der veraltete ANTHROPIC_API_KEY, siehe Self-Healing Locators — Kosten und BYOK), entdeckt das Framework die echten Locators deiner App automatisch, sobald die gescaffoldeten, generischen Controls beim ersten Lauf fehlschlagen — kein Handbearbeiten von Controls/Steps vor dem ersten Lauf nötig. Ohne aktiviertes Self-Healing heilt nichts — siehe Self-Healing Locators, um es einzuschalten.
Eine mitgelieferte Standard-App einbinden
npx cc-testframework add-app ftp-client # die FtpClient-App einbinden
npx cc-testframework add-app --list # den Katalog anzeigen
Statt eine leere App zu scaffolden, holt add-app eine vollständige, sofort nutzbare App, die das Framework mitliefert — email, ftp-client, os-common, os-windows, utilities — kein Naming, keine Locators zu schreiben. Jede braucht ihr eigenes Setup, bevor sie funktioniert (Zugangsdaten, OAuth, ein Appium-Windows-Host, …); der Befehl sagt dir genau, was nötig ist, und --list zeigt Beschreibung und Setup-Hinweis für jede App im Voraus. Das sind kontextfreie Tool-Apps — verdrahtet in References.ts als Project.FtpClient.* etc., kein GlobalConfig.apps-Eintrag nötig.
Eine App mit den Templates synchron halten
Wenn sich die mitgelieferten _Skeleton*-Templates verbessern, übernehmen bereits gescaffoldete Apps das nicht automatisch. Halte eine App mit folgendem Befehl auf dem aktuellen Stand:
npx cc-testframework-update-app --app MyApp
Standardmäßig läuft das als Dry-Run — es wird nichts geschrieben. Der Befehl zeigt eine Statustabelle für jede Datei unter 1_Controls//2_Steps/ der App: up-to-date, update (Template hat sich geändert, du nicht — sicher), skip (du hast bearbeitet, Template unverändert), conflict (beide geändert — braucht eine Entscheidung), new (Template hat eine Datei ergänzt, die du noch nicht hast) oder template-removed. Mit --json gibt es zusätzlich einen maschinenlesbaren Report.
npx cc-testframework-update-app --app MyApp --apply # schreibt nur die sicheren update-/new-Dateien
npx cc-testframework-update-app --app MyApp --force # löst zusätzlich Konflikte: sichert deine Datei als <file>.bak, schreibt dann die Template-Version
Eine Control oder ein Step, den du von Hand bearbeitet hast — oder den bereits ein Self-Healing-Writeback gepatcht hat — wird nie stillschweigend überschrieben; ein conflict braucht --force, bevor sich etwas ändert, und selbst dann bleibt dein bisheriger Inhalt als <file>.bak direkt daneben erhalten.
💡
.cc-scaffold.json.initundadd-appschreiben diesen Baseline-Marker ampm/-Root — den ursprünglichen Hash jeder von ihnen gescaffoldeten Datei. Er ermöglicht esupdate-app, “das Template hat das geändert” von “du hast das geändert” zu unterscheiden. Committe sie in die Versionskontrolle. Apps, die vor diesem Marker gescaffoldet wurden, funktionieren weiterhin —update-appfällt für sie auf einen vorsichtigeren Vergleich zurück (jede Abweichung vom aktuellen Template zählt alsconflict, wird also nie erraten).
Kompatibilität vor dem Update prüfen
Jede veröffentlichte Version von @meintest/cc-testframework-templates liefert ein manifest.json — dieselbe Datei, die init/create-*/update-app bereits einlesen, um deine Apps zu scaffolden und zu synchronisieren. Neben dem bestehenden compatibility-Pin (der passenden @meintest/cc-testframework-Versionsspanne) trägt dieses Manifest einen maschinenlesbaren supportMatrix-Block: die externen Komponenten-Versionen, gegen die diese Framework-Version getestet und unterstützt ist.
"supportMatrix": {
"schemaVersion": 1,
"playwright": ">=1.49.0 <2.0.0",
"node": ">=20",
"appium": ">=2.0.0",
"browser": { "chromium": ">=131.0.0" },
"outlook": "Microsoft 365 (Graph API)"
}
💡 Die Bereiche oben sind ein Beispiel aus einer veröffentlichten Version. Sie verschieben sich von Release zu Release, wenn sich die eigene Playwright-/Node-Untergrenze des Frameworks bewegt oder die Appium-/Browser-Unterstützung neu verifiziert wird — behandle nie eine Kopie aus dieser Doku als aktuell. Lies immer den
supportMatrixder konkreten Version, die du installieren willst.
| Feld | Bedeutung |
|---|---|
schemaVersion | Der stabile Vertrag für alles, was diesen Block parst. Wird nur erhöht, wenn sich die Form des Blocks selbst ändert — Tooling kann sich sicher darauf statt auf die Framework-Version stützen. |
playwright | Die @playwright/test-Versionsspanne, gegen die diese Framework-Version gebaut und getestet ist. |
node | Die minimal benötigte Node.js-Version dieser Framework-Version. |
appium | Die minimale Appium-Server-Hauptversion für Desktop-/Mobile-Tests. Der Appium-Server selbst läuft außerhalb dieses npm-Pakets (siehe Neue App hinzufügen für das Appium-Setup) — das ist eine Support-Aussage, keine Abhängigkeit, die dein Paketmanager installiert. |
browser.chromium | Die Chromium-Hauptversion, die die unterstützte Playwright-Untergrenze mitbringt — relevant, wenn deine Umgebung einen bestimmten Browser-Build fest vorschreibt. |
Jede weitere Komponente (z. B. outlook) | Erscheint nur, wenn eine mitgelieferte App sie tatsächlich unterstützt — siehe Eine mitgelieferte Standard-App einbinden oben. Fehlt eine Komponente, deckt sie aktuell keine mitgelieferte App ab — nicht, dass sie dauerhaft unsupported wäre. |
Vergleiche supportMatrix mit deiner eigenen Umgebung — Node-Version, die in pm/package.json gepinnte Playwright-Version, deine Appium-Server-Version, dein Browser-Build — bevor du eine neuere Framework-Version installierst, um zu sehen, ob sie passt, ohne sie vorher zu installieren. Denselben Block kann jedes externe Tooling, das dieses Paket konsumiert (ein CI-Check, ein internes Kompatibilitäts-Skript, ein Test-Management-Tool), maschinell auswerten, statt Release-Notes zu parsen.
Um ihn zu prüfen, ohne etwas in dein Projekt zu installieren, lade nur das Paket-Tarball mit derselben Registry-Authentifizierung wie in Quickstart — Schritt 3 herunter und lies die Datei direkt daraus:
npm pack @meintest/cc-testframework-templates@<zielversion> \
--registry=https://itsbusiness.vercel.app/api/tmgmt/npm/ \
--//itsbusiness.vercel.app/api/tmgmt/npm/:_authToken=$CC_LICENSE_KEY
tar -xzf meintest-cc-testframework-templates-<zielversion>.tgz package/manifest.json -O
Ersetze <zielversion> durch die Version, die du prüfen willst, oder lasse @<zielversion> für die neueste weg.
Alle Details
Manuelle GlobalConfig-Registrierung, mehr zu Electron (Lifecycle-Steps, Voraussetzungen), Mobile-Apps, oder eine App verkabeln, deren Controls du bereits von Hand geschrieben hast — alles im vollständigen Guide.
📧 Fragen? Kontakt: jens.szelag@itsbusiness.ch
itsbusiness AG · Bern · Schweiz