chiark / gitweb /
js test: synch: wait for api queue empty
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 21 Jul 2021 20:09:47 +0000 (21:09 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 21 Jul 2021 20:45:51 +0000 (21:45 +0100)
Otheerwise we can lose a race, if we somehow keep the browser JS
environment and the Otter game server busy enough that the browser
doesn't manage to empty its api queue.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
wdriver/wdriver.rs

index ee2d619f55d67c1b7022f6464625186ce35bae46..ec07a46f2b1a60cafce9d485948653e88b1404c6 100644 (file)
@@ -665,10 +665,11 @@ impl<'g> WindowGuard<'g> {
             ("wanted", &gen.to_string())
           ]).subst(r#"
             var done = arguments[0];
-            if (gen >= @wanted@) { done(gen); return; }
+            function no_queue() { return !api_queue.length && !api_posting; }
+            if (gen >= @wanted@ && no_queue()) { done(gen); return; }
             window.test_update_hook = function() {
               window.test_update_hook = function() { };
-              done(gen);
+              done(no_queue() ? gen : 0);
             };
           "#)?
         )