diff --git a/src/browsergym/workarena/tasks/base.py b/src/browsergym/workarena/tasks/base.py index 34a8c1e..2684eca 100644 --- a/src/browsergym/workarena/tasks/base.py +++ b/src/browsergym/workarena/tasks/base.py @@ -142,11 +142,16 @@ def setup(self, page: playwright.sync_api.Page, do_start=True) -> tuple[str, dic goal, info = self.setup_goal(page=page) # Load a few utility functions for init scripts - page.context.add_init_script(path=SNOW_JS_UTILS_FILEPATH) - - # Add the initialization scripts to the page context - for script in self.get_init_scripts(): - page.context.add_init_script(script) + with open(SNOW_JS_UTILS_FILEPATH, "r") as f: + utils_script = f.read() + + # Merge all init scripts in a single file so they're guaranteed to be + # executed in order and in a shared context. + init_scripts = [utils_script] + self.get_init_scripts() + init_script_js = "\n".join(init_scripts) + # Install initialization scripts in existing pages, and register them + # in the page context so that future pages will run them on creation. + page.context.add_init_script(init_script_js) # Start the task if requested if do_start: