diff --git a/instances/templates/instance.html b/instances/templates/instance.html
index 34c2aa4f..c5317690 100644
--- a/instances/templates/instance.html
+++ b/instances/templates/instance.html
@@ -652,11 +652,12 @@
", source, re.S).group(1)
+ script = script.replace("{{ instance.status|lower }}", "1").replace(
+ "{% url 'instances:status' instance.id %}", "/instances/1/status/"
+ )
+ js = """
+ const vm = require("vm");
+ const results = {};
+ for (const answer of [1, 5]) {
+ let reloads = 0;
+ const page = {
+ pollWhileVisible: (interval, request, onData) => { onData({status: answer}); return {stop() {}}; },
+ $: () => ({submit() {}}),
+ };
+ page.window = {location: {reload: () => reloads++}};
+ Object.defineProperty(page, "status", {get: () => "", set: () => {}});
+ vm.runInNewContext(SCRIPT, vm.createContext(page));
+ results[answer] = reloads;
+ }
+ console.log(JSON.stringify(results));
+ """.replace("SCRIPT", json.dumps(script))
+ out = subprocess.run(["node", "-e", js], capture_output=True, text=True, timeout=30)
+ self.assertEqual(out.returncode, 0, out.stderr)
+ self.assertEqual(json.loads(out.stdout), {"1": 0, "5": 1})