Verbesserung
Top-Thema
Wichtig
Kleinigkeit
Wichtig
Das ReplayHistoryCommand wird benutzt um Client und Server Historie zu synchronisieren. Beispielsweise im Rahmen der dynamischen Sichten wenn mehrere Komponenten erzeugt und ersetzt werden.
Fasst man die Ersetzung bzw. Erzeugung von dynamischen Komponenten in einen gescripteten Test zusammen und lässt diesen anschließend starten, so bleibt der ScriptRecorder in aller Regel stehen. Führt man hingegen die einzelnen ApplicationAction`s schrittweise aus, so funktioniert der `ScriptRecorder wie erwartet.
Das Problem liegt an einem schnellen, mehrfachen Reload der Seite, der in Tests dynamischer Sichten häufig auftritt. Es kann der Fall auftreten, dass nach dem clientseitigen Aufruf zum Start des ReplayHistoryCommand`s die Seite bereits neugeladen wurde. Infolgedessen ist das `MainLayout neu gebaut und die "alten Controls" sind nicht mehr vorhanden.
Das führt dazu dass bein serverseitigen Ausführen des Kommandos der CommandListener, i.a.R. das Control, nicht mehr existiert und somit nicht gefunden wird. Anschließend wird die Seite komplett neugeladen und eine Fehlermeldung "Target Control not found" erscheint. Dadurch verliert der ScriptRecorder seinen Kontext und kann nicht mit dem restlichen Skript fortfahren.
Umsetzung
Letzteres kann verhindert werden indem man das Kommando als System Command deklariert.
Test
Starte einen Test der dynamischen Sichten, bspw. TestComponentEdit.script.xml und drücke den Start Knopf des `ScriptRecorder`s. Der Test sollte ohne Unterbrechung bis zum Ende durchlaufen.