Skip to content

Commit 75f6932

Browse files
committed
bugfix
1 parent 66782a2 commit 75f6932

4 files changed

Lines changed: 19 additions & 20 deletions

File tree

src/browsergym/workarena/tasks/form.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def _get_form(self, page):
8181
# ... augment with rendered metadata
8282
# XXX: Additional useful info is present in the rendered HTML. We extract it from there.
8383
for f in self.table_metadata:
84-
loc = page.frame(name=self.js_prefix).locator(f"#sys_display\.{self.table_name}\.{f}")
84+
loc = page.frame(name=self.js_prefix).locator(f"#sys_display.{self.table_name}.{f}")
8585
if loc.count() > 0:
8686
# Check if the field is dependent on another field
8787
self.table_metadata[f]["dependent_on_field"] = loc.first.get_attribute(

src/browsergym/workarena/tasks/scripts/validate.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ def validate_task(task_config, task_class, page=None):
128128
chat_messages = []
129129
task.cheat(page=page, chat_messages=chat_messages)
130130
page.wait_for_timeout(2000)
131-
task_successful = task.validate(page, chat_messages)[1]
131+
reward, done, _, _ = task.validate(page, chat_messages)
132+
task_successful = done is True and reward == 1.0
132133
task.teardown()
133134
tries += 1
134135
if task_successful:

src/browsergym/workarena/tasks/service_catalog.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323
ORDER_DEVELOPMENT_LAPTOP_PC_TASK_CONFIG_PATH,
2424
ORDER_LOANER_LAPTOP_TASK_CONFIG_PATH,
2525
)
26-
from browsergym.workarena.api.requests import (
26+
from .utils.form import fill_text
27+
from ..api.requests import (
2728
get_request_by_id,
2829
db_delete_from_table,
2930
)
30-
from browsergym.workarena.tasks.base import AbstractServiceNowTask
31+
from .base import AbstractServiceNowTask
3132

3233
ADDITIONAL_SOFTWARE = [
3334
"Slack",
@@ -310,18 +311,10 @@ def cheat(self, page: Page, chat_messages: list[str]) -> None:
310311
element_id = element_control.get_attribute("id") # this look superfluous
311312
text_element = iframe.query_selector(f'[id="{element_id}"]')
312313
text_element.click()
313-
from .utils.form import fill_text
314-
315314
fill_text(page=page, input_field=text_element, value=value, iframe=iframe)
315+
316316
elif control_type == "select-one":
317-
select_options = iframe.query_selector(f'select[id="{element_id}"]', strict=True)
318-
select_options.click()
319-
options = select_options.query_selector_all("option")
320-
for option in options:
321-
if option.inner_text().startswith(value):
322-
page.keyboard.press("Enter")
323-
break
324-
page.keyboard.press("ArrowDown")
317+
iframe.locator(f"id={element_id}").select_option(value)
325318
else:
326319
raise ValueError(f"Unknown control type {control_type}")
327320

@@ -475,10 +468,13 @@ def validate(self, page: Page, chat_messages: list[str]) -> tuple[int, bool, str
475468

476469

477470
def option_match_heuristic(value, option):
478-
value = str(value).lower()
479-
option = str(option).lower()
480-
option = option.replace("_", " ")
481-
return value == option
471+
def _process(x):
472+
x = str(x).lower()
473+
x = x.replace("_", "")
474+
x = x.replace(" ", "")
475+
return x
476+
477+
return _process(value) == _process(option)
482478

483479

484480
class OrderDeveloperLaptopTask(OrderHardwareTask):

tests/test_random_config_generation.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,9 @@ def test_cheat_from_random_config(task_entrypoint, random_seed: int, page: Page)
9090
task = task_entrypoint()
9191
task._generate_random_config(seed=random_seed, page=page)
9292
chat_messages = []
93-
assert task.validate(page, chat_messages)[1] is False
93+
reward, done, message, info = task.validate(page, chat_messages)
94+
assert done is False and reward == 0.0
9495
task.cheat(page=page, chat_messages=chat_messages)
95-
assert task.validate(page, chat_messages)[1] is True
96+
reward, done, message, info = task.validate(page, chat_messages)
97+
assert done is True and reward == 1.0
9698
task.teardown()

0 commit comments

Comments
 (0)