Spaces:
Running
Running
File size: 2,400 Bytes
dd39c08 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
import re
import gymnasium as gym
import pytest
from browsergym.core.registration import register_task
from browsergym.core.task import AbstractBrowserTask
class RegistrationTestTask(AbstractBrowserTask):
@classmethod
def get_task_id(cls):
raise NotImplementedError
def __init__(self, a: str = "", b: int = 0, c: bool = False, *args, **kwargs):
super().__init__(*args, **kwargs)
self.a = a
self.b = b
self.c = c
def setup(self, page):
return "", {}
def teardown(self):
pass
def validate(self, page, chat_messages):
return 0, True, "", {}
register_task("test_task", RegistrationTestTask)
register_task(
"test_task_with_defaults",
RegistrationTestTask,
task_kwargs={"a": "new value"},
default_task_kwargs={"b": 1},
)
def test_registration():
with pytest.raises(ValueError):
register_task(
"test_task_forbidden",
RegistrationTestTask,
task_kwargs={"a": "new value"},
default_task_kwargs={"a": "other value"},
)
env = gym.make("browsergym/test_task")
assert env.unwrapped.task_kwargs == {}
env.reset()
env.unwrapped.task.a == ""
env.unwrapped.task.b == 0
env.unwrapped.task.c == False
env.close()
env = gym.make("browsergym/test_task", task_kwargs={"a": "other", "b": 1})
assert env.unwrapped.task_kwargs == {"a": "other", "b": 1}
env.reset()
env.unwrapped.task.a == "other"
env.unwrapped.task.b == 1
env.unwrapped.task.c == False
env.close()
env = gym.make("browsergym/test_task_with_defaults")
assert env.unwrapped.task_kwargs == {}
env.reset()
env.unwrapped.task.a == "new value"
env.unwrapped.task.b == 1
env.unwrapped.task.c == False
env.close()
env = gym.make("browsergym/test_task_with_defaults", task_kwargs={"b": 2})
assert env.unwrapped.task_kwargs == {"b": 2}
env.reset()
env.unwrapped.task.a == "new value"
env.unwrapped.task.b == 2
env.unwrapped.task.c == False
env.close()
env = gym.make("browsergym/test_task_with_defaults", task_kwargs={"a": "other"})
assert env.unwrapped.task_kwargs == {"a": "other"}
with pytest.raises(
expected_exception=ValueError,
match=re.compile("Illegal attempt to override frozen parameters"),
):
env.reset()
|