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})