Skip to content

MiniWoB++ v1.0: Gymnasium Integration and Expanded Actions

Latest
Compare
Choose a tag to compare
@ppasupat ppasupat released this 14 Aug 17:07
· 8 commits to master since this release
553daee

v1.0 Release notes

In this release, we fully integrated MiniWoB++ with Gymnasium, which provides a standardized API for reinforcement learning. All MiniWoB++ environments can be easily instantiated using gymnasium.make and can be transformed via wrappers. The observations and actions are now fully typed and can likewise be transformed.

Additionally, we expanded the set of possible actions on web pages to include mouse dragging, scrolling, and pressing key combinations. Many aspects of the action space, such as the allowed key combinations or scrolling duration, can be customized. Finally, we added 18 environments from the hidden test set.

Breaking Changes

The upgrade to Python 3 and integration with Gymnasium means that old code that uses MiniWoB++ is likely to break. We recommend updating the code as follows (see the Basic Usage page for an example):

  • Update the code to Python 3.8+.
  • Environment instantiation: env = MiniWoBEnvironment('click-test-2')env = gymnasium.make('miniwob/click-test-2-v1')
  • Running multiple instances in parallel is no longer supported. The observation returned by env.reset() and env.step(action) is now a single observation instead of a list. Similarly, the action argument in env.step(action) should be a single action.
  • The env.reset(seed) method now returns (observation, info) instead of just observation . The observation is a Python dict defined by the observation space.
  • The action in env.step(action) should be a Python dict defined by the action space. The env.step(action) method now returns (observation, reward, terminated, truncated, info), though the added truncated is always False.

A less recommended option is to use the Legacy Release of MiniWoB++, which is written in Python 2.

New Features and Improvements

  • Updated the code to Python 3.8+ and Selenium 4.5 (#7)
  • Integrate the code with Gymnasium. This includes registering the environments and redefining the action and observation spaces (#12, #20, #43)
  • Implemented more actions such as mouse dragging, scrolling, and pressing key combinations (#46)
  • Added ActionSpaceConfig, which allows selecting a subset of allowed actions and configuring each action type (#25)
  • Added presets for ActionSpaceConfig, which configure the action space following previous works on MiniWoB++ (#65)
  • Added 18 environments from the hidden test set (#69)
  • Added code standardization enforcement, including full type annotation (#9, #16)
  • Added integration tests, including a check for seed determinism (#13, #18)
  • Added the project to PyPI (#56, #61)

Bug Fixes

  • Made the environments fully deterministic for a given random seed unless impossible (#18)
  • Fixed issues with screenshots not being scaled correctly (#45)
  • Renamed environments to reduce confusion: drag-item → drag-circle and drag-shape → drag-single-shape (#21, #69).

Documentation Updates

  • Added a documentation site with guides on how to use the API and the description of each environment (#22, #23, #31, #47, #50).
  • Updated README.md, LICENSE, and CONTRIBUTING.md (#2, #47, #50)
  • Added templates for GitHub issues and pull requests (#8)
  • Added logo and banner (#35)
  • Added a project roadmap (#59)

Contributors

This release includes contributions from: @elliottower, @jjshoots, @jkterry1, @mgoulao, @ppasupat, @pseudo-rnd-thoughts, @rodrigodelazcano, @younik