App-UI-tests
OpenFactory kan herbruikbare browserworkflows uitvoeren in beheerde desktop tester VMs. De applicatie kan door OpenFactory worden geïmplementeerd of overal worden gehost waar de tester VM bij kan.
Scenario’s combineren semantische acties zoals open, click, type, key, wait en assert met screenshots, browserdiagnostiek en een vastgelegd oordeel. Ze passen het best bij een bekende gebruikersflow; gebruik de autonomous walker voor begrensde ontdekking.
Scenario maken en uitvoeren
Haal de tester VM van de app op:
ensure_tester_vm(app="my-app", app_url="https://staging.example.com")Sla daarna een scenario op waarvan de stappen betekenisvolle labels op het scherm gebruiken:
[
{ "action": "open_url", "value": "${APP_URL}" },
{ "action": "type", "target": "email field", "value": "${EMAIL}" },
{ "action": "type", "target": "password field", "value": "${PASSWORD}" },
{ "action": "click", "target": "Sign in" },
{ "action": "assert_text", "expect": "Dashboard" },
{ "action": "assert_no_error" }
]Gebruik create_app_scenario en voer vervolgens het teruggegeven scenario-ID uit met
run_app_scenario. De eerste run lost elementen op via OmniParser. Latere runs kunnen
de verharde elementcache hergebruiken en alleen gewijzigde stappen opnieuw oplossen.
Controleer bij het diagnosticeren van een resultaat of elke stap uit cache kwam of is geparsed.
Wat een geslaagde run betekent
Een rapport telt alleen als validatie wanneer:
- de status
passedis; - de bedoelde omgeving en revisie zijn getarget;
- eventuele staging-protection en applicatielogin zijn voltooid; en
- assertions binnen het product zijn uitgevoerd, niet op een login- of beschermingspagina.
Een geslaagd scenario toont alleen de gedeclareerde flow en assertions. Het bewijst geen volledige applicatiecorrectheid, toegankelijkheid, beveiliging of cross-browser gedrag.
Variabelen en secrets
Stappen verwijzen naar waarden als ${VAR} en TOTP-seeds als ${totp:VAR}. Niet-geheime
defaults mogen bij het scenario staan. Secrets kunnen in de versleutelde key store van
de eigenaar worden opgeslagen wanneer het scenario wordt aangemaakt; single-run overrides
die aan run_app_scenario worden doorgegeven, worden voor die run samengevoegd en niet
persistent gemaakt.
Plaats geen letterlijke wachtwoorden, tokens of TOTP-seeds in staptekst, scenariobeschrijvingen,
screenshots of issue-exporten. Voor eenmalige codes per e-mail vereist de actie email_otp
een actieve, expliciet gekoppelde Gmail-integratie voor de scenari-eigenaar.
Nuttige assertions
assert_textcontroleert verwachte zichtbare tekst.assert_no_errorcontroleert ingebouwde of meegeleverde foutzinnen.assert_visualvergelijkt een perceptual hash met een opgeslagen baseline.assert_stablebemonster een regio op onverwacht flikkeren of verdwijnen.assert_progresscontroleert dat een streamingregio gedurende een minimumperiode blijft veranderen.networkkan het netwerk van de tester VM onderbreken en herstellen voor recoverytests.
Visuele en temporele assertions zijn heuristieken. Stem drempels af op stabiele testdata en bekijk vastgelegde frames voordat u drift als productdefect behandelt.
Directe en opgenomen tests
Voor verkennend werk stuurt u de VM aan met desktop_open_url, desktop_screenshot,
desktop_click, desktop_type en gerelateerde desktoptools. Gebruik start_app_test,
record_app_test_step en finish_app_test wanneer die handmatige reeks een controleerbare
run moet worden.
annotate_screenshot kan gelabelde vakken aan bewijs toevoegen. Een annotatie legt uit
wat een reviewer moet bekijken; het bewijst niet op zichzelf dat het element werkte.
Operationele opmerkingen
- Tester VMs worden per app/host hergebruikt. Schaal de tester pool voor parallel werk in plaats van willekeurige duplicaten aan te maken.
- De standaard tester heeft geen extra persistenceschijf. Vraag persistence alleen aan wanneer state een reboot moet overleven en accepteer de langere first boot.
- Een client timeout annuleert backendwerk niet per se; inspecteer de run voordat u opnieuw probeert.
- Houd rapporten privé tenzij screenshots en diagnostiek op gevoelige gegevens zijn gecontroleerd.