From 7844db38cd22755370755c8931e10e097978616b Mon Sep 17 00:00:00 2001 From: Simone Baratta Date: Fri, 4 Jul 2025 19:18:50 +0200 Subject: [PATCH 1/2] Workarena/Base: Add init scripts a single JS file in all page/frames. --- src/browsergym/workarena/tasks/base.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/browsergym/workarena/tasks/base.py b/src/browsergym/workarena/tasks/base.py index 34a8c1e..6c6ab4b 100644 --- a/src/browsergym/workarena/tasks/base.py +++ b/src/browsergym/workarena/tasks/base.py @@ -142,11 +142,19 @@ 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) + page.evaluate(init_script_js) + for f in page.frames: + f.evaluate(init_script_js) # Start the task if requested if do_start: From 65c4492834d1138e567719314aaf48b9c621e8ba Mon Sep 17 00:00:00 2001 From: Omar Younis Date: Wed, 16 Jul 2025 10:50:40 -0700 Subject: [PATCH 2/2] remove evaluate --- src/browsergym/workarena/tasks/base.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/browsergym/workarena/tasks/base.py b/src/browsergym/workarena/tasks/base.py index 6c6ab4b..2684eca 100644 --- a/src/browsergym/workarena/tasks/base.py +++ b/src/browsergym/workarena/tasks/base.py @@ -152,9 +152,6 @@ def setup(self, page: playwright.sync_api.Page, do_start=True) -> tuple[str, dic # 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) - page.evaluate(init_script_js) - for f in page.frames: - f.evaluate(init_script_js) # Start the task if requested if do_start: