Spaces:
Sleeping
Sleeping
| import re | |
| import gymnasium as gym | |
| import pytest | |
| from browsergym.core.registration import register_task | |
| from browsergym.core.task import AbstractBrowserTask | |
| class RegistrationTestTask(AbstractBrowserTask): | |
| 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() | |