├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug.md │ ├── proposal.md │ └── question.md ├── PULL_REQUEST_TEMPLATE.md ├── stale.yml └── workflows │ ├── build-docs.yml │ ├── build.yml │ ├── pre-commit.yml │ └── release.yml ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── Makefile ├── README.md ├── ding.Dockerfile ├── docs ├── .gitignore ├── 404.md ├── README.md ├── _scripts │ ├── gen_env_list.py │ ├── gen_mds.py │ ├── move_404.py │ └── utils.py ├── _static │ ├── img │ │ ├── miniwobplusplus-favicon.png │ │ ├── miniwobplusplus-github.png │ │ ├── miniwobplusplus-white.svg │ │ └── miniwobplusplus.svg │ └── videos │ │ └── miniwob.mp4 ├── conf.py ├── content │ ├── demonstrations.md │ ├── dev_environment.md │ ├── javascript_api.md │ ├── python_setup.md │ ├── python_usage.md │ └── viewing.md ├── environments │ └── .gitkeep ├── index.md └── requirements.txt ├── html ├── .gitignore ├── common │ ├── shapes.js │ ├── special │ │ ├── book-flight │ │ │ └── domestic.js │ │ ├── checkbox-numbers │ │ │ ├── ch_0.png │ │ │ ├── ch_1.png │ │ │ ├── ch_2.png │ │ │ ├── ch_3.png │ │ │ ├── ch_4.png │ │ │ ├── ch_5.png │ │ │ ├── ch_6.png │ │ │ ├── ch_7.png │ │ │ ├── ch_8.png │ │ │ └── ch_9.png │ │ ├── click-pie │ │ │ ├── raphael.icons.min.js │ │ │ ├── raphael.min.js │ │ │ └── wheelnav.min.js │ │ ├── drag-cube │ │ │ ├── blank.png │ │ │ ├── cube.css │ │ │ └── cube.js │ │ ├── email-inbox-nl │ │ │ └── templates.js │ │ ├── email-inbox │ │ │ ├── delete.png │ │ │ ├── email-inbox.css │ │ │ ├── forward.png │ │ │ ├── left-arrow-white.png │ │ │ ├── left-arrow.png │ │ │ ├── reply.png │ │ │ ├── search.png │ │ │ ├── send.png │ │ │ ├── star-clicked.png │ │ │ └── star.png │ │ ├── navigate-tree │ │ │ ├── images │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── file.gif │ │ │ │ ├── folder-closed.gif │ │ │ │ ├── folder.gif │ │ │ │ ├── minus.gif │ │ │ │ ├── plus.gif │ │ │ │ ├── treeview-black-line.gif │ │ │ │ ├── treeview-black.gif │ │ │ │ ├── treeview-default-line.gif │ │ │ │ ├── treeview-default.gif │ │ │ │ ├── treeview-famfamfam-line.gif │ │ │ │ ├── treeview-famfamfam.gif │ │ │ │ ├── treeview-gray-line.gif │ │ │ │ ├── treeview-gray.gif │ │ │ │ ├── treeview-red-line.gif │ │ │ │ └── treeview-red.gif │ │ │ ├── jquery.treeview.css │ │ │ └── jquery.treeview.min.js │ │ ├── search-engine │ │ │ └── jquery.twbsPagination.min.js │ │ ├── social-media │ │ │ ├── like-hover.png │ │ │ ├── like.png │ │ │ ├── more-hover.png │ │ │ ├── more.png │ │ │ ├── reply-hover.png │ │ │ ├── reply.png │ │ │ ├── retweet-hover.png │ │ │ ├── retweet.png │ │ │ ├── share-hover.png │ │ │ └── share.png │ │ ├── text-editor │ │ │ ├── quill.min.js │ │ │ └── quill.snow.css │ │ └── tic-tac-toe │ │ │ ├── o.png │ │ │ └── x.png │ └── ui_utils.js ├── core │ ├── core.css │ ├── core.js │ ├── d3.v3.min.js │ ├── jquery-ui-hacks.js │ ├── jquery-ui │ │ ├── external │ │ │ └── jquery │ │ │ │ └── jquery.js │ │ ├── images │ │ │ ├── ui-icons_444444_256x240.png │ │ │ ├── ui-icons_555555_256x240.png │ │ │ ├── ui-icons_777620_256x240.png │ │ │ ├── ui-icons_777777_256x240.png │ │ │ ├── ui-icons_cc0000_256x240.png │ │ │ └── ui-icons_ffffff_256x240.png │ │ ├── jquery-ui.min.css │ │ ├── jquery-ui.min.js │ │ ├── jquery-ui.structure.min.css │ │ └── jquery-ui.theme.min.css │ ├── jscolor.min.js │ └── record.js ├── flight │ ├── AA │ │ ├── apps │ │ │ └── common │ │ │ │ └── js │ │ │ │ ├── aacom.js │ │ │ │ ├── aacomDevice.js │ │ │ │ ├── airportcode.js │ │ │ │ ├── cookieconsent.js │ │ │ │ ├── jquery │ │ │ │ └── aacom │ │ │ │ │ ├── plugins │ │ │ │ │ ├── aaAirportAutoComplete.js │ │ │ │ │ ├── aaCache.js │ │ │ │ │ ├── aaCookie.js │ │ │ │ │ ├── aaCountryLanSelect.js │ │ │ │ │ ├── aaDropdownPanel.js │ │ │ │ │ ├── aaFooterAds.js │ │ │ │ │ └── aaTextBoxMessage.js │ │ │ │ │ └── utilities │ │ │ │ │ ├── aaUtilities-2.1.js │ │ │ │ │ └── aaUtils.js │ │ │ │ └── wa.js │ │ ├── content │ │ │ ├── common │ │ │ │ └── css │ │ │ │ │ └── v3 │ │ │ │ │ ├── core.css │ │ │ │ │ ├── jquery-ui-1.10-aa.css │ │ │ │ │ ├── reservation │ │ │ │ │ └── findFlights │ │ │ │ │ │ └── mobile │ │ │ │ │ │ └── findFlights.css │ │ │ │ │ └── responsive.css │ │ │ ├── fonts │ │ │ │ ├── american-v2 │ │ │ │ │ ├── americansans-bold.woff │ │ │ │ │ ├── americansans-light.woff │ │ │ │ │ ├── americansans-medium.woff │ │ │ │ │ └── americansans-regular.woff │ │ │ │ └── icons │ │ │ │ │ └── american-icons-v4-4.woff │ │ │ └── images │ │ │ │ ├── chrome │ │ │ │ ├── icons │ │ │ │ │ └── loading.gif │ │ │ │ └── rebrand │ │ │ │ │ ├── aa-flight-icon.png │ │ │ │ │ ├── aa-icons-flags-sprite.png │ │ │ │ │ ├── aa-logo.png │ │ │ │ │ ├── down-arrow.png │ │ │ │ │ ├── favicon.png │ │ │ │ │ ├── oneworld.png │ │ │ │ │ ├── shadow-down.png │ │ │ │ │ ├── shadow-vertical-150.png │ │ │ │ │ ├── shadow12-down.png │ │ │ │ │ ├── shadow12-up.png │ │ │ │ │ └── shadow3-down.png │ │ │ │ └── graphics │ │ │ │ └── icons │ │ │ │ └── aa-jqueryUIicons-sprite.png │ │ ├── dataset-AA.js │ │ ├── index.html │ │ ├── js │ │ │ ├── aa │ │ │ │ ├── common │ │ │ │ │ ├── aa-utility-menu.js │ │ │ │ │ ├── aacom-ui-1.0.0.js │ │ │ │ │ └── core-2.0.0.js │ │ │ │ ├── modules │ │ │ │ │ ├── airportLookup.js │ │ │ │ │ ├── ajax.js │ │ │ │ │ ├── browserdetect.js │ │ │ │ │ ├── commonsetup.js │ │ │ │ │ ├── mobileDatePicker.js │ │ │ │ │ ├── utilities.js │ │ │ │ │ └── widgets.js │ │ │ │ ├── plugins │ │ │ │ │ └── noBounce.js │ │ │ │ └── shopping │ │ │ │ │ └── mobileSearchFlights.js │ │ │ └── libs │ │ │ │ ├── jquery │ │ │ │ ├── jquery-1.11.1.min.js │ │ │ │ ├── jquery-migrate-1.2.1.min.js │ │ │ │ └── ui │ │ │ │ │ └── 1.10 │ │ │ │ │ ├── i18n │ │ │ │ │ └── jquery.ui.datepicker-en-aa.js │ │ │ │ │ └── jquery-ui.min.js │ │ │ │ └── modernizr-2.8.1.js │ │ ├── original.html │ │ ├── surrogate │ │ │ ├── airportLookup.js │ │ │ └── airports.json │ │ └── wrapper.html │ ├── Alaska-auto-medium │ │ ├── images │ │ │ ├── aura.png │ │ │ ├── cal3.png │ │ │ ├── chkboxes3.png │ │ │ ├── clear_text2.png │ │ │ ├── collapse.png │ │ │ ├── expand.png │ │ │ ├── flight_arrow.png │ │ │ ├── geo.png │ │ │ ├── home.png │ │ │ ├── info2.png │ │ │ ├── leftright.png │ │ │ ├── logo2.png │ │ │ └── logos │ │ │ │ ├── AA.png │ │ │ │ ├── AS.png │ │ │ │ ├── DL.png │ │ │ │ └── VX.png │ │ ├── index.html │ │ ├── mobileweb-v3-28-6227-21813.css │ │ ├── scripts │ │ │ ├── datepickr.js │ │ │ ├── main.js │ │ │ └── shopbook.js │ │ ├── stylesheets │ │ │ └── circular │ │ │ │ ├── ASCircularWeb-Bold.woff │ │ │ │ └── ASCircularWeb-Book.woff │ │ ├── surrogate │ │ │ ├── airportLookup.js │ │ │ └── airports.json │ │ └── wrapper.html │ ├── Alaska-auto │ │ ├── images │ │ │ ├── aura.png │ │ │ ├── cal3.png │ │ │ ├── chkboxes3.png │ │ │ ├── clear_text2.png │ │ │ ├── collapse.png │ │ │ ├── expand.png │ │ │ ├── flight_arrow.png │ │ │ ├── geo.png │ │ │ ├── home.png │ │ │ ├── info2.png │ │ │ ├── leftright.png │ │ │ ├── logo2.png │ │ │ └── logos │ │ │ │ ├── AA.png │ │ │ │ ├── AS.png │ │ │ │ ├── DL.png │ │ │ │ └── VX.png │ │ ├── index.html │ │ ├── mobileweb-v3-28-6227-21813.css │ │ ├── scripts │ │ │ ├── datepickr.js │ │ │ ├── main.js │ │ │ └── shopbook.js │ │ ├── stylesheets │ │ │ └── circular │ │ │ │ ├── ASCircularWeb-Bold.woff │ │ │ │ └── ASCircularWeb-Book.woff │ │ ├── surrogate │ │ │ ├── airportLookup.js │ │ │ └── airports.json │ │ └── wrapper.html │ ├── Alaska │ │ ├── dataset-Alaska.js │ │ ├── images │ │ │ ├── aura.png │ │ │ ├── cal3.png │ │ │ ├── chkboxes3.png │ │ │ ├── clear_text2.png │ │ │ ├── collapse.png │ │ │ ├── expand.png │ │ │ ├── flight_arrow.png │ │ │ ├── geo.png │ │ │ ├── home.png │ │ │ ├── info2.png │ │ │ ├── leftright.png │ │ │ ├── logo2.png │ │ │ └── logos │ │ │ │ ├── AA.png │ │ │ │ ├── AS.png │ │ │ │ ├── DL.png │ │ │ │ └── VX.png │ │ ├── index.html │ │ ├── mobileweb-v3-28-6227-21813.css │ │ ├── original.html │ │ ├── scripts │ │ │ ├── datepickr.js │ │ │ ├── main.js │ │ │ └── shopbook.js │ │ ├── stylesheets │ │ │ └── circular │ │ │ │ ├── ASCircularWeb-Bold.woff │ │ │ │ └── ASCircularWeb-Book.woff │ │ ├── surrogate │ │ │ ├── airportLookup.js │ │ │ └── airports.json │ │ └── wrapper.html │ └── flight-common │ │ ├── inject.js │ │ ├── wrapper.css │ │ └── wrapper.js └── miniwob │ ├── bisect-angle.html │ ├── book-flight-nodelay.html │ ├── book-flight.html │ ├── chase-circle.html │ ├── choose-date-easy.html │ ├── choose-date-medium.html │ ├── choose-date-nodelay.html │ ├── choose-date.html │ ├── choose-list.html │ ├── circle-center.html │ ├── click-button-sequence.html │ ├── click-button.html │ ├── click-checkboxes-large.html │ ├── click-checkboxes-soft.html │ ├── click-checkboxes-transfer.html │ ├── click-checkboxes.html │ ├── click-collapsible-2-nodelay.html │ ├── click-collapsible-2.html │ ├── click-collapsible-nodelay.html │ ├── click-collapsible.html │ ├── click-color.html │ ├── click-dialog-2.html │ ├── click-dialog.html │ ├── click-link.html │ ├── click-menu-2.html │ ├── click-menu.html │ ├── click-option.html │ ├── click-pie-nodelay.html │ ├── click-pie.html │ ├── click-scroll-list.html │ ├── click-shades.html │ ├── click-shape.html │ ├── click-tab-2-easy.html │ ├── click-tab-2-hard.html │ ├── click-tab-2-medium.html │ ├── click-tab-2.html │ ├── click-tab.html │ ├── click-test-2.html │ ├── click-test-transfer.html │ ├── click-test.html │ ├── click-widget.html │ ├── copy-paste-2.html │ ├── copy-paste.html │ ├── count-shape.html │ ├── count-sides.html │ ├── drag-box.html │ ├── drag-circle.html │ ├── drag-cube.html │ ├── drag-items-grid.html │ ├── drag-items.html │ ├── drag-shapes.html │ ├── drag-sort-numbers.html │ ├── email-inbox-delete.html │ ├── email-inbox-forward-nl-turk.html │ ├── email-inbox-forward-nl.html │ ├── email-inbox-forward.html │ ├── email-inbox-important.html │ ├── email-inbox-nl-turk.html │ ├── email-inbox-noscroll.html │ ├── email-inbox-reply.html │ ├── email-inbox-star-reply.html │ ├── email-inbox.html │ ├── enter-date.html │ ├── enter-password.html │ ├── enter-text-2.html │ ├── enter-text-dynamic.html │ ├── enter-text.html │ ├── enter-time.html │ ├── find-midpoint.html │ ├── find-word.html │ ├── focus-text-2.html │ ├── focus-text.html │ ├── grid-coordinate.html │ ├── guess-number.html │ ├── highlight-text-2.html │ ├── highlight-text.html │ ├── identify-shape.html │ ├── login-user-popup.html │ ├── login-user.html │ ├── moving-items.html │ ├── multi-layouts.html │ ├── multi-orderings.html │ ├── navigate-tree.html │ ├── number-checkboxes.html │ ├── read-table-2.html │ ├── read-table.html │ ├── resize-textarea.html │ ├── right-angle.html │ ├── scroll-text-2.html │ ├── scroll-text.html │ ├── search-engine.html │ ├── simon-says.html │ ├── simple-algebra.html │ ├── simple-arithmetic.html │ ├── social-media-all.html │ ├── social-media-some.html │ ├── social-media.html │ ├── terminal.html │ ├── text-editor.html │ ├── text-transform.html │ ├── tic-tac-toe.html │ ├── unicode-test.html │ ├── use-autocomplete-nodelay.html │ ├── use-autocomplete.html │ ├── use-colorwheel-2.html │ ├── use-colorwheel.html │ ├── use-slider-2.html │ ├── use-slider.html │ ├── use-spinner.html │ └── visual-addition.html ├── installs ├── chrome.sh └── edge.sh ├── miniwob ├── __init__.py ├── action.py ├── constants.py ├── dom.py ├── environment.py ├── envs │ ├── __init__.py │ └── miniwob_envs.py ├── fields.py ├── instance.py ├── observation.py ├── registration.py ├── reward.py ├── screenshot.py ├── scripts │ ├── dump_observation.py │ ├── gen_env_classes.py │ └── record.py └── selenium_actions.py ├── miniwobplusplus-text.png ├── py.Dockerfile ├── pyproject.toml ├── setup.py ├── tests ├── __init__.py ├── test_action.py ├── test_api.py ├── test_environment.py └── utils.py └── viewer ├── main.js ├── style.css └── viewer.html /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: Farama-Foundation 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Submit a bug report 4 | title: "[Bug Report] Bug title" 5 | 6 | --- 7 | 8 | If you are submitting a bug report, please fill in the following details and use the tag [bug]. 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **Code example** 14 | Please try to provide a minimal example to reproduce the bug. Error messages and stack traces are also helpful. 15 | 16 | **System Info** 17 | Describe the characteristic of your environment: 18 | * Describe how miniwob-plusplus was installed (pip, docker, source, ...) 19 | * What OS/version of Linux you're using. Note that while we will accept PRs to improve Window's support, we do not officially support it. 20 | * Python version 21 | 22 | **Additional context** 23 | Add any other context about the problem here. 24 | 25 | ### Checklist 26 | 27 | - [ ] I have checked that there is no similar [issue](https://github.com/Farama-Foundation/miniwob-plusplus/issues) in the repo (**required**) 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/proposal.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Proposal 3 | about: Propose changes that are not fixes bugs 4 | title: "[Proposal] Proposal title" 5 | --- 6 | 7 | ### Proposal 8 | 9 | A clear and concise description of the proposal. 10 | 11 | ### Motivation 12 | 13 | Please outline the motivation for the proposal. 14 | Is your feature request related to a problem? e.g.,"I'm always frustrated when [...]". 15 | If this is related to another GitHub issue, please link here too. 16 | 17 | ### Pitch 18 | 19 | A clear and concise description of what you want to happen. 20 | 21 | ### Alternatives 22 | 23 | A clear and concise description of any alternative solutions or features you've considered, if any. 24 | 25 | ### Additional context 26 | 27 | Add any other context or screenshots about the feature request here. 28 | 29 | ### Checklist 30 | 31 | - [ ] I have checked that there is no similar [issue](https://github.com/Farama-Foundation/miniwob-plusplus/issues) in the repo (**required**) 32 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Ask a question 4 | title: "[Question] Question title" 5 | --- 6 | 7 | 8 | ### Question 9 | 10 | If you're a beginner and have basic questions, please ask on [r/reinforcementlearning](https://www.reddit.com/r/reinforcementlearning/) or in the [RL Discord](https://discord.com/invite/xhfNqQv) (if you're new please use the beginners channel). Basic questions that are not bugs or feature requests will be closed without reply, because GitHub issues are not an appropriate venue for these. 11 | 12 | Advanced/nontrivial questions, especially in areas where documentation is lacking, are very much welcome. 13 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Description 2 | 3 | Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. 4 | 5 | Fixes # (issue) 6 | 7 | ## Type of change 8 | 9 | Please delete options that are not relevant. 10 | 11 | - [ ] Bug fix (non-breaking change which fixes an issue) 12 | - [ ] New feature (non-breaking change which adds functionality) 13 | - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) 14 | - [ ] This change requires a documentation update 15 | 16 | ### Screenshots 17 | Please attach before and after screenshots of the change if applicable. 18 | 19 | 29 | 30 | # Checklist: 31 | 32 | - [ ] I have run the [`pre-commit` checks](https://pre-commit.com/) with `pre-commit run --all-files` (see `CONTRIBUTING.md` instructions to set it up) 33 | - [ ] I have commented my code, particularly in hard-to-understand areas 34 | - [ ] I have made corresponding changes to the documentation 35 | - [ ] My changes generate no new warnings 36 | - [ ] I have added tests that prove my fix is effective or that my feature works 37 | - [ ] New and existing unit tests pass locally with my changes 38 | 39 | 46 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an Issue or Pull Request becomes stale 4 | daysUntilStale: 60 5 | 6 | # Number of days of inactivity before an Issue or Pull Request with the stale label is closed. 7 | # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. 8 | daysUntilClose: 14 9 | 10 | # Only issues or pull requests with all of these labels are check if stale. Defaults to `[]` (disabled) 11 | onlyLabels: 12 | - more-information-needed 13 | 14 | # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable 15 | exemptLabels: 16 | - pinned 17 | - security 18 | - "[Status] Maybe Later" 19 | 20 | # Set to true to ignore issues in a project (defaults to false) 21 | exemptProjects: true 22 | 23 | # Set to true to ignore issues in a milestone (defaults to false) 24 | exemptMilestones: true 25 | 26 | # Set to true to ignore issues with an assignee (defaults to false) 27 | exemptAssignees: true 28 | 29 | # Label to use when marking as stale 30 | staleLabel: stale 31 | 32 | # Comment to post when marking as stale. Set to `false` to disable 33 | markComment: > 34 | This issue has been automatically marked as stale because it has not had 35 | recent activity. It will be closed if no further activity occurs. Thank you 36 | for your contributions. 37 | 38 | # Comment to post when removing the stale label. 39 | # unmarkComment: > 40 | # Your comment here. 41 | 42 | # Comment to post when closing a stale Issue or Pull Request. 43 | # closeComment: > 44 | # Your comment here. 45 | 46 | # Limit the number of actions per hour, from 1-30. Default is 30 47 | limitPerRun: 30 48 | 49 | # Limit to only `issues` or `pulls` 50 | only: issues 51 | 52 | # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': 53 | # pulls: 54 | # daysUntilStale: 30 55 | # markComment: > 56 | # This pull request has been automatically marked as stale because it has not had 57 | # recent activity. It will be closed if no further activity occurs. Thank you 58 | # for your contributions. 59 | 60 | # issues: 61 | # exemptLabels: 62 | # - confirmed -------------------------------------------------------------------------------- /.github/workflows/build-docs.yml: -------------------------------------------------------------------------------- 1 | name: Build Documentation 2 | on: 3 | push: 4 | branches: [ master ] 5 | 6 | permissions: 7 | contents: write 8 | 9 | jobs: 10 | docs: 11 | name: Generate Website 12 | runs-on: ubuntu-latest 13 | env: 14 | SPHINX_GITHUB_CHANGELOG_TOKEN: ${{ secrets.GITHUB_TOKEN }} 15 | steps: 16 | - uses: actions/checkout@v3 17 | 18 | - uses: actions/setup-python@v4 19 | with: 20 | python-version: '3.9' 21 | 22 | - name: Install dependencies 23 | run: pip install -r docs/requirements.txt 24 | 25 | - name: Install MiniWoB++ 26 | run: pip install -e . 27 | 28 | - name: Build Envs Docs 29 | run: python docs/_scripts/gen_mds.py 30 | 31 | - name: Build List of Environments 32 | run: python docs/_scripts/gen_env_list.py 33 | 34 | - name: Build 35 | run: sphinx-build -b dirhtml -v docs _build 36 | 37 | - name: Move 404 38 | run: mv _build/404/index.html _build/404.html 39 | 40 | - name: Update 404 links 41 | run: python docs/_scripts/move_404.py _build/404.html 42 | 43 | - name: Remove .doctrees 44 | run: rm -r _build/.doctrees 45 | 46 | - name: Upload to GitHub Pages 47 | uses: JamesIves/github-pages-deploy-action@v4 48 | with: 49 | folder: _build 50 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Try Build Image 2 | on: 3 | pull_request: 4 | push: 5 | 6 | permissions: 7 | contents: read # to fetch code (actions/checkout) 8 | 9 | jobs: 10 | build_origin: 11 | runs-on: ubuntu-latest 12 | timeout-minutes: 10 13 | strategy: 14 | matrix: 15 | python-version: 16 | - '3.8' 17 | steps: 18 | - uses: actions/checkout@v2 19 | - run: | 20 | docker build -f py.Dockerfile \ 21 | --build-arg PYTHON_VERSION=${{ matrix.python-version }} \ 22 | --tag miniwob-plusplus-docker . 23 | - name: Run tests 24 | run: docker run miniwob-plusplus-docker pytest --timeout=20 25 | 26 | build_ding: 27 | runs-on: ubuntu-latest 28 | strategy: 29 | matrix: 30 | python-version: 31 | - '3.8' 32 | browser: 33 | - chrome 34 | - edge 35 | 36 | steps: 37 | - uses: actions/checkout@v2 38 | - name: Get date 39 | run: | 40 | echo "IMAGE_VERSION=$(date +'%Y%m%d')" >> $GITHUB_ENV 41 | - name: Build image for browser ${{ matrix.browser }} 42 | env: 43 | BROWSER: ${{ matrix.browser }} 44 | FROM_IMAGE: opendilab/ding:nightly 45 | CACHE_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:latest 46 | TO_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:${IMAGE_VERSION} 47 | run: | 48 | make pull build 49 | echo "TO_IMAGE=$(make to_image)" >> $GITHUB_ENV 50 | - name: Run tests 51 | if: ${{ matrix.browser == 'chrome' }} 52 | run: | 53 | docker run ${TO_IMAGE} pytest --timeout=20 54 | - name: Docker tag 55 | env: 56 | TO_LATEST_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:latest 57 | run: | 58 | docker tag ${TO_IMAGE} ${TO_LATEST_IMAGE} 59 | - name: See what you have built 60 | run: | 61 | docker images 62 | -------------------------------------------------------------------------------- /.github/workflows/pre-commit.yml: -------------------------------------------------------------------------------- 1 | # https://pre-commit.com 2 | # This GitHub Action assumes that the repo contains a valid .pre-commit-config.yaml file. 3 | name: Pre-Commit 4 | on: 5 | pull_request: 6 | push: 7 | branches: [ master ] 8 | 9 | permissions: 10 | contents: read # to fetch code (actions/checkout) 11 | 12 | jobs: 13 | pre-commit: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v2 17 | - uses: actions/setup-python@v2 18 | - run: pip install pre-commit 19 | - run: pre-commit --version 20 | - run: pre-commit install 21 | - run: pre-commit run --all-files 22 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Publish Image 2 | on: 3 | workflow_dispatch: 4 | 5 | permissions: 6 | contents: read # to fetch code (actions/checkout) 7 | 8 | jobs: 9 | build_ding_and_release: 10 | runs-on: ubuntu-latest 11 | strategy: 12 | matrix: 13 | python-version: 14 | - '3.8' 15 | browser: 16 | - chrome 17 | 18 | steps: 19 | - uses: actions/checkout@v2 20 | - name: Get date 21 | run: | 22 | echo "IMAGE_VERSION=$(date +'%Y%m%d')" >> $GITHUB_ENV 23 | - name: Build image for browser ${{ matrix.browser }} 24 | env: 25 | BROWSER: ${{ matrix.browser }} 26 | FROM_IMAGE: opendilab/ding:nightly 27 | CACHE_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:latest 28 | TO_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:${IMAGE_VERSION} 29 | run: | 30 | make pull build 31 | echo "TO_IMAGE=$(make to_image)" >> $GITHUB_ENV 32 | - name: Run tests 33 | run: | 34 | docker run ${TO_IMAGE} pytest --timeout=20 35 | - name: Docker login 36 | run: | 37 | docker login --username ${{ secrets.DOCKERIO_USERNAME }} --password ${{ secrets.DOCKERIO_PASSWORD }} 38 | - name: Docker push 39 | env: 40 | TO_LATEST_IMAGE: opendilab/miniwob-plusplus-${{ matrix.browser }}:latest 41 | run: | 42 | docker push ${TO_IMAGE} 43 | docker tag ${TO_IMAGE} ${TO_LATEST_IMAGE} 44 | docker push ${TO_LATEST_IMAGE} 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.pyc 3 | *.swp 4 | *.bak 5 | .cache 6 | .__pycache__ 7 | 8 | # Python egg metadata, regenerated from source files by setuptools. 9 | /*.egg-info 10 | /.idea 11 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | repos: 3 | - repo: https://github.com/python/black 4 | rev: 22.3.0 5 | hooks: 6 | - id: black 7 | - repo: https://github.com/codespell-project/codespell 8 | rev: v2.1.0 9 | hooks: 10 | - id: codespell 11 | exclude: ^(html/)|(viewer/)|(.*\.svg$) 12 | args: 13 | - --ignore-words-list=sur, 14 | - repo: https://github.com/PyCQA/flake8 15 | rev: 4.0.1 16 | hooks: 17 | - id: flake8 18 | args: 19 | - '--per-file-ignores=*/__init__.py:F401' 20 | - --ignore=E203,W503,E741 21 | - --max-complexity=30 22 | - --max-line-length=456 23 | - --show-source 24 | - --statistics 25 | - repo: https://github.com/PyCQA/isort 26 | rev: 5.12.0 27 | hooks: 28 | - id: isort 29 | args: ["--profile", "black"] 30 | - repo: https://github.com/pycqa/pydocstyle 31 | rev: 6.1.1 # pick a git hash / tag to point to 32 | hooks: 33 | - id: pydocstyle 34 | exclude: ^(tests/)|(miniwob/envs/) 35 | args: 36 | - --source 37 | - --explain 38 | - --convention=google 39 | additional_dependencies: ["toml"] 40 | - repo: https://github.com/asottile/pyupgrade 41 | rev: v2.32.0 42 | hooks: 43 | - id: pyupgrade 44 | args: ["--py37-plus"] 45 | - repo: local 46 | hooks: 47 | - id: pyright 48 | name: pyright 49 | entry: pyright 50 | language: node 51 | pass_filenames: false 52 | types: [python] 53 | additional_dependencies: ["pyright"] 54 | args: 55 | - --project=pyproject.toml 56 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright 2016 OpenAI (as part of https://github.com/openai/universe) 4 | Copyright 2018 The Board of Trustees of The Leland Stanford Junior University 5 | Copyright 2022 Farama Foundation 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: build pull from_image to_image unittest 2 | 3 | DOCKER ?= $(shell which docker) 4 | 5 | FROM_IMAGE ?= opendilab/ding:nightly 6 | CACHE_IMAGE ?= 7 | TO_IMAGE ?= opendilab/miniwob-plusplus 8 | SCRIPT ?= ding.Dockerfile 9 | BROWSER ?= chrome 10 | 11 | pull: 12 | $(DOCKER) pull ${FROM_IMAGE} 13 | 14 | build: 15 | $(DOCKER) build \ 16 | --build-arg FROM_IMAGE=${FROM_IMAGE} \ 17 | --build-arg BROWSER=${BROWSER} \ 18 | $(if ${CACHE_IMAGE},--cache-from ${CACHE_IMAGE},) \ 19 | -f ${SCRIPT} \ 20 | -t ${TO_IMAGE} \ 21 | . 22 | 23 | from_image: 24 | @echo ${FROM_IMAGE} 25 | 26 | to_image: 27 | @echo ${TO_IMAGE} 28 | 29 | unittest: 30 | $(DOCKER) run ${TO_IMAGE} pytest --timeout=20 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MiniWoB++ 2 | 3 |

4 | 5 |

6 | 7 | The MiniWoB++ (Mini World of Bits++) library contains a collection of over 100 **web interaction environments**, 8 | along with JavaScript and Python interfaces for programmatically interacting with them. 9 | The Python interface follows the [Gymnasium](https://gymnasium.farama.org/) API 10 | and uses [Selenium WebDriver](https://www.selenium.dev/documentation/webdriver/) 11 | to perform actions on the web browser. 12 | 13 | MiniWoB++ is an extension of the 14 | [OpenAI MiniWoB benchmark](http://proceedings.mlr.press/v70/shi17a/shi17a.pdf), 15 | and was introduced in the paper 16 | [Reinforcement Learning on Web Interfaces using Workflow-Guided 17 | Exploration](https://arxiv.org/abs/1802.08802). 18 | 19 | Development on MiniWoB++ is currently ongoing to bring it up to [our standards](https://farama.org/project_standards.html) for mature projects, and will be maintained long term after this point. If you'd like to help out, you can join our discord server here: . 20 | -------------------------------------------------------------------------------- /ding.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG FROM_IMAGE 2 | FROM ${FROM_IMAGE} 3 | 4 | SHELL ["/bin/bash", "-o", "pipefail", "-c"] 5 | 6 | RUN \ 7 | apt-get update -y && \ 8 | apt-get install -y gnupg zip unzip wget curl make 9 | RUN \ 10 | apt-get install -y language-pack-ja japan* language-pack-zh* chinese* language-pack-ko korean* && \ 11 | apt-get install -y fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-mincho fonts-ipafont-gothic fonts-unfonts-core 12 | 13 | ARG BROWSER 14 | ADD installs/${BROWSER}.sh browser_install.sh 15 | RUN \ 16 | chmod +x ./browser_install.sh && \ 17 | ./browser_install.sh 18 | 19 | RUN \ 20 | echo "bingo!" 21 | 22 | COPY . /miniwob-plusplus/ 23 | WORKDIR /miniwob-plusplus/ 24 | RUN pip install -e .[testing] --no-cache-dir 25 | -------------------------------------------------------------------------------- /docs/.gitignore: -------------------------------------------------------------------------------- 1 | environments/*.md 2 | _build/ 3 | demos/ -------------------------------------------------------------------------------- /docs/404.md: -------------------------------------------------------------------------------- 1 | # 404 - Page Not Found 2 | 3 | ## The requested page could not be found. 4 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # MiniWoB++ documentation 2 | 3 | This directory contains the documentation for MiniWoB++. 4 | 5 | For more information about how to contribute to the documentation go to our [CONTRIBUTING.md](https://github.com/Farama-Foundation/Celshast/blob/main/CONTRIBUTING.md) 6 | 7 | ## Build the Documentation 8 | 9 | Install the required packages and Gymnasium (or your fork): 10 | 11 | ``` 12 | pip install -r docs/requirements.txt 13 | pip install -e . 14 | ``` 15 | 16 | To generate the environment pages: 17 | 18 | ``` 19 | python docs/scripts/gen_mds.py 20 | python docs/scripts/gen_env_list.py 21 | ``` 22 | 23 | To build the documentation once: 24 | 25 | ``` 26 | cd docs 27 | sphinx-build . _build 28 | ``` 29 | 30 | To rebuild the documentation automatically every time a change is made: 31 | 32 | ``` 33 | pip install sphinx-autobuild 34 | cd docs 35 | sphinx-autobuild . _build 36 | ``` 37 | -------------------------------------------------------------------------------- /docs/_scripts/move_404.py: -------------------------------------------------------------------------------- 1 | """Move 404.md to the _build directory.""" 2 | import sys 3 | 4 | if __name__ == "__main__": 5 | if len(sys.argv) < 2: 6 | print("Provide a path") 7 | filePath = sys.argv[1] 8 | 9 | with open(filePath, "r+") as fp: 10 | content = fp.read() 11 | content = content.replace('href="../', 'href="/').replace('src="../', 'src="/') 12 | fp.seek(0) 13 | fp.truncate() 14 | 15 | fp.write(content) 16 | -------------------------------------------------------------------------------- /docs/_scripts/utils.py: -------------------------------------------------------------------------------- 1 | """Utilities for documentation generation.""" 2 | 3 | 4 | def trim(docstring): 5 | """Format whitespaces in the docstring.""" 6 | if not docstring: 7 | return "" 8 | # Convert tabs to spaces (following the normal Python rules) 9 | # and split into a list of lines: 10 | lines = docstring.expandtabs().splitlines() 11 | # Determine minimum indentation (first line doesn't count): 12 | indent = 232323 13 | for line in lines[1:]: 14 | stripped = line.lstrip() 15 | if stripped: 16 | indent = min(indent, len(line) - len(stripped)) 17 | # Remove indentation (first line is special): 18 | trimmed = [lines[0].strip()] 19 | if indent < 232323: 20 | for line in lines[1:]: 21 | trimmed.append(line[indent:].rstrip()) 22 | # Strip off trailing and leading blank lines: 23 | while trimmed and not trimmed[-1]: 24 | trimmed.pop() 25 | while trimmed and not trimmed[0]: 26 | trimmed.pop(0) 27 | # Return a single string: 28 | return "\n".join(trimmed) 29 | -------------------------------------------------------------------------------- /docs/_static/img/miniwobplusplus-favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/docs/_static/img/miniwobplusplus-favicon.png -------------------------------------------------------------------------------- /docs/_static/img/miniwobplusplus-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/docs/_static/img/miniwobplusplus-github.png -------------------------------------------------------------------------------- /docs/_static/videos/miniwob.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/docs/_static/videos/miniwob.mp4 -------------------------------------------------------------------------------- /docs/content/demonstrations.md: -------------------------------------------------------------------------------- 1 | # Demonstrations 2 | 3 | We have recorded demonstrations from Mechanical Turk and put them in a [separate repository](https://github.com/stanfordnlp/miniwob-plusplus-demos). 4 | 5 | ## Demonstration Format 6 | 7 | Each demonstration is saved as a JSON file. The root object generated by `core/record.js` contains the following fields: 8 | 9 | * `taskName` (string) 10 | * `utterance` (string) 11 | * `reward` (number): Reward as defined by the task 12 | * `rawReward` (number): 1 if succeeded and -1 if failed 13 | * `states`: a list of state objects 14 | * One state is recorded for the initial state 15 | * Two states are recorded for each event, one before the event resolves and one after the event resolves 16 | 17 | Each state object has the following fields: 18 | 19 | * `time` (number): Time elapsed since the episode started 20 | * `action`: An action-specific object (not present for the initial state) with the following common keys: 21 | * `type` (string) 22 | * `timing` (number): the `eventPhase` property of the JS event object. 23 | This is 1 before the event resolves (capturing state) and 3 after the event resolves (bubbling state). 24 | * `dom`: The DOM info as generated by `getDOMInfo()` 25 | * The event target will have a special key `recordingTarget` set to `true`. 26 | 27 | ## Recording Your Own Demonstrations 28 | 29 | 1. Start the recording server: 30 | ``` 31 | # Create an output directory 32 | mkdir out/ 33 | python -m miniwob.record out/ 34 | ``` 35 | 36 | 2. Append `?record=true` to the URL of the task you want to record. For example, for the `click-test` task, go to 37 | ``` 38 | file:///path/to/miniwob-plusplus/html/miniwob/click-test.html?record=true 39 | ``` 40 | (Note: For recent versions of Chrome, you might have to retype the whole URL instead of just appending `?record=true`.) 41 | 42 | 3. To view the results, open `viewer/viewer.html` while the recording server is running. The URL should be like 43 | ``` 44 | file:///path/to/miniwob-plusplus/html/viewer/viewer.html 45 | ``` 46 | 47 | -------------------------------------------------------------------------------- /docs/content/dev_environment.md: -------------------------------------------------------------------------------- 1 | # Development Environment 2 | 3 | ## Setup 4 | 5 | To set up the environment for development: 6 | 7 | * Follow the instructions in the [Python interface setup](/content/python_setup). 8 | 9 | * Install test dependencies: 10 | ```sh 11 | pip install -e .[testing] 12 | ``` 13 | 14 | * Install git pre-commit hooks: 15 | ```sh 16 | pip install pre-commit 17 | pre-commit install 18 | ``` 19 | 20 | ## Run Tests 21 | 22 | At the root directory, run 23 | ```sh 24 | pytest --timeout=20 25 | ``` 26 | This will run all tests in `tests/` with a timeout of 20 seconds per test. 27 | 28 | -------------------------------------------------------------------------------- /docs/content/javascript_api.md: -------------------------------------------------------------------------------- 1 | # Javascript API 2 | 3 | MiniWoB++ environments incorporate a few JavaScript utilities, 4 | many of which are used by the Python interface. 5 | 6 | ## `Math.seedrandom([seed])` 7 | 8 | Sets the global random seed of the environment. The optional argument `seed` can be any object. 9 | 10 | ## `getDOMInfo()` 11 | 12 | Returns a nested object containing information about the current DOM states. 13 | The returned object corresponds to the `` element. Its children can be accessed under the `children` field. 14 | 15 | Each visible DOM element is converted into an object with the following fields: 16 | 17 | * `tag` (string): Tag name 18 | * For normal elements, this is the uppercased tag name (e.g., `"DIV"`) 19 | * For `` elements, the input type is appended (e.g., `"INPUT_text"`) 20 | * Each non-empty text node is converted into pseudo-elements with tag `"t"`, 21 | where each pseudo-element represents one line of text. 22 | However, if the text node is the only child of the parent. The text pseudo-element is not created, 23 | and its text is assigned to the parent element instead. 24 | * `ref` (number): Reference number 25 | * Within each episode, the `ref` number of the same object stays the same 26 | * For the same random seed, the `ref` number of the same object should be the same 27 | * `ref` for normal elements start from 1, while `ref` for text psuedo-elements counts down from -1 28 | * `children` (list): Recursive list of objects corresponding to the children 29 | * `left`, `top`, `width`, `height` (number): Geometry of the element 30 | * `id` (string): Element's `id` 31 | * `classes` (string): Element's `class`es (space-separated) 32 | * `bgColor`, `fgColor` (string): Background and foreground colors 33 | * `focused` (boolean): Indicates if the element is being focused on 34 | * `tampered` (boolean): Indicates if the element is tampered (clicked, focused, typed, etc.) 35 | * `value`: For ``, this contains the input value 36 | * For `checkbox` and `radio` types, this contains a boolean whether the input is selected 37 | * For other input types, this contains a text value 38 | * `text` (string): For child nodes and text pseudo-elements, this contains the text content 39 | 40 | ## `flattenDOMInfo(rootDomInfo)` 41 | 42 | Can be called on the result of `getDOMInfo()` to get a flattened representation. 43 | Useful for debugging in Chrome console. 44 | 45 | ## `elementClick(ref)` 46 | 47 | Clicks on an element regardless of its location and visibility. 48 | The argument `ref` is the ref value generated by the previous call to `getDOMInfo()`. 49 | 50 | ## `visualizeAttention(values)` 51 | 52 | Visualizes the attention weights on the screen. 53 | The argument `values` is a 2D array of shape 20 × 20. 54 | -------------------------------------------------------------------------------- /docs/content/python_setup.md: -------------------------------------------------------------------------------- 1 | # Setup 2 | 3 | Follow the instructions below to setup the Python interface. 4 | 5 | ## Install the MiniWoB++ Library 6 | 7 | Inside the repository directory, run 8 | 9 | ```sh 10 | pip install . 11 | ``` 12 | 13 | If this gives you problems, try again and add pip's `--ignore-installed` flag. 14 | 15 | ## Install Chrome/Chromium and ChromeDriver 16 | 17 | We strongly recommend using Chrome or Chromium as the web browser, 18 | as other browsers may render the environments differently. 19 | 20 | The MiniWoB++ Python interface uses [Selenium](https://www.selenium.dev/documentation/webdriver/), 21 | which interacts with the browser via the [WebDriver API](https://w3c.github.io/webdriver/). 22 | If you use Google Chrome as the web browser, follow one of the 23 | [instruction methods](https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/) 24 | to install ChromeDriver. The simplest method is to download 25 | [ChromeDriver](https://chromedriver.chromium.org/downloads) with the matching version, 26 | unzip it, and then add the directory containing the `chromedriver` executable to the `PATH` environment variable: 27 | 28 | ```sh 29 | export PATH=$PATH:/path/to/chromedriver 30 | ``` 31 | 32 | For Chromium, the driver may also be available in a software package; for example, in Debian/Ubuntu: 33 | 34 | ```sh 35 | sudo apt install chromium-driver 36 | ``` 37 | -------------------------------------------------------------------------------- /docs/content/viewing.md: -------------------------------------------------------------------------------- 1 | # Viewing the Environments 2 | 3 | There are 2 ways to view the environments: 4 | 5 | * **Run a simple server:** 6 | 7 | * **Node.js:** Install and run `http-server` using 8 | ``` 9 | npm install http-server -g # Requires Node.js 10 | cd html/ 11 | http-server 12 | ``` 13 | The tasks should now be accessible at `http://localhost:8080/miniwob/`. 14 | 15 | * **Python:** 16 | ``` 17 | python -m http.server 8080 18 | ``` 19 | We found this method to be less stable with a large amount of access, 20 | which is required by reinforcement learning. 21 | 22 | * **Use the `file://` protocol:** open `miniwob-plusplus/html/miniwob/` in the browser. 23 | * The URL should now be something like 24 | 25 | file:///path/to/miniwob-plusplus/html/miniwob/ 26 | 27 | * This should show the directory listing of all task HTML files. 28 | 29 | -------------------------------------------------------------------------------- /docs/environments/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/docs/environments/.gitkeep -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | hide-toc: true 3 | firstpage: 4 | lastpage: 5 | --- 6 | 7 | # MiniWoB++ 8 | 9 | 12 | 13 | The MiniWoB++ library contains a collection of over 100 **web interaction environments**, 14 | along with JavaScript and Python interfaces for programmatically interacting with them. 15 | The Python interface follows the [Gymnasium](https://gymnasium.farama.org/) API 16 | and uses [Selenium WebDriver](https://www.selenium.dev/documentation/webdriver/) 17 | to perform actions on the web browser. 18 | 19 | MiniWoB++ is an extension of the 20 | [OpenAI MiniWoB benchmark](http://proceedings.mlr.press/v70/shi17a/shi17a.pdf), 21 | and was introduced in the paper 22 | [Reinforcement Learning on Web Interfaces using Workflow-Guided 23 | Exploration](https://arxiv.org/abs/1802.08802). 24 | If you use MiniWoB++ in your research, please use the following citation: 25 | 26 | ```bibtex 27 | @inproceedings{liu2018reinforcement, 28 | author = {Evan Zheran Liu and Kelvin Guu and Panupong Pasupat and Tianlin Shi and Percy Liang}, 29 | title = {Reinforcement Learning on Web Interfaces using Workflow-Guided Exploration}, 30 | booktitle = {International Conference on Learning Representations ({ICLR})}, 31 | url = {https://arxiv.org/abs/1802.08802}, 32 | year = {2018}, 33 | } 34 | ``` 35 | 36 | ```{toctree} 37 | :hidden: 38 | :caption: Python Interface 39 | 40 | content/python_setup 41 | content/python_usage 42 | ``` 43 | 44 | ```{toctree} 45 | :hidden: 46 | :caption: Javascript Interface 47 | 48 | content/javascript_api 49 | ``` 50 | 51 | ```{toctree} 52 | :hidden: 53 | :caption: Environments 54 | 55 | content/viewing 56 | environments/list 57 | content/demonstrations 58 | ``` 59 | 60 | ```{toctree} 61 | :hidden: 62 | :caption: Development 63 | 64 | content/dev_environment 65 | Github 66 | Contribute to the Docs 67 | ``` 68 | -------------------------------------------------------------------------------- /docs/requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx 2 | myst-parser 3 | git+https://github.com/Farama-Foundation/Celshast#egg=furo 4 | pandas 5 | tabulate 6 | -------------------------------------------------------------------------------- /html/.gitignore: -------------------------------------------------------------------------------- 1 | twistd.pid 2 | -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_0.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_1.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_2.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_3.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_4.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_5.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_6.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_7.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_8.png -------------------------------------------------------------------------------- /html/common/special/checkbox-numbers/ch_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/checkbox-numbers/ch_9.png -------------------------------------------------------------------------------- /html/common/special/drag-cube/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/drag-cube/blank.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/delete.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/forward.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/left-arrow-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/left-arrow-white.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/left-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/left-arrow.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/reply.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/search.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/send.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/star-clicked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/star-clicked.png -------------------------------------------------------------------------------- /html/common/special/email-inbox/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/email-inbox/star.png -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/ajax-loader.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/file.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/file.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/folder-closed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/folder-closed.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/folder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/folder.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/minus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/minus.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/plus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/plus.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-black-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-black-line.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-black.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-black.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-default-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-default-line.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-default.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-default.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-famfamfam-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-famfamfam-line.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-famfamfam.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-famfamfam.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-gray-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-gray-line.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-gray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-gray.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-red-line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-red-line.gif -------------------------------------------------------------------------------- /html/common/special/navigate-tree/images/treeview-red.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/navigate-tree/images/treeview-red.gif -------------------------------------------------------------------------------- /html/common/special/social-media/like-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/like-hover.png -------------------------------------------------------------------------------- /html/common/special/social-media/like.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/like.png -------------------------------------------------------------------------------- /html/common/special/social-media/more-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/more-hover.png -------------------------------------------------------------------------------- /html/common/special/social-media/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/more.png -------------------------------------------------------------------------------- /html/common/special/social-media/reply-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/reply-hover.png -------------------------------------------------------------------------------- /html/common/special/social-media/reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/reply.png -------------------------------------------------------------------------------- /html/common/special/social-media/retweet-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/retweet-hover.png -------------------------------------------------------------------------------- /html/common/special/social-media/retweet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/retweet.png -------------------------------------------------------------------------------- /html/common/special/social-media/share-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/share-hover.png -------------------------------------------------------------------------------- /html/common/special/social-media/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/social-media/share.png -------------------------------------------------------------------------------- /html/common/special/tic-tac-toe/o.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/tic-tac-toe/o.png -------------------------------------------------------------------------------- /html/common/special/tic-tac-toe/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/common/special/tic-tac-toe/x.png -------------------------------------------------------------------------------- /html/core/core.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #555; 3 | font-family: Arial; 4 | font-size: 14px; 5 | margin: 0; 6 | padding: 0; 7 | } 8 | 9 | #wrap { 10 | height:210px; 11 | background-color: white; 12 | width:160px; 13 | } 14 | 15 | #query { 16 | background-color: #FF0; 17 | font-size: 10px; 18 | height: 44px; 19 | padding: 3px; 20 | } 21 | 22 | #area { 23 | font-size: 10px; 24 | padding: 2px; 25 | } 26 | 27 | #area input[type=text] { 28 | width: 120px; 29 | } 30 | 31 | #area textarea { 32 | height: 25px; 33 | width: 120px; 34 | } 35 | 36 | #query .bold, #area .bold { font-weight: bold; } 37 | 38 | /* reward display CSS below */ 39 | #reward-display { 40 | font-size: 14px; 41 | height: 210px; 42 | width: 160px; 43 | position: absolute; 44 | left: 165px; 45 | top: 0px; 46 | } 47 | 48 | #reward-display .info { 49 | display: block; 50 | margin: 10px 5px; 51 | } 52 | 53 | #reward-last, #reward-avg, #timer-countdown, #episode-id { 54 | font-weight: bold; 55 | } 56 | 57 | #reward-avg { 58 | display: inline-block; 59 | } 60 | 61 | #area button.secondary-action { 62 | padding: 6px 25px; 63 | } 64 | 65 | /* task cover for synchronization */ 66 | #sync-task-cover { 67 | position: absolute; 68 | left: 0; 69 | top: 0; 70 | width: 160px; 71 | height: 210px; 72 | background-color: #111; 73 | color: #eee; 74 | text-align: center; 75 | line-height: 210px; 76 | font-size: 20px; 77 | cursor: pointer; 78 | z-index: 9999; 79 | } 80 | #sync-task-cover.transparent { 81 | background-color: transparent; 82 | color: transparent; 83 | cursor: not-allowed; 84 | } 85 | 86 | /* canvas for tracking clicks */ 87 | #click-canvas { 88 | position: absolute; 89 | left: 165px; 90 | top: 0px; 91 | background-color: white; 92 | } 93 | /* canvas for visualizing attention */ 94 | #attention-canvas { 95 | position: absolute; 96 | left: 330px; 97 | top: 0px; 98 | background-color: black; 99 | } 100 | 101 | /* Record demonstrations */ 102 | #server-name, #server-reply { 103 | font-size: 80%; 104 | } 105 | -------------------------------------------------------------------------------- /html/core/jquery-ui-hacks.js: -------------------------------------------------------------------------------- 1 | // Hacks to make JQuery UI deterministic 2 | 3 | $(function () { 4 | var uuid = 0; 5 | 6 | $.extend({ 7 | resetUniqueId: function () { 8 | uuid = 0; 9 | }, 10 | }); 11 | 12 | $.fn.extend({ 13 | uniqueId: function () { 14 | return this.each(function () { 15 | if (!this.id) { 16 | this.id = "ui-id-" + ( ++uuid ); 17 | } 18 | }); 19 | }, 20 | }); 21 | 22 | }); 23 | -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /html/core/jquery-ui/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/core/jquery-ui/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /html/flight/AA/apps/common/js/aacomDevice.js: -------------------------------------------------------------------------------- 1 | var $device={mobile:false,tablet:false,desktop:true,touch:false,responsive:false,init:function(){this.desktop=(!this.tablet&&!this.mobile);this.touch=(this.tablet||this.mobile);if(this.tablet){jQuery("html").addClass("is-tablet");}if(this.mobile){jQuery("html").addClass("is-mobile");}if(this.responsive){jQuery("html").addClass("is-responsive");}},viewport:function(){if(this.responsive){var check=function(css){if(jQuery("."+css).length==0){jQuery("body").append('
');}return(jQuery("."+css).css("display")!="none");};if(check("visible-phone")){return"phone";}if(check("visible-tablet")){return"tablet";}}return"desktop";},landscape:function(){return(jQuery(window).height()'+values[i].name+"";}jQuery("select#aa-language-selector").html(options);self.changeAlert();}});});jQuery("#aa-language-selector").change(function(){self.changeAlert();});jQuery("#splashForm").submit(function(){url=jQuery("select#aa-language-selector",this).val();jQuery("#splashSelectedCountry",this).val(self.getParameter(url,"locale"));jQuery("#splashUrl",this).val(self.getParameter(url,"url"));jQuery("#splashGeoRedirect",this).val(self.getParameter(url,"georedirect"));});self.getParameter=function(url,name){return decodeURIComponent((RegExp(name+"=(.+?)(&|$)").exec(url)||[,""])[1]);};self.changeAlert=function(){if(self.getParameter(jQuery("select#aa-language-selector").val(),"locale")!=jQuery("input#currentLocale").val()){jQuery("#locale-change-alert").slideDown();}else{jQuery("#locale-change-alert").hide("fast");}};}; -------------------------------------------------------------------------------- /html/flight/AA/apps/common/js/jquery/aacom/plugins/aaDropdownPanel.js: -------------------------------------------------------------------------------- 1 | (function($){var $dropdowns=$([]);$(document).bind("click",function(e){if(($(e.target).parents('[data-behavior~="dropdown"]').length===0)&&(!$(e.target).is('[data-behavor~="dropdown-trigger"]'))){$dropdowns.find('[data-behavior~="dropdown-panel"]:visible').hide();$dropdowns.find('[data-behavior~="dropdown-trigger"]:visible').removeClass("is-active");}e.stopPropagation();});var methods={init:function(options){$dropdowns=$dropdowns.add(this);$dropdowns.find('[data-behavior~="dropdown-panel"]:visible').hide();var settings=$.extend({},options);return this.each(function(){var $this=$(this);if(settings.width){$this.find('[data-behavior~="dropdown-panel"]').css("min-width",settings.width);$this.find('[data-behavior~="dropdown-panel"]').css("width",settings.width);}if(settings.maxHeight){$this.find('[data-behavior~="dropdown-panel"]').css("max-height",settings.maxHeight);}if($this.data("initialized")){return;}else{$this.data("initialized",true);}var $trigger=$this.find('[data-behavior~="dropdown-trigger"]'),$panel=$this.find('[data-behavior~="dropdown-panel"]'),$close=$this.find('[data-behavior~="dropdown-close"]');$trigger.addClass("js-dropdown-trigger").parents('[data-behavior~="dropdown-wrapper"]').addClass("js-dropdown-wrapper").parents('[data-behavior~="dropdown"]').addClass("js-dropdown");$panel.addClass("js-dropdown-panel");$close.addClass("js-dropdown-close");$trigger.click(function(e){e.stopPropagation();e.preventDefault();$dropdowns.not($this).find('[data-behavior~="dropdown-panel"]:visible').hide();$dropdowns.not($this).find('[data-behavior~="dropdown-trigger"]').removeClass("is-active");$trigger.toggleClass("is-active");$panel.toggle();$panel.find('a, input[type="text"], button, [tabindex=0], select').filter(":visible").first().focus();});$close.click(function(e){e.preventDefault();$this.find('[data-behavior~="dropdown-trigger"]').removeClass("is-active");$this.find('[data-behavior~="dropdown-panel"]').hide();});});},show:function(){return this.each(function(){$(this).find('[data-behavior~="dropdown-panel"]:hidden').show();});},hide:function(){return this.each(function(){$(this).find('[data-behavior~="dropdown-panel"]:visible').hide();});},toggle:function(){return this.each(function(){$(this).find('[data-behavior~="dropdown-panel"]').toggle().css("z-index","9999");alert($(this).css("z-index"));});}};$.fn.dropdown=function(method){if($("html").hasClass("lt-ie8")){return;}if(methods[method]){return methods[method].apply(this,Array.prototype.slice.call(arguments,1));}else{if(typeof method==="object"||!method){return methods.init.apply(this,arguments);}else{$.error("Method "+method+" does not exist on jQuery.dropdown");}}};})(jQuery);jQuery(document).ready(function(){jQuery('[data-behavior~="dropdown"]').dropdown();}); -------------------------------------------------------------------------------- /html/flight/AA/apps/common/js/jquery/aacom/plugins/aaFooterAds.js: -------------------------------------------------------------------------------- 1 | jQuery.aaFooterAds=function(source){var self=this;self.init=function(){jQuery(source).each(function(i,item){adLink=jQuery("#"+item.id+" a");if(item.isFlash){if(!jQuery.flash.available){adLink.append(''+item.altText+'');}else{jQuery(adLink).flash({swf:item.flashSrc,height:item.height,width:item.width,expressInstall:true});}}adLink.attr("title",item.altText);if(item.target.indexOf("http")!=-1){temp=function(){captureExtClickThru(item.target,item.anchorLocation,item.altText,item.repositoryName,item.repositoryId,item.locale,item.isFlash);};item.isFlash?adLink.mouseup(temp):adLink.click(temp);}if(item.openInNewWin=="Y"){temp=function(){window.open(this.href,"","scrollbars=yes,toolbar=yes,resizable=yes,status=yes,location=no,menubar=no,width=700,height=480,top=1,left=385");return false;};item.isFlash?adLink.mouseup(temp):adLink.click(temp);}else{if(item.isFlash){adLink.mouseup(function(){location.href=this.href;});}}});};self.init();}; -------------------------------------------------------------------------------- /html/flight/AA/apps/common/js/jquery/aacom/plugins/aaTextBoxMessage.js: -------------------------------------------------------------------------------- 1 | function aaTextBoxMessage(paramElement,paramMessage){if(paramElement){this.element=paramElement;this.message=((paramMessage)?paramMessage.replace(/^\s+|\s+$/g,""):"aaTextBoxMessage - ATTENTION: caption has not been defined");this.element.aaTextBoxMessage=this;this.element.value=this.message;this.element.onfocus=aaTextBoxMessage.onfocus;this.element.onblur=aaTextBoxMessage.onblur;this.element.aaTextBoxMessage=this;}}aaTextBoxMessage.onfocus=function(){if(this.value.replace(/^\s+|\s+$/g,"")===this.aaTextBoxMessage.message){this.value="";}};aaTextBoxMessage.onblur=function(){if(this.value.replace(/^\s+|\s+$/g,"")===""){this.value=this.aaTextBoxMessage.message;}};jQuery.fn.aaTextBoxMessage=function(paramMessage){var i=0;var obj;for(i;i<\/script>");}}catch(err){}delete_VPNR=createVPNR();delete_VPNR.initDeleteVPNRModal();});createVPNR=function(){var delete_VPNR={aaUtil_delete_VPNR:new aa_Utilities(),btns:[{name:vpnr_okMessage,callback:function forwardLogin(){deleteVirtualPNR();var url=jQuery("#loginURL").val();window.location=url;},cssClass:"btn",closeDialog:true},{name:vpnr_cancelMessage,cssClass:"btn btn-secondary",closeDialog:true}],deleteVPNRModal:function(){var VPNR=jQuery("#virtualPNR").val(),status=jQuery("#status").val();if(VPNR=="true"&&status!="Purchased"){this.aaUtil_delete_VPNR.aaDialog("#modal_deleteVPNRModal").openDialog(jQuery("#loginLogoutLink"));jQuery(window).scrollTop(0);}else{var url=jQuery("#loginURL").val();window.location=url;}},initDeleteVPNRModal:function(){this.aaUtil_delete_VPNR.aaDialog("#modal_deleteVPNRModal",{width:"small",buttons:this.btns,toggleScroll:true});}};return delete_VPNR;};function deleteVPNRModal(){delete_VPNR.deleteVPNRModal();} -------------------------------------------------------------------------------- /html/flight/AA/js/aa/common/aacom-ui-1.0.0.js: -------------------------------------------------------------------------------- 1 | function AAcom(){var args=Array.prototype.slice.call(arguments),callback=args.pop(),modules=(args[0]&&typeof args[0]==="string")?args:args[0],i;if(!(this instanceof AAcom)){return new AAcom(modules,callback);}if(!modules||modules=="*"){modules=[];for(i in AAcom.modules){if(AAcom.modules.hasOwnProperty(i)){modules.push(i);}}}for(i=0;i0){details={url:$form.attr("action"),type:$form.attr("method"),data:(options.dataType==="json")?$form.serializeObject():$form.serialize()};}return details;};var _errorHandler=function(xhr,statusText,settings){if(statusText!=="success"){if(settings.onError!==undefined){settings.onError(xhr,statusText);}else{var $htmlResponse=$j(xhr.responseText);if(statusText==="timeout"||xhr.responseText==="invalidState"||$htmlResponse.find(".js-invalidState").length>0){top.location.href="/invalidState.do";return true;}else{if(statusText==="error"||xhr.responseText==="systemError"||$htmlResponse.find(".js-systemError").length>0){top.location.href="/systemError.do";return true;}}}}return false;};};if(!$j.isFunction($j.fn.serializeObject)){$j.fn.serializeObject=function(){var o={};var a=this.serializeArray();$j.each(a,function(){if(o[this.name]){if(!o[this.name].push){o[this.name]=[o[this.name]];}o[this.name].push(this.value||"");}else{o[this.name]=this.value||"";}});return o;};} -------------------------------------------------------------------------------- /html/flight/AA/js/aa/modules/browserdetect.js: -------------------------------------------------------------------------------- 1 | AAcom.modules.browserdetect=function(AAUI){var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";},searchString:function(data){for(var i=0;i-1)&&(agentStr.indexOf("MSIE 7.0")>-1))||((agentStr.indexOf("Trident/5.0")>-1)&&(agentStr.indexOf("MSIE 7.0")>-1))||((agentStr.indexOf("Trident/4.0")>-1)&&(agentStr.indexOf("MSIE 7.0")>-1))){return true;}}return false;};}; -------------------------------------------------------------------------------- /html/flight/AA/js/aa/modules/commonsetup.js: -------------------------------------------------------------------------------- 1 | AAcom.modules.commonsetup=function(AAUI){/* NOT NEEDED */}; 2 | -------------------------------------------------------------------------------- /html/flight/AA/js/aa/plugins/noBounce.js: -------------------------------------------------------------------------------- 1 | var noBounce=function(){var module={};var settings={animate:true};var track=[];var velocity={x:0,y:0};var vector={subtraction:function(v1,v2){return{x:v1.x-v2.x,y:v1.y-v2.y};},length:function(v){return Math.sqrt((v.x*v.x)+(v.y*v.y));},unit:function(v){var length=vector.length(v);v.x/=length;v.y/=length;},skalarMult:function(v,s){v.x*=s;v.y*=s;}};var requestAnimFrame=(function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1000/60);};})();function handleTouchStart(evt){var point,touch;touch=evt.changedTouches[0];point={x:touch.clientX,y:touch.clientY,timeStamp:evt.timeStamp};track=[point];}function handleTouchMove(evt){var point,touch;evt.preventDefault();touch=evt.changedTouches[0];point={x:touch.clientX,y:touch.clientY,timeStamp:evt.timeStamp};track.push(point);doScroll();}function handleTouchEnd(evt){if(track.length>2&&settings.animate){velocity=calcVelocity();requestAnimFrame(animate);}}function calcVelocity(){var p1,p2,v,timeDiff,length;p1=track[0];p2=track[track.length-1];timeDiff=p2.timeStamp-p1.timeStamp;v=vector.subtraction(p2,p1);length=vector.length(v);vector.unit(v);vector.skalarMult(v,length/timeDiff*20);return v;}function doScroll(){var p1,p2,x,y;if(track.length>1){p1=track[track.length-1];p2=track[track.length-2];x=p2.x-p1.x;y=p2.y-p1.y;requestAnimFrame(function(){window.scrollBy(x,y);});}}function animate(){scrollBy(-velocity.x,-velocity.y);vector.skalarMult(velocity,0.95);if(vector.length(velocity)>0.2){requestAnimFrame(animate);}}function isElement(o){return(typeof HTMLElement==="object"?o instanceof HTMLElement:o&&typeof o==="object"&&o!==null&&o.nodeType===1&&typeof o.nodeName==="string");}module.init=function(options){if(typeof options.animate==="boolean"){settings.animate=options.animate;}if(isElement(options.element)){settings.element=options.element;}var element=settings.element||document;element.addEventListener("touchstart",handleTouchStart);element.addEventListener("touchmove",handleTouchMove);element.addEventListener("touchend",handleTouchEnd);element.addEventListener("touchcancel",handleTouchEnd);element.addEventListener("touchleave",handleTouchEnd);};return module;}(); -------------------------------------------------------------------------------- /html/flight/AA/js/libs/jquery/ui/1.10/i18n/jquery.ui.datepicker-en-aa.js: -------------------------------------------------------------------------------- 1 | /* Initialization in US English (customized for AA.com) for the datepicker from jQuery UI */ 2 | /* This file should be referred last in the JSP header so US English will be the default */ 3 | /* Ricardo Viana */ 4 | jQuery(function($){ 5 | $.datepicker.regional['en'] = { 6 | closeText: 'Close', 7 | prevText: 'Prev', 8 | nextText: 'Next', 9 | currentText: 'Today', 10 | monthNames: ['January','February','March','April','May','June', 11 | 'July','August','September','October','November','December'], 12 | monthNamesShort: ['Jan','Feb','Mar','Apr','May','Jun', 13 | 'Jul','Aug','Sep','Oct','Nov','Dec'], 14 | dayNames: ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'], 15 | dayNamesShort: ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'], 16 | dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'], 17 | weekHeader: 'Wk', 18 | dateFormat: 'mm/dd/yy', 19 | firstDay: 0, 20 | isRTL: false, 21 | showMonthAfterYear: false, 22 | yearSuffix: ''}; 23 | $.datepicker.setDefaults($.datepicker.regional['en']); 24 | }); 25 | -------------------------------------------------------------------------------- /html/flight/AA/surrogate/airportLookup.js: -------------------------------------------------------------------------------- 1 | // Surrogate autocomplete 2 | 3 | /* 4 | Called by: apps/common/js/jquery/aacom/plugins/aaAirportAutoComplete.js 5 | 6 | Important args: 7 | - input.data.searchText: search term 8 | - input.success: callback 9 | 10 | Response examples: home/ajax/airportLookup_* 11 | [{"name":"Baltimore Washington International Airport","code":"BWI","stateCode":"MD","countryCode":"US","countryName":"United States"},...] 12 | */ 13 | $miniwob.surrogateAutocomplete = function (input) { 14 | function match() { 15 | var query = input.data.searchText.toLowerCase().replace(/[^a-z0-9]/, ''); 16 | var results = $miniwob.airports.filter(function (item) { 17 | return (item.code.toLowerCase().includes(query)); 18 | }); 19 | if (!results.length) { 20 | results = $miniwob.airports.filter(function (item) { 21 | var name = (item.name + item.stateCode).toLowerCase().replace(/[^a-z0-9]/, ''); 22 | return name.includes(query); 23 | }); 24 | } 25 | input.success(results); 26 | } 27 | 28 | if (!$miniwob.airports) { 29 | var xhr = new XMLHttpRequest(); 30 | xhr.onreadystatechange = function () { 31 | if (xhr.readyState == 4) { 32 | if (xhr.status == 200) { 33 | $miniwob.airports = JSON.parse(xhr.responseText); 34 | match(); 35 | } else { 36 | console.error('Error loading airports.json'); 37 | } 38 | } 39 | }; 40 | xhr.open('GET', 'surrogate/airports.json'); 41 | xhr.send(); 42 | } else { 43 | match(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /html/flight/AA/wrapper.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | AA 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 27 | 28 | 29 | 30 |
31 |
(Instruction)
32 |
(Raw query)
33 |
(Reward reason)
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/aura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/aura.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/cal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/cal3.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/chkboxes3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/chkboxes3.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/clear_text2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/clear_text2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/collapse.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/expand.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/flight_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/flight_arrow.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/geo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/geo.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/home.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/info2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/info2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/leftright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/leftright.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/logo2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/logos/AA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/logos/AA.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/logos/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/logos/AS.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/logos/DL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/logos/DL.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/images/logos/VX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/images/logos/VX.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Bold.woff -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Book.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto-medium/stylesheets/circular/ASCircularWeb-Book.woff -------------------------------------------------------------------------------- /html/flight/Alaska-auto-medium/surrogate/airportLookup.js: -------------------------------------------------------------------------------- 1 | // Surrogate autocomplete 2 | 3 | /* 4 | Called by: scripts/main.js 5 | 6 | Important args: 7 | - prefix 8 | - callback 9 | 10 | The response only contains at most 5 entries. 11 | 12 | Response examples: 13 | ["Adak Island, AK (ADK-Adak Island)", "Alexandria, LA (AEX-Alexandria Intl.)", "Brownsville, TX (BRO-South Padre Island Intl.)", "Cleveland, OH (CLE-Hopkins Intl.)", "Grand Forks, ND (GFK-Grand Forks Intl.)"] 14 | 15 | The cache only contains a partial list of possible airports. Will just use that. 16 | */ 17 | $miniwob.surrogateAutocomplete = function (prefix, callback) { 18 | function match() { 19 | var query = prefix.toLowerCase().replace(/[^a-z0-9 ]/, ''); 20 | var results = $miniwob.airports.filter(function (item) { 21 | return (item.toLowerCase().replace(/[^a-z0-9 ]/, '').includes(query)); 22 | }); 23 | callback(results.length ? results.slice(0, 5) : null); 24 | } 25 | 26 | if (!$miniwob.airports) { 27 | var xhr = new XMLHttpRequest(); 28 | xhr.onreadystatechange = function () { 29 | if (xhr.readyState == 4) { 30 | if (xhr.status == 200) { 31 | $miniwob.airports = JSON.parse(xhr.responseText); 32 | match(); 33 | } else { 34 | console.error('Error loading airports.json'); 35 | } 36 | } 37 | }; 38 | xhr.open('GET', 'surrogate/airports.json'); 39 | xhr.send(); 40 | } else { 41 | match(); 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/aura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/aura.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/cal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/cal3.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/chkboxes3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/chkboxes3.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/clear_text2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/clear_text2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/collapse.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/expand.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/flight_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/flight_arrow.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/geo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/geo.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/home.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/info2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/info2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/leftright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/leftright.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/logo2.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/logos/AA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/logos/AA.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/logos/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/logos/AS.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/logos/DL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/logos/DL.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/images/logos/VX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/images/logos/VX.png -------------------------------------------------------------------------------- /html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Bold.woff -------------------------------------------------------------------------------- /html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Book.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska-auto/stylesheets/circular/ASCircularWeb-Book.woff -------------------------------------------------------------------------------- /html/flight/Alaska-auto/surrogate/airportLookup.js: -------------------------------------------------------------------------------- 1 | // Surrogate autocomplete 2 | 3 | /* 4 | Called by: scripts/main.js 5 | 6 | Important args: 7 | - prefix 8 | - callback 9 | 10 | The response only contains at most 5 entries. 11 | 12 | Response examples: 13 | ["Adak Island, AK (ADK-Adak Island)", "Alexandria, LA (AEX-Alexandria Intl.)", "Brownsville, TX (BRO-South Padre Island Intl.)", "Cleveland, OH (CLE-Hopkins Intl.)", "Grand Forks, ND (GFK-Grand Forks Intl.)"] 14 | 15 | The cache only contains a partial list of possible airports. Will just use that. 16 | */ 17 | $miniwob.surrogateAutocomplete = function (prefix, callback) { 18 | function match() { 19 | var query = prefix.toLowerCase().replace(/[^a-z0-9 ]/, ''); 20 | var results = $miniwob.airports.filter(function (item) { 21 | return (item.toLowerCase().replace(/[^a-z0-9 ]/, '').includes(query)); 22 | }); 23 | callback(results.length ? results.slice(0, 5) : null); 24 | } 25 | 26 | if (!$miniwob.airports) { 27 | var xhr = new XMLHttpRequest(); 28 | xhr.onreadystatechange = function () { 29 | if (xhr.readyState == 4) { 30 | if (xhr.status == 200) { 31 | $miniwob.airports = JSON.parse(xhr.responseText); 32 | match(); 33 | } else { 34 | console.error('Error loading airports.json'); 35 | } 36 | } 37 | }; 38 | xhr.open('GET', 'surrogate/airports.json'); 39 | xhr.send(); 40 | } else { 41 | match(); 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /html/flight/Alaska/images/aura.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/aura.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/cal3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/cal3.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/chkboxes3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/chkboxes3.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/clear_text2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/clear_text2.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/collapse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/collapse.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/expand.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/flight_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/flight_arrow.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/geo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/geo.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/home.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/info2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/info2.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/leftright.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/leftright.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/logo2.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/logos/AA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/logos/AA.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/logos/AS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/logos/AS.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/logos/DL.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/logos/DL.png -------------------------------------------------------------------------------- /html/flight/Alaska/images/logos/VX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/images/logos/VX.png -------------------------------------------------------------------------------- /html/flight/Alaska/stylesheets/circular/ASCircularWeb-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/stylesheets/circular/ASCircularWeb-Bold.woff -------------------------------------------------------------------------------- /html/flight/Alaska/stylesheets/circular/ASCircularWeb-Book.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/html/flight/Alaska/stylesheets/circular/ASCircularWeb-Book.woff -------------------------------------------------------------------------------- /html/flight/Alaska/surrogate/airportLookup.js: -------------------------------------------------------------------------------- 1 | // Surrogate autocomplete 2 | 3 | /* 4 | Called by: scripts/main.js 5 | 6 | Important args: 7 | - prefix 8 | - callback 9 | 10 | The response only contains at most 5 entries. 11 | 12 | Response examples: 13 | ["Adak Island, AK (ADK-Adak Island)", "Alexandria, LA (AEX-Alexandria Intl.)", "Brownsville, TX (BRO-South Padre Island Intl.)", "Cleveland, OH (CLE-Hopkins Intl.)", "Grand Forks, ND (GFK-Grand Forks Intl.)"] 14 | 15 | The cache only contains a partial list of possible airports. Will just use that. 16 | */ 17 | $miniwob.surrogateAutocomplete = function (prefix, callback) { 18 | function match() { 19 | var query = prefix.toLowerCase().replace(/[^a-z0-9 ]/, ''); 20 | var results = $miniwob.airports.filter(function (item) { 21 | return (item.toLowerCase().replace(/[^a-z0-9 ]/, '').includes(query)); 22 | }); 23 | callback(results.length ? results.slice(0, 5) : null); 24 | } 25 | 26 | if (!$miniwob.airports) { 27 | var xhr = new XMLHttpRequest(); 28 | xhr.onreadystatechange = function () { 29 | if (xhr.readyState == 4) { 30 | if (xhr.status == 200) { 31 | $miniwob.airports = JSON.parse(xhr.responseText); 32 | match(); 33 | } else { 34 | console.error('Error loading airports.json'); 35 | } 36 | } 37 | }; 38 | xhr.open('GET', 'surrogate/airports.json'); 39 | xhr.send(); 40 | } else { 41 | match(); 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /html/flight/Alaska/wrapper.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Alaska 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 27 | 28 | 29 | 30 |
31 |
(Instruction)
32 |
(Raw query)
33 |
(Reward reason)
34 |
35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /html/flight/flight-common/wrapper.css: -------------------------------------------------------------------------------- 1 | /* ################ SIZING ################ */ 2 | 3 | #wrap, #sync-task-cover { 4 | height: 667px; 5 | width: 375px; 6 | } 7 | 8 | #wrap { 9 | overflow-x: auto; 10 | overflow-y: auto; 11 | border: 0; 12 | } 13 | 14 | #click-canvas, #reward-display { 15 | left: 380px; 16 | } 17 | 18 | #query-wrap { 19 | position: absolute; 20 | top: 215px; 21 | left: 380px; 22 | width: 160px; 23 | height: auto; 24 | } 25 | #query { 26 | height: auto; 27 | } 28 | #query-pretty { 29 | background-color: #EFF; 30 | font-size: 12px; 31 | padding: 3px; 32 | } 33 | #query-pretty .mode { 34 | font-weight: bold; 35 | } 36 | #query-pretty table { 37 | border-collapse: collapse; 38 | } 39 | #query-pretty th, #query-pretty td { 40 | border: 1px solid gray; 41 | padding: 2px 5px; 42 | width: 50%; 43 | text-align: left; 44 | } 45 | #reward-reason { 46 | background-color: #FEF; 47 | font-size: 10px; 48 | padding: 3px; 49 | } 50 | -------------------------------------------------------------------------------- /html/miniwob/chase-circle.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Chase Circle Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 81 | 82 | 83 |
84 |
Keep your mouse inside the circle as it moves around.
85 |
86 | 87 |
88 |
89 | 90 | 91 | -------------------------------------------------------------------------------- /html/miniwob/choose-date-easy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Choose Date Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 51 | 52 | 53 |
54 |
55 |
56 |

Date:

57 |
58 | 59 |
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /html/miniwob/choose-date-medium.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Choose Date Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 51 | 52 | 53 |
54 |
55 |
56 |

Date:

57 |
58 | 59 |
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /html/miniwob/choose-date-nodelay.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Choose Date Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 53 | 54 | 55 |
56 |
57 |
58 |

Date:

59 |
60 | 61 |
62 |
63 | 64 | 65 | -------------------------------------------------------------------------------- /html/miniwob/choose-date.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Choose Date Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 51 | 52 | 53 |
54 |
55 |
56 |

Date:

57 |
58 | 59 |
60 |
61 | 62 | 63 | -------------------------------------------------------------------------------- /html/miniwob/choose-list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Choose List Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 56 | 57 | 58 |
59 |
60 |
61 |
62 |
63 | 64 | 65 | -------------------------------------------------------------------------------- /html/miniwob/click-button-sequence.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Button Sqeuence Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 47 | 48 | 49 |
50 |
Click button ONE, then click button TWO.
51 |
52 | 53 | 54 |
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /html/miniwob/click-button.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Button Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 67 | 68 | 69 |
70 |
71 |
72 |
73 | 74 | 75 | -------------------------------------------------------------------------------- /html/miniwob/click-checkboxes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Checkboxes Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 65 | 66 | 67 |
68 |
69 |
70 |
71 |
72 | 73 |
74 |
75 | 76 | 77 | -------------------------------------------------------------------------------- /html/miniwob/click-collapsible-nodelay.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Collapsible Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 56 | 57 | 58 |
59 |
60 |
61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /html/miniwob/click-collapsible.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Collapsible Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 56 | 57 | 58 |
59 |
60 |
61 |
62 | 63 | 64 | -------------------------------------------------------------------------------- /html/miniwob/click-dialog.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Dialog Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 24 | 25 | 57 | 58 | 59 |
60 |
61 |
62 |
63 | 64 | 65 | -------------------------------------------------------------------------------- /html/miniwob/click-link.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Link Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 70 | 71 | 72 |
73 |
74 |
75 |
76 | 77 | 78 | -------------------------------------------------------------------------------- /html/miniwob/click-menu.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Menu Task 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 78 | 79 | 80 |
81 |
82 |
83 |
84 | 85 | 86 | -------------------------------------------------------------------------------- /html/miniwob/click-option.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Option Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 54 | 55 | 56 |
57 |
58 |
59 |
60 |
61 | 62 |
63 |
64 | 65 | 66 | -------------------------------------------------------------------------------- /html/miniwob/click-shape.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Shape Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 57 | 58 | 59 |
60 |
61 |
62 | 63 |
64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /html/miniwob/click-tab.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Tab Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 79 | 80 | 81 |
82 |
83 |
84 |
85 | 86 | 87 | -------------------------------------------------------------------------------- /html/miniwob/click-test-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Test Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 34 | 35 | 36 |
37 |
Click button ONE.
38 |
39 | 40 | 41 |
42 |
43 | 44 | 45 | -------------------------------------------------------------------------------- /html/miniwob/click-test-transfer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Test Transfer Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 44 | 45 | 46 |
47 |
48 |
49 | 50 | 51 |
52 |
53 | 54 | 55 | -------------------------------------------------------------------------------- /html/miniwob/click-test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Test Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 31 | 32 | 33 |
34 |
Click the button.
35 |
36 | 37 |
38 |
39 | 40 | 41 | -------------------------------------------------------------------------------- /html/miniwob/click-widget.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Widget Task 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 69 | 70 | 71 |
72 |
73 |
74 |
75 | 76 | 77 | -------------------------------------------------------------------------------- /html/miniwob/copy-paste.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Copy Paste Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 70 | 71 | 72 |
73 |
74 |
75 |
76 |
77 | 78 |
79 |
80 | 81 | 82 | -------------------------------------------------------------------------------- /html/miniwob/drag-cube.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Drag Cube Task 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | 17 | 18 | 19 | 23 | 45 | 46 | 47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
1
55 |
56 |
57 |
2
58 |
59 |
60 |
3
61 |
62 |
63 |
4
64 |
65 |
66 |
5
67 |
68 |
69 |
6
70 |
71 |
72 |
73 | 74 |
75 |
76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /html/miniwob/enter-date.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Date Task 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 | 53 |
54 |
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /html/miniwob/enter-password.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Password Task 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 40 | 41 | 42 |
43 |
44 |
45 |
46 |

47 |

48 | 49 |
50 |
51 |
52 | 53 | 54 | -------------------------------------------------------------------------------- /html/miniwob/enter-text-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 66 | 67 | 68 |
69 |
70 |
71 |
72 | 73 | 74 |
75 |
76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /html/miniwob/enter-text-dynamic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Dynamic Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 45 | 46 | 47 |
48 |
49 |
50 |
51 | 52 | 53 |
54 |
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /html/miniwob/enter-text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 47 | 48 | 49 |
50 |
51 |
52 |
53 | 54 | 55 |
56 |
57 |
58 | 59 | 60 | -------------------------------------------------------------------------------- /html/miniwob/enter-time.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Enter Time Task 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 44 | 45 | 46 |
47 |
48 |
49 |
50 | 51 | 52 |
53 |
54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /html/miniwob/focus-text-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Focus Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 49 | 50 | 51 |
52 |
53 |
54 | 55 | 56 | 57 |
58 |
59 | 60 | 61 | -------------------------------------------------------------------------------- /html/miniwob/focus-text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Focus Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 44 | 45 | 46 |
47 |
48 |
49 | 50 |
51 |
52 | 53 | 54 | -------------------------------------------------------------------------------- /html/miniwob/guess-number.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Resize Textarea Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 18 | 19 | 60 | 61 | 62 |
63 |
Guess the number between 0-9 and press Submit. Use the feedback below to find the right number.
64 |
65 |
66 |
Waiting for your guess...
67 |
Correct!
68 |
The number is lower than .
69 |
The number is higher than .
70 |
71 |
72 | 73 | 74 |
75 |
76 |
77 | 78 | 79 | -------------------------------------------------------------------------------- /html/miniwob/highlight-text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Highlight Text Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | 65 | 66 | 67 |
68 |
69 |
70 |
71 | 72 | 73 | -------------------------------------------------------------------------------- /html/miniwob/login-user.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Login User Task 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 39 | 40 | 41 |
42 |
43 |
44 |
45 |

46 |

47 | 48 |
49 |
50 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /html/miniwob/scroll-text-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Scroll Text Task 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 59 | 60 | 61 |
62 |
63 |
64 | 65 | 66 |
67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /html/miniwob/scroll-text.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Scroll Text Task 5 | 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 46 | 47 | 48 |
49 |
50 |
51 | 52 | 53 | 54 |
55 |
56 | 57 | 58 | -------------------------------------------------------------------------------- /html/miniwob/simple-algebra.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Simple Algebra Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 19 | 20 | 60 | 61 | 62 |
63 |
Solve for x and type your answer into the textbox. Press Submit when done.
64 |
65 |
66 |
67 | x = 68 | 69 |
70 | 71 |
72 |
73 | 74 | 75 | -------------------------------------------------------------------------------- /html/miniwob/simple-arithmetic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Simple Math Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 19 | 20 | 56 | 57 | 58 |
59 |
Solve the math problem and type your answer into the textbox. Press submit when done.
60 |
61 |
62 |
63 | 64 |
65 | 66 |
67 |
68 | 69 | 70 | -------------------------------------------------------------------------------- /html/miniwob/text-transform.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Text Transform Task 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | 18 | 19 | 64 | 65 | 66 |
67 |
Type the text below into the text field and press Submit.
68 |
69 |
70 |
71 | 72 | 73 |
74 |
75 |
76 | 77 | 78 | -------------------------------------------------------------------------------- /html/miniwob/unicode-test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Click Button Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 67 | 68 | 69 |
70 |
71 |
72 |
73 | 74 | 75 | -------------------------------------------------------------------------------- /html/miniwob/use-autocomplete-nodelay.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Autocomplete Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 22 | 23 | 69 | 70 | 71 |
72 |
73 |
74 | 75 | 76 | 77 |
78 |
79 | 80 | 81 | -------------------------------------------------------------------------------- /html/miniwob/use-autocomplete.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Autocomplete Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 22 | 23 | 68 | 69 | 70 |
71 |
72 |
73 | 74 | 75 | 76 |
77 |
78 | 79 | 80 | -------------------------------------------------------------------------------- /html/miniwob/use-colorwheel-2.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Color Wheel Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 19 | 20 | 54 | 55 | 56 |
57 |
58 |
59 | Color:
60 | 61 |
62 |
63 | 64 | 65 | -------------------------------------------------------------------------------- /html/miniwob/use-colorwheel.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Color Wheel Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 18 | 19 | 45 | 46 | 47 |
48 |
49 |
50 | Color:
51 | 52 |
53 |
54 | 55 | 56 | -------------------------------------------------------------------------------- /html/miniwob/use-slider.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Slider Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 60 | 61 | 62 |
63 |
64 |
65 |
66 |
0
67 | 68 |
69 |
70 | 71 | 72 | -------------------------------------------------------------------------------- /html/miniwob/use-spinner.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Use Spinner Task 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 45 | 46 | 47 |
48 |
49 |
50 | 51 | 52 | 53 |
54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /installs/chrome.sh: -------------------------------------------------------------------------------- 1 | # install chrome browser 2 | wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && 3 | apt-get install -y ./google-chrome-stable_current_amd64.deb && 4 | rm -rf ./google-chrome-stable_current_amd64.deb && 5 | pip install pybrowsers && 6 | python -c 'import browsers, os;print(browsers.get("chrome"));' 7 | 8 | # install chrome webdriver 9 | pip install hf-webdriver-manager && 10 | WEBDRIVER=$(python -c 'from webdriver_manager.chrome import ChromeDriverManager as DriverManager;print(DriverManager().install());') && 11 | cp "${WEBDRIVER}" /usr/local/bin && 12 | chromedriver --help && 13 | chromedriver --version 14 | -------------------------------------------------------------------------------- /installs/edge.sh: -------------------------------------------------------------------------------- 1 | # install edge browser 2 | pip install requests && 3 | STABLE_VERSION=$(wget -qO- 'https://huggingface.co/HansBug/browser_drivers_mirror/resolve/main/edge/LATEST_STABLE') && 4 | wget -q "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_${STABLE_VERSION}-1_amd64.deb" && 5 | apt-get install -y "./microsoft-edge-stable_${STABLE_VERSION}-1_amd64.deb" && 6 | rm -rf "./microsoft-edge-stable_${STABLE_VERSION}-1_amd64.deb" && 7 | pip install pybrowsers && 8 | python -c 'import browsers, os;print(browsers.get("msedge"));' 9 | 10 | # install edge webdriver 11 | pip install hf-webdriver-manager && 12 | WEBDRIVER=$(python -c 'from webdriver_manager.microsoft import EdgeChromiumDriverManager as DriverManager;print(DriverManager().install());') && 13 | cp "${WEBDRIVER}" /usr/local/bin && 14 | msedgedriver --help && 15 | msedgedriver --version 16 | -------------------------------------------------------------------------------- /miniwob/__init__.py: -------------------------------------------------------------------------------- 1 | """Root `__init__` of the miniwob module.""" 2 | __version__ = "0.0.1" 3 | -------------------------------------------------------------------------------- /miniwob/constants.py: -------------------------------------------------------------------------------- 1 | """Constants for the environment and spaces.""" 2 | 3 | ASCII_CHARSET = "".join(chr(x) for x in range(32, 128)) 4 | UTTERANCE_MAX_LENGTH = 256 5 | ATTRIBUTE_MAX_LENGTH = 256 6 | TEXT_MAX_LENGTH = 256 7 | TYPING_MAX_LENGTH = 64 8 | 9 | # TODO: Use the list of keys from Humphreys22 10 | DEFAULT_ALLOWED_KEYS = ( 11 | "0", 12 | "1", 13 | "2", 14 | "3", 15 | "4", 16 | "5", 17 | "6", 18 | "7", 19 | "8", 20 | "9", 21 | "a", 22 | "b", 23 | "c", 24 | "d", 25 | "e", 26 | "f", 27 | "g", 28 | "h", 29 | "i", 30 | "j", 31 | "k", 32 | "l", 33 | "m", 34 | "n", 35 | "o", 36 | "p", 37 | "q", 38 | "r", 39 | "s", 40 | "t", 41 | "u", 42 | "v", 43 | "w", 44 | "x", 45 | "y", 46 | "z", 47 | ) 48 | 49 | MIN_REF = -1000000 50 | MAX_REF = 1000000 51 | MAX_FIELDS = 10 52 | 53 | WINDOW_WIDTH = 500 54 | WINDOW_HEIGHT = 240 55 | TASK_WIDTH = 160 56 | TASK_HEIGHT = 210 57 | 58 | FLIGHT_WINDOW_WIDTH = 600 59 | FLIGHT_WINDOW_HEIGHT = 700 60 | FLIGHT_TASK_WIDTH = 375 61 | FLIGHT_TASK_HEIGHT = 667 62 | -------------------------------------------------------------------------------- /miniwob/envs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/opendilab/miniwob-plusplus/dd282170c4385916c8117de1aacce7a31e511169/miniwob/envs/__init__.py -------------------------------------------------------------------------------- /miniwob/reward.py: -------------------------------------------------------------------------------- 1 | """Reward processors. 2 | 3 | Each method takes the metadata with the following keys: 4 | - env_reward: MiniWoB official reward 5 | - raw_reward: Raw task reward without time penalty 6 | - done: Whether the task is done 7 | Then it returns a reward (float). 8 | """ 9 | from typing import Any, Callable, Mapping 10 | 11 | Metadata = Mapping[str, Any] 12 | RewardPreprocessor = Callable[[Metadata], float] 13 | 14 | 15 | def get_original_reward(metadata: Metadata) -> float: 16 | """Return the original reward with time penalty. 17 | 18 | This is the reward as defined in the environment. 19 | """ 20 | return float(metadata["env_reward"]) 21 | 22 | 23 | def get_raw_reward(metadata: Metadata) -> float: 24 | """Return the raw reward without time penalty. 25 | 26 | This is usually 1 for success and -1 for failure, but not always. 27 | """ 28 | return float(metadata["raw_reward"]) 29 | 30 | 31 | def get_click_checkboxes_hard(metadata: Metadata) -> float: 32 | """Return the reward without partial credits. 33 | 34 | This can be applied when the original environment gives partial credits 35 | in addition to the time penalty (e.g., click-checkboxes). 36 | Give 1 if the raw reward is 1. Otherwise, give -1. 37 | """ 38 | if not metadata["done"]: 39 | return 0.0 40 | return 1.0 if metadata["raw_reward"] == 1.0 else -1.0 41 | 42 | 43 | def raw_reward_threshold(threshold: float) -> RewardPreprocessor: 44 | """Return a reward processor that cut off at a threshold.""" 45 | 46 | def fn(metadata: Metadata) -> float: 47 | if metadata["raw_reward"] > threshold: 48 | return 1.0 49 | elif metadata["raw_reward"] > 0: 50 | return -1 51 | return metadata["raw_reward"] 52 | 53 | return fn 54 | -------------------------------------------------------------------------------- /miniwob/selenium_actions.py: -------------------------------------------------------------------------------- 1 | """Methods that execute actions in Selenium.""" 2 | import logging 3 | 4 | from selenium.webdriver import Chrome as ChromeDriver 5 | from selenium.webdriver.common.action_chains import ActionChains 6 | from selenium.webdriver.common.by import By 7 | 8 | 9 | def execute_coord_click(left: float, top: float, driver: ChromeDriver): 10 | """Click at coordinates (left, top).""" 11 | body = driver.find_element(By.TAG_NAME, "body") 12 | # The offset is from the center, not top-left. 13 | x = -body.size["width"] / 2 + left 14 | y = -body.size["height"] / 2 + top 15 | chain = ActionChains(driver) 16 | chain.move_to_element_with_offset(body, x, y).click().perform() 17 | 18 | 19 | def execute_element_click(ref: int, driver: ChromeDriver): 20 | """Click on the DOM element specified by a ref ID.""" 21 | # TODO: Handle