├── .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('
');}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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
56 |
59 |
62 |
65 |
68 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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