Skip to content

Resolve "Fix flaky System Tests (for good?)"

Michael Prilop requested to merge 919-fix-flaky-system-tests-for-good into main

Nach dem Einbau von capybara-lockstep kann Ich eine Stunde lange den DSB System test in Schleife laufen lassen ohne einen Fehler zu sehen. Wenn sich dies auch auf CI hält dann hätten wir die flaky Tests endlich ausgemerzt (naja bis auf manchmal natürlich ;).

DEBUG_LOCKSTEP=true PARALLEL_WORKERS=1 rails test:system
[capybara-lockstep] Synchronizing
[capybara-lockstep] Finished waiting for browser
[capybara-lockstep] Synchronized successfully [130 ms]
[capybara-lockstep] Synchronizing
[capybara-lockstep] Synchronized successfully [13 ms]
[capybara-lockstep] Synchronizing
[capybara-lockstep] Finished waiting for browser
[capybara-lockstep] Synchronized successfully [425 ms]
[capybara-lockstep] Synchronizing
[...]

sieht man wo der browser sync überall klappt (z.B. nicht bei tests von rails_admin backend) und wie lange auf den sync gewartet wird. Capybara Lockstep synced nach jedem capybara "command" (also quasi nach jeder Zeile - dort wo wir sonst bei Problemen ein sleep 1 eingeschoben hätten).

Erstmal erscheint es als ob dadurch der Test wesentlich länger läuft, aber mir erscheint, dass ein großteil der Zeit sowieso capybara selbst genauso lang gewartet hätte. Lokal liefen (parallelisiert) die SystemTests mit Lockstep auf jeden Fall immer schneller (~ 140 sekunden) als ohne ( ~ 160 sekunden) weil es auch immer Retries gab. Im CI Sehe Ich auch keine wesentlich längeren Laufzeiten (immer ca. 3 minuten 10 Sekunden pro Test).

Der einzige durch Lockstep neu aufgetretene Fehler wurde mit c3e87646 behoben. Der war aber auch nicht flaky sondern immer reproduzierbar. Eventuell ein Problem, dass within mit {} Block auf einer Zeile steht. Wenn die inneren Aktionen mit do/end Block auf mehreren Zeilen stehen funktioniert es.

Closes #919 (closed)

Edited by Michael Prilop

Merge request reports